{"_id":"@ashu000/prosemirror-track-editor","_rev":"6-00d5fa8d13cbe8bec473ddea84fda23f","name":"@ashu000/prosemirror-track-editor","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@ashu000/prosemirror-track-editor","version":"0.1.0","keywords":["prosemirror","track-changes","rich-text-editor","react","diff","suggest-changes"],"author":{"name":"Ashutosh Dubey"},"license":"MIT","_id":"@ashu000/prosemirror-track-editor@0.1.0","maintainers":[{"name":"ashu000","email":"ashubbd2016@gmail.com"}],"homepage":"https://github.com/ashu000/prosemirror-track-editor#readme","bugs":{"url":"https://github.com/ashu000/prosemirror-track-editor/issues"},"dist":{"shasum":"62459e4fa87ca4bbd2da57f763691613c799d07f","tarball":"https://registry.npmjs.org/@ashu000/prosemirror-track-editor/-/prosemirror-track-editor-0.1.0.tgz","fileCount":15,"integrity":"sha512-SDQlQQWXr2hTvuJVufRUoCvi1Jn3cN1B5+VfVT4/Rr9hh5WHpYX9G7hgI0SBl7H8CXgGlYUkwPb7Hslsojtx8w==","signatures":[{"sig":"MEQCIBDaMiAQ2IbpeOxqSzVFmnB8V7Mel0IHTON11cCsjb6ZAiAkGpA5lAz8gb8IWG/SKRBLiiLhL72WYbcCyuFrXwSuGg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":266096},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"7f2df09192c9b0ecb6c6fe855d13ba876300f6e9","scripts":{"dev":"concurrently \"vite --config vite.demo.config.ts\" \"tsx demo/server/index.ts\"","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","prepublishOnly":"npm run build"},"_npmUser":{"name":"ashu000","email":"ashubbd2016@gmail.com"},"repository":{"url":"git+https://github.com/ashu000/prosemirror-track-editor.git","type":"git"},"_npmVersion":"10.9.3","description":"A headless-first React editor with track-changes (insertion/deletion marks), phrase navigation, and a clean ref API.","directories":{},"_nodeVersion":"22.20.0","dependencies":{"styled-components":"^5.3.0","@handlewithcare/prosemirror-suggest-changes":"*"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","cors":"^2.8.5","vite":"^5.0.0","jsdom":"^29.1.1","vitest":"^1.0.0","express":"^4.18.0","typescript":"^5.0.0","@types/cors":"^2.8.0","@types/node":"^20.0.0","@types/react":"^18.0.0","concurrently":"^8.0.0","@types/express":"^4.17.0","vite-plugin-dts":"^3.0.0","@types/react-dom":"^18.0.0","prosemirror-view":"^1.42.2","prosemirror-model":"^1.25.11","prosemirror-state":"^1.4.4","prosemirror-keymap":"^1.2.3","prosemirror-history":"^1.5.0","@vitejs/plugin-react":"^4.0.0","prosemirror-commands":"^1.7.2","@types/styled-components":"^5.1.0","prosemirror-schema-basic":"^1.2.4"},"peerDependencies":{"react":">=17","react-dom":">=17","prosemirror-view":">=1","prosemirror-model":">=1","prosemirror-state":">=1","prosemirror-keymap":">=1","prosemirror-history":">=1","prosemirror-commands":">=1","prosemirror-schema-basic":">=1"},"_npmOperationalInternal":{"tmp":"tmp/prosemirror-track-editor_0.1.0_1787131941173_0.10482851722774988","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ashu000/prosemirror-track-editor","version":"0.1.1","keywords":["prosemirror","track-changes","rich-text-editor","react","diff","suggest-changes"],"author":{"name":"Ashutosh Dubey"},"license":"MIT","_id":"@ashu000/prosemirror-track-editor@0.1.1","maintainers":[{"name":"ashu000","email":"ashubbd2016@gmail.com"}],"homepage":"https://github.com/ashu000/prosemirror-track-editor#readme","bugs":{"url":"https://github.com/ashu000/prosemirror-track-editor/issues"},"dist":{"shasum":"b7b5d67dc073e3cbce79873e79c6654b6a4ddd3b","tarball":"https://registry.npmjs.org/@ashu000/prosemirror-track-editor/-/prosemirror-track-editor-0.1.1.tgz","fileCount":16,"integrity":"sha512-Qzhu5GyS85lNgeOHyZl+YqmEz+4mgI/pRawxZzaXrnrfJ73rVIP/FTbj9meee4pUOHBeHMO/uN16pz58NGySiA==","signatures":[{"sig":"MEUCIQD+4XEJsRmCjmBBdGFKOqkwekkidjBfw/LAE/x1cTEiVQIgCWwHismRjh1exAEYRmt48u7fMYMh0159KHdnU1vPsCQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268407},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"e35903725d3a686fbebf8486f7bed16dc39241ff","scripts":{"dev":"concurrently \"vite --config vite.demo.config.ts\" \"tsx demo/server/index.ts\"","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","prepublishOnly":"npm run build"},"_npmUser":{"name":"ashu000","email":"ashubbd2016@gmail.com"},"repository":{"url":"git+https://github.com/ashu000/prosemirror-track-editor.git","type":"git"},"_npmVersion":"10.9.3","description":"A headless-first React editor with track-changes (insertion/deletion marks), phrase navigation, and a clean ref API.","directories":{},"_nodeVersion":"22.20.0","dependencies":{"styled-components":"^5.3.0","@handlewithcare/prosemirror-suggest-changes":"*"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","cors":"^2.8.5","vite":"^5.0.0","jsdom":"^29.1.1","vitest":"^1.0.0","express":"^4.18.0","typescript":"^5.0.0","@types/cors":"^2.8.0","@types/node":"^20.0.0","@types/react":"^18.0.0","concurrently":"^8.0.0","@types/express":"^4.17.0","vite-plugin-dts":"^3.0.0","@types/react-dom":"^18.0.0","prosemirror-view":"^1.42.2","prosemirror-model":"^1.25.11","prosemirror-state":"^1.4.4","prosemirror-keymap":"^1.2.3","prosemirror-history":"^1.5.0","@vitejs/plugin-react":"^4.0.0","prosemirror-commands":"^1.7.2","@types/styled-components":"^5.1.0","prosemirror-schema-basic":"^1.2.4"},"peerDependencies":{"react":">=17","react-dom":">=17","prosemirror-view":">=1","prosemirror-model":">=1","prosemirror-state":">=1","prosemirror-keymap":">=1","prosemirror-history":">=1","prosemirror-commands":">=1","prosemirror-schema-basic":">=1"},"_npmOperationalInternal":{"tmp":"tmp/prosemirror-track-editor_0.1.1_1787132435301_0.22658945879543824","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ashu000/prosemirror-track-editor","version":"0.1.2","keywords":["prosemirror","track-changes","rich-text-editor","react","diff","suggest-changes"],"author":{"name":"Ashutosh Dubey"},"license":"MIT","_id":"@ashu000/prosemirror-track-editor@0.1.2","maintainers":[{"name":"ashu000","email":"ashubbd2016@gmail.com"}],"homepage":"https://github.com/ashu000/prosemirror-track-editor#readme","bugs":{"url":"https://github.com/ashu000/prosemirror-track-editor/issues"},"dist":{"shasum":"063fd1ff609f1b0d713e286d0e49667bcc76fea9","tarball":"https://registry.npmjs.org/@ashu000/prosemirror-track-editor/-/prosemirror-track-editor-0.1.2.tgz","fileCount":18,"integrity":"sha512-mYTtbGIJ3FOLtMix0F5pla0Ko5sSC06nl0gsC0w8g9oOegw+Rs3nAWyLYhIXTLXfKnfZVesPS2v5Ut0oJiT+9w==","signatures":[{"sig":"MEQCIAmszsijpVnk/YjKDWjwDW1M3kmZ0ieQGiHgaaeBQlliAiALipoZGE9agAPRY9f7qe9tMnDhVad1A2YVoMv750nzjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1085117},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"e11d2092812a83bff9310d70f3f3d5362f2b7ecd","scripts":{"dev":"concurrently \"vite --config vite.demo.config.ts\" \"tsx demo/server/index.ts\"","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","prepublishOnly":"npm run build"},"_npmUser":{"name":"ashu000","email":"ashubbd2016@gmail.com"},"repository":{"url":"git+https://github.com/ashu000/prosemirror-track-editor.git","type":"git"},"_npmVersion":"10.9.3","description":"A headless-first React editor with track-changes (insertion/deletion marks), phrase navigation, and a clean ref API.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"@handlewithcare/prosemirror-suggest-changes":"*"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","cors":"^2.8.5","vite":"^5.0.0","jsdom":"^29.1.1","vitest":"^1.0.0","express":"^4.18.0","typescript":"^5.0.0","@types/cors":"^2.8.0","@types/node":"^20.0.0","@types/react":"^18.0.0","concurrently":"^8.0.0","@types/express":"^4.17.0","vite-plugin-dts":"^3.0.0","@types/react-dom":"^18.0.0","prosemirror-view":"^1.42.2","prosemirror-model":"^1.25.11","prosemirror-state":"^1.4.4","styled-components":"^5.3.0","prosemirror-keymap":"^1.2.3","prosemirror-history":"^1.5.0","@vitejs/plugin-react":"^4.0.0","prosemirror-commands":"^1.7.2","@types/styled-components":"^5.1.0","prosemirror-schema-basic":"^1.2.4"},"peerDependencies":{"react":">=17","react-dom":">=17","prosemirror-view":">=1","prosemirror-model":">=1","prosemirror-state":">=1","styled-components":"^5.3.0","prosemirror-keymap":">=1","prosemirror-history":">=1","prosemirror-commands":">=1","prosemirror-schema-basic":">=1"},"_npmOperationalInternal":{"tmp":"tmp/prosemirror-track-editor_0.1.2_1787133238473_0.2861303089528293","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ashu000/prosemirror-track-editor","version":"0.1.3","keywords":["prosemirror","track-changes","rich-text-editor","react","diff","suggest-changes"],"author":{"name":"Ashutosh Dubey"},"license":"MIT","_id":"@ashu000/prosemirror-track-editor@0.1.3","maintainers":[{"name":"ashu000","email":"ashubbd2016@gmail.com"}],"homepage":"https://github.com/ashu000/prosemirror-track-editor#readme","bugs":{"url":"https://github.com/ashu000/prosemirror-track-editor/issues"},"dist":{"shasum":"896fb7b4530472deba64433c1d085119c1f0c750","tarball":"https://registry.npmjs.org/@ashu000/prosemirror-track-editor/-/prosemirror-track-editor-0.1.3.tgz","fileCount":18,"integrity":"sha512-gsecJ849psq/PkD+M2YukgTVr/bzD3FSJNaM019QMcBEicg2T1smtcJDSOHGQBzPFpsMYylIT+1+b0rYS3L1EA==","signatures":[{"sig":"MEUCIGID+gfcji/TpHQcrBDru3W/A1xlUegjs2weGgBzJaKiAiEA3UG5xug3v2G6DpQwc6vg2odIM7LJqOzGSGb78BBWQXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1085281},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"94f70865871787d9692b42779c6862199f02b6d5","scripts":{"dev":"concurrently \"vite --config vite.demo.config.ts\" \"tsx demo/server/index.ts\"","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","prepublishOnly":"npm run build"},"_npmUser":{"name":"ashu000","email":"ashubbd2016@gmail.com"},"repository":{"url":"git+https://github.com/ashu000/prosemirror-track-editor.git","type":"git"},"_npmVersion":"10.9.3","description":"A headless-first React editor with track-changes (insertion/deletion marks), phrase navigation, and a clean ref API.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"@handlewithcare/prosemirror-suggest-changes":"*"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","cors":"^2.8.5","vite":"^5.0.0","jsdom":"^29.1.1","vitest":"^1.0.0","express":"^4.18.0","typescript":"^5.0.0","@types/cors":"^2.8.0","@types/node":"^20.0.0","@types/react":"^18.0.0","concurrently":"^8.0.0","@types/express":"^4.17.0","vite-plugin-dts":"^3.0.0","@types/react-dom":"^18.0.0","prosemirror-view":"^1.42.2","prosemirror-model":"^1.25.11","prosemirror-state":"^1.4.4","styled-components":"^5.3.0","prosemirror-keymap":"^1.2.3","prosemirror-history":"^1.5.0","@vitejs/plugin-react":"^4.0.0","prosemirror-commands":"^1.7.2","@types/styled-components":"^5.1.0","prosemirror-schema-basic":"^1.2.4"},"peerDependencies":{"react":">=17","react-dom":">=17","prosemirror-view":">=1","prosemirror-model":">=1","prosemirror-state":">=1","styled-components":"^5.3.0","prosemirror-keymap":">=1","prosemirror-history":">=1","prosemirror-commands":">=1","prosemirror-schema-basic":">=1"},"_npmOperationalInternal":{"tmp":"tmp/prosemirror-track-editor_0.1.3_1787134358899_0.7690758017260146","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ashu000/prosemirror-track-editor","version":"0.1.4","keywords":["prosemirror","track-changes","rich-text-editor","react","diff","suggest-changes"],"author":{"name":"Ashutosh Dubey"},"license":"MIT","_id":"@ashu000/prosemirror-track-editor@0.1.4","maintainers":[{"name":"ashu000","email":"ashubbd2016@gmail.com"}],"homepage":"https://github.com/ashu000/prosemirror-track-editor#readme","bugs":{"url":"https://github.com/ashu000/prosemirror-track-editor/issues"},"dist":{"shasum":"f11a26bf591385608617886411fe7a0e4ab4ddb7","tarball":"https://registry.npmjs.org/@ashu000/prosemirror-track-editor/-/prosemirror-track-editor-0.1.4.tgz","fileCount":18,"integrity":"sha512-KaHnZXXOAjcfuCr4TTuG9NZGI50r/Ra3gCRpPBP+w/nlQiOXbtUoKZ4rK6hzJTNYBBsFKnm1WiiarcOstt0Gsw==","signatures":[{"sig":"MEUCIQCVg8oxMbbhjyX/ypIrjxNVALbPzNtgesgMZLTe6bqu+QIgWn+/I//diWOxoINYy3uL6jQrvyOLUZH2lCeun0CKA+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1085281},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=16"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"f47032ce7752040bab481fb03412808dbc110363","scripts":{"dev":"concurrently \"vite --config vite.demo.config.ts\" \"tsx demo/server/index.ts\"","lint":"eslint src --ext .ts,.tsx","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","prepublishOnly":"npm run build"},"_npmUser":{"name":"ashu000","email":"ashubbd2016@gmail.com"},"repository":{"url":"git+https://github.com/ashu000/prosemirror-track-editor.git","type":"git"},"_npmVersion":"10.9.3","description":"A headless-first React editor with track-changes (insertion/deletion marks), phrase navigation, and a clean ref API.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"@handlewithcare/prosemirror-suggest-changes":"*"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.12","cors":"^2.8.5","vite":"^5.0.0","jsdom":"^29.1.1","vitest":"^1.0.0","express":"^4.18.0","typescript":"^5.0.0","@types/cors":"^2.8.0","@types/node":"^20.0.0","@types/react":"^18.0.0","concurrently":"^8.0.0","@types/express":"^4.17.0","vite-plugin-dts":"^3.0.0","@types/react-dom":"^18.0.0","prosemirror-view":"^1.42.2","prosemirror-model":"^1.25.11","prosemirror-state":"^1.4.4","styled-components":"^5.3.0","prosemirror-keymap":"^1.2.3","prosemirror-history":"^1.5.0","@vitejs/plugin-react":"^4.0.0","prosemirror-commands":"^1.7.2","@types/styled-components":"^5.1.0","prosemirror-schema-basic":"^1.2.4"},"peerDependencies":{"react":">=17","react-dom":">=17","prosemirror-view":">=1","prosemirror-model":">=1","prosemirror-state":">=1","styled-components":"^5.3.0","prosemirror-keymap":">=1","prosemirror-history":">=1","prosemirror-commands":">=1","prosemirror-schema-basic":">=1"},"_npmOperationalInternal":{"tmp":"tmp/prosemirror-track-editor_0.1.4_1787134946354_0.21537069037506895","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@ashu000/prosemirror-track-editor","version":"0.1.5","description":"A headless-first React editor with track-changes (insertion/deletion marks), phrase navigation, and a clean ref API.","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types":"./dist/index.d.ts"}},"sideEffects":false,"engines":{"node":">=16"},"bugs":{"url":"https://github.com/ashu000/prosemirror-track-editor/issues"},"scripts":{"dev":"concurrently \"vite --config vite.demo.config.ts\" \"tsx demo/server/index.ts\"","build":"vite build && tsc --emitDeclarationOnly","test":"vitest run","lint":"eslint src --ext .ts,.tsx","prepublishOnly":"npm run build"},"peerDependencies":{"prosemirror-commands":">=1","prosemirror-history":">=1","prosemirror-keymap":">=1","prosemirror-model":">=1","prosemirror-schema-basic":">=1","prosemirror-state":">=1","prosemirror-view":">=1","react":">=17","react-dom":">=17","styled-components":"^5.3.0"},"dependencies":{"@handlewithcare/prosemirror-suggest-changes":"*"},"devDependencies":{"@types/cors":"^2.8.0","@types/express":"^4.17.0","@types/node":"^20.0.0","@types/react":"^18.0.0","@types/react-dom":"^18.0.0","@types/styled-components":"^5.1.0","@vitejs/plugin-react":"^4.0.0","concurrently":"^8.0.0","cors":"^2.8.5","express":"^4.18.0","jsdom":"^29.1.1","prosemirror-commands":"^1.7.2","prosemirror-history":"^1.5.0","prosemirror-keymap":"^1.2.3","prosemirror-model":"^1.25.11","prosemirror-schema-basic":"^1.2.4","prosemirror-state":"^1.4.4","prosemirror-view":"^1.42.2","styled-components":"^5.3.0","tsx":"^4.23.12","typescript":"^5.0.0","vite":"^5.0.0","vite-plugin-dts":"^3.0.0","vitest":"^1.0.0"},"keywords":["prosemirror","track-changes","rich-text-editor","react","diff","suggest-changes"],"homepage":"https://github.com/ashu000/prosemirror-track-editor#readme","author":{"name":"Ashutosh Dubey"},"repository":{"type":"git","url":"git+https://github.com/ashu000/prosemirror-track-editor.git"},"license":"MIT","_id":"@ashu000/prosemirror-track-editor@0.1.5","gitHead":"d54c4ee5ef0c0282ed32db94d7b8e5fe552db6cf","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-do2/GSr/9IxB9ZONvFgS5AFnrkrn1PdMYr9vecnm9WRxYwongCeTQrlgnqv5f2n2W8xMKOajG1a6dy2MwDhJwg==","shasum":"23b87aefd5ca78490e7243fa3662765b4058df82","tarball":"https://registry.npmjs.org/@ashu000/prosemirror-track-editor/-/prosemirror-track-editor-0.1.5.tgz","fileCount":18,"unpackedSize":1085247,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDEA+7cnJZyydyubq7cqV7GB8QU5G8XSA0qHY7EWvXH5AiBHYpRyY1KlyzDcVDwQlTFNEqtLrIACjJYtDRAF8Q98PA=="}]},"_npmUser":{"name":"ashu000","email":"ashubbd2016@gmail.com"},"directories":{},"maintainers":[{"name":"ashu000","email":"ashubbd2016@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/prosemirror-track-editor_0.1.5_1787135527828_0.5887788961486351"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-19T09:32:20.551Z","modified":"2026-08-19T10:32:08.141Z","0.1.0":"2026-08-19T09:32:21.334Z","0.1.1":"2026-08-19T09:40:35.456Z","0.1.2":"2026-08-19T09:53:58.614Z","0.1.3":"2026-08-19T10:12:39.061Z","0.1.4":"2026-08-19T10:22:26.486Z","0.1.5":"2026-08-19T10:32:07.989Z"},"bugs":{"url":"https://github.com/ashu000/prosemirror-track-editor/issues"},"author":{"name":"Ashutosh Dubey"},"license":"MIT","homepage":"https://github.com/ashu000/prosemirror-track-editor#readme","keywords":["prosemirror","track-changes","rich-text-editor","react","diff","suggest-changes"],"repository":{"type":"git","url":"git+https://github.com/ashu000/prosemirror-track-editor.git"},"description":"A headless-first React editor with track-changes (insertion/deletion marks), phrase navigation, and a clean ref API.","maintainers":[{"name":"ashu000","email":"ashubbd2016@gmail.com"}],"readme":"# prosemirror-track-editor\n\n[![npm](https://img.shields.io/npm/v/@ashu000/prosemirror-track-editor)](https://www.npmjs.com/package/@ashu000/prosemirror-track-editor)\n[![npm bundle size](https://img.shields.io/bundlephobia/minzip/@ashu000/prosemirror-track-editor)](https://bundlephobia.com/package/@ashu000/prosemirror-track-editor)\n[![license](https://img.shields.io/npm/l/@ashu000/prosemirror-track-editor)](./LICENSE)\n[![demo](https://img.shields.io/badge/demo-live-brightgreen)](https://prosemirror-track-editor.vercel.app)\n\nA headless-first React editor with track-changes (insertion/deletion marks), phrase navigation, and a clean ref API.\n\n## Install\n\n```bash\nnpm i @ashu000/prosemirror-track-editor\n# peer deps\nnpm i react react-dom prosemirror-state prosemirror-view prosemirror-model \\\n      prosemirror-schema-basic prosemirror-history prosemirror-keymap prosemirror-commands\n```\n\n## Quick start\n\n```tsx\nimport { useRef } from 'react';\nimport { TrackEditor, TrackEditorRef } from '@ashu000/prosemirror-track-editor';\n\nexport function MyEditor() {\n  const editorRef = useRef<TrackEditorRef>(null);\n\n  return (\n    <TrackEditor\n      ref={editorRef}\n      initialText=\"The applicant shall furnish a document...\"\n      onContentChange={(changed) => console.log('dirty:', changed)}\n    />\n  );\n}\n```\n\n## `useTrackEditor` hook\n\nIf you prefer a hook-driven API over a ref:\n\n```tsx\nimport { useTrackEditor, TrackEditor } from '@ashu000/prosemirror-track-editor';\n\nexport function MyEditor() {\n  const { ref, getText, getChangesWithOffsets, setText } = useTrackEditor();\n\n  const handleProcess = async () => {\n    const res = await fetch('/process', {\n      method: 'POST',\n      headers: { 'Content-Type': 'application/json' },\n      body: JSON.stringify({ text: getText() }),\n    });\n    const { html } = await res.json();\n    setText(html);\n  };\n\n  return <TrackEditor ref={ref} initialText=\"Original clause text...\" />;\n}\n```\n\n## Development\n\n```bash\n# install deps\nnpm install\n\n# run demo app + backend together\nnpm run dev\n\n# build the package\nnpm run build\n\n# run tests\nnpm test\n```\n\n- Live demo: https://prosemirror-track-editor.vercel.app\n- Local demo: http://localhost:5173\n- Local API: http://localhost:3001\n\n## Theming\n\nOverride editor colors via CSS variables on any parent element:\n\n```tsx\n<div style={{\n  '--te-border-focus': '#00c9a7',\n  '--te-ins-color': '#4d9fff',\n  '--te-del-color': '#ff6070',\n} as React.CSSProperties}>\n  <TrackEditor ref={ref} />\n</div>\n```\n\nImport `themeVars` for autocomplete on all variable names:\n\n```ts\nimport { themeVars } from '@ashu000/prosemirror-track-editor';\n// themeVars.borderFocus === '--te-border-focus'\n```\n\n| Variable | Default | Purpose |\n|---|---|---|\n| `--te-border` | `#e5e7eb` | Editor border |\n| `--te-border-focus` | `#3b82f6` | Focused border |\n| `--te-focus-ring` | `rgba(59,130,246,0.1)` | Focus ring shadow |\n| `--te-bg` | `#ffffff` | Editor background |\n| `--te-font-family` | `Calibri, sans-serif` | Editor font |\n| `--te-font-size` | `0.975rem` | Editor font size |\n| `--te-line-height` | `1.5` | Editor line height |\n| `--te-ins-color` | `#2563eb` | Insertion text color |\n| `--te-del-color` | `#b91c1c` | Deletion text (strikethrough) |\n| `--te-blank-bg` | `#fbbf24` | Blank highlight background |\n| `--te-blank-color` | `#92400e` | Blank highlight text |\n| `--te-phrase-bg` | `rgba(74,222,128,0.4)` | Phrase highlight background |\n| `--te-phrase-border` | `rgb(34,197,94)` | Phrase highlight border |\n| `--te-phrase-shadow` | `rgba(34,197,94,0.2)` | Phrase highlight box-shadow |\n\n## Browser support\n\n| Browser | Minimum version |\n|---|---|\n| Chrome / Edge | 88+ |\n| Firefox | 85+ |\n| Safari | 14+ |\n\nRequires a runtime that supports `ResizeObserver` and `MutationObserver` (all modern browsers).\n\n## Full API\n\nSee [`SPEC.md`](./SPEC.md) for the complete props, ref API, theming variables, backend contract, and internals documentation.\n","readmeFilename":"README.md"}