{"_id":"@adalat-ai/page-extension","_rev":"10-9fd30471941a1e92b3d3870387f26736","name":"@adalat-ai/page-extension","dist-tags":{"latest":"1.0.9"},"versions":{"1.0.0":{"name":"@adalat-ai/page-extension","version":"1.0.0","keywords":["tiptap","extension","page","pagination","document","editor","react"],"author":{"name":"Nishant"},"license":"MIT","_id":"@adalat-ai/page-extension@1.0.0","maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"dist":{"shasum":"b04461fe022925d3c83ee33a978fc0da0b0f8913","tarball":"https://registry.npmjs.org/@adalat-ai/page-extension/-/page-extension-1.0.0.tgz","fileCount":31,"integrity":"sha512-bWmYsd5xlBaYy8Ovszttxgu8+Y8XdLTXJkTP//ATbqi8jmGr+FtWui09o/WI6w4P29qnMuoyswx2WtuuvtjzAg==","signatures":[{"sig":"MEQCIFC3AimwVAXgol77ydlj9/CUKhO6VaKOuss0p+Z7v7mwAiA212p9MNqGT6D8tI3sJy/NrOxDXbBdNcgWVjrpoUujGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98918},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"d4fc1b15967e1cd6de6a10d39094f784403d094c","scripts":{"dev":"tsc --watch","test":"jest","build":"tsc","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"adalat-ai","email":"tech@adalat.ai"},"repository":{"url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git","type":"git"},"_npmVersion":"10.9.3","description":"A fully isolated Tiptap PageExtension with automatic page management and styling","directories":{},"_nodeVersion":"22.18.0","dependencies":{"mitt":"^3.0.0","uuid":"^9.0.0","zeed-dom":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","react":"^18.0.0","ts-jest":"^29.4.1","react-dom":"^18.0.0","@tiptap/pm":"^2.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/uuid":"^9.0.0","@tiptap/core":"^2.0.0","@types/react":"^18.0.0","@tiptap/react":"^2.0.0","@testing-library/react":"^14.0.0","jest-environment-jsdom":"^29.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0","@tiptap/extension-unique-id":"^2.0.0","@tiptap/extension-collaboration":"^2.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@tiptap/pm":"^2.0.0","@tiptap/core":"^2.0.0","@tiptap/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/page-extension_1.0.0_1757317253766_0.20363450964197738","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@adalat-ai/page-extension","version":"1.0.1","keywords":["tiptap","extension","page","pagination","document","editor","react"],"author":{"name":"Nishant"},"license":"MIT","_id":"@adalat-ai/page-extension@1.0.1","maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"dist":{"shasum":"0c6417b7ed0afa4428135a187b5f5ac64faf7129","tarball":"https://registry.npmjs.org/@adalat-ai/page-extension/-/page-extension-1.0.1.tgz","fileCount":31,"integrity":"sha512-F2AabX+i2ixYTNBxIAjIlitfeLwJEA/AMbBAlqqnm+ckA3c5Uqs5/S4oIt8nyKEMJ2fFoplXWZmEVZRjEQ2IRQ==","signatures":[{"sig":"MEQCIGuXkxQtZu4hsiQd27UPXVOGH5tWK/BbSKDIGVurcKtPAiBaAe3EoXZtC6Sn0oW+j9SmYxAQsJZ9CcrqFN//drkd/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107903},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"5f00c64942101e4dcec6e53eb0f2233944c86659","scripts":{"dev":"tsc --watch","test":"jest","build":"tsc","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"adalat-ai","email":"tech@adalat.ai"},"repository":{"url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git","type":"git"},"_npmVersion":"10.9.3","description":"A fully isolated Tiptap PageExtension with automatic page management and styling","directories":{},"_nodeVersion":"22.18.0","dependencies":{"mitt":"^3.0.0","uuid":"^9.0.0","zeed-dom":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","react":"^18.0.0","ts-jest":"^29.4.1","react-dom":"^18.0.0","@tiptap/pm":"^2.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/uuid":"^9.0.0","@tiptap/core":"^2.0.0","@types/react":"^18.0.0","@tiptap/react":"^2.0.0","@testing-library/react":"^14.0.0","jest-environment-jsdom":"^29.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0","@tiptap/extension-unique-id":"^2.0.0","@tiptap/extension-collaboration":"^2.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@tiptap/pm":"^2.0.0","@tiptap/core":"^2.0.0","@tiptap/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/page-extension_1.0.1_1757488779165_0.6107434938086993","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@adalat-ai/page-extension","version":"1.0.2","keywords":["tiptap","extension","page","pagination","document","editor","react"],"author":{"name":"Nishant"},"license":"MIT","_id":"@adalat-ai/page-extension@1.0.2","maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"dist":{"shasum":"627305b110af3765fce06e734c4a57e9e22a4a25","tarball":"https://registry.npmjs.org/@adalat-ai/page-extension/-/page-extension-1.0.2.tgz","fileCount":31,"integrity":"sha512-P8d/3IvxG/cLBl+sFHylGJmQA9d00ACKjr2g8i9O9ds7YWUCMlGsl8sQUq2im9dsj52u9gLYt5ZMdLcVcT4zfg==","signatures":[{"sig":"MEUCIGJ3fb1W9SHJlCVRx01IzJ9iSuRQiZCc/O3Z2EXORL0eAiEArRcMsbsiaDPgx8ftP35YEFjhU++GanBUIuZu5REi/Co=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106127},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"67965a0330963463bacecb3b154e14d9e61bd461","scripts":{"dev":"tsc --watch","test":"jest","build":"tsc","prepare":"npm run build","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"adalat-ai","email":"tech@adalat.ai"},"repository":{"url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git","type":"git"},"_npmVersion":"10.8.2","description":"A fully isolated Tiptap PageExtension with automatic page management and styling","directories":{},"_nodeVersion":"20.19.5","dependencies":{"mitt":"^3.0.0","uuid":"^9.0.0","zeed-dom":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","react":"^18.0.0","eslint":"^9.0.0","ts-jest":"^29.4.1","react-dom":"^18.0.0","@eslint/js":"^9.0.0","@tiptap/pm":"^2.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/uuid":"^9.0.0","@tiptap/core":"^2.0.0","@types/react":"^18.0.0","@tiptap/react":"^2.0.0","typescript-eslint":"^8.0.0","@testing-library/react":"^14.0.0","jest-environment-jsdom":"^29.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0","@tiptap/extension-unique-id":"^2.0.0","@tiptap/extension-collaboration":"^2.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@tiptap/pm":"^2.0.0","@tiptap/core":"^2.0.0","@tiptap/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/page-extension_1.0.2_1757505457286_0.5067140641991448","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@adalat-ai/page-extension","version":"1.0.3","keywords":["tiptap","extension","page","pagination","document","editor","react"],"author":{"name":"Nishant"},"license":"MIT","_id":"@adalat-ai/page-extension@1.0.3","maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"dist":{"shasum":"b8193c9523b45110d56b80c6c8626a6b1cc08bde","tarball":"https://registry.npmjs.org/@adalat-ai/page-extension/-/page-extension-1.0.3.tgz","fileCount":31,"integrity":"sha512-ZpZksRXh74Pc9ZgN80SSAm2w10tTtSm++aBrfkNrrUxTT3Mz6u0hzDDJmW/sPvtdv2vsDiEO8UV9P1va5vXbhQ==","signatures":[{"sig":"MEQCIHBITdU3exxOz3IqKdgpKfLSX+PtjGjZZP0OpnCY5A0lAiAuLBzQnF3F809NplTQvA7N4+e5y/MPiWdM/K1H4hGEhg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106341},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"5531fef2a1fb2747bffa26347ba65774f1fdaa3b","scripts":{"dev":"tsc --watch","lint":"eslint src/ --max-warnings 0","test":"jest","build":"tsc","prepare":"husky","lint:fix":"eslint src/ --fix","pre-push":"npm run build","pre-commit":"npm run lint && npm test","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"adalat-ai","email":"tech@adalat.ai"},"repository":{"url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git","type":"git"},"_npmVersion":"10.8.2","description":"A fully isolated Tiptap PageExtension with automatic page management and styling","directories":{},"_nodeVersion":"20.19.5","dependencies":{"mitt":"^3.0.0","uuid":"^9.0.0","zeed-dom":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","react":"^18.0.0","eslint":"^9.0.0","ts-jest":"^29.4.1","react-dom":"^18.0.0","@eslint/js":"^9.0.0","@tiptap/pm":"^2.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/uuid":"^9.0.0","@tiptap/core":"^2.0.0","@types/react":"^18.0.0","@tiptap/react":"^2.0.0","typescript-eslint":"^8.0.0","@testing-library/react":"^14.0.0","jest-environment-jsdom":"^29.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0","@tiptap/extension-unique-id":"^2.0.0","@tiptap/extension-collaboration":"^2.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@tiptap/pm":"^2.0.0","@tiptap/core":"^2.0.0","@tiptap/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/page-extension_1.0.3_1757513611058_0.5127751159155594","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@adalat-ai/page-extension","version":"1.0.4","keywords":["tiptap","extension","page","pagination","document","editor","react"],"author":{"name":"Nishant"},"license":"MIT","_id":"@adalat-ai/page-extension@1.0.4","maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"dist":{"shasum":"97c584bb64daee4c778f2bb3be1b805f60d5e519","tarball":"https://registry.npmjs.org/@adalat-ai/page-extension/-/page-extension-1.0.4.tgz","fileCount":31,"integrity":"sha512-0vMQdBX6KbsCSbieBYaHnB4kRxOtgIcaYYgCCHFnsWXxOvpREo/a6+vRC42arYHICOU2kYQMMzQ2P3gsX99BKg==","signatures":[{"sig":"MEQCIEZIKcIMKZLvgZVbc/juLeDd9eQwbRIHMMLKjUzbD0HAAiAkLXBnA7fwPhB3Qtq+NtygriChbDhZk7qWRslnfY5xWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106461},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"dfbee6c8d7ced3f08c7d091dbf08ae5b6823f8c5","scripts":{"dev":"tsc --watch","lint":"eslint src/ --max-warnings 0","test":"jest","build":"tsc","prepare":"husky","lint:fix":"eslint src/ --fix","pre-push":"npm run build","pre-commit":"npm run lint && npm test","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"adalat-ai","email":"tech@adalat.ai"},"repository":{"url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git","type":"git"},"_npmVersion":"10.8.2","description":"A fully isolated Tiptap PageExtension with automatic page management and styling","directories":{},"_nodeVersion":"20.19.5","dependencies":{"mitt":"^3.0.0","uuid":"^9.0.0","zeed-dom":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","react":"^18.0.0","eslint":"^9.0.0","ts-jest":"^29.4.1","react-dom":"^18.0.0","@eslint/js":"^9.0.0","@tiptap/pm":"^2.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/uuid":"^9.0.0","@tiptap/core":"^2.0.0","@types/react":"^18.0.0","@tiptap/react":"^2.0.0","typescript-eslint":"^8.0.0","@testing-library/react":"^14.0.0","jest-environment-jsdom":"^29.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0","@tiptap/extension-unique-id":"^2.0.0","@tiptap/extension-collaboration":"^2.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@tiptap/pm":"^2.0.0","@tiptap/core":"^2.0.0","@tiptap/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/page-extension_1.0.4_1758105341880_0.9406357522742279","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@adalat-ai/page-extension","version":"1.0.5","keywords":["tiptap","extension","page","pagination","document","editor","react"],"author":{"name":"Nishant"},"license":"MIT","_id":"@adalat-ai/page-extension@1.0.5","maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"dist":{"shasum":"ee23a39e107d0e3685c9dbf13e8679b22f326d4e","tarball":"https://registry.npmjs.org/@adalat-ai/page-extension/-/page-extension-1.0.5.tgz","fileCount":31,"integrity":"sha512-o2dORcIBQzGBqVh1US/d8glvsLSd69wlnnKIS6nQyoqsgT6ab4O5/qmztVkxQxKGLJ5V3yyNaBvX8iKBSGrtLw==","signatures":[{"sig":"MEYCIQCcct4uhDQ9yhElFvNqR6xGbmbRX+S7wrgYC51X+ro+3wIhALu1LVqIii/cv+ROwwAxo4ghuLhEQod3gybWjcnLwvnK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106461},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"6d226d8b46e160f09c8d1c06e70b5a77153d00ee","scripts":{"dev":"tsc --watch","lint":"eslint src/ --max-warnings 0","test":"jest","build":"tsc","prepare":"husky","lint:fix":"eslint src/ --fix","pre-push":"npm run build","pre-commit":"npm run lint && npm test","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"adalat-ai","email":"tech@adalat.ai"},"repository":{"url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git","type":"git"},"_npmVersion":"10.8.2","description":"A fully isolated Tiptap PageExtension with automatic page management and styling","directories":{},"_nodeVersion":"20.19.5","dependencies":{"mitt":"^3.0.0","uuid":"^9.0.0","zeed-dom":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","react":"^18.0.0","eslint":"^9.0.0","ts-jest":"^29.4.1","react-dom":"^18.0.0","@eslint/js":"^9.0.0","@tiptap/pm":"^2.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/uuid":"^9.0.0","@tiptap/core":"^2.0.0","@types/react":"^18.0.0","@tiptap/react":"^2.0.0","typescript-eslint":"^8.0.0","@testing-library/react":"^14.0.0","jest-environment-jsdom":"^29.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0","@tiptap/extension-unique-id":"^2.0.0","@tiptap/extension-collaboration":"^2.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@tiptap/pm":"^2.0.0","@tiptap/core":"^2.0.0","@tiptap/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/page-extension_1.0.5_1758105765034_0.86106554073671","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@adalat-ai/page-extension","version":"1.0.6","keywords":["tiptap","extension","page","pagination","document","editor","react"],"author":{"name":"Nishant"},"license":"MIT","_id":"@adalat-ai/page-extension@1.0.6","maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"dist":{"shasum":"f1218b02988251d96246aa3c4b7c6c671b7e1304","tarball":"https://registry.npmjs.org/@adalat-ai/page-extension/-/page-extension-1.0.6.tgz","fileCount":31,"integrity":"sha512-Vd3gl/7n6XPNDtqvjhB0BH7+eZ94Aifp9tp7r2E1okX/MragTATRvfiBTQxzyL6OeaLmJebzxOc7yYO8MC2t6w==","signatures":[{"sig":"MEUCICaTFntoT9nBLVmQbIeKO1vkUBbPVvW5PpBo6hAEUBEnAiEAtWwTa8u+hS4b571lIElKzxQM8hvbqKXKguiLcoE3tvw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106461},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"5f941831476063bf5fbd8217307acb23dd1d9122","scripts":{"dev":"tsc --watch","lint":"eslint src/ --max-warnings 0","test":"jest","build":"tsc","prepare":"husky","lint:fix":"eslint src/ --fix","pre-push":"npm run build","pre-commit":"npm run lint && npm test","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"adalat-ai","email":"tech@adalat.ai"},"repository":{"url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git","type":"git"},"_npmVersion":"10.8.2","description":"A fully isolated Tiptap PageExtension with automatic page management and styling","directories":{},"_nodeVersion":"20.19.5","dependencies":{"mitt":"^3.0.0","uuid":"^9.0.0","zeed-dom":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","react":"^18.0.0","eslint":"^9.0.0","ts-jest":"^29.4.1","react-dom":"^18.0.0","@eslint/js":"^9.0.0","@tiptap/pm":"^2.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/uuid":"^9.0.0","@tiptap/core":"^2.0.0","@types/react":"^18.0.0","@tiptap/react":"^2.0.0","typescript-eslint":"^8.0.0","@testing-library/react":"^14.0.0","jest-environment-jsdom":"^29.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0","@tiptap/extension-unique-id":"^2.0.0","@tiptap/extension-collaboration":"^2.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@tiptap/pm":"^2.0.0","@tiptap/core":"^2.0.0","@tiptap/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/page-extension_1.0.6_1758106357794_0.3379404438235565","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@adalat-ai/page-extension","version":"1.0.7","keywords":["tiptap","extension","page","pagination","document","editor","react"],"author":{"name":"Nishant"},"license":"MIT","_id":"@adalat-ai/page-extension@1.0.7","maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"dist":{"shasum":"926573c14133f401a0533af0f75b3fdcb6a33342","tarball":"https://registry.npmjs.org/@adalat-ai/page-extension/-/page-extension-1.0.7.tgz","fileCount":31,"integrity":"sha512-W+Z+O9h1QI7F3cJEqXDpIWvJ/FlFzWGHR/682Ilm9xPgM6rIfM7XmBL/Y+rVkLDvllmJnWm+RuDOrVkitIqfpA==","signatures":[{"sig":"MEUCIQDVC1811en9MrsV82xoBs6gp63k+5MdNvUtAFCPYlDKXwIgbd94vm9ND52LRnVFRSzkIQPuvMUym6hIaayz0R24lzk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106461},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"7a3eb5744c47b5f5a521a3cc2afd3fdcfa3b06fd","scripts":{"dev":"tsc --watch","lint":"eslint src/ --max-warnings 0","test":"jest","build":"tsc","prepare":"husky","lint:fix":"eslint src/ --fix","pre-push":"npm run build","pre-commit":"npm run lint && npm test","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"adalat-ai","email":"tech@adalat.ai"},"repository":{"url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git","type":"git"},"_npmVersion":"10.8.2","description":"A fully isolated Tiptap PageExtension with automatic page management and styling","directories":{},"_nodeVersion":"20.19.5","dependencies":{"mitt":"^3.0.0","uuid":"^9.0.0","zeed-dom":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","react":"^18.0.0","eslint":"^9.0.0","ts-jest":"^29.4.1","react-dom":"^18.0.0","@eslint/js":"^9.0.0","@tiptap/pm":"^2.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/uuid":"^9.0.0","@tiptap/core":"^2.0.0","@types/react":"^18.0.0","@tiptap/react":"^2.0.0","typescript-eslint":"^8.0.0","@testing-library/react":"^14.0.0","jest-environment-jsdom":"^29.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0","@tiptap/extension-unique-id":"^2.0.0","@tiptap/extension-collaboration":"^2.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@tiptap/pm":"^2.0.0","@tiptap/core":"^2.0.0","@tiptap/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/page-extension_1.0.7_1758106536126_0.04724791636442127","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@adalat-ai/page-extension","version":"1.0.8","keywords":["tiptap","extension","page","pagination","document","editor","react"],"author":{"name":"Nishant"},"license":"MIT","_id":"@adalat-ai/page-extension@1.0.8","maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"dist":{"shasum":"95fbb48978cab5e20286c214cf1b542064956e06","tarball":"https://registry.npmjs.org/@adalat-ai/page-extension/-/page-extension-1.0.8.tgz","fileCount":31,"integrity":"sha512-ZUSPnEJw1b8CTo0cVikwjV2OZu3uDjlDiCHpAwtQXDmg/GGwEqEFWh9EUhmgD/JO0pSY/KnFsQE4Dchf/b8blw==","signatures":[{"sig":"MEUCIQCPFx3bABDkrFFN2JLAO6IismpgtG5YkGpvbSIPDzq29AIgDvU/3mFhoOEgxeLXzkLlpJYQk6zkLZsGXfBegNZ//aE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":106461},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"65f41280e8c36db46bb6af21e024d4fb2edbfb70","scripts":{"dev":"tsc --watch","lint":"eslint src/ --max-warnings 0","test":"jest","build":"tsc","prepare":"husky","lint:fix":"eslint src/ --fix","pre-push":"npm run build","pre-commit":"npm run lint && npm test","test:watch":"jest --watch","test:coverage":"jest --coverage"},"_npmUser":{"name":"adalat-ai","email":"tech@adalat.ai"},"repository":{"url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git","type":"git"},"_npmVersion":"10.8.2","description":"A fully isolated Tiptap PageExtension with automatic page management and styling","directories":{},"_nodeVersion":"20.19.5","dependencies":{"mitt":"^3.0.0","uuid":"^9.0.0","zeed-dom":"^0.9.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.0.0","husky":"^9.1.7","react":"^18.0.0","eslint":"^9.0.0","ts-jest":"^29.4.1","react-dom":"^18.0.0","@eslint/js":"^9.0.0","@tiptap/pm":"^2.0.0","typescript":"^5.0.0","@types/jest":"^29.0.0","@types/uuid":"^9.0.0","@tiptap/core":"^2.0.0","@types/react":"^18.0.0","@tiptap/react":"^2.0.0","typescript-eslint":"^8.0.0","@testing-library/react":"^14.0.0","jest-environment-jsdom":"^29.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/user-event":"^14.0.0","@tiptap/extension-unique-id":"^2.0.0","@tiptap/extension-collaboration":"^2.0.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","@tiptap/pm":"^2.0.0","@tiptap/core":"^2.0.0","@tiptap/react":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/page-extension_1.0.8_1758106743284_0.1604032740006922","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@adalat-ai/page-extension","version":"1.0.9","description":"A fully isolated Tiptap PageExtension with automatic page management and styling","type":"module","main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"scripts":{"build":"tsc","prepare":"husky","dev":"tsc --watch","test":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","lint":"eslint src/ --max-warnings 0","lint:fix":"eslint src/ --fix","pre-commit":"npm run lint && npm test","pre-push":"npm run build"},"keywords":["tiptap","extension","page","pagination","document","editor","react"],"author":{"name":"Nishant"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git"},"peerDependencies":{"@tiptap/core":"^2.0.0","@tiptap/pm":"^2.0.0","@tiptap/react":"^2.0.0","react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"devDependencies":{"@eslint/js":"^9.0.0","@testing-library/jest-dom":"^6.0.0","@testing-library/react":"^14.0.0","@testing-library/user-event":"^14.0.0","@tiptap/extension-collaboration":"^2.0.0","@types/jest":"^29.0.0","@types/react":"^18.0.0 || ^19.0.0","@types/react-dom":"^18.0.0 || ^19.0.0","@types/uuid":"^9.0.0","eslint":"^9.0.0","husky":"^9.1.7","jest":"^29.0.0","jest-environment-jsdom":"^29.0.0","ts-jest":"^29.4.1","typescript":"^5.0.0","typescript-eslint":"^8.0.0"},"dependencies":{"mitt":"^3.0.0","uuid":"^9.0.0","zeed-dom":"^0.9.0","@tiptap/extension-unique-id":">=2.0.0"},"_id":"@adalat-ai/page-extension@1.0.9","gitHead":"9414dd1d016f71a6a0189ab20d8dc96e1555eda9","bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","_nodeVersion":"20.19.5","_npmVersion":"10.8.2","dist":{"integrity":"sha512-5JgX8qHhNNAXqKBlnfGV30rM8SN+U8FWrwK4M1jGAfEKQjCBj2l7B6G2hJzi5O50fLEzpWKWn8djG0WSIdhWrw==","shasum":"f9cd78f94ad46e4e79828eefe4116b3e4364b2f8","tarball":"https://registry.npmjs.org/@adalat-ai/page-extension/-/page-extension-1.0.9.tgz","fileCount":31,"unpackedSize":106417,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCsopqbAs/WODsi9WTGBgwYLaaijklFEojIKZ1XnIUnHQIhALuk65gV2PMj0Y4FRZ/5RSMFP30D91haXqInsaOq8OWh"}]},"_npmUser":{"name":"adalat-ai","email":"tech@adalat.ai"},"directories":{},"maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/page-extension_1.0.9_1759068757827_0.5334875586626555"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-08T07:40:53.695Z","modified":"2025-09-28T14:12:38.251Z","1.0.0":"2025-09-08T07:40:53.942Z","1.0.1":"2025-09-10T07:19:39.327Z","1.0.2":"2025-09-10T11:57:37.469Z","1.0.3":"2025-09-10T14:13:31.258Z","1.0.4":"2025-09-17T10:35:42.106Z","1.0.5":"2025-09-17T10:42:45.211Z","1.0.6":"2025-09-17T10:52:37.959Z","1.0.7":"2025-09-17T10:55:36.306Z","1.0.8":"2025-09-17T10:59:03.467Z","1.0.9":"2025-09-28T14:12:38.046Z"},"bugs":{"url":"https://github.com/adalat-ai-tech/tiptap-pages/issues"},"author":{"name":"Nishant"},"license":"MIT","homepage":"https://github.com/adalat-ai-tech/tiptap-pages#readme","keywords":["tiptap","extension","page","pagination","document","editor","react"],"repository":{"type":"git","url":"git+https://github.com/adalat-ai-tech/tiptap-pages.git"},"description":"A fully isolated Tiptap PageExtension with automatic page management and styling","maintainers":[{"name":"adalat-ai","email":"tech@adalat.ai"}],"readme":"# 📄 PageExtension for Tiptap\n\nA fully isolated Tiptap extension that provides automatic page management, pagination, and professional document styling. This extension automatically wraps your content in pages and handles all the complex pagination logic with advanced features like copy-paste functionality, cross-page operations, and comprehensive error handling.\n\n## ✨ Features\n\n- **🔄 Automatic Page Creation**: Content is automatically wrapped in `<page>` nodes\n- **📊 Smart Pagination**: Automatically splits content across pages when it overflows\n- **🎨 Professional Styling**: A4 dimensions, proper margins, and shadows\n- **🔢 Page Numbering**: Configurable page numbers with positioning options\n- **🔒 Fully Isolated**: No external dependencies on app-level stores or CSS\n- **📝 TypeScript Support**: Full type definitions included\n- **💉 CSS Auto-Injection**: Styles are automatically applied when the extension is added\n- **📋 Advanced Copy-Paste**: Comprehensive copy-paste functionality across pages\n- **🌍 International Support**: Multi-language and Unicode character support\n- **⚡ Performance Optimized**: Efficient pagination algorithms and memory management\n\n## 🚀 Installation\n\n```bash\nnpm install @adalat-ai/page-extension\n# or\nyarn add @adalat-ai/page-extension\n# or\npnpm add @adalat-ai/page-extension\n```\n\n## 📖 Basic Usage\n\n```typescript\nimport { useEditor } from '@tiptap/react';\nimport { PageExtension, PageDocument } from '@adalat-ai/page-extension';\nimport { \n  Paragraph, \n  Text, \n  Bold, \n  Italic, \n  Underline,\n  Heading, \n  BulletList, \n  OrderedList, \n  ListItem \n} from '@tiptap/starter-kit';\n\nconst editor = useEditor({\n  extensions: [\n    PageDocument, // Required: Enforces PAGE node structure\n    PageExtension.configure({\n      // Required: Page dimensions\n      bodyHeight: 1123, // A4 height at 96 DPI (29.7cm = 11.69in × 96 DPI)\n      bodyWidth: 794,   // A4 width at 96 DPI (21.0cm = 8.27in × 96 DPI)\n      \n      // Optional: Page layout settings\n      pageLayout: {\n        margins: {\n          top: { unit: 'INCHES', value: 0.75 },\n          bottom: { unit: 'INCHES', value: 0.75 },\n          left: { unit: 'INCHES', value: 0.5 },\n          right: { unit: 'INCHES', value: 0.5 }\n        },\n        paragraphSpacing: {\n          before: { unit: 'PTS', value: 6 },\n          after: { unit: 'PTS', value: 6 }\n        }\n      },\n      \n      // Optional: Page numbering\n      pageNumber: {\n        show: true,\n        showCount: true,\n        showOnFirstPage: false,\n        position: 'bottom',\n        alignment: 'center'\n      },\n      \n      // Optional: Header/Footer heights\n      headerHeight: 30,\n      footerHeight: 80\n    }),\n    \n    // Your other Tiptap extensions...\n    Paragraph, Text, Bold, Italic, Underline,\n    Heading, BulletList, OrderedList, ListItem\n  ],\n  content: `\n    <h2>Your content here</h2>\n    <p>This will automatically be wrapped in pages...</p>\n  `\n});\n```\n\n## ⚙️ API Reference\n\n### Core Extensions\n\n#### `PageExtension`\n\nThe main extension that handles pagination logic, configuration, and lifecycle management.\n\n**Configuration Options:**\n\n| Option | Type | Required | Default | Description |\n|--------|------|----------|---------|-------------|\n| `bodyHeight` | `number` | ✅ | - | Height of each page in pixels |\n| `bodyWidth` | `number` | ✅ | - | Width of each page in pixels |\n| `bodyPadding` | `number` | ❌ | `0` | Internal padding for page content |\n| `headerHeight` | `number` | ❌ | `30` | Height of page header area |\n| `footerHeight` | `number` | ❌ | `30` | Height of page footer area |\n| `pageLayout` | `PageLayoutConfig` | ❌ | See below | Page layout configuration |\n| `pageNumber` | `PageNumberConfig` | ❌ | See below | Page numbering configuration |\n| `types` | `never[]` | ❌ | `[]` | Additional node types to support |\n| `headerData` | `unknown[]` | ❌ | `[]` | Custom header data |\n| `footerData` | `unknown[]` | ❌ | `[]` | Custom footer data |\n\n**Commands:**\n\n```typescript\n// Recompute pagination after configuration changes\neditor.commands.recomputeComputedHtml();\n```\n\n#### `PageDocument`\n\nDocument extension that enforces the PAGE node structure. Must be included in your extensions array.\n\n```typescript\nimport { PageDocument } from '@adalat-ai/page-extension';\n\n// Add to your extensions array\nextensions: [\n  PageDocument, // Required\n  PageExtension.configure({...}),\n  // ... other extensions\n]\n```\n\n### Configuration Types\n\n#### `PageLayoutConfig`\n\nControls page margins and paragraph spacing.\n\n```typescript\ninterface PageLayoutConfig {\n  margins?: PageMargins;\n  paragraphSpacing?: ParagraphSpacingConfig;\n}\n```\n\n**Example:**\n```typescript\npageLayout: {\n  margins: {\n    top: { unit: 'INCHES', value: 1.0 },\n    bottom: { unit: 'INCHES', value: 1.0 },\n    left: { unit: 'INCHES', value: 0.75 },\n    right: { unit: 'INCHES', value: 0.75 }\n  },\n  paragraphSpacing: {\n    before: { unit: 'PTS', value: 12 },\n    after: { unit: 'PTS', value: 12 }\n  }\n}\n```\n\n#### `PageMargins`\n\nDefines page margins with unit support.\n\n```typescript\ninterface PageMargins {\n  top: MarginConfig;\n  bottom: MarginConfig;\n  left: MarginConfig;\n  right: MarginConfig;\n}\n\ninterface MarginConfig {\n  unit: 'CM' | 'INCHES';\n  value: number;\n}\n```\n\n**Supported Units:**\n- `'CM'`: Centimeters\n- `'INCHES'`: Inches\n\n#### `ParagraphSpacingConfig`\n\nControls spacing between paragraphs.\n\n```typescript\ninterface ParagraphSpacingConfig {\n  before: {\n    unit: 'PTS';\n    value: number;\n  };\n  after: {\n    unit: 'PTS';\n    value: number;\n  };\n}\n```\n\n**Supported Units:**\n- `'PTS'`: Points (1 point = 1/72 inch)\n\n#### `PageNumberConfig`\n\nConfigures page numbering display and positioning.\n\n```typescript\ninterface PageNumberConfig {\n  show: boolean;                    // Enable/disable page numbers\n  showCount: boolean;              // Show total page count (e.g., \"1 of 5\")\n  showOnFirstPage: boolean;        // Show page number on first page\n  position: 'top' | 'bottom' | null;  // Vertical position\n  alignment: 'left' | 'center' | 'right' | null;  // Horizontal alignment\n}\n```\n\n**Example:**\n```typescript\npageNumber: {\n  show: true,\n  showCount: true,\n  showOnFirstPage: false,\n  position: 'bottom',\n  alignment: 'center'\n}\n```\n\n### Utility Classes\n\n#### `UnitConversion`\n\nUtility class for converting between different measurement units.\n\n```typescript\nimport { UnitConversion } from '@adalat-ai/page-extension';\n\nconst converter = new UnitConversion();\n\n// Convert pixels to millimeters\nconst mm = converter.pxConversionMm(96); // 25mm\n\n// Convert millimeters to pixels\nconst px = converter.mmConversionPx(25); // 96px\n\n// Convert points to pixels\nconst ptToPx = converter.ptConversionPx(12); // 16px\n\n// Convert pixels to points\nconst pxToPt = converter.pxConversionPt(16); // 12pt\n```\n\n**Methods:**\n- `pxConversionMm(value: number): number` - Convert pixels to millimeters\n- `mmConversionPx(value: number): number` - Convert millimeters to pixels\n- `ptConversionPx(value: number): number` - Convert points to pixels\n- `pxConversionPt(value: number): number` - Convert pixels to points\n\n## 🎨 Styling\n\nThe extension automatically injects all necessary CSS styles. Your content will automatically have:\n\n- **📏 A4 page dimensions** with proper scaling\n- **🎭 Professional shadows and borders**\n- **📐 Proper margins and spacing**\n- **📱 Responsive design** for different screen sizes\n- **✍️ Typography optimized** for documents\n\n### Custom Styling\n\nYou can override default styles by targeting the generated CSS classes:\n\n```css\n/* Custom page styling */\n.Page {\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n  border: 1px solid #e0e0e0;\n}\n\n/* Custom page content styling */\n.PageContent {\n  padding: 20px;\n  line-height: 1.6;\n}\n\n/* Custom page number styling */\n.PageNumber {\n  font-size: 12px;\n  color: #666;\n}\n```\n\n## 🔧 Advanced Usage\n\n### Custom Page Layouts\n\n```typescript\nPageExtension.configure({\n  bodyHeight: 1123,\n  bodyWidth: 794,\n  pageLayout: {\n    margins: {\n      top: { unit: 'INCHES', value: 1.0 },\n      bottom: { unit: 'INCHES', value: 1.0 },\n      left: { unit: 'INCHES', value: 0.75 },\n      right: { unit: 'INCHES', value: 0.75 }\n    },\n    paragraphSpacing: {\n      before: { unit: 'PTS', value: 12 },\n      after: { unit: 'PTS', value: 12 }\n    }\n  }\n})\n```\n\n### Page Numbering Options\n\n```typescript\nPageExtension.configure({\n  bodyHeight: 1123,\n  bodyWidth: 794,\n  pageNumber: {\n    show: true,\n    showCount: true,\n    showOnFirstPage: false,\n    position: 'bottom',\n    alignment: 'center'\n  }\n})\n```\n\n### Dynamic Configuration Updates\n\n```typescript\n// Update configuration and recompute pagination\neditor.commands.recomputeComputedHtml();\n\n// Or update options directly\neditor.extensionManager.extensions.find(ext => ext.name === 'PageExtension')\n  ?.options = {\n    ...editor.extensionManager.extensions.find(ext => ext.name === 'PageExtension')?.options,\n    pageNumber: {\n      show: true,\n      showCount: true,\n      showOnFirstPage: true,\n      position: 'top',\n      alignment: 'right'\n    }\n  };\n\n// Recompute after changes\neditor.commands.recomputeComputedHtml();\n```\n\n### Custom Node Types\n\n```typescript\nPageExtension.configure({\n  bodyHeight: 1123,\n  bodyWidth: 794,\n  types: ['customBlock', 'customNode'] // Add your custom node types\n})\n```\n\n## 🏗️ Architecture\n\nThis extension is completely isolated and consists of:\n\n- **📦 PageExtension**: Main extension that handles configuration and lifecycle\n- **📄 PageDocument**: Document extension that enforces PAGE node structure\n- **🔧 Page Node**: Custom node for rendering individual pages\n- **⚙️ Page Plugin**: ProseMirror plugin for pagination logic\n- **💉 CSS Injector**: Automatic style injection and cleanup\n- **🧮 Core Utilities**: Pagination algorithms and calculations\n- **🔄 Copy-Paste Handler**: Advanced clipboard operations\n- **🌍 International Support**: Multi-language and Unicode handling\n\n### Key Components\n\n#### Pagination Engine\n- **Smart Content Splitting**: Automatically breaks content across pages\n- **Height Calculation**: Precise measurement of content dimensions\n- **Overflow Detection**: Identifies when content exceeds page boundaries\n- **Binary Search Algorithm**: Efficient text breaking for optimal pagination\n\n#### Copy-Paste System\n- **Cross-Page Operations**: Seamless content transfer between pages\n- **Format Preservation**: Maintains formatting during copy-paste operations\n- **PageContent Validation**: Ensures content is properly placed within page structure\n- **International Support**: Handles Unicode, emojis, and multi-language content\n\n#### Performance Optimizations\n- **Caching System**: Reduces redundant calculations\n- **Lazy Loading**: Efficient memory management\n- **Debounced Updates**: Prevents excessive re-computations\n- **Virtual DOM**: Optimized rendering for large documents\n\n## 📱 Browser Support\n\n- **Modern browsers** with ES2020 support\n- **React 18+**\n- **Tiptap 2.x**\n- **Chrome 90+**\n- **Firefox 88+**\n- **Safari 14+**\n- **Edge 90+**\n\n## 🧪 Testing\n\nThe package includes comprehensive test coverage:\n\n### Test Categories\n\n#### **Unit Tests (69 tests)**\n- **Integration Tests**: CSS injector, document, page component, page extension\n- **Unit Tests**: Core utilities, types, unit conversion\n\n#### **Playwright E2E Tests (112 tests)**\n- **Basic Pagination Tests**: Page structure, multi-page content, formatting, lists, headings\n- **Focused Tests**: Specific page creation scenarios\n- **Cross-Browser Tests**: Browser compatibility, viewport sizes, input methods\n- **Edge Cases**: Empty documents, special characters, rapid operations\n- **Error Handling**: Graceful error recovery scenarios\n- **Performance Tests**: Large documents, memory management\n- **Copy-Paste Tests**: 38 comprehensive copy-paste functionality tests\n\n### Running Tests\n\n```bash\n# Run all tests\nnpm test\n\n# Run unit tests only\nnpm run test:unit\n\n# Run E2E tests only\nnpm run test:e2e\n\n# Run specific test file\nnpm test pagination-copy-paste\n```\n\n## 🤝 Contributing\n\nContributions are welcome! Please ensure all functionality remains isolated and doesn't introduce external dependencies.\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/your-username/page-extension.git\n\n# Install dependencies\nnpm install\n\n# Run tests\nnpm test\n\n# Build the package\nnpm run build\n```\n\n### Code Style\n\n- **TypeScript**: Full type safety\n- **ESLint**: Code quality enforcement\n- **Prettier**: Code formatting\n- **Jest**: Unit testing\n- **Playwright**: E2E testing\n\n## 📄 License\n\nMIT License - see LICENSE file for details.\n\n## 🔗 Links\n\n- [Tiptap Documentation](https://tiptap.dev/)\n- [ProseMirror Documentation](https://prosemirror.net/)\n- [Package Repository](https://github.com/your-username/page-extension)\n- [NPM Package](https://www.npmjs.com/package/@adalat-ai/page-extension)\n\n## 🆘 Troubleshooting\n\n### Common Issues\n\n#### Page dimensions not working\n```typescript\n// Ensure you provide valid numeric values\nPageExtension.configure({\n  bodyHeight: 1123, // Must be a positive number (A4 height at 96 DPI)\n  bodyWidth: 794,   // Must be a positive number (A4 width at 96 DPI)\n})\n```\n\n#### Page numbers not showing\n```typescript\n// Check your page number configuration\npageNumber: {\n  show: true,        // Must be true\n  position: 'bottom', // Must be 'top' or 'bottom'\n  alignment: 'center' // Must be 'left', 'center', or 'right'\n}\n```\n\n#### Content not paginating\n```typescript\n// Ensure PageDocument is included\nextensions: [\n  PageDocument, // Required\n  PageExtension.configure({...}),\n  // ... other extensions\n]\n```\n\n#### Styling issues\n```typescript\n// The extension auto-injects styles, but you can override them\n// Check browser console for any CSS conflicts\n```\n\n### Performance Tips\n\n1. **Use appropriate page dimensions** for your content\n2. **Limit paragraph spacing** for better performance\n3. **Avoid extremely large documents** without pagination\n4. **Use the recompute command** sparingly\n5. **Monitor memory usage** with large documents\n\n### Getting Help\n\n- **GitHub Issues**: Report bugs and request features\n- **Documentation**: Check the API reference above\n- **Examples**: See the demo folder for usage examples\n- **Tests**: Check test files for implementation examples","readmeFilename":"README.md"}