{"_id":"@pubwave/editor","_rev":"28-2763ae6dac829a1a36f20772ad681eda","name":"@pubwave/editor","dist-tags":{"alpha":"0.1.1-alpha.4","latest":"1.0.0"},"versions":{"0.1.1-alpha.0":{"name":"@pubwave/editor","version":"0.1.1-alpha.0","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.1.1-alpha.0","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"6d2efe604f9cb47ae80d08b73c2ad66373a1bbd8","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.1.1-alpha.0.tgz","fileCount":9,"integrity":"sha512-+yIOGAlD5bYmMy+fxpqOhwME9xcSFkB4cMJwj7w+88XA1vWSIDFzisCEJU9W58A3X3b+M8x0b+7KyDD/Irv3Zg==","signatures":[{"sig":"MEYCIQDMkwpDonJd7iebEku324o/np64ikU82wkfGy8oxqX5BQIhAMAGfY/Xy1HTcaXMZE2mGydurOjbshfswZbTDKTbeod2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1756029},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./index.css":"./dist/index.css","./dist/index.css":"./dist/index.css"},"gitHead":"8e54ee19b7b85d064999114eb88e2415638ad9d4","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.1.1-alpha.0_1767448936354_0.4965246144098565","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-alpha.1":{"name":"@pubwave/editor","version":"0.1.1-alpha.1","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.1.1-alpha.1","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"1dd30d3374407a48bee882a9aa9681aed6a0407d","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.1.1-alpha.1.tgz","fileCount":9,"integrity":"sha512-zjLUU7Gvy4A+w0nHs5jLJh/SuNyZoYjKkfYjoE6yifL5tjfvI3g0uZoh8sMoBbuwSOB/sFjKBif64lRTgfJlOw==","signatures":[{"sig":"MEQCIHvoxKXS4t0djlH7vsyDb9Kmp3HQiFQm523QDv3iGk8oAiAXYrhhiV8KO5Niw3rlTc/ITyzyJxcK//StsxpkXhZdkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1755985},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"8e54ee19b7b85d064999114eb88e2415638ad9d4","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.1.1-alpha.1_1767449487440_0.8075087816393125","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-alpha.2":{"name":"@pubwave/editor","version":"0.1.1-alpha.2","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.1.1-alpha.2","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"a2fe1521acf255e0e75e3566e0de1673f33fafde","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.1.1-alpha.2.tgz","fileCount":9,"integrity":"sha512-3lBcNjfwCDYEwF/wJzGLfMG4z2CjSYzlQQUdfjWZkJfm4qV3Yx6tm7vyAdqOSDaDkEo0GXH7MeMaIjcLlwiQXg==","signatures":[{"sig":"MEQCIHQ/HtvOHQIfwj7vghjkz0fx2ZNMqrL/ZhsAB+8ts0VgAiBAIzvT86n3tWh416pDj1qweRX/g54ghsZNtXd2BVRqHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1775831},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"8e54ee19b7b85d064999114eb88e2415638ad9d4","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.1.1-alpha.2_1767450952983_0.8780044688640061","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@pubwave/editor","version":"0.1.1","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.1.1","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"2828df8539b7b5ead56fd683748e3d4543a5de37","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.1.1.tgz","fileCount":9,"integrity":"sha512-JMEFzW4aBB5OEEOd3Ylc7TiqriUnPC7DsBsr8uhHTHsGoOvlL641k4szo3uty0hQt1YM6iOf+kYMq/of4j5gig==","signatures":[{"sig":"MEYCIQCUZDRTVbtIF1SNAaJfZn6oXjeaKkR2X9UJNVnfI17g2gIhAMPqRD0cQ1ik08EXcW/xMc0190RhRaZukBrk6f6Bam17","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1797217},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"8e54ee19b7b85d064999114eb88e2415638ad9d4","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.1.1_1767499583337_0.4844478632680458","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-alpha.3":{"name":"@pubwave/editor","version":"0.1.1-alpha.3","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.1.1-alpha.3","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"5220fb15564e4a8e2649e8c9b2af3f0ac7265254","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.1.1-alpha.3.tgz","fileCount":9,"integrity":"sha512-lWbyNTfCMVnOrm41ugto4fuwo4v0h1bsut4teOZ6rFkd0dRWOQuR13K++EZK7AW+QPxOZX0cohZiKBcBAAEN2w==","signatures":[{"sig":"MEUCIApTG45rOa8FPahSsOozUFyNSXa5NEw11Z+SdjrswvVgAiEAs9LK8nTInsd8amdXGeoW83L35TbkY0nDT2sDYgA3KQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1797237},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"e369046472c18c8b97331018063ddc86676bacee","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.1.1-alpha.3_1767511440614_0.8535254878454077","host":"s3://npm-registry-packages-npm-production"}},"0.1.1-alpha.4":{"name":"@pubwave/editor","version":"0.1.1-alpha.4","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.1.1-alpha.4","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"9a94a81e00daab6187f9eadaed9e6cf0c65b208e","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.1.1-alpha.4.tgz","fileCount":7,"integrity":"sha512-31amr4cMSgU2otm0adB7iHumTvTkydQpym2/jHbGKbT8ieO6xhygflTt9GV1Nu5katNCJHbuT/bS2EOZkArhVg==","signatures":[{"sig":"MEYCIQC6yN3MtKaz0Kf9YGLP2IeTLGmHuN2haNtuUzDAu++VbgIhAOsr4QFHZbOKwwUypUbI0mPybStnadx9gMlgXOBc4+r5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":664008},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"e369046472c18c8b97331018063ddc86676bacee","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.1.1-alpha.4_1767511855230_0.3277408015483716","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@pubwave/editor","version":"0.1.2","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.1.2","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"919ef7f32884adb89b04c5694ba09441b658e392","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.1.2.tgz","fileCount":7,"integrity":"sha512-howmJeQgXvFhNHhBWeslvZf1oifRf+0ZDEtaijdHRHRoz2eP4RFoS4XrpY2029Q3Y1hCIXO05keL3CMLdxKN5A==","signatures":[{"sig":"MEUCID42aI12UVEIlbRuEY+7YL7DRb8oqyV1rLaG8ee4DrFGAiEApfoof/G+VgP3FV97gTPRTxaARlmtrbM2n5qiX4al9LY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":664000},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"e369046472c18c8b97331018063ddc86676bacee","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.1.2_1767512035229_0.10092807979130458","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@pubwave/editor","version":"0.1.3","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.1.3","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"99cfc9cc9b86019f4d3f2c586f5854d5b5e92a51","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.1.3.tgz","fileCount":7,"integrity":"sha512-XdssVS0QBn60/uowUsWUB5cIuJG902u5hwtcBOLozG87VC07JIAf6kcQKeTHLxUGGOTXlX6M+vaH6ZORFsSNhQ==","signatures":[{"sig":"MEQCIGPOkpTkx6l5EP6NNmGBkd0Rco9/VbWTJMCKZ0naQ1boAiAPnNwOyQQ2Bag5e4O8UxezjV7QyUk3wTM8PIaftMC1yQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":666844},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"35a0a2dfe0591e87f2cd2ebf10f17a7f6ecc1230","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.1.3_1767530488714_0.19833473726277795","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@pubwave/editor","version":"0.2.0","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.2.0","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"707c090367f587a0fe8f19c53f20ceb286a18d27","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.2.0.tgz","fileCount":7,"integrity":"sha512-nnmSUsrkAzdzXfMJPnQuInbow51Qtb8oVEKGE3rR34MWvrA2Rf4goBJshi2alrsW5XsouHkDop+9F9zWidKriQ==","signatures":[{"sig":"MEYCIQD8n3nmqK7WGRj0dNKEkMoc6zGncBLZ28BRgJLsfXnr/wIhAPbgjmIiMk/BDbSkvcZiJ+1j4ifQBqFbhI0xfUZTfkGK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676194},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"d13a7c7131eb4c39fed5d061aeb2f783fb10d4bf","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.2.0_1767534089378_0.0031171567994112692","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@pubwave/editor","version":"0.2.1","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.2.1","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"40eea7c685579f32ce5eefed121863ac80bee7c0","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.2.1.tgz","fileCount":7,"integrity":"sha512-BTaLUVHygb1PwFG3xf4kQGGIDZ4oJqKVhhHVxiH0tJNFf7ystye3aoIr4bVRKaZk1bHnvRlKMaI2AiGV55tztw==","signatures":[{"sig":"MEUCIQC9MktXWNj/AAbBjnMVl+J686gfvEP0P6cb6+wSqjZT/AIgdXkgAmA6kbwJ6YpWb7NXBGOU0d9T6XZdJudx8Max2sI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676482},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"26ade20e6e55af09b65643039cb076e016c0b4b7","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.2.1_1767534879341_0.7960661626472822","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@pubwave/editor","version":"0.2.5","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.2.5","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"cba238e086f0583bafc6e8d120cf8911b9c1128c","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.2.5.tgz","fileCount":7,"integrity":"sha512-hI1Tzl0v9jQ1VtXxTjUVeOFnnmKJpaxDRBi1E8C7h0CBO/TzCsCqnjgVg4dD8+Dwx3HVjNr0ZEsnDvMMxfkfcA==","signatures":[{"sig":"MEYCIQCNHTeU3xENdLleVjY5nHogOrC3HvAkfbd1fRWAO0xC5QIhALWqYf1aguDaerbXtJX4X2akji1yYi3z7zEnoh9Z2Tgi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676531},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"8856738ed0310dc740bff57083de33da9fad0eb7","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.2.5_1767537556760_0.3561626121381607","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@pubwave/editor","version":"0.2.6","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.2.6","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"6f54e441471a2b79f3dd73bbcc75a6b30ca574d7","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.2.6.tgz","fileCount":7,"integrity":"sha512-fBJ6rcYqgHXJdpWUc0/HAXm2rof2oVopHBwJq4xa//9vTsaiSOllwQsFWbMJZo+WE8R1/3fzxZKCkRMnUu05yQ==","signatures":[{"sig":"MEYCIQC6wtVHj1xBOY473BdatAa5ACFz6FXqRaI7rof2b7tQDQIhAJEl9yvwDPJwlvu8Hrcw0w8ytxAMbV/MH8t77kdQDru2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679906},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"dc60066df0d9c7b8a63252ee05c8dd8b022c7d47","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.2.6_1768470043876_0.48547996523937464","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@pubwave/editor","version":"0.2.7","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.2.7","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"1265c0e3d312000b24a5e91b5236c03e4956bf27","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.2.7.tgz","fileCount":7,"integrity":"sha512-g8ggkqWy+nmBpy52uNveVbrR712BSTzG7K/ZLNzCGjMtEYh9V8A9fUf2GrqamdG4gUTokXQqGhAXqywpY5zsOQ==","signatures":[{"sig":"MEUCIDr1kRk6QGtUGr/hQSEDeRzefZqvaSAQ44ikOsJTS/V0AiEAz5zh23L0gbeRqFiQJyExuOKxeKOpg9HcKIuYD5G5Rvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":680170},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"ee7c2cda1ebec6d879970f873b81186369678009","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.2.7_1768476651398_0.843204207725518","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@pubwave/editor","version":"0.3.0","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.3.0","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"556d04e6ddcd00662b84fc3a775e64225105127a","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.3.0.tgz","fileCount":7,"integrity":"sha512-MD+x2UhXJdhhQMMgsstwxy3/D0GZa+1nO/zEos/4cyxTQF5DZc3l8jiWf+59yieoQ0rMvp1zUNjPiQU/N5YB8w==","signatures":[{"sig":"MEYCIQD5/qxqLd0P2B2brDSipFt2XFQYjtrx963GgWeyhYWavwIhAIRtiIQ4URpbJk0A6Cfepk7rVLf2o38MtuFiaUH+sD0C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":682393},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"3aa028a2999e78a885570d170e8d1b45c136fb35","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.3.0_1768626703463_0.4507140585238487","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@pubwave/editor","version":"0.3.5","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.3.5","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"8fbc80ea4edb138713b2351a5463889c887cb285","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.3.5.tgz","fileCount":7,"integrity":"sha512-la6W/YulQU5c+ESejztkmBosgAowL6ogTccgHUNPfiPVkcrgw/7GKhMJnt2FimDwsgTgT6TKDOVDfDlykiuXng==","signatures":[{"sig":"MEQCIGfpIPrccwVqjXZXXecxVc0S/2o3xaB74lN0qP/8nRDgAiAHWxDJff1TiuOusM7k07ik9RrBR/BLGZ7kfY+r6Z4K4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":444615},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"c2b0ab0b146029d6e3dc26133a26b893bd03e7ef","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/editor_0.3.5_1768728189423_0.2983965639800632","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@pubwave/editor","version":"0.5.0","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.5.0","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"607a63e6524517aba732dfe252f57a8d172dfdee","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.5.0.tgz","fileCount":9,"integrity":"sha512-5kW9mXfXLpSQhU9aXGv3gdfc4FV+31as5meHDfy+6GFbgh/0nUmYcJopUxJ87Q16/0F4aQjURCPos7UZDro2AA==","signatures":[{"sig":"MEYCIQCrlF57zlWcDoPP1QtowgbzImSE29iI3PDj2HcARfFRkgIhAKkS9t9smRcLOwqELNz2q7If1/ZsseNJDNBtRXqMeJt7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1018810},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"deb3a66b92696767bed60e72e5f59c0569c04dcf","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","chart.js":"^4.4.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","chart.js":"^4.0.0 || ^5.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"chart.js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/editor_0.5.0_1769073025160_0.9634984056879716","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@pubwave/editor","version":"0.5.1","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.5.1","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"68d8b8d56c50228b125b6a8ccdf02f8b15bedbe7","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.5.1.tgz","fileCount":9,"integrity":"sha512-gpaA15xG0NNAkEoyMBXjo1MMMykM94H1W8dPtsfZDhGWP2Ezt0x9zQ4evaXBFAS9wFCts+yvh2WZJvFsHoQQxA==","signatures":[{"sig":"MEUCIQD5cOZzL3Tgi0FRgwYDuA+1R/IusIbpRu9RgiruViXYRQIgGn5b5zH86iLEFyD7DKbXnQduTVSUIski/+cDqqqWf7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1019004},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"1e1a52aef53b8b591be89742f022caf7e7e7bdf9","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","chart.js":"^4.4.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","chart.js":"^4.0.0 || ^5.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"chart.js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/editor_0.5.1_1769074684597_0.4614315910093896","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@pubwave/editor","version":"0.5.2","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.5.2","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"8824f848014acf8593476cb559a7688c2b2fea21","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.5.2.tgz","fileCount":9,"integrity":"sha512-UMGHwNr17c+FEFXuuEU10v/00Vba276uFebtYy3rmdyZdDCQv8CIluMMH4GZwWST1L7f6bZX3aMnUfHzDUmuZg==","signatures":[{"sig":"MEYCIQDIutJQ+K4Ty5U4c3fNqpulCiKqgJC0BYhVkGuMsnamvQIhAN6guGsi8Sm5xVfyWAKuCpQq3EXOTrtvJFppUPGRUV2I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1028911},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"5295bc895d36d401a9ab5a02f6eac73a3babe071","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-table":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-table-row":"^2.27.1","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-table-cell":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-table-header":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","chart.js":"^4.4.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","chart.js":"^4.0.0 || ^5.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"chart.js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/editor_0.5.2_1769335307233_0.1350283589368393","host":"s3://npm-registry-packages-npm-production"}},"0.5.3":{"name":"@pubwave/editor","version":"0.5.3","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.5.3","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"ded593dcc4a94c7e7ff85fdf62800fdc608fcdee","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.5.3.tgz","fileCount":9,"integrity":"sha512-xNJkHvZ8LqzElkid4B+hX+mjy9Yk9jRMRQogHxoCjLf2IUtHLTtLQHmxHByBJuEiE0bW1wkDIQ786poUqCg1kw==","signatures":[{"sig":"MEUCICIYQByqkjNE/dxkoEd5VmegcKHyEZb41klvzA5e164dAiEAhOJ+FJbtA+o4+rn4IK0aYyRgh7ugGDkgWblolJQtsxc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1029944},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"2f509f31397ec08bfb94be9d470b03194e47de08","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-table":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-table-row":"^2.27.1","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-table-cell":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-table-header":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","chart.js":"^4.4.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","chart.js":"^4.0.0 || ^5.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"chart.js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/editor_0.5.3_1769412502585_0.649879043934033","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@pubwave/editor","version":"0.5.4","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.5.4","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"4bd792213da5499c1887b0bd2738c45ef5b7e677","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.5.4.tgz","fileCount":7,"integrity":"sha512-Pjw/iPThP7eVJz09JRTSRtXYJJ/3uU1LyhuUBcp3Iq3Pid4P7NILH//3Rbg8WGXD4/H0ssw06hdWXxHS27l+hA==","signatures":[{"sig":"MEYCIQCoHe0LxFbuGy2ngZmH4iv9IizB5Z/PUF0tdFporTs62gIhALbcruek/Qu4xiC2x8GPBJhjK2rU/MepCy8MkeSZLJU4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":539755},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"a461e596d7227b795891a72c91d499f0a592e6da","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-table":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-table-row":"^2.27.1","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-table-cell":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-table-header":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","chart.js":"^4.4.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","chart.js":"^4.0.0 || ^5.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"chart.js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/editor_0.5.4_1769755910778_0.08250908982074101","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@pubwave/editor","version":"0.5.5","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.5.5","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"675bbc2aed4ca894651d1608310a4bdf1f5e0ed3","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.5.5.tgz","fileCount":7,"integrity":"sha512-G88xghBLvDV8smGO+ybwL5co0qyKkQt4m6UIqmcGRSQRYnZM4mnvOd3gTNc9a4waucCJKRw7TksdO3p2PQSCgA==","signatures":[{"sig":"MEQCIDdg5MPfi8kxj/gnZLqAxSssTcE1JLXZexJ/fSiJ+f7pAiBPL8jDjDYMclabcGhEAf5cnFYT3JKovEJqSekPlM4u9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":565750},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"2d9a4b37ded2985512fca3a867c9cd9f35510a90","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-table":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-table-row":"^2.27.1","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-table-cell":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-table-header":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","chart.js":"^4.4.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","chart.js":"^4.0.0 || ^5.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"chart.js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/editor_0.5.5_1769785010576_0.4198068405842619","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@pubwave/editor","version":"0.5.6","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.5.6","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"678a81c18d237d1661c27affa66483608f03a16e","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.5.6.tgz","fileCount":7,"integrity":"sha512-BAFhVev+Ols6S0BPDXO4DBr34lysMoyVot1EfKqAcqdaEssqEQWr+9TFhb53UTfiv7MP0WKzSSPp09kpzrYjuA==","signatures":[{"sig":"MEQCIGg6uPPTI9crtjX1/7OosGyQpUKWDO9LhMVYDONLJW4EAiBdT0OeX4yZQV4ic7pd5ghrg8BmBVWK8IGm6zuTTaInIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":572935},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"d7a1e17f636f7ac7d9b4d8811086f630ab1cea80","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-table":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-table-row":"^2.27.1","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-table-cell":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-table-header":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","chart.js":"^4.4.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","chart.js":"^4.0.0 || ^5.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"chart.js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/editor_0.5.6_1770381542600_0.17545963560587574","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"@pubwave/editor","version":"0.5.7","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.5.7","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"e81aa143e5a49cc6cf0cc48c1308d3478672a2c6","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.5.7.tgz","fileCount":7,"integrity":"sha512-FRvdkwI2PcDXVTYYERdEJWl6V8ynFxrXMYPwKyLAOIl+7FjLGiqNsDDKaFET5NbqGtlsoff8vpsl+D3bHlhSaw==","signatures":[{"sig":"MEUCIFDOb6eUtHqYnRbZ4pV/n276o0uRDKdXQDGz+Pfe6GZTAiEAjulhm+CshQAh2ZHI9BGhcybfHWguQH+g1jKgUx++EUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":573549},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"f3068efda7b1f288625b8f0f313696032be9db83","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-table":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-table-row":"^2.27.1","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-table-cell":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-table-header":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","chart.js":"^4.4.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","chart.js":"^4.0.0 || ^5.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"chart.js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/editor_0.5.7_1770435972798_0.6899321819963733","host":"s3://npm-registry-packages-npm-production"}},"0.5.8":{"name":"@pubwave/editor","version":"0.5.8","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","_id":"@pubwave/editor@0.5.8","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"homepage":"https://github.com/pubwave/pubwave-editor#readme","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"dist":{"shasum":"b45bda93ae5c57cbdbf9f02d68bc0fc41b985bf9","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-0.5.8.tgz","fileCount":7,"integrity":"sha512-jjPJTOhvoSt2ZNDH6hx/UW3w8WiV5+c2n77fVZm1IYXtRcT7cMzulRcX43xWji07R5kRoWt5c4ycok26h+jpHQ==","signatures":[{"sig":"MEUCIQCHOh+GTdCPnFMWK4Bd+9F7sC1tQOWYChVHiji2KRtuoQIgKqQto1C0xIMFrAvRnOSi4LqZdUTvlo35wZInwuJ1Ohk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":586013},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./style.css":"./dist/index.css"},"gitHead":"1d53d89680e8538e7b42fe86f72ac674dc71c7a0","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"tsc -b && vite build","format":"prettier --write .","dev:lib":"vite --mode lib","lint:fix":"eslint . --fix","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true)","test:unit":"vitest run","typecheck":"tsc --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build:lib","test:integration":"playwright test --project=integration","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs"},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"repository":{"url":"git+https://github.com/pubwave/pubwave-editor.git","type":"git"},"_npmVersion":"11.7.0","description":"A Notion-level block editor built with React and Tiptap","directories":{},"sideEffects":["*.css"],"_nodeVersion":"20.19.0","dependencies":{"tippy.js":"^6.3.7","@tiptap/pm":"^2.12.0","@tiptap/core":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-code":"^2.27.1","@tiptap/extension-link":"^2.12.0","@tiptap/extension-text":"^2.12.0","@tiptap/extension-image":"^2.27.1","@tiptap/extension-table":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-document":"^2.12.0","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-table-row":"^2.27.1","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-underline":"^2.27.1","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-table-cell":"^2.27.1","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-table-header":"^2.27.1","@tiptap/extension-horizontal-rule":"^2.27.1"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.0.5","jsdom":"^27.3.0","react":"^18.3.1","eslint":"^9.17.0","vitest":"^2.1.8","globals":"^15.14.0","chart.js":"^4.4.0","prettier":"^3.4.2","react-dom":"^18.3.1","@eslint/js":"^9.17.0","typescript":"^5.7.2","@types/node":"^22.10.2","tailwindcss":"^4.1.18","@types/react":"^18.3.17","autoprefixer":"^10.4.23","vite-plugin-dts":"^4.4.0","@playwright/test":"^1.49.1","@types/react-dom":"^18.3.5","typescript-eslint":"^8.18.1","@vitest/coverage-v8":"^2.1.8","eslint-plugin-react":"^7.37.2","@tailwindcss/postcss":"^4.1.18","@vitejs/plugin-react":"^4.3.4","@testing-library/react":"^16.3.1","eslint-config-prettier":"^9.1.0","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^5.1.0"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","chart.js":"^4.0.0 || ^5.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"chart.js":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/editor_0.5.8_1775620803987_0.16015460911234913","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@pubwave/editor","version":"1.0.0","description":"A Notion-level block editor built with React and Tiptap","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./server":{"import":{"types":"./dist/server.d.ts","default":"./dist/server.js"},"require":{"types":"./dist/server.d.cts","default":"./dist/server.cjs"}},"./style.css":{"types":"./dist/style.css.d.ts","default":"./dist/index.css"}},"sideEffects":["*.css"],"scripts":{"dev":"vite","dev:lib":"vite --mode lib","build":"tsc -b && vite build","build:lib":"vite build --mode lib && (test -f dist/editor.css && mv dist/editor.css dist/index.css || true) && printf 'export {};\\n' > dist/style.css.d.ts","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","test":"vitest","test:unit":"vitest run","test:integration":"playwright test --project=integration","test:integration:vite":"playwright test --project=vite-react","test:integration:nextjs":"playwright test --project=nextjs","test:integration:all":"playwright test --project=vite-react --project=nextjs","test:stop-servers":"lsof -ti:3000,5174 | xargs kill -9 2>/dev/null || echo 'No servers running on ports 3000 or 5174'","test:coverage":"vitest run --coverage","typecheck":"tsc --noEmit","prepublishOnly":"npm run build:lib"},"peerDependencies":{"chart.js":"^4.0.0 || ^5.0.0","react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"peerDependenciesMeta":{"chart.js":{"optional":true}},"dependencies":{"@tiptap/core":"^2.12.0","@tiptap/extension-blockquote":"^2.27.1","@tiptap/extension-bold":"^2.12.0","@tiptap/extension-bullet-list":"^2.27.1","@tiptap/extension-code":"^2.27.1","@tiptap/extension-code-block":"^2.27.1","@tiptap/extension-document":"^2.12.0","@tiptap/extension-dropcursor":"^2.27.1","@tiptap/extension-gapcursor":"^2.27.1","@tiptap/extension-hard-break":"^2.27.1","@tiptap/extension-heading":"^2.12.0","@tiptap/extension-history":"^2.12.0","@tiptap/extension-horizontal-rule":"^2.27.1","@tiptap/extension-image":"^2.27.1","@tiptap/extension-italic":"^2.12.0","@tiptap/extension-link":"^2.12.0","@tiptap/extension-list-item":"^2.27.1","@tiptap/extension-ordered-list":"^2.27.1","@tiptap/extension-paragraph":"^2.12.0","@tiptap/extension-placeholder":"^2.12.0","@tiptap/extension-strike":"^2.27.1","@tiptap/extension-table":"^2.27.1","@tiptap/extension-table-cell":"^2.27.1","@tiptap/extension-table-header":"^2.27.1","@tiptap/extension-table-row":"^2.27.1","@tiptap/extension-task-item":"^2.27.1","@tiptap/extension-task-list":"^2.27.1","@tiptap/extension-text":"^2.12.0","@tiptap/extension-underline":"^2.27.1","@tiptap/pm":"^2.12.0","@tiptap/react":"^2.12.0","@tiptap/suggestion":"^2.27.1","marked":"^18.0.3","tippy.js":"^6.3.7"},"devDependencies":{"@eslint/js":"^9.17.0","@playwright/test":"^1.49.1","@tailwindcss/postcss":"^4.1.18","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.1","@types/node":"^22.10.2","@types/react":"^18.3.17","@types/react-dom":"^18.3.5","@vitejs/plugin-react":"^4.3.4","@vitest/coverage-v8":"^2.1.8","autoprefixer":"^10.4.23","chart.js":"^4.4.0","eslint":"^9.17.0","eslint-config-prettier":"^9.1.0","eslint-plugin-react":"^7.37.2","eslint-plugin-react-hooks":"^5.1.0","globals":"^15.14.0","jsdom":"^27.3.0","prettier":"^3.4.2","react":"^18.3.1","react-dom":"^18.3.1","tailwindcss":"^4.1.18","typescript":"^5.7.2","typescript-eslint":"^8.18.1","vite":"^6.0.5","vite-plugin-dts":"^4.4.0","vitest":"^2.1.8"},"repository":{"type":"git","url":"git+https://github.com/pubwave/pubwave-editor.git"},"keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"author":{"name":"Pubwave"},"license":"MIT","engines":{"node":">=18.0.0"},"gitHead":"250fc9da35c45de429be6ca62f5a0deeb4522a81","_id":"@pubwave/editor@1.0.0","bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"homepage":"https://github.com/pubwave/pubwave-editor#readme","_nodeVersion":"20.19.0","_npmVersion":"11.7.0","dist":{"integrity":"sha512-QbcgKwnBtaiUGYVJ9gjTEcBdGpiWj9O7dpZIyyzDp/Tl9FnZ2/rak6uiBCGlfdJ2sc/pR72l8E5+4z/i/PNkMw==","shasum":"9c0280802e320b834c15b9a5d57afd6120d81e1a","tarball":"https://registry.npmjs.org/@pubwave/editor/-/editor-1.0.0.tgz","fileCount":11,"unpackedSize":789400,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCfh4XXUeZrfYYw/hb7CW9PXCk7jCsn1+oyCymvmScVpQIgbN0af7XW4i0Eb7uidJrTYq65+ck3onN2ocikj5WnG6E="}]},"_npmUser":{"name":"pubwave","email":"pubwave.live@gmail.com"},"directories":{},"maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/editor_1.0.0_1778288248972_0.6913022612993491"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-03T14:02:16.279Z","modified":"2026-05-09T00:57:29.294Z","0.1.0":"2026-01-03T13:17:16.429Z","0.1.1-alpha.0":"2026-01-03T14:02:16.545Z","0.1.1-alpha.1":"2026-01-03T14:11:27.599Z","0.1.1-alpha.2":"2026-01-03T14:35:53.145Z","0.1.1":"2026-01-04T04:06:23.581Z","0.1.1-alpha.3":"2026-01-04T07:24:00.774Z","0.1.1-alpha.4":"2026-01-04T07:30:55.390Z","0.1.2":"2026-01-04T07:33:55.421Z","0.1.3":"2026-01-04T12:41:28.904Z","0.2.0":"2026-01-04T13:41:29.571Z","0.2.1":"2026-01-04T13:54:39.520Z","0.2.5":"2026-01-04T14:39:16.935Z","0.2.6":"2026-01-15T09:40:44.066Z","0.2.7":"2026-01-15T11:30:51.811Z","0.3.0":"2026-01-17T05:11:43.640Z","0.3.5":"2026-01-18T09:23:09.578Z","0.5.0":"2026-01-22T09:10:25.357Z","0.5.1":"2026-01-22T09:38:04.802Z","0.5.2":"2026-01-25T10:01:47.410Z","0.5.3":"2026-01-26T07:28:22.760Z","0.5.4":"2026-01-30T06:51:51.013Z","0.5.5":"2026-01-30T14:56:50.727Z","0.5.6":"2026-02-06T12:39:02.781Z","0.5.7":"2026-02-07T03:46:12.991Z","0.5.8":"2026-04-08T04:00:04.174Z","1.0.0":"2026-05-09T00:57:29.155Z"},"bugs":{"url":"https://github.com/pubwave/pubwave-editor/issues"},"author":{"name":"Pubwave"},"license":"MIT","homepage":"https://github.com/pubwave/pubwave-editor#readme","keywords":["editor","block-editor","rich-text","tiptap","prosemirror","notion","react"],"repository":{"type":"git","url":"git+https://github.com/pubwave/pubwave-editor.git"},"description":"A Notion-level block editor built with React and Tiptap","maintainers":[{"name":"pubwave","email":"pubwave.live@gmail.com"}],"readme":"# @pubwave/editor\n\nA Notion-level block editor built with React and Tiptap.\n\n[![npm version](https://img.shields.io/npm/v/@pubwave/editor.svg)](https://www.npmjs.com/package/@pubwave/editor)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## ✨ Features\n\n- 📝 **Premium Writing Experience** - Fluid, responsive editing with natural Enter-driven writing flow\n- ✨ **Selection-Only Toolbar** - Contextual formatting that appears only when you select text\n- 🎯 **Block Drag & Drop** - Intuitive reordering with clear visual feedback\n- 🎨 **Theme Tokens** - Full styling control via CSS custom properties\n- ⚡ **SSR Safe** - Works with Next.js and other SSR frameworks\n- 📦 **Lightweight** - Only ships what you need (React + Tiptap peer dependencies)\n- ⌨️ **Slash Commands** - Type `/` to quickly insert blocks and formatting\n- 🎨 **Text & Background Colors** - Rich color picker with recently used colors\n- 🏷️ **Inline Tags** - Inline tag marks with custom colors, variants, and spacing\n- 🔄 **Turn Into** - Convert blocks between different types (paragraph, headings, lists, etc.)\n- 📋 **Rich Formatting** - Bold, italic, underline, strikethrough, code, links, and text alignment\n- 📝 **Multiple Block Types** - Paragraphs, headings, lists, quotes, code blocks, tables, charts, and more\n- 🖼️ **Image Support** - Upload images via file picker or paste from clipboard, with base64 or custom upload service\n- 📊 **Chart Support** - Interactive charts powered by Chart.js with editable data\n- 🌐 **Internationalization** - Multi-language support with English as default\n- 🤖 **AI Composer** - Built-in `/ai` slash command, bubble toolbar ✨ button, and `⌘J` shortcut. BYO model — OpenAI / Anthropic / Gemini / Ollama / OpenRouter / DeepSeek / Moonshot / Zhipu / 千问 / any OpenAI-compatible endpoint\n\n---\n\n## 📦 Installation\n\n### Basic Installation (without Chart support)\n\n```bash\nnpm install @pubwave/editor\n# or\nyarn add @pubwave/editor\n# or\npnpm add @pubwave/editor\n```\n\n### With Chart Support\n\nIf you want to use Chart blocks, also install Chart.js:\n\n```bash\nnpm install @pubwave/editor chart.js\n# or\nyarn add @pubwave/editor chart.js\n# or\npnpm add @pubwave/editor chart.js\n```\n\n**Note:** `chart.js` is an optional peer dependency. Only install it if you plan to use Chart block functionality.\n\n---\n\n## 🚀 Quick Start\n\n```tsx\nimport { PubwaveEditor } from '@pubwave/editor';\nimport '@pubwave/editor/style.css';\n\nfunction MyEditor() {\n  const [content, setContent] = useState({\n    type: 'doc',\n    content: [\n      {\n        type: 'paragraph',\n        content: [{ type: 'text', text: 'Start writing...' }],\n      },\n    ],\n  });\n\n  return (\n    <PubwaveEditor\n      content={content}\n      onChange={(newContent) => setContent(newContent)}\n    />\n  );\n}\n```\n\n---\n\n## 📋 Requirements\n\n### React Versions\n\n| React Version | Status                 |\n| ------------- | ---------------------- |\n| 18.x          | ✅ Tested, Recommended |\n| 19.x          | ✅ Supported           |\n\n### Peer Dependencies\n\n- `react`: ^18.0.0 || ^19.0.0 (required)\n- `react-dom`: ^18.0.0 || ^19.0.0 (required)\n- `chart.js`: ^4.0.0 || ^5.0.0 (optional, required only for Chart block support)\n\n### Browser Support\n\n- Chrome (latest)\n- Firefox (latest)\n- Safari (latest)\n- Edge (latest)\n\n---\n\n## 📖 API Reference\n\n### `PubwaveEditor` Component\n\nThe main React component for rendering the editor.\n\n#### Component Props\n\n| Prop                | Type                             | Default              | Description                                                                                                                                              |\n| ------------------- | -------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `content`           | `JSONContent`                    | `undefined`          | Initial content in Tiptap JSON format                                                                                                                    |\n| `editable`          | `boolean`                        | `true`               | Whether the editor is in read-only mode                                                                                                                  |\n| `placeholder`       | `string`                         | `'Start writing...'` | Placeholder text shown when the editor is empty                                                                                                          |\n| `theme`             | `EditorTheme`                    | `undefined`          | Theme configuration object (see [Theming](#-theming))                                                                                                    |\n| `autofocus`         | `boolean \\| 'start' \\| 'end'`    | `false`              | Enable autofocus on mount. `true` or `'end'` focuses at the end, `'start'` focuses at the beginning                                                      |\n| `imageUpload`       | `ImageUploadConfig`              | `undefined`          | Image upload configuration (see [Image Upload](#-image-upload))                                                                                          |\n| `width`             | `string`                         | `'100%'`             | Editor container width. Can be a CSS value like `'100%'`, `'1200px'`, `'90vw'`, etc. Defaults to `'100%'` (full width of parent container)               |\n| `height`            | `string`                         | `undefined`          | Editor container height. Can be a CSS value like `'500px'`, `'80vh'`, `'auto'`, etc. When set, the editor becomes a fixed-height scrollable container    |\n| `minHeight`         | `string`                         | `undefined`          | Editor container minimum height. Can be a CSS value like `'200px'`, `'50vh'`, etc. The editor will expand with content but maintain at least this height |\n| `onChange`          | `(content: JSONContent) => void` | `undefined`          | Callback fired when the editor content changes                                                                                                           |\n| `onSelectionChange` | `() => void`                     | `undefined`          | Callback fired when the selection changes                                                                                                                |\n| `onFocus`           | `() => void`                     | `undefined`          | Callback fired when the editor gains focus                                                                                                               |\n| `onBlur`            | `() => void`                     | `undefined`          | Callback fired when the editor loses focus                                                                                                               |\n| `onReady`           | `(api: EditorAPI) => void`       | `undefined`          | Callback fired when the editor is ready with API access                                                                                                  |\n| `className`         | `string`                         | `undefined`          | Additional CSS class for the container                                                                                                                   |\n| `data-testid`       | `string`                         | `'pubwave-editor'`   | Test ID for testing purposes                                                                                                                             |\n\nFor complete TypeScript type definitions, see the exported types from `@pubwave/editor`:\n\n- `EditorTheme` - Theme configuration\n- `EditorAPI` - Editor API interface\n- `TagProps` - Standalone tag component props\n- `EditorLocale` - Supported locale codes: `'en' | 'zh' | 'zh-CN' | 'ja' | 'ko' | 'fr' | 'de' | 'es' | 'pt'`\n- `ImageUploadConfig` - Image upload configuration\n\n### `EditorAPI` Methods\n\nThe editor exposes a public API through the `ref` prop or `onReady` callback:\n\n```tsx\nimport { useRef } from 'react';\nimport type { EditorAPI } from '@pubwave/editor';\n\nconst editorRef = useRef<EditorAPI | null>(null);\n\n<PubwaveEditor\n  ref={editorRef}\n  onReady={(api) => {\n    editorRef.current = api;\n  }}\n/>;\n\n// Later, use the API\neditorRef.current?.setContent(newContent);\neditorRef.current?.getJSON();\neditorRef.current?.toggleBold();\n```\n\n#### Available Methods\n\n| Method                  | Description                 | Parameters                    | Returns       |\n| ----------------------- | --------------------------- | ----------------------------- | ------------- |\n| `getState()`            | Get current editor state    | -                             | `EditorState` |\n| `getJSON()`             | Get content as JSON         | -                             | `JSONContent` |\n| `getHTML()`             | Get content as HTML         | -                             | `string`      |\n| `getText()`             | Get content as plain text   | -                             | `string`      |\n| `setContent(content)`   | Set new content             | `content: JSONContent`        | `void`        |\n| `clearContent()`        | Clear all content           | -                             | `void`        |\n| `setEditable(editable)` | Toggle read-only mode       | `editable: boolean`           | `void`        |\n| `focus(position?)`      | Focus the editor            | `position?: 'start' \\| 'end'` | `void`        |\n| `blur()`                | Blur the editor             | -                             | `void`        |\n| `toggleBold()`          | Toggle bold formatting      | -                             | `void`        |\n| `toggleItalic()`        | Toggle italic formatting    | -                             | `void`        |\n| `setLink(href)`         | Set or remove a link        | `href: string \\| null`        | `void`        |\n| `destroy()`             | Destroy the editor instance | -                             | `void`        |\n\n---\n\n## 🖼️ Image Upload\n\nThe editor supports two image upload modes:\n\n1. **Base64 (Default)** - Images are converted to base64 data URLs and embedded directly\n2. **Custom Upload Service** - Images are uploaded to your server and URLs are stored\n\n### Base64 Mode (Default)\n\nBy default, images are converted to base64. No configuration needed:\n\n```tsx\n<PubwaveEditor />\n```\n\n### Custom Upload Service\n\nConfigure a custom upload handler to upload images to your server:\n\n```tsx\n<PubwaveEditor\n  imageUpload={{\n    handler: async (file: File) => {\n      const formData = new FormData();\n      formData.append('image', file);\n\n      const response = await fetch('/api/upload', {\n        method: 'POST',\n        body: formData,\n      });\n\n      const data = await response.json();\n      return data.url; // Return the image URL\n    },\n    maxSize: 5 * 1024 * 1024, // 5MB (optional, default: 10MB)\n    accept: ['image/jpeg', 'image/png', 'image/webp'], // Optional, default: ['image/*']\n  }}\n/>\n```\n\n### Image Upload Features\n\n- **File Picker**: Use `/image` command in slash menu to open file picker\n- **Paste Support**: Paste images from clipboard (Ctrl/Cmd+V)\n- **Automatic Fallback**: If custom upload fails, automatically falls back to base64\n- **File Validation**: Validates file type and size before upload\n- **Error Handling**: Logs errors to console if upload fails\n\n### Custom Upload Service\n\nThe `handler` function receives a `File` object and should return a Promise that resolves to the image URL. The editor will automatically fall back to base64 if the upload fails.\n\n```tsx\n<PubwaveEditor\n  imageUpload={{\n    handler: async (file: File) => {\n      // Upload to your server (Cloudinary, AWS S3, etc.)\n      const formData = new FormData();\n      formData.append('image', file);\n\n      const response = await fetch('/api/upload', {\n        method: 'POST',\n        body: formData,\n      });\n\n      const data = await response.json();\n      return data.url; // Return the image URL\n    },\n    maxSize: 10 * 1024 * 1024, // 10MB (optional)\n    accept: ['image/jpeg', 'image/png', 'image/webp'], // Optional\n  }}\n/>\n```\n\n---\n\n## 🎨 Theming\n\nPubwave Editor supports full theme customization through the `theme` prop. You can customize colors, backgrounds, and more.\n\n### Basic Theme Configuration\n\n```tsx\nimport { PubwaveEditor } from '@pubwave/editor';\nimport type { EditorTheme } from '@pubwave/editor';\n\nconst theme: EditorTheme = {\n  colors: {\n    background: '#ffffff',\n    text: '#1f2937',\n    textMuted: '#6b7280',\n    border: '#e5e7eb',\n    primary: '#3b82f6',\n  },\n};\n\n<PubwaveEditor theme={theme} />;\n```\n\nFor complete `EditorTheme` interface definition, see TypeScript definitions. Key properties:\n\n- `colors` - Color configuration (background, text, border, primary, linkColor)\n- `locale` - Locale code for internationalization\n- `backgroundImage` - Optional background image URL\n- `backgroundImageOptions` - Background image display options (size, position, repeat, attachment)\n\n### Predefined Themes\n\nThe editor includes several predefined themes:\n\n#### Light Theme\n\n```tsx\nconst lightTheme: EditorTheme = {\n  colors: {\n    background: 'linear-gradient(135deg, #ffffff 0%, #f8fafc 100%)',\n    text: '#1f2937',\n    textMuted: '#6b7280',\n    border: '#e5e7eb',\n    primary: '#3b82f6',\n  },\n};\n```\n\n#### Dark Theme\n\n```tsx\nconst darkTheme: EditorTheme = {\n  colors: {\n    background: 'linear-gradient(135deg, #0f172a 0%, #1e293b 100%)',\n    text: '#f1f5f9',\n    textMuted: '#94a3b8',\n    border: '#334155',\n    primary: '#60a5fa',\n    linkColor: '#3b82f6',\n  },\n};\n```\n\n**Other themes:** Violet, Rose, Sky (gradient themes).\n\n### Background Image\n\nYou can add a background image to the editor container:\n\n```tsx\n<PubwaveEditor\n  theme={{\n    colors: {\n      background: '#ffffff',\n      text: '#1f2937',\n    },\n    backgroundImage: 'https://example.com/background.jpg',\n    backgroundImageOptions: {\n      size: 'cover',\n      position: 'center',\n      repeat: 'no-repeat',\n      attachment: 'fixed',\n    },\n  }}\n/>\n```\n\n**Background Image Options:**\n\n- `size`: `'cover'` (default) | `'contain'` | custom CSS value (e.g., `'100% 100%'`)\n- `position`: CSS position value (default: `'center'`)\n- `repeat`: `'no-repeat'` (default) | `'repeat'` | `'repeat-x'` | `'repeat-y'`\n- `attachment`: `'scroll'` (default) | `'fixed'` | `'local'`\n\n**Note:** The background image will be layered on top of the background color. If you want the image to be the only background, set `background: 'transparent'` in the colors.\n\n### Internationalization (i18n)\n\nPubwave Editor supports multiple languages through the `locale` option in the theme configuration. The editor defaults to English (`'en'`).\n\n#### Supported Locales\n\nThe following locale codes are supported:\n\n- `'en'` - English (default)\n- `'zh'` - Chinese\n- `'zh-CN'` - Simplified Chinese\n- `'ja'` - Japanese\n- `'ko'` - Korean\n- `'fr'` - French\n- `'de'` - German\n- `'es'` - Spanish\n- `'pt'` - Portuguese\n\n**Note:** Currently, only English translations are fully implemented. Other languages will fall back to English. The framework is ready for future language additions.\n\n#### Setting the Locale\n\n```tsx\nimport { PubwaveEditor } from '@pubwave/editor';\nimport type { EditorTheme } from '@pubwave/editor';\n\nconst theme: EditorTheme = {\n  locale: 'en', // Default, can be set to any supported locale\n  colors: {\n    background: '#ffffff',\n    text: '#1f2937',\n    primary: '#3b82f6',\n  },\n};\n\n<PubwaveEditor theme={theme} />;\n```\n\nThe locale affects all user-facing text in the editor, including:\n\n- Slash command menu items and descriptions\n- Toolbar button labels and tooltips\n- Accessibility labels (ARIA)\n- Block type labels\n- Placeholder text\n\n### CSS Custom Properties\n\nThe editor also uses CSS custom properties for styling. Define these in your CSS:\n\n```css\n:root {\n  --pubwave-bg: #ffffff;\n  --pubwave-text: #1a1a1a;\n  --pubwave-text-muted: #6b7280;\n  --pubwave-border: #e5e7eb;\n  --pubwave-primary: #3b82f6;\n  --pubwave-hover: rgba(0, 0, 0, 0.05);\n}\n```\n\n### Inline Tags\n\nPubwave Editor supports inline `tag` marks in content JSON.\n\nSupported attributes:\n\n- `variant`: `'soft' | 'outline' | 'solid'`\n- `tone`: `'primary' | 'neutral'`\n- `size`: `'sm' | 'md'`\n- `backgroundColor`: custom background color\n- `textColor`: custom text color\n- `borderColor`: custom border color\n- `spacing`: trailing spacing such as `'8px'` or `'0.5rem'`\n\nExample content:\n\n```ts\nconst content = {\n  type: 'doc',\n  content: [\n    {\n      type: 'paragraph',\n      content: [\n        {\n          type: 'text',\n          text: 'Live Preview',\n          marks: [\n            {\n              type: 'tag',\n              attrs: {\n                variant: 'outline',\n                backgroundColor: 'rgba(20, 10, 31, 0.38)',\n                textColor: '#f5f3ff',\n                borderColor: '#5b21b6',\n                spacing: '0.75rem',\n              },\n            },\n          ],\n        },\n      ],\n    },\n  ],\n};\n```\n\nYou can also use the standalone `Tag` component outside the editor:\n\n```tsx\nimport { Tag } from '@pubwave/editor';\n\n<Tag\n  variant=\"outline\"\n  colors={{\n    background: 'rgba(20, 10, 31, 0.38)',\n    text: '#f5f3ff',\n    border: '#5b21b6',\n  }}\n  spacing=\"0.75rem\"\n>\n  Live Preview\n</Tag>;\n```\n\n---\n\n## 🎯 Core Features\n\n### Slash Commands\n\nType `/` anywhere in the editor to open the command menu. Filter commands by typing keywords.\n\n**Available Commands:**\n\n| Command                 | Aliases                              | Description                |\n| ----------------------- | ------------------------------------ | -------------------------- |\n| `/text` or `/paragraph` | `/p`, `/text`                        | Plain text block           |\n| `/heading1`             | `/h1`, `/title`                      | Large section heading      |\n| `/heading2`             | `/h2`, `/subtitle`                   | Medium section heading     |\n| `/heading3`             | `/h3`                                | Small section heading      |\n| `/bullet`               | `/ul`, `/bullet`, `/-`               | Bulleted list              |\n| `/numbered`             | `/ol`, `/numbered`, `/1.`            | Numbered list              |\n| `/todo`                 | `/task`, `/checkbox`, `/[]`          | To-do list with checkboxes |\n| `/image`                | `/img`, `/picture`, `/photo`, `/pic` | Upload or paste an image   |\n| `/quote`                | `/blockquote`, `/>`                  | Quote block                |\n| `/code`                 | `/pre`, `/snippet`, `/```            | Code block                 |\n| `/divider`              | `/hr`, `/line`, `/---`               | Horizontal divider         |\n| `/table`                | `/grid`, `/tbl`                      | Insert a table             |\n\n**Usage:**\n\n1. Type `/` to open the menu\n2. Type to filter (e.g., `/h1` for heading 1, `/img` for image)\n3. Press `Enter` or click to select\n4. Use `ArrowUp`/`ArrowDown` to navigate\n5. Press `Escape` to close\n\n### Selection Toolbar\n\nThe toolbar appears automatically when you select text, providing quick access to formatting options.\n\n**Available Actions:**\n\n- **Turn Into** - Convert block type (Paragraph, Heading 1-3, Bulleted List, Numbered List)\n- **Bold** (`Cmd/Ctrl+B`) - Make text bold\n- **Italic** (`Cmd/Ctrl+I`) - Make text italic\n- **Underline** - Underline text\n- **Strikethrough** - Strikethrough text\n- **Code** - Inline code formatting\n- **Alignment** - Left align, center align, right align (three direct toolbar icons)\n- **Link** - Add or edit link\n- **Text Color** - Change text color (with recently used colors)\n- **Background Color** - Change background color (with recently used colors)\n\n### Block Types\n\nThe editor supports the following block types:\n\n- **Paragraph** - Default text block\n- **Heading 1-3** - Section headings\n- **Bulleted List** - Unordered list with bullets\n- **Numbered List** - Ordered list with numbers\n- **Task List** - Checklist with checkboxes\n- **Table** - Table block (rows/columns with header)\n- **Image** - Image block (supports base64 or URL)\n- **Chart** - Interactive chart powered by Chart.js (bar, line, pie, doughnut, radar, polar area)\n- **Blockquote** - Quote block\n- **Code Block** - Code snippet with syntax highlighting\n- **Horizontal Rule** - Divider line\n\n### Keyboard Shortcuts\n\n| Shortcut           | Action                  |\n| ------------------ | ----------------------- |\n| `Cmd/Ctrl+B`       | Toggle bold             |\n| `Cmd/Ctrl+I`       | Toggle italic           |\n| `Cmd/Ctrl+Z`       | Undo                    |\n| `Cmd/Ctrl+Shift+Z` | Redo                    |\n| `Cmd/Ctrl+A`       | Select all              |\n| `Enter`            | Create new block        |\n| `Arrow Up/Down`    | Navigate between blocks |\n| `Shift+Arrow`      | Select text             |\n| `/`                | Open slash command menu |\n| `Escape`           | Close menus/cancel drag |\n\n### Drag & Drop\n\n- **Drag Handle** - Appears on hover at the left edge of blocks\n- **Visual Feedback** - Clear drop indicators show where blocks will be placed\n- **Cancel** - Press `Escape` to cancel dragging\n- **Multi-block Selection** - Select multiple blocks to drag together\n\n### Color Picker\n\nThe color picker provides:\n\n- **Text Colors** - 10 predefined text colors\n- **Background Colors** - 10 predefined background colors\n- **Recently Used** - Global history of recently used colors (persists across sessions)\n- **Visual Distinction** - Background colors shown as solid circles, text colors shown with 'A' icon\n- **Tooltips** - Hover over any color to see its name\n- **Smart Positioning** - Automatically positions above or below based on available space\n\n---\n\n## 🔧 Advanced Usage\n\n### Setting Editor Width\n\nBy default, the editor takes 100% of the parent container width. You can customize the width using the `width` prop:\n\n```tsx\n// Full width (default)\n<PubwaveEditor width=\"100%\" />\n\n// Fixed width\n<PubwaveEditor width=\"1200px\" />\n\n// Responsive width\n<PubwaveEditor width=\"90vw\" />\n<PubwaveEditor width=\"calc(100% - 40px)\" />\n```\n\nThe `width` prop accepts any valid CSS width value. When set, it will override the default `max-width` constraint.\n\n### Setting Editor Height\n\nYou can control the editor's height using the `height` and `minHeight` props:\n\n```tsx\n// Fixed height with scrollable content\n<PubwaveEditor height=\"500px\" />\n\n// Minimum height (expands with content)\n<PubwaveEditor minHeight=\"300px\" />\n\n// Combined: fixed height with minimum fallback\n<PubwaveEditor\n  height=\"600px\"\n  minHeight=\"400px\"\n/>\n\n// Using viewport units\n<PubwaveEditor height=\"80vh\" />\n```\n\n**Important Notes:**\n\n- The editor has default padding of **96px top and bottom** (192px total). Your `height` value should account for this padding to ensure content is visible.\n- For example, `height=\"100px\"` would leave no space for content (100px - 192px padding = negative space).\n- **Recommended minimum height:** At least `300px` for desktop to accommodate padding and content.\n- When `height` is set, the editor becomes a scrollable container - content will scroll vertically when it exceeds the height.\n- When only `minHeight` is set, the editor will grow automatically with content but maintain at least the minimum height.\n- Both props accept any valid CSS height value (`px`, `vh`, `rem`, `%`, etc.).\n\n### Programmatic Content Manipulation\n\n```tsx\nconst editorRef = useRef<EditorAPI | null>(null);\n\n<PubwaveEditor\n  ref={editorRef}\n  onReady={(api) => {\n    editorRef.current = api;\n  }}\n/>;\n\n// Set content programmatically\neditorRef.current?.setContent({\n  type: 'doc',\n  content: [\n    {\n      type: 'heading',\n      attrs: { level: 1 },\n      content: [{ type: 'text', text: 'Hello World' }],\n    },\n  ],\n});\n\n// Get content\nconst json = editorRef.current?.getJSON();\nconst html = editorRef.current?.getHTML();\nconst text = editorRef.current?.getText();\n\n// Apply formatting\neditorRef.current?.toggleBold();\neditorRef.current?.setLink('https://example.com');\n```\n\n### Event Handling\n\n```tsx\n<PubwaveEditor\n  onChange={(content) => {\n    // Content changed\n    console.log('New content:', content);\n  }}\n  onSelectionChange={() => {\n    // Selection changed (toolbar may appear/disappear)\n  }}\n  onFocus={() => {\n    // Editor gained focus\n  }}\n  onBlur={() => {\n    // Editor lost focus\n  }}\n  onReady={(api) => {\n    // Editor is ready, API is available\n    console.log('Editor ready:', api);\n  }}\n/>\n```\n\n### Read-only Mode\n\n```tsx\n<PubwaveEditor editable={false} content={readOnlyContent} />\n```\n\nIn read-only mode:\n\n- All editing affordances are hidden\n- Toolbar does not appear\n- Slash commands are disabled\n- Drag handles are hidden\n- Content is still selectable and copyable\n\n### Custom Slash Commands\n\nYou can extend the editor with custom slash commands:\n\n```tsx\nimport { PubwaveEditor } from '@pubwave/editor';\nimport type { SlashCommand } from '@pubwave/editor';\n\nconst customCommands: SlashCommand[] = [\n  {\n    id: 'custom-block',\n    title: 'Custom Block',\n    description: 'Insert a custom block',\n    icon: <CustomIcon />,\n    aliases: ['custom', 'cb'],\n    group: 'basic',\n    action: (editor) => {\n      // Your custom action\n    },\n  },\n];\n\n// Note: Custom slash commands require access to internal APIs\n// This is an advanced feature - see source code for implementation details\n```\n\n---\n\n## 📊 Chart Support\n\nThe editor includes support for interactive charts powered by Chart.js. Charts are fully editable and support multiple chart types.\n\n### Chart Types\n\nSupported chart types:\n\n- **Bar Chart** - Vertical/horizontal bars for comparisons\n- **Line Chart** - Data trends over time\n- **Pie Chart** - Proportional data representation\n- **Doughnut Chart** - Variation of pie chart with hollow center\n- **Radar Chart** - Multi-dimensional data comparison\n- **Polar Area Chart** - Circular data visualization\n\n### Adding Charts Programmatically\n\n```tsx\nimport { PubwaveEditor } from '@pubwave/editor';\nimport type { JSONContent } from '@tiptap/core';\n\nconst contentWithChart: JSONContent = {\n  type: 'doc',\n  content: [\n    {\n      type: 'chart',\n      attrs: {\n        data: {\n          type: 'bar',\n          data: {\n            labels: ['January', 'February', 'March', 'April'],\n            datasets: [\n              {\n                label: 'Sales',\n                data: [65, 59, 80, 81],\n                backgroundColor: 'rgba(59, 130, 246, 0.7)',\n                borderColor: 'rgba(59, 130, 246, 1)',\n                borderWidth: 2,\n              },\n            ],\n          },\n          options: {\n            responsive: true,\n            maintainAspectRatio: false,\n            plugins: {\n              title: {\n                display: true,\n                text: 'Monthly Sales',\n                color: 'var(--pubwave-text, #37352f)',\n              },\n              legend: {\n                display: true,\n                position: 'bottom',\n              },\n            },\n          },\n        },\n      },\n    },\n  ],\n};\n\n<PubwaveEditor content={contentWithChart} />;\n```\n\n### Chart Features\n\n- **Interactive Editing** - Click edit button on hover to modify chart data\n- **Drag & Drop** - Charts can be reordered like other blocks\n- **Theme Support** - Charts use CSS variables for colors that adapt to theme changes\n- **Responsive** - Charts automatically adjust to container size\n- **Multiple Datasets** - Support for comparing multiple data series\n- **Customizable** - Edit title, labels, colors, and chart options\n\n### Chart Data Structure\n\nThe chart node uses the following data structure:\n\n```typescript\ninterface ChartNodeData {\n  type: 'bar' | 'line' | 'pie' | 'doughnut' | 'radar' | 'polarArea';\n  data: {\n    labels: string[];\n    datasets: Array<{\n      label?: string;\n      data: number[];\n      backgroundColor?: string | string[];\n      borderColor?: string | string[];\n      borderWidth?: number;\n    }>;\n  };\n  options?: {\n    responsive?: boolean;\n    maintainAspectRatio?: boolean;\n    plugins?: {\n      title?: {\n        display?: boolean;\n        text?: string;\n        color?: string;\n        font?: { size?: number; weight?: string };\n      };\n      legend?: {\n        display?: boolean;\n        position?: 'top' | 'bottom' | 'left' | 'right';\n      };\n    };\n  };\n}\n```\n\n### Chart Editing\n\nWhen in editable mode:\n\n1. Hover over a chart to reveal the edit button\n2. Click the edit button to open the chart editor modal\n3. Modify chart type, title, labels, datasets, and appearance options\n4. Save changes to update the chart\n\n---\n\n## 🤖 AI\n\nPubwave ships built-in AI integration: the **AIBar** — a compact floating bar — drives the flow, while the model's output streams **directly into the editor as real Tiptap nodes** (heading, list, table, code block, …) marked as \"pending\" until you Apply or Discard.\n\nYou bring the model — any OpenAI-compatible endpoint, Anthropic, Gemini, or Ollama works out of the box; you can also drop in any custom adapter.\n\n### Entry points (all open the same bar)\n\n| Trigger | When |\n|---|---|\n| Type `/ai` | Anywhere in the editor |\n| Click the ✨ button in the bubble toolbar | Text is selected |\n| Press `⌘J` / `Ctrl+J` | Always |\n\n### What it does\n\n- **Streams into the editor**, not into a popover. AI's output appears in place — heading becomes a real heading, list becomes a real list, table becomes a real table — with a faded \"pending\" highlight while it's still in review.\n- **Two implicit modes** based on what's selected when you open the bar:\n  - **Selection present** → transform mode: pending range replaces the selection\n  - **No selection** → generate mode: pending range is a new block below the cursor\n- **Compact floating bar** carries only the controls — prompt input + Send/Stop and Apply / Discard / Try again. No context dropdowns or preset menus.\n- **Conversational refinement**: after a reply, type \"shorter\" or \"make it more formal\" and Send — the previous output is dropped and the new one streams into the same spot, with the prior turns kept as conversation history.\n- **Output language follows `theme.locale`** — Chinese editor → AI replies in Chinese, etc.\n- **Markdown understood**: the model is asked to use standard Markdown for structured content (headings, lists, tables, code, quotes, links, marks). Pubwave parses it via Tiptap's HTML pipeline, so what lands in the doc is real schema-typed nodes.\n\n> ⚠️ **Phase 1 limitation**: custom blocks specific to Pubwave (`chart`, `layout`, colored `tag`) cannot be expressed in Markdown and so cannot be produced by AI in this release. The model will fall back to a Markdown table or paragraph. A later release will add tool calling for those.\n\n### Quick start\n\n```tsx\nimport { PubwaveEditor, createAdapter } from '@pubwave/editor';\nimport type { AIConfig } from '@pubwave/editor';\nimport '@pubwave/editor/style.css';\n\nconst aiConfig: AIConfig = {\n  adapter: createAdapter({\n    provider: 'openai',\n    baseURL: '/api/ai/openai',  // your server proxy (see below)\n  }),\n  defaultModel: 'gpt-4o-mini',\n};\n\n<PubwaveEditor ai={aiConfig} />\n```\n\nTo turn AI off, just don't pass `ai` (or pass `undefined`). No surface appears.\n\n### Provider switch — `createAdapter`\n\n```ts\ncreateAdapter({ provider: 'openai',    baseURL, apiKey, model })\ncreateAdapter({ provider: 'anthropic', apiKey, model, anthropicVersion })\ncreateAdapter({ provider: 'gemini',    apiKey, model })\ncreateAdapter({ provider: 'ollama',    baseURL, model })\n```\n\nThe `'openai'` provider covers OpenAI itself **plus any OpenAI-compatible endpoint** — Azure, Groq, Together, OpenRouter, DeepSeek, Moonshot, Zhipu GLM, Qwen DashScope (compat-mode), Volcengine Doubao, vLLM, LM Studio, your own proxy. Just override `baseURL`.\n\nFor something the union doesn't cover, use `defineAIAdapter({ id, stream })` and supply your own streaming function.\n\n### Two deployment modes\n\n#### A. Direct (browser → provider). Demo / local Ollama only.\n\n```ts\nadapter: createAdapter({\n  provider: 'openai',\n  apiKey: 'sk-...',  // ⚠️ ends up in JS bundle, anyone can DevTools it\n}),\n```\n\nFine for local Ollama (no key needed):\n```ts\nadapter: createAdapter({\n  provider: 'openai',\n  baseURL: 'http://localhost:11434/v1',\n}),\ndefaultModel: 'llama3.2',\n```\n\n#### B. Server proxy (recommended for cloud providers in production).\n\nThe library ships a framework-agnostic proxy handler at `@pubwave/editor/server`. Use it from any Web-standard runtime (Next.js / Hono / Cloudflare Workers / Bun / Deno):\n\n**Next.js** — one 3-line file covers all providers:\n\n```ts\n// app/api/ai/[...path]/route.ts\nimport { createAIProxyHandler } from '@pubwave/editor/server';\nexport const POST = createAIProxyHandler();\nexport const runtime = 'edge';\n```\n\n**Hono / Bun / Deno / Cloudflare Workers**:\n\n```ts\nimport { createAIProxyHandler } from '@pubwave/editor/server';\nconst handler = createAIProxyHandler();\n\n// Hono\napp.post('/api/ai/*', (c) => handler(c.req.raw));\n\n// Cloudflare Worker\nexport default {\n  fetch: (req, env) => createAIProxyHandler({\n    openai:    { apiKey: env.OPENAI_API_KEY },\n    anthropic: { apiKey: env.ANTHROPIC_API_KEY },\n    gemini:    { apiKey: env.GOOGLE_API_KEY },\n  })(req),\n};\n```\n\nPath routing (default prefix `/api/ai`):\n\n| Client `baseURL` | Forwards to | Reads env |\n|---|---|---|\n| `/api/ai/openai` | `${OPENAI_BASE_URL}` (default: `https://api.openai.com/v1`) | `OPENAI_API_KEY`, `OPENAI_BASE_URL` |\n| `/api/ai/anthropic` | `${ANTHROPIC_BASE_URL}` (default: Anthropic) | `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL`, `ANTHROPIC_VERSION` |\n| `/api/ai/gemini` | `${GOOGLE_BASE_URL}` (default: Gemini) | `GOOGLE_API_KEY`, `GOOGLE_BASE_URL` |\n\nStreaming (SSE) is piped through end-to-end without buffering.\n\n### Configuring providers via env\n\nTwo env vars are needed for any **non-OpenAI** provider that uses the OpenAI protocol (OpenRouter, DeepSeek, Moonshot, Zhipu, 千问, Groq, etc.) — both `OPENAI_API_KEY` AND `OPENAI_BASE_URL`:\n\n```bash\n# .env (or .env.local, or system env on your platform)\n\n# --- OpenRouter (covers OpenAI / Claude / Gemini / Llama / DeepSeek with one key) ---\nOPENAI_API_KEY=sk-or-v1-...\nOPENAI_BASE_URL=https://openrouter.ai/api/v1\n\n# --- OR DeepSeek ---\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://api.deepseek.com/v1\n\n# --- OR Zhipu GLM ---\n# OPENAI_API_KEY=...\n# OPENAI_BASE_URL=https://open.bigmodel.cn/api/paas/v4\n\n# --- OR Qwen DashScope (must use compat-mode path) ---\n# OPENAI_API_KEY=sk-...\n# OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1\n\n# --- Anthropic Claude (native) — only the key is required ---\n# ANTHROPIC_API_KEY=sk-ant-...\n\n# --- Google Gemini (native) — only the key is required ---\n# GOOGLE_API_KEY=AIza...\n```\n\nFor a fully-annotated reference of every provider's URL + model ids, see [`examples/nextjs/.env.example`](./examples/nextjs/.env.example).\n\n> **Common pitfall**: setting only `OPENAI_API_KEY` (no URL) with a non-OpenAI key. The proxy will dutifully send your OpenRouter / DeepSeek / Zhipu key to OpenAI's default endpoint, which returns `401 invalid_api_key`. Always set both.\n\n### Selecting the active provider in the client\n\nSwitch `baseURL` on the client adapter to choose which proxy path (and therefore which env vars) take effect:\n\n```ts\ncreateAdapter({ provider: 'openai',    baseURL: '/api/ai/openai' })     // → OPENAI_*\ncreateAdapter({ provider: 'anthropic', baseURL: '/api/ai/anthropic' })  // → ANTHROPIC_*\ncreateAdapter({ provider: 'gemini',    baseURL: '/api/ai/gemini' })     // → GOOGLE_*\n```\n\n### Vite / SPA users\n\nVite has no server runtime. Three options:\n\n1. **Local Ollama** — direct from browser, no key needed.\n2. **`VITE_OPENAI_API_KEY` in browser** — demo only, key visible to anyone.\n3. **Separate backend** — Cloudflare Worker / Hono / Express running `createAIProxyHandler`. Vite app points at its URL.\n\nSee [Examples](./examples) for runnable code.\n\n### Disabling specific surfaces\n\n```ts\nai={{\n  adapter,\n  defaultModel: '...',\n  enableInSlashMenu: false,    // hide /ai\n  enableInToolbar: false,      // hide ✨ in bubble toolbar\n  enableKeyboardShortcut: false, // disable ⌘J\n}}\n```\n\n### Security checklist\n\n- ❌ **Never** put a cloud API key (OpenAI / Anthropic / Gemini / OpenRouter / etc.) in client-side code that ships to public users. Even `VITE_*` / `NEXT_PUBLIC_*` prefixes mean \"this WILL be visible in the bundle.\"\n- ✅ Use the server proxy (`createAIProxyHandler`) and let env vars stay on the server.\n- ✅ For paid providers, add rate-limiting / auth / quotas on your proxy. The bundled handler is intentionally minimal — wrap it.\n- ✅ Local Ollama and other no-auth local servers are fine to call directly from the browser.\n\n---\n\n## 🐛 Troubleshooting\n\n### Common Issues\n\n**Q: Styles are not applied**\n\n- Ensure you've imported the CSS: `import '@pubwave/editor/style.css'`\n- Check that CSS custom properties are defined\n\n**Q: Slash commands don't work**\n\n- Ensure the editor is in editable mode\n- Check that you're typing `/` in a text block (not in code blocks)\n\n**Q: Toolbar doesn't appear**\n\n- Toolbar only appears when text is selected\n- Make sure you have a non-empty selection\n\n**Q: Colors don't persist**\n\n- Text and background colors are stored as marks in the content\n- Ensure you're saving the full JSON content, not just HTML\n\n**Q: Image upload doesn't work**\n\n- Check that `imageUpload.handler` returns a valid URL string\n- Verify file size is within `maxSize` limit\n- Check browser console for error messages\n- If custom upload fails, editor will automatically fall back to base64\n\n**Q: Charts don't render**\n\n- Ensure `chart.js` is installed: `npm install chart.js` (optional peer dependency)\n- Check that Chart.js is compatible (v4.x or v5.x)\n- Verify chart data structure is correct\n- Check browser console for errors\n\n**Q: Chart colors don't match theme**\n\n- Charts use CSS variables for colors that adapt to theme changes\n- Ensure CSS custom properties are defined: `--pubwave-text`, `--pubwave-text-muted`, `--pubwave-border`\n- Chart colors will automatically update when theme changes\n\n---\n\n## 📄 License\n\nMIT © [Pubwave](https://github.com/pubwave)\n","readmeFilename":"README.md"}