{"_id":"prism-react-editor","_rev":"12-3f260e3b8d4e03282dfab560b79a959e","name":"prism-react-editor","dist-tags":{"latest":"3.4.0"},"versions":{"1.0.0":{"name":"prism-react-editor","version":"1.0.0","keywords":["editor","code editor","textarea","react","highlight","prismjs"],"author":{"name":"FlameCaster"},"_id":"prism-react-editor@1.0.0","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/FIameCaster/prism-react-editor#readme","bugs":{"url":"https://github.com/FIameCaster/prism-react-editor/issues"},"dist":{"shasum":"e84c45c3d6812cd2582e86ca498f6223961cc538","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-1.0.0.tgz","fileCount":1736,"integrity":"sha512-m/xvUckfAXPASoSQ5tIVDyaJVkloC+CFMpJoVVf3Z/EJHrMAHTYzVxFcJD4r5KNti/klwA6H/qUPfXVOuMC4CA==","signatures":[{"sig":"MEQCIGd0kVzlm915vdLUuekvXsvFlx/SZx0ILLGh6bgXbaGVAiBcpCrh118NBqR7nOMkPRE5lnv0Sebg8EM0qlpBCdTF/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2421461},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js"},"gitHead":"20b84c0d8ab86f0ef8c29011854d596c15420c27","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/FIameCaster/prism-react-editor.git","type":"git"},"_npmVersion":"10.5.2","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["*.css","./dist/languages/*","./dist/prism/languages/*"],"_nodeVersion":"20.13.1","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.0.4+sha1.b198ac6d38244fd829253720f9daafd6a606834d","devDependencies":{"vite":"^5.2.0","react":"^18.3.1","react-dom":"^18.3.1","typescript":"^5.2.2","@types/node":"^20.14.2","@types/react":"^18.2.66","vite-plugin-dts":"^3.9.1","@types/react-dom":"^18.2.22","prism-code-editor":"^3.3.2","@vitejs/plugin-react":"^4.2.1"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_1.0.0_1720020907337_0.5723645473964829","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"prism-react-editor","version":"1.0.1","keywords":["editor","code editor","textarea","react","highlight","prismjs"],"author":{"name":"FlameCaster"},"_id":"prism-react-editor@1.0.1","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/FIameCaster/prism-react-editor#readme","bugs":{"url":"https://github.com/FIameCaster/prism-react-editor/issues"},"dist":{"shasum":"48a9c2a76ac78ccb8cec70d20f0684919a89f779","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-1.0.1.tgz","fileCount":1736,"integrity":"sha512-MOHywtVf7zzhDCYr2kmvKktEmDRhDN81NBCRgtAQR/hyN0w0dWQIK3bM+/8yIWMUhZT3cxGGIfBcKfvOvyRSiA==","signatures":[{"sig":"MEUCIEx3H01biZl5JcZ3Pd4innHvoVbn8dMHY/3237VDwz2jAiEA1kYMj8E3wqaTM/Zlf9UftyPEbJ/LA7khmy60KD5fTuc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2421392},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js"},"gitHead":"5a775c941be3a521660eae77c9e1ccbc96cd577f","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/FIameCaster/prism-react-editor.git","type":"git"},"_npmVersion":"10.5.2","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["*.css","./dist/languages/*","./dist/prism/languages/*","./dist/jsx-*"],"_nodeVersion":"20.13.1","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.0.4+sha1.b198ac6d38244fd829253720f9daafd6a606834d","devDependencies":{"vite":"^5.3.3","react":"^18.3.1","react-dom":"^18.3.1","typescript":"^5.2.2","@types/node":"^20.14.2","@types/react":"^18.2.66","vite-plugin-dts":"^3.9.1","@types/react-dom":"^18.2.22","prism-code-editor":"^3.3.2","@vitejs/plugin-react":"^4.2.1"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_1.0.1_1720308957412_0.9454998538408823","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"prism-react-editor","version":"1.1.0","keywords":["editor","code editor","textarea","react","highlight","prismjs"],"author":{"name":"FlameCaster"},"_id":"prism-react-editor@1.1.0","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/FIameCaster/prism-react-editor#readme","bugs":{"url":"https://github.com/FIameCaster/prism-react-editor/issues"},"dist":{"shasum":"f0d88e646653df6a2587eccfdde8dd0e005fea84","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-1.1.0.tgz","fileCount":1770,"integrity":"sha512-ujl/ONwCcxs401zNQDgfswc3zWC9pm+PzPriODGGm/Aj6zYnHNDGogPnaIredtqCTKoWmiF/hi8RjDQCk7r5xA==","signatures":[{"sig":"MEUCIDW4ZGdHNJwZwBSr0GgfxY4p7nYAST4WivzimN3T6V15AiEAtUnIWyenk6TWrF3Q2+RmXcAhOHbPOfM26mwTFA/NWXQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2701468},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./autocomplete":"./dist/extensions/autocomplete/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./invisibles.css":"./dist/invisibles.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./autocomplete.css":"./dist/autocomplete.css","./autocomplete/css":"./dist/extensions/autocomplete/css/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js","./autocomplete/markup":"./dist/extensions/autocomplete/markup/index.js","./autocomplete-icons.css":"./dist/autocomplete-icons.css","./autocomplete/javascript":"./dist/extensions/autocomplete/javascript/index.js"},"gitHead":"f9df4faf8ae446df1e7aa23e3a4f2f3b57bc5db6","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/FIameCaster/prism-react-editor.git","type":"git"},"_npmVersion":"10.5.2","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["*.css","./dist/languages/*","./dist/prism/languages/*","./dist/jsx-*"],"_nodeVersion":"20.13.1","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.0.4+sha1.b198ac6d38244fd829253720f9daafd6a606834d","devDependencies":{"vite":"^5.3.3","react":"^18.3.1","react-dom":"^18.3.1","typescript":"^5.2.2","@types/node":"^20.14.2","@types/react":"^18.2.66","vite-plugin-dts":"^3.9.1","@types/react-dom":"^18.2.22","prism-code-editor":"^3.4.0","@vitejs/plugin-react":"^4.2.1"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_1.1.0_1724336702050_0.7601148103270061","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"prism-react-editor","version":"2.0.0","keywords":["editor","code editor","textarea","react","highlight","prismjs"],"author":{"name":"FlameCaster"},"_id":"prism-react-editor@2.0.0","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/FIameCaster/prism-code-editor#readme","bugs":{"url":"https://github.com/FIameCaster/prism-code-editor/issues"},"dist":{"shasum":"cb211e61b65bba4d01190ee5c03842cbccf2caf7","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-2.0.0.tgz","fileCount":1810,"integrity":"sha512-cGev4EWTyjQfYdkEuTBsttwyjHjrZrhfSWhSBqeffYwG3XNuRGkvGws+fLOgZnxgSSB2lxFMArFgaMvEXHZsHw==","signatures":[{"sig":"MEUCIQD2Wic9rB7kSiGxZM9DR/tP7TXLFwYpzJ0qOGFDl8jzQwIgaSFwXnyrJCeBBHb7sioEdwS6SmbSdEhomzMwyBJT60c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2822008},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./code-blocks":"./dist/code-block/index.js","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./autocomplete":"./dist/extensions/autocomplete/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./code-block.css":"./dist/code-block.css","./invisibles.css":"./dist/invisibles.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./autocomplete.css":"./dist/autocomplete.css","./autocomplete/css":"./dist/extensions/autocomplete/css/index.js","./autocomplete/vue":"./dist/extensions/autocomplete/vue/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js","./autocomplete/markup":"./dist/extensions/autocomplete/markup/index.js","./autocomplete/svelte":"./dist/extensions/autocomplete/svelte/index.js","./autocomplete-icons.css":"./dist/autocomplete-icons.css","./autocomplete/javascript":"./dist/extensions/autocomplete/javascript/index.js"},"gitHead":"9c7f401dc4dc96e10d9921411fc8e1737a9c3c5a","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/FIameCaster/prism-code-editor.git","type":"git"},"_npmVersion":"10.9.0","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["*.css","./dist/languages/*","./dist/prism/languages/*"],"_nodeVersion":"22.10.0","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.3.5","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^20.17.46","@types/react":"^19.1.3","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.1.3","prism-code-editor":"4.0.0","@vitejs/plugin-react":"^4.4.1"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_2.0.0_1747001490544_0.804375825558078","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"prism-react-editor","version":"2.1.0","keywords":["editor","code editor","textarea","react","highlight","prismjs"],"author":{"name":"FlameCaster"},"_id":"prism-react-editor@2.1.0","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/FIameCaster/prism-code-editor#readme","bugs":{"url":"https://github.com/FIameCaster/prism-code-editor/issues"},"dist":{"shasum":"b2e30b2f986d67f4627bfd939d2e28097615d374","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-2.1.0.tgz","fileCount":1810,"integrity":"sha512-VS5/u7EQHTRMaUqGWtyLXEbUQL6QANIvXiD0M/u3k6y8kisKQ6zAlT7J+XmxhU352ytc601nBlc46QzS08Z3YA==","signatures":[{"sig":"MEUCIQDssVjWE3YdTxkNDtijs5dwUpHdA3sMEODm8KwsT5nxtgIgLOXTFqM02+zP291ocxQ8wq9tfuPCV7mDjy6EhBbzrpA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2822244},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./code-blocks":"./dist/code-block/index.js","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./autocomplete":"./dist/extensions/autocomplete/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./code-block.css":"./dist/code-block.css","./invisibles.css":"./dist/invisibles.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./autocomplete.css":"./dist/autocomplete.css","./autocomplete/css":"./dist/extensions/autocomplete/css/index.js","./autocomplete/vue":"./dist/extensions/autocomplete/vue/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js","./autocomplete/markup":"./dist/extensions/autocomplete/markup/index.js","./autocomplete/svelte":"./dist/extensions/autocomplete/svelte/index.js","./autocomplete-icons.css":"./dist/autocomplete-icons.css","./autocomplete/javascript":"./dist/extensions/autocomplete/javascript/index.js"},"gitHead":"a7a12087402879292f31aad7703e349eed5e941a","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","actor":{"name":"flamecaster","type":"user","email":"fl4mecaster@gmail.com"},"email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/FIameCaster/prism-code-editor.git","type":"git"},"_npmVersion":"10.9.0","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["*.css","./dist/languages/*","./dist/prism/languages/*"],"_nodeVersion":"22.10.0","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.3.5","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^5.8.3","@types/node":"^20.17.46","@types/react":"^19.1.3","vite-plugin-dts":"^4.5.3","@types/react-dom":"^19.1.3","prism-code-editor":"4.0.0","@vitejs/plugin-react":"^4.4.1"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_2.1.0_1750519402400_0.7530435755553659","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"prism-react-editor","version":"2.2.0","keywords":["code","editor","code-editor","textarea","react","highlight","prism"],"author":{"name":"Jonas Pytte"},"_id":"prism-react-editor@2.2.0","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/jonpyt/prism-code-editor#readme","bugs":{"url":"https://github.com/jonpyt/prism-code-editor/issues"},"dist":{"shasum":"21014915663db7af10a487480300ecb56a549872","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-2.2.0.tgz","fileCount":1810,"integrity":"sha512-9r5+aED00i9wfSYMe0XyxMbcigK/rFXrrkg1II1n3kaJgXdFhY7hmnmTdR/ydZsempVpDcPTDFIpNXVBMD/zaA==","signatures":[{"sig":"MEQCIF/kFxd60N7lhqncR+0K88WovC31MSwk8lOwS9VQxtsJAiALK+YjtfFR2CtZsnbsx6XM+uYkbUNE+/tZGQ9wArMuvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2834094},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./code-blocks":"./dist/code-block/index.js","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./autocomplete":"./dist/extensions/autocomplete/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./code-block.css":"./dist/code-block.css","./invisibles.css":"./dist/invisibles.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./autocomplete.css":"./dist/autocomplete.css","./autocomplete/css":"./dist/extensions/autocomplete/css/index.js","./autocomplete/vue":"./dist/extensions/autocomplete/vue/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js","./autocomplete/markup":"./dist/extensions/autocomplete/markup/index.js","./autocomplete/svelte":"./dist/extensions/autocomplete/svelte/index.js","./autocomplete-icons.css":"./dist/autocomplete-icons.css","./autocomplete/javascript":"./dist/extensions/autocomplete/javascript/index.js"},"gitHead":"449aed2c899c4cff034625f4c0187003a8c55e7a","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/jonpyt/prism-code-editor.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["*.css","./dist/languages/*","./dist/prism/languages/*"],"_nodeVersion":"24.11.1","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.4.1","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^5.9.2","@types/node":"^20.19.17","@types/react":"^19.1.13","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.1.9","prism-code-editor":"^4.1.0","@vitejs/plugin-react":"^4.7.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_2.2.0_1765387433829_0.9899072098464943","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"prism-react-editor","version":"3.0.0","keywords":["code","editor","code-editor","textarea","react","highlight","prism"],"author":{"name":"Jonas Pytte"},"_id":"prism-react-editor@3.0.0","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/jonpyt/prism-code-editor#readme","bugs":{"url":"https://github.com/jonpyt/prism-code-editor/issues"},"dist":{"shasum":"3dde6e0bb0e139dd8d19bbd8a4eca2a976d85d0d","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-3.0.0.tgz","fileCount":1818,"integrity":"sha512-haarzn+dyVQsEWb92XG1LSat3UHnydL/06O3EYbRNbXECKOEFQMUf7oprlGji9kXV3ZNtflPeT1MvzpJS3RmUA==","signatures":[{"sig":"MEYCIQCCmUy8DSEROBS2Qg0IAv9Rj+6CdCdw13E+7PeLWth/WwIhAMGBEmaixjbhpo+VcUvFYxNVYdzM+kEyFewYrscs3D0G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2785242},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor/index.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./cursor.css":"./dist/cursor.css","./extensions":"./dist/extensions/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./code-blocks":"./dist/code-block/index.js","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./autocomplete":"./dist/extensions/autocomplete/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./code-block.css":"./dist/code-block.css","./invisibles.css":"./dist/invisibles.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./autocomplete.css":"./dist/autocomplete.css","./autocomplete/css":"./dist/extensions/autocomplete/css/index.js","./autocomplete/vue":"./dist/extensions/autocomplete/vue/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js","./autocomplete/markup":"./dist/extensions/autocomplete/markup/index.js","./autocomplete/svelte":"./dist/extensions/autocomplete/svelte/index.js","./autocomplete-icons.css":"./dist/autocomplete-icons.css","./autocomplete/javascript":"./dist/extensions/autocomplete/javascript/index.js"},"gitHead":"0018c5866b3e2e9d3342cc4f9136bc417da97a60","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/jonpyt/prism-code-editor.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["*.css","./dist/languages/*","./dist/prism/languages/*"],"_nodeVersion":"24.12.0","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.4.1","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^5.9.2","@types/node":"^20.19.17","@types/react":"^19.1.13","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.1.9","prism-code-editor":"^5.0.0","@vitejs/plugin-react":"^4.7.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_3.0.0_1768061657007_0.9433128164600391","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"prism-react-editor","version":"3.0.1","keywords":["code","editor","code-editor","textarea","react","highlight","prism"],"author":{"name":"Jonas Pytte"},"_id":"prism-react-editor@3.0.1","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/jonpyt/prism-code-editor#readme","bugs":{"url":"https://github.com/jonpyt/prism-code-editor/issues"},"dist":{"shasum":"5aa95b8d01a8599ff15559a48bd382797b7d4fd9","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-3.0.1.tgz","fileCount":1818,"integrity":"sha512-wCiN15lPOsfGKigqPYeANbMQHhcPAbkA9oKY9Hi0m/mBqFC6eLoXYMMBRasw0YR6WU22L6Nc62bKJzIz5FlHWg==","signatures":[{"sig":"MEUCIQDpnkemZQcVKRtNpRf5XzFUxv7F/zDynmx5pAl4UC7PAwIgC7GtLdrxmOoHcHI869UcM5dYq3+HnQywn0jDtLU+dm0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2788290},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor/index.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./cursor.css":"./dist/cursor.css","./extensions":"./dist/extensions/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./code-blocks":"./dist/code-block/index.js","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./autocomplete":"./dist/extensions/autocomplete/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./code-block.css":"./dist/code-block.css","./invisibles.css":"./dist/invisibles.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./autocomplete.css":"./dist/autocomplete.css","./autocomplete/css":"./dist/extensions/autocomplete/css/index.js","./autocomplete/vue":"./dist/extensions/autocomplete/vue/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js","./autocomplete/markup":"./dist/extensions/autocomplete/markup/index.js","./autocomplete/svelte":"./dist/extensions/autocomplete/svelte/index.js","./autocomplete-icons.css":"./dist/autocomplete-icons.css","./autocomplete/javascript":"./dist/extensions/autocomplete/javascript/index.js"},"gitHead":"bbb130888f2adb281f669062321b4e621c475ae6","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/jonpyt/prism-code-editor.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["*.css","./dist/languages/*","./dist/prism/languages/*"],"_nodeVersion":"24.12.0","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vite":"^6.4.1","react":"^19.1.1","react-dom":"^19.1.1","typescript":"^5.9.3","@types/node":"^20.19.17","@types/react":"^19.1.13","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.1.9","prism-code-editor":"^5.0.0","@vitejs/plugin-react":"^4.7.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_3.0.1_1768920092953_0.5610583652494756","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"prism-react-editor","version":"3.1.0","keywords":["code","editor","code-editor","textarea","react","highlight","prism"],"author":{"name":"Jonas Pytte"},"_id":"prism-react-editor@3.1.0","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/jonpyt/prism-code-editor#readme","bugs":{"url":"https://github.com/jonpyt/prism-code-editor/issues"},"dist":{"shasum":"dc5ebf21e774cbeeee975d448df1c4b746b31439","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-3.1.0.tgz","fileCount":2108,"integrity":"sha512-q9i5OHHRSxfF1Qu60/1ilK/y6yBKW+Vo90gHGnD1V7e300jiI3zbxwjhG8hc1T/Of8x2WFvi1WM3/ndHUtA/AQ==","signatures":[{"sig":"MEYCIQDNgfx5klvpeJ+SPowQKVGHrAYJjS5oyIBb/wNEY3t8MwIhAPhUd1WvFQn6fm1U2MG2rWun2VGCPU+pGYN5a9d5sbdY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2653885},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor/index.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./cursor.css":"./dist/cursor.css","./extensions":"./dist/extensions/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./code-blocks":"./dist/code-block/index.js","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./autocomplete":"./dist/extensions/autocomplete/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./code-block.css":"./dist/code-block.css","./invisibles.css":"./dist/invisibles.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./autocomplete.css":"./dist/autocomplete.css","./autocomplete/css":"./dist/extensions/autocomplete/css/index.js","./autocomplete/vue":"./dist/extensions/autocomplete/vue/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js","./autocomplete/markup":"./dist/extensions/autocomplete/markup/index.js","./autocomplete/svelte":"./dist/extensions/autocomplete/svelte/index.js","./autocomplete-icons.css":"./dist/autocomplete-icons.css","./autocomplete/javascript":"./dist/extensions/autocomplete/javascript/index.js"},"gitHead":"1c962700d02de2c3140740ca944263b4f00fabc6","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/jonpyt/prism-code-editor.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["./src/prism/languages/*","./src/languages/*","*.css","./dist/languages/*","./dist/prism/languages/*"],"_nodeVersion":"24.12.0","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.0","react":"^19.1.1","esbuild":"^0.27.4","react-dom":"^19.1.1","typescript":"^5.9.3","@types/node":"^20.19.17","@types/react":"^19.1.13","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.1.9","prism-code-editor":"^5.0.1","@vitejs/plugin-react":"^6.0.1"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_3.1.0_1773502518219_0.640665366855055","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"prism-react-editor","version":"3.2.0","keywords":["code","editor","code-editor","textarea","react","highlight","prism"],"author":{"name":"Jonas Pytte"},"_id":"prism-react-editor@3.2.0","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/jonpyt/prism-code-editor#readme","bugs":{"url":"https://github.com/jonpyt/prism-code-editor/issues"},"dist":{"shasum":"ba24bdf32f5bd07ef1fccb669750a25df6e893f5","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-3.2.0.tgz","fileCount":1825,"integrity":"sha512-bwCx5lwQSwFdEwgWh+w/QJtceaFlfjXHPT1bIrKnQcptu8zYlLwsBT254EdRp2Y/lxw4ypacJBCGNHpRMhV6rA==","signatures":[{"sig":"MEUCIQCNhDzgZW6BWb6vRneuCz4+Xmmp07zcaoWfptU4dNR6QQIgeBLv5+MHeUqIw5JV6E2TKMBXbFNr/5+R+OjZWX212kY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2784480},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor/index.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands/index.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./cursor.css":"./dist/cursor.css","./extensions":"./dist/extensions/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./code-blocks":"./dist/code-block/index.js","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./autocomplete":"./dist/extensions/autocomplete/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./code-block.css":"./dist/code-block.css","./invisibles.css":"./dist/invisibles.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./autocomplete.css":"./dist/autocomplete.css","./autocomplete/css":"./dist/extensions/autocomplete/css/index.js","./autocomplete/vue":"./dist/extensions/autocomplete/vue/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js","./autocomplete/markup":"./dist/extensions/autocomplete/markup/index.js","./autocomplete/svelte":"./dist/extensions/autocomplete/svelte/index.js","./autocomplete-icons.css":"./dist/autocomplete-icons.css","./autocomplete/javascript":"./dist/extensions/autocomplete/javascript/index.js"},"gitHead":"b99501357920e4d555974829c581195d0f9abe7d","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/jonpyt/prism-code-editor.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["./src/prism/languages/*","./src/languages/*","*.css","./dist/languages/*","./dist/prism/languages/*"],"_nodeVersion":"24.11.1","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.3","react":"^19.1.1","esbuild":"^0.27.4","react-dom":"^19.1.1","typescript":"^5.9.3","@types/node":"^20.19.17","@types/react":"^19.1.13","unplugin-dts":"^1.0.1","@types/react-dom":"^19.1.9","prism-code-editor":"^5.0.1","@vitejs/plugin-react":"^5.2.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_3.2.0_1780409024182_0.2618111306104862","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"prism-react-editor","version":"3.3.0","keywords":["code","editor","code-editor","textarea","react","highlight","prism"],"author":{"name":"Jonas Pytte"},"_id":"prism-react-editor@3.3.0","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"homepage":"https://github.com/jonpyt/prism-code-editor#readme","bugs":{"url":"https://github.com/jonpyt/prism-code-editor/issues"},"dist":{"shasum":"0791a844e10340402b95d82dad8db88a34b90595","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-3.3.0.tgz","fileCount":1825,"integrity":"sha512-0EEOH8vkeumiO5knpMWz3GjC+r9KDkJkbIO2U6g8e/9R//ePfsz6z/3C2fveTwLnXIpQquU1CN+Ih6JSETr8+Q==","signatures":[{"sig":"MEUCICFhEekO82T9DCaHlpkyYNUVOKXrFYBWK3BRJG+93GTQAiEA1DUVHj05wuyuejMAjY3r615tkExe58Ryore06QfpHJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2787545},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./prism":"./dist/prism/index.js","./utils":"./dist/utils/index.js","./cursor":"./dist/extensions/cursor/index.js","./guides":"./dist/extensions/guides.js","./search":"./dist/extensions/search/index.js","./setups":"./dist/setups.js","./themes":"./dist/themes/index.js","./commands":"./dist/extensions/commands/index.js","./tooltips":"./dist/tooltips.js","./languages":"./dist/languages/index.js","./cursor.css":"./dist/cursor.css","./extensions":"./dist/extensions/index.js","./layout.css":"./dist/layout.css","./match-tags":"./dist/extensions/match-tags.js","./overscroll":"./dist/extensions/overscroll.js","./search.css":"./dist/search.css","./code-blocks":"./dist/code-block/index.js","./copy-button":"./dist/extensions/copy-button/index.js","./languages/*":"./dist/languages/*.js","./prism/utils":"./dist/prism/utils/index.js","./autocomplete":"./dist/extensions/autocomplete/index.js","./code-folding":"./dist/extensions/folding/index.js","./themes/*.css":"./dist/themes/*.css","./scrollbar.css":"./dist/scrollbar.css","./code-block.css":"./dist/code-block.css","./invisibles.css":"./dist/invisibles.css","./match-brackets":"./dist/extensions/match-brackets/index.js","./rtl-layout.css":"./dist/rtl-layout.css","./copy-button.css":"./dist/copy.css","./prism/languages":"./dist/prism/languages/index.js","./autocomplete.css":"./dist/autocomplete.css","./autocomplete/css":"./dist/extensions/autocomplete/css/index.js","./autocomplete/vue":"./dist/extensions/autocomplete/vue/index.js","./code-folding.css":"./dist/folding.css","./prism/languages/*":"./dist/prism/languages/*.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js","./autocomplete/markup":"./dist/extensions/autocomplete/markup/index.js","./autocomplete/svelte":"./dist/extensions/autocomplete/svelte/index.js","./autocomplete-icons.css":"./dist/autocomplete-icons.css","./autocomplete/javascript":"./dist/extensions/autocomplete/javascript/index.js"},"gitHead":"886a39035a7d9d24042ad66c7acc38142dd93a17","scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"repository":{"url":"git+https://github.com/jonpyt/prism-code-editor.git","type":"git"},"_npmVersion":"11.6.2","description":"Lightweight, extensible code editor component for React apps","directories":{},"sideEffects":["./src/prism/languages/*","./src/languages/*","*.css","./dist/languages/*","./dist/prism/languages/*"],"_nodeVersion":"24.11.1","typesVersions":{"*":{"*":["./dist/*"]}},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.6","react":"^19.2.7","esbuild":"^0.27.7","react-dom":"^19.2.7","typescript":"^5.9.3","@types/node":"^20.19.43","@types/react":"^19.2.17","unplugin-dts":"^1.0.3","@types/react-dom":"^19.2.3","prism-code-editor":"link:..\\package","@vitejs/plugin-react":"^5.2.0"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0"},"_npmOperationalInternal":{"tmp":"tmp/prism-react-editor_3.3.0_1785052188829_0.8452443854104132","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"prism-react-editor","version":"3.4.0","type":"module","description":"Lightweight, extensible code editor component for React apps","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":"./dist/index.js","./extensions":"./dist/extensions/index.js","./prism":"./dist/prism/index.js","./prism/utils":"./dist/prism/utils/index.js","./guides":"./dist/extensions/guides.js","./copy-button":"./dist/extensions/copy-button/index.js","./copy-button.css":"./dist/copy.css","./code-folding.css":"./dist/folding.css","./scrollbar.css":"./dist/scrollbar.css","./autocomplete.css":"./dist/autocomplete.css","./autocomplete-icons.css":"./dist/autocomplete-icons.css","./cursor.css":"./dist/cursor.css","./utils":"./dist/utils/index.js","./layout.css":"./dist/layout.css","./rtl-layout.css":"./dist/rtl-layout.css","./code-block.css":"./dist/code-block.css","./themes/*.css":"./dist/themes/*.css","./themes":"./dist/themes/index.js","./languages":"./dist/languages/index.js","./languages/*":"./dist/languages/*.js","./prism/languages":"./dist/prism/languages/index.js","./prism/languages/*":"./dist/prism/languages/*.js","./match-brackets":"./dist/extensions/match-brackets/index.js","./highlight-brackets":"./dist/extensions/match-brackets/highlight.js","./match-tags":"./dist/extensions/match-tags.js","./setups":"./dist/setups.js","./tooltips":"./dist/tooltips.js","./autocomplete":"./dist/extensions/autocomplete/index.js","./autocomplete/css":"./dist/extensions/autocomplete/css/index.js","./autocomplete/markup":"./dist/extensions/autocomplete/markup/index.js","./autocomplete/javascript":"./dist/extensions/autocomplete/javascript/index.js","./autocomplete/svelte":"./dist/extensions/autocomplete/svelte/index.js","./autocomplete/vue":"./dist/extensions/autocomplete/vue/index.js","./autocomplete/emmet":"./dist/extensions/autocomplete/emmet/markup.js","./hover":"./dist/extensions/hover.js","./code-blocks":"./dist/code-block/index.js","./commands":"./dist/extensions/commands/index.js","./cursor":"./dist/extensions/cursor/index.js","./code-folding":"./dist/extensions/folding/index.js","./overscroll":"./dist/extensions/overscroll.js","./search":"./dist/extensions/search/index.js","./search.css":"./dist/search.css","./invisibles.css":"./dist/invisibles.css"},"typesVersions":{"*":{"*":["./dist/*"]}},"scripts":{"dev":"vite","build":"vite build && node scripts/build.mjs","preview":"vite preview"},"peerDependencies":{"react":">=16.8.0","react-dom":">=16.8.0","emmet":"^2.0.0"},"peerDependenciesMeta":{"emmet":{"optional":true}},"devDependencies":{"@types/node":"^20.19.43","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^5.2.0","emmet":"^2.4.11","esbuild":"^0.27.7","prism-code-editor":"link:..\\package","react":"^19.2.7","react-dom":"^19.2.7","typescript":"^5.9.3","unplugin-dts":"^1.0.3","vite":"^7.3.6"},"keywords":["code","editor","code-editor","textarea","react","highlight","prism"],"author":{"name":"Jonas Pytte"},"repository":{"type":"git","url":"git+https://github.com/jonpyt/prism-code-editor.git"},"sideEffects":["./src/prism/languages/*","./src/languages/*","*.css","./dist/languages/*","./dist/prism/languages/*"],"gitHead":"36b60d1c524a9648a111e2fafd14fd44d2929f8b","_id":"prism-react-editor@3.4.0","bugs":{"url":"https://github.com/jonpyt/prism-code-editor/issues"},"homepage":"https://github.com/jonpyt/prism-code-editor#readme","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-Tx1LPwjh8xipdPI8WOUUj23VhkAHBuDI2tzFyZggxbODVpfJTbL3qGP3+QuUWA2QuzLSPt6+XZ8s5Whawj4w9A==","shasum":"f53c54429fbbb136eaf07614a489575dcac3b60e","tarball":"https://registry.npmjs.org/prism-react-editor/-/prism-react-editor-3.4.0.tgz","fileCount":1834,"unpackedSize":2836500,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDBwIO5tOIniyKMwoMPAWA0LgIHlZO1m9FHn/ki+EVmJAiA/FX19+QneariE9j0WcLbkT8ZPjPAh6h8ZS8fGzoWPrg=="}]},"_npmUser":{"name":"flamecaster","email":"fl4mecaster@gmail.com"},"directories":{},"maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/prism-react-editor_3.4.0_1788728591083_0.9744231445662843"},"_hasShrinkwrap":false}},"time":{"created":"2024-07-03T15:35:07.336Z","modified":"2026-09-06T21:03:11.446Z","1.0.0":"2024-07-03T15:35:07.524Z","1.0.1":"2024-07-06T23:35:57.640Z","1.1.0":"2024-08-22T14:25:02.386Z","2.0.0":"2025-05-11T22:11:30.820Z","2.1.0":"2025-06-21T15:23:22.707Z","2.2.0":"2025-12-10T17:23:54.061Z","3.0.0":"2026-01-10T16:14:17.215Z","3.0.1":"2026-01-20T14:41:33.199Z","3.1.0":"2026-03-14T15:35:18.492Z","3.2.0":"2026-06-02T14:03:44.458Z","3.3.0":"2026-07-26T07:49:49.042Z","3.4.0":"2026-09-06T21:03:11.304Z"},"bugs":{"url":"https://github.com/jonpyt/prism-code-editor/issues"},"author":{"name":"Jonas Pytte"},"homepage":"https://github.com/jonpyt/prism-code-editor#readme","keywords":["code","editor","code-editor","textarea","react","highlight","prism"],"repository":{"type":"git","url":"git+https://github.com/jonpyt/prism-code-editor.git"},"description":"Lightweight, extensible code editor component for React apps","maintainers":[{"name":"flamecaster","email":"fl4mecaster@gmail.com"}],"readme":"# Prism react editor\r\n\r\nCode editor component for React apps\r\n\r\n[![Bundle size](https://img.shields.io/bundlephobia/minzip/prism-react-editor?label=size)](https://bundlephobia.com/package/prism-react-editor)\r\n[![NPM Package](https://img.shields.io/npm/v/prism-react-editor)](https://npmjs.com/prism-react-editor)\r\n\r\n## What?\r\n\r\nThis is a rewrite of [Prism code editor](https://github.com/jonpyt/prism-code-editor) using React and hooks. It's a lightweight, extensible code editor optimized for fast load times with many optional extensions.\r\n\r\n## Contents\r\n\r\n- [Installation](#installation)\r\n- [Demo](#demo)\r\n- [Examples](#examples)\r\n- [Basic usage](#basic-usage)\r\n- [Props](#props)\r\n- [Extensions](#extensions)\r\n  - [Creating your own](#creating-your-own)\r\n- [Editor API](#editor-api)\r\n  - [Properties](#properties)\r\n    - [DOM Elements](#dom-elements)\r\n  - [Methods](#methods)\r\n  - [Extensions property](#extensions-property)\r\n  - [Editor helpers](#editor-helpers)\r\n- [Languages](#languages)\r\n- [Hotkeys](#hotkeys)\r\n- [Styling](#styling)\r\n- [Themes](#themes)\r\n  - [Theme switcher](#theme-switcher)\r\n- [Code blocks](#code-blocks)\r\n  - [Code block extensions](#code-block-extensions)\r\n  - [Code block props](#code-block-props)\r\n- [Performance](#performance)\r\n- [Contributing](#contributing)\r\n\r\n## Installation\r\n\r\n    npm i prism-react-editor\r\n\r\nYou must already have `react` and `react-dom` version 16.8.0 or greater installed.\r\n\r\n## Demo\r\n\r\n[Prism code editor's demo](https://prism-code-editor.netlify.app/playground). There's no demo for this React rewrite since its behavior is nearly identical.\r\n\r\n## Examples\r\n\r\n- [Usage in forms](https://stackblitz.com/edit/vitejs-vite-6wmrpx?file=src%2FApp.tsx)\r\n- [Next.js example](https://stackblitz.com/edit/stackblitz-starters-8spwks?file=app%2Fcode-block.tsx,app%2Feditor.tsx,app%2Fpage.tsx)\r\n- [Preact example](https://stackblitz.com/edit/vitejs-vite-t88xmd?file=src%2Fapp.tsx)\r\n- [Tooltip example](https://stackblitz.com/edit/vitejs-vite-jq7zfh?file=src%2FApp.tsx)\r\n- [Relative line numbers](https://stackblitz.com/edit/vitejs-vite-d3zxwt?file=src%2FApp.tsx)\r\n- [Custom cursor](https://stackblitz.com/edit/vitejs-vite-cg3zpz?file=src%2FApp.tsx)\r\n\r\n## Basic usage\r\n\r\nBelow is an example of a simple JSX editor.\r\n\r\n```jsx\r\nimport { Editor } from \"prism-react-editor\"\r\nimport { BasicSetup } from \"prism-react-editor/setups\"\r\n\r\n// Adding the JSX grammar\r\nimport \"prism-react-editor/prism/languages/jsx\"\r\n\r\n// Adds comment toggling and auto-indenting for JSX\r\nimport \"prism-react-editor/languages/jsx\"\r\n\r\nimport \"prism-react-editor/layout.css\"\r\nimport \"prism-react-editor/themes/github-dark.css\"\r\n\r\n// Required by the basic setup\r\nimport \"prism-react-editor/search.css\"\r\nimport \"prism-react-editor/invisibles.css\"\r\n\r\nfunction MyEditor() {\r\n  return <Editor language=\"jsx\" value=\"const foo = 'bar'\">\r\n    <BasicSetup />\r\n  </Editor>\r\n}\r\n```\r\n\r\n## Props\r\n\r\n| Name                | Type                                                                                  | Description                                                                                                                                     |\r\n| ------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |\r\n| `language`          | `string`                                                                              | Language used for syntax highlighting. Defaults to `text`.                                                                                      |\r\n| `tabSize`           | `number`                                                                              | Tab size used for indentation. Defaults to `2`.                                                                                                 |\r\n| `insertSpaces`      | `boolean`                                                                             | Whether the editor should insert spaces for indentation. Defaults to `true`.                                                                    |\r\n| `lineNumbers`       | `boolean`                                                                             | Whether line numbers should be shown. Defaults to `true`.                                                                                       |\r\n| `readOnly`          | `boolean`                                                                             | Whether the editor should be read only. Defaults to `false`.                                                                                    |\r\n| `wordWrap`          | `boolean`                                                                             | Whether the editor should have word wrap. Defaults to `false`.                                                                                  |\r\n| `value`             | `string`                                                                              | Initial value to display in the editor.                                                                                                         |\r\n| `rtl`               | `boolean`                                                                             | Whether the editor uses right to left directionality. Defaults to `false`. Requires extra CSS from `prism-react-editor/rtl-layout.css` to work. |\r\n| `style`             | `Omit<React.CSSProperties, \"tabSize\">`                                                | Allows adding inline styles to the container element.                                                                                           |\r\n| `className`         | `string`                                                                              | Additional classes for the container element.                                                                                                   |\r\n| `textareaProps`     | `Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, OmittedTextareaProps>`       | Allows adding props to the editor's textarea element.                                                                                           |\r\n| `onUpdate`          | `(value: string, editor: PrismEditor) => void`                                        | Function called after the editor updates.                                                                                                       |\r\n| `onSelectionChange` | `(selection: InputSelection, value: string, editor: PrismEditor) => void`             | Function called when the editor's selection changes.                                                                                            |\r\n| `onTokenize`        | `(tokens: TokenStream, language: string, value: string, editor: PrismEditor) => void` | Function called before the tokens are stringified to HTML.                                                                                      |\r\n| `children`          | `React.ReactNode`                                                                     | Extensions and overlays for the editor.                                                                                                         |\r\n\r\n## Pitfall\r\n\r\nThis component is not controlled, and the `value` prop should be treated like an initial value. Do not change the `value` prop in the `onUpdate` handler. Doing so will negatively impact performance and reset both the cursor position and undo/redo history on every input.\r\n\r\n```jsx\r\n// counterexample: do NOT do this\r\nfunction MyEditor() {\r\n  const [value, setValue] = useState(\"const foo = 'bar'\")\r\n\r\n  return (\r\n    <Editor language=\"jsx\" value={value} onUpdate={setValue} />\r\n  )\r\n}\r\n```\r\n\r\nIf you need access to the editor's value in your component, use a ref instead:\r\n\r\n```tsx\r\nfunction MyEditor() {\r\n  const editorRef = useRef<PrismEditor>()\r\n\r\n  useEffect(() => {\r\n    console.log(editorRef.current?.value)\r\n  })\r\n\r\n  return <Editor ref={editorRef} />\r\n}\r\n```\r\n\r\n## Extensions\r\n\r\nTo keep the core light, most functionality is added by optional extensions.\r\n\r\nThere are extensions adding:\r\n\r\n- Many common commands\r\n- Bracket matching and rainbow brackets\r\n- Tag matching\r\n- Indentation guides\r\n- Search, regex search and replace\r\n- Selection match highlighting\r\n- A copy button\r\n- Read-only code folding\r\n- Custom undo/redo\r\n- And more...\r\n\r\nMany commonly used extensions are added by `BasicSetup`, but if you want to fully customize which extensions are added. Below it's shown how to import most extensions.\r\n\r\n```tsx\r\nimport { Editor, PrismEditor } from \"prism-react-editor\"\r\nimport \"prism-react-editor/prism/languages/jsx\"\r\nimport \"prism-react-editor/layout.css\"\r\n// Needed for the search widget\r\nimport \"prism-react-editor/search.css\"\r\n// Needed for the copy button\r\nimport \"prism-react-editor/copy-button.css\"\r\n\r\nimport { useBracketMatcher } from \"prism-react-editor/match-brackets\"\r\nimport { useHighlightBracketPairs } from \"prism-react-editor/highlight-brackets\"\r\nimport { IndentGuides } from \"prism-react-editor/guides\"\r\nimport { useHighlightSelectionMatches, useSearchWidget, useShowInvisibles } from \"prism-react-editor/search\"\r\nimport { useHighlightMatchingTags, useTagMatcher } from \"prism-react-editor/match-tags\"\r\nimport { useCursorPosition } from \"prism-react-editor/cursor\"\r\nimport { useEditorCommands, useEditHistory, defaultKeymap } from \"prism-react-editor/commands\"\r\nimport { useCopyButton } from \"prism-react-editor/copy-button\"\r\nimport { useOverscroll } from \"prism-react-editor/overscroll\"\r\nimport { usePrismEditor } from \"prism-react-editor/extensions\"\r\n\r\nfunction MyExtensions() {\r\n  const [editor] = usePrismEditor()\r\n  useBracketMatcher(editor)\r\n  useHighlightBracketPairs(editor)\r\n  useOverscroll(editor)\r\n  useTagMatcher(editor)\r\n  useHighlightMatchingTags(editor)\r\n  useEditorCommands(editor, defaultKeymap)\r\n  useEditHistory(editor)\r\n  useSearchWidget(editor)\r\n  useHighlightSelectionMatches(editor)\r\n  useShowInvisibles(editor)\r\n  useCopyButton(editor)\r\n  useCursorPosition(editor)\r\n\r\n  return <IndentGuides />\r\n}\r\n\r\nfunction MyEditor() {\r\n  return (\r\n    <Editor language=\"jsx\" value=\"const foo = 'bar'\">\r\n      <MyExtensions />\r\n    </Editor>\r\n  )\r\n}\r\n```\r\n\r\nLazy loading extensions is also possible for code splitting. It's not recommended to lazy load `useBracketMatcher` and you might want `IndentGuides` to be present on first render. All other extensions will work perfectly fine when lazy loaded.\r\n\r\n```jsx\r\nimport { lazy, Suspense } from \"react\"\r\nimport { usePrismEditor } from \"prism-react-editor/extensions\"\r\n\r\nconst LazyExtensions = lazy(() => import(\"./extensions\"))\r\n\r\nfunction MyExtensions() {\r\n  const [editor] = usePrismEditor()\r\n  useBracketMatcher(editor)\r\n\r\n  return <IndentGuides />\r\n}\r\n\r\nfunction MyEditor() {\r\n  return (\r\n    <Editor language=\"jsx\" value=\"const foo = 'bar'\">\r\n      <MyExtensions />\r\n      <Suspense>\r\n        <LazyExtensions />\r\n      </Suspense>\r\n    </Editor>\r\n  )\r\n}\r\n\r\n```\r\n\r\n### Creating your own\r\n\r\nIf you need to do anything more than adding an `onUpdate` or `onSelectionChange` prop, you should consider creating your own extension.\r\n\r\n```jsx\r\nimport { useLayoutEffect, useEffect } from \"react\"\r\nimport { Editor } from \"prism-react-editor\"\r\nimport { BasicSetup } from \"prism-react-editor/setups\"\r\nimport { usePrismEditor } from \"prism-react-editor/extensions\"\r\n\r\nfunction MyExtension() {\r\n  const [editor] = usePrismEditor()\r\n  // Layout effects will run before the editor has mounted\r\n  useLayoutEffect(() => {\r\n    return editor.on(\"selectionChange\", selection => {\r\n      console.log(\"Selection changed:\", selection)\r\n    })\r\n  }, [])\r\n\r\n  useEffect(() => {\r\n    // The editor has mounted now\r\n    editor.textarea!.focus()\r\n  }, [])\r\n\r\n  // The elements returned are added to the editor's overlays\r\n  // Keep in mind that they will get some default styles\r\n  return (\r\n    <>\r\n      <div>My overlay</div>\r\n      <BasicSetup />\r\n    </>\r\n  )\r\n}\r\n\r\nfunction MyEditor() {\r\n  return (\r\n    <Editor language=\"jsx\" value=\"const foo = 'bar'\">\r\n      <MyExtension />\r\n    </Editor>\r\n  )\r\n}\r\n```\r\n\r\n## Editor API\r\n\r\nTo access the editor inside an extension, use the `usePrismEditor()` hook:\r\n\r\n```tsx\r\nimport { usePrismEditor } from \"prism-react-editor/extensions\"\r\n\r\nfunction MyExtension() {\r\n  const [editor, props] = usePrismEditor()\r\n  // ...\r\n}\r\n```\r\n\r\n**Note**: `editor` is a `ref` value, so its reference is stable. However, `props` do become stale, but `editor.props` can be used to always get the latest props.\r\n\r\n### Properties\r\n\r\n- `value: string`: Current value of the editor.\r\n- `activeLine: number`: Line number of the line with the cursor. You can index into `editor.lines` to get the DOM node for the active line.\r\n- `inputCommandMap: Record<string, InputCommandCallback | null | undefined>`: Record mapping an input to a function called when that input is typed.\r\n- `keyCommandMap: Record<string, KeyCommandCallback | null | undefined>`: Record mapping KeyboardEvent.key to a function called when that key is pressed.\r\n- `extensions: Object`: Object storing some of the extensions added to the editor. [Read more](#extensions-property).\r\n- `props: EditorProps`: The component props passed to the editor.\r\n- `focused: boolean`. Whether the `textarea` is focused.\r\n- `tokens: TokenStream`. Current tokens displayed in the editor.\r\n\r\n#### DOM Elements\r\n\r\n- `container: HTMLDivElement`: This is the outermost element of the editor.\r\n- `wrapper: HTMLDivElement`: Element wrapping the lines and overlays.\r\n- `lines: HTMLCollectionOf<HTMLDivElement>`: Collection containing the overlays as the first element, followed by all code lines.\r\n- `textarea: HTMLTextAreaElement`: Underlying `textarea` in the editor.\r\n\r\n### Methods\r\n\r\n- `update(): void`: Forces the editor to update. Can be useful after modifying a grammar for example.\r\n- `getSelection(): InputSelection`: Gets the `selectionStart`, `selectionEnd` and `selectionDirection` for the `textarea`.\r\n- `on<T extends keyof EditorEventMap>(name: T, listener: EditorEventMap[T]): () => void`: Adds a listener for editor events and returns a cleanup function. Intended to be used by extensions inside a `useLayoutEffect` or `useEffect` hook.\r\n\r\n### Extensions property\r\n\r\nMultiple extensions have an entry on `editor.extensions` allowing you to interact with the extension.\r\n\r\n- `matchBrackets: BracketMatcher`: Allows access to all brackets found in the editor along with which are paired together.\r\n- `matchTags: TagMatcher`: Allows access to all tags found in the editor along with which tags are paired together.\r\n- `cursor: Cursor`: Allows you to get the cursor position relative to the editor's overlays and to scroll the cursor into view.\r\n- `searchWidget: SearchWidget`: Allows you to open or close the search widget.\r\n- `history: EditHistory`: Allows you to clear the history or navigate it.\r\n- `folding: ReadOnlyCodeFolding`: Allows access to the full unfolded code and to toggle folded ranges.\r\n- `autoComplete: AutoComplete`: Allows inserting snippets and starting completion queries programmatically.\r\n\r\n### Editor helpers\r\n\r\nUsing things like `editor.value` or `editor.getSelection()` to render an extension won't cause the extension to rerender when these values change. Instead, use the helpers that store the value or selection in state and subscribe to updates.\r\n\r\n```jsx\r\nimport {\r\n  usePrismEditor,\r\n  useEditorValue,\r\n  useEditorSelection\r\n} from \"prism-react-editor/extensions\"\r\n\r\nfunction MyExtension() {\r\n  const [editor, props] = usePrismEditor()\r\n  const value = useEditorValue(editor)\r\n  const selection = useEditorSelection(editor)\r\n  // ...\r\n}\r\n```\r\n\r\n## Utilities\r\n\r\nThe `prism-react-editor/utils` entry point exports various utilities for inserting text, changing the selection, finding token elements, and more.\r\n\r\n## Prism\r\n\r\nThe Prism instance used by this library is exported from `prism-react-editor/prism`. This allows you to add your own Prism grammars or perform syntax highlighting outside of an editor. All modules under `prism-react-editor/prism` can run outside the browser in for example Node.js to do syntax highlighting on the server. Check the [working with prism](https://prism-code-editor.netlify.app/guides/working-with-prism) guide for more info.\r\n\r\n## Languages\r\n\r\nPrism supports syntax highlighting for hundreds of languages, but none of them are imported by default. You need to choose which languages to import. Importing `prism-react-editor/prism/languages/javascript` for example will register the JavaScript grammar through side effects.\r\n\r\nIf you need access to many languages, you can import the following entry points:\r\n\r\n- `prism-react-editor/prism/languages` for all languages (~180kB)\r\n- `prism-react-editor/prism/languages/common` for [42 common languages](https://github.com/jonpyt/prism-code-editor/tree/main/package/src/prism/languages/common.js) (~30kB)\r\n\r\nThis library also supports auto-indenting, comment toggling and self-closing tags for most of these languages. For it to work, you need the `useDefaultCommands()` hook (or the basic setup) and to import the behavior for the language.\r\n\r\nThe easiest way is to import all languages at ~3.6kB gzipped. You can dynamically import this since it's usually not needed before the page has loaded.\r\n\r\n```javascript\r\nimport(\"prism-react-editor/languages\")\r\n```\r\n\r\nYou can also import `prism-react-editor/languages/common` instead to support a subset of common languages at less than 2kB gzipped.\r\n\r\nLastly, if you only need support for a few languages, you can do individual imports, for example `prism-react-editor/languages/html`. [Read more](https://prism-code-editor.netlify.app/guides/language-specific-behavior#individual-imports).\r\n\r\n## Hotkeys\r\n\r\nTo add key bindings to an editor, use `addEditorHotkey()` inside an editor extension or outside with a ref.\r\n\r\n```tsx\r\nimport { addEditorHotkey } from \"prism-react-editor/commands\"\r\n\r\nfunction MyHotkeyExtension() {\r\n  const [editor] = usePrismEditor()\r\n\r\n  // This could be extracted to a custom `useHotkey` hook\r\n  useEffect(() => {\r\n    return addEditorHotkey(editor, \"mod+s\", () => {\r\n      console.log(\"Saved!\")\r\n    })\r\n  }, [])\r\n}\r\n\r\nfunction MyEditor() {\r\n  const editorRef = useRef<PrismEditor>()\r\n\r\n  useEffect(() => {\r\n    if (!editorRef.current) return\r\n\r\n    return addEditorHotkey(editorRef.current, \"alt+shift+f\", editor => {\r\n      return formatDocument(editor)\r\n    })\r\n  }, [])\r\n\r\n  return (\r\n    <Editor language=\"jsx\" value=\"\" ref={editorRef} />\r\n  )\r\n}\r\n```\r\n\r\nTo avoid managing dependency arrays or dealing with stale closures inside the hotkey, the dependency array can be removed from the `useEffect`, which will reattach the hotkey on every rerender.\r\n\r\n### Hotkeys outside editors\r\n\r\nThis library exports the primitives it uses for adding keyboard shortcuts. The following examples will show how these primitives can be wrapped for usage in React apps.\r\n\r\n```tsx\r\nimport { addHotkey, Hotkey, runHotkeys } from \"prism-react-editor/commands\"\r\nimport { useEffect, createContext, useContext, useRef } from \"react\"\r\n\r\ntype HotkeyData = undefined\r\nconst HotkeyContext = createContext<Hotkey<HotkeyData>>({})\r\n\r\nfunction App() {\r\n  const keyMap = useRef<Hotkey<HotkeyData>>({})\r\n\r\n  // For scoped hotkeys, the handler could be added as a onKeydown\r\n  // prop to a container instead of as a global event listener.\r\n  useEffect(() => {\r\n    const handler = (e: KeyboardEvent) => {\r\n      const target = e.target as Element\r\n\r\n      // Filter events on text fields\r\n      if (target.matches(\"input, textarea\") || target.isContentEditable) {\r\n        return\r\n      }\r\n\r\n      runHotkeys(e, keyMap.current, undefined)\r\n    }\r\n\r\n    addEventListener(\"keydown\", handler)\r\n    return () => removeEventListener(\"keydown\", handler)\r\n  }, [])\r\n\r\n  return (\r\n    <HotkeyContext.Provider value={keyMap.current}>\r\n      <MyComponent />\r\n    </HotkeyContext.Provider>\r\n  )\r\n}\r\n\r\nfunction MyComponent() {\r\n  const keyMap = useContext(HotkeyContext)\r\n\r\n  useEffect(() => {\r\n    return addHotkey(keyMap, \"mod+s\", () => {\r\n      console.log(\"Saved!\")\r\n    })\r\n  }, [keyMap])\r\n\r\n  return null\r\n}\r\n```\r\n\r\nFor more information about hotkeys, read the [hotkeys guide](https://prism-code-editor.netlify.app/guides/hotkeys/).\r\n\r\n## Styling\r\n\r\nThis library does not inject any styles onto the webpage, instead you must import them. If the default styles don't work for you, you can import your own styles instead.\r\n\r\n- `prism-react-editor/layout.css`: layout for the editor.\r\n- `prism-react-editor/scrollbar.css`: custom scrollbar to desktop Chrome and Safari you can color with `--pce-scrollbar`.\r\n- `prism-react-editor/copy-button.css`: styles for the `useCopybutton()` extension.\r\n- `prism-react-editor/search.css`: styles for the `useSearchWidget()` extension.\r\n- `prism-react-editor/rtl-layout.css`: adds support for the `rtl` prop.\r\n- `prism-react-editor/invisibles.css`: styles for the `useShowInvisibles()` extension.\r\n- `prism-react-editor/cursor.css`: styles for the `useCustomCursor()` extension.\r\n- `prism-react-editor/autocomplete.css`: styles for the `useAutoComplete()` extension.\r\n- `prism-react-editor/autocomplete-icons.css`: default icons for the autocompletion tooltip.\r\n- `prism-react-editor/code-block.css`: additional styles required for [code blocks](#code-blocks).\r\n\r\nBy default, the editor's height will fit the content, so you might want to add a `height` or `max-height` to `.prism-code-editor` depending on your use case.\r\n\r\n## Themes\r\n\r\nThere are currently 14 different themes you can import, one of them being from `prism-react-editor/themes/github-dark.css`. If none of the themes fit your website, use one of them as an example to help implement your own.\r\n\r\n### Theme switcher\r\n\r\nIf you're making a theme switcher, you might want to use the `useEditorTheme` hook. This hook is a simple wrapper around the `loadTheme` utility exported from the same entry point. If want something more sophisticated, use `loadTheme` directly instead.\r\n\r\n```jsx\r\nimport { useState } from \"react\"\r\nimport { useEditorTheme } from \"prism-react-editor/themes\"\r\n\r\nexport function App() {\r\n  const [theme, setTheme] = useState(\"github-dark\")\r\n  const themeCss = useEditorTheme(theme)\r\n\r\n  return <>\r\n    <style>{themeCss}</style>\r\n    ...\r\n  </>\r\n}\r\n```\r\n\r\nThe hook and `<style>` tag can be placed in any component you want. Just make sure that component is only used once since you don't want multiple `<style>` elements with themes on the page.\r\n\r\nTo limit [FOUC](https://en.wikipedia.org/wiki/Flash_of_unstyled_content), you may want to provide a fallback stylesheet for when the theme is loading using something like `<style>{themeCss ?? fallbackCss}</style>`. Alternatively, you can avoid rendering editors before the theme has loaded using `themeCss && <Editor ... />`.\r\n\r\nIf you're just switching between two themes (light/dark), using CSS variables would have fewer downsides, but this does require maintaining your own theme.\r\n\r\n### Registering themes\r\n\r\nIf you want to use your own themes with `useEditorTheme` or `loadTheme` or want to override existing themes, use `registerTheme`. The example below might look different if you're not using Vite as your bundler.\r\n\r\n```js\r\nimport { registerTheme } from \"prism-react-editor/themes\"\r\n\r\n// Might look different if you're not using Vite\r\nregisterTheme(\"my-theme\", () => import(\"./my-theme.css?inline\"))\r\n```\r\n\r\n## Code blocks\r\n\r\nThis library can also create static code blocks. These support some features not supported by editors such as hover descriptions and highlighting brackets/tag-names on hover.\r\n\r\n```tsx\r\nimport {\r\n  CodeBlock,\r\n  CopyButton,\r\n  HighlightBracketPairsOnHover,\r\n  HighlightTagPairsOnHover,\r\n  HoverDescriptions,\r\n  rainbowBrackets,\r\n} from \"prism-react-editor/code-blocks\"\r\nimport \"prism-react-editor/layout.css\"\r\nimport \"prism-react-editor/code-block.css\"\r\nimport \"prism-react-editor/themes/github-dark.css\"\r\n\r\n// Very important for performance to keep this function stable\r\nconst onTokenize = rainbowBrackets()\r\n\r\nfunction MyCodeBlock({ lang, code }: { lang: string, code: string }) {\r\n  return (\r\n    <CodeBlock language={lang} code={code} onTokenize={onTokenize}>\r\n      <HoverDescriptions\r\n        callback={(types, language, text, element) => {\r\n          if (types.includes(\"string\")) return [\"This is a string token.\"]\r\n        }}\r\n      />\r\n      <CopyButton />\r\n      <HighlightTagPairsOnHover />\r\n      <HighlightBracketPairsOnHover />\r\n    </CodeBlock>\r\n  )\r\n}\r\n```\r\n\r\n### Code block extensions\r\n\r\nJust like with editors, you can also pass extensions to code blocks that modify them. To access the code block and its props from an extension, use the `usePrismCodeBlock()` hook:\r\n\r\n```jsx\r\nimport { usePrismCodeBlock } from \"prism-react-editor/code-blocks\"\r\n\r\nfunction MyCodeBlockExtension() {\r\n  const [codeBlock, props] = usePrismCodeBlock()\r\n  // ...\r\n}\r\n```\r\n\r\n### Code block props\r\n\r\n| Name                | Type                                                                    | Description                                                                                                                                     |\r\n| ------------------- | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |\r\n| `language`          | `string`                                                                | Language used for syntax highlighting. Defaults to `text`.                                                                                      |\r\n| `tabSize`           | `number`                                                                | Tab size used for indentation. Defaults to `2`.                                                                                                 |\r\n| `lineNumbers`       | `boolean`                                                               | Whether line numbers should be shown. Defaults to `false`.                                                                                      |\r\n| `wordWrap`          | `boolean`                                                               | Whether the code block should have word wrap. Defaults to `false`.                                                                              |\r\n| `preserveIndent`    | `boolean`                                                               | Whether or not indentation is preserved on wrapped lines. Defaults to `true` when `wordWrap` is enabled.                                        |\r\n| `guideIndents`      | `boolean`                                                               | Whether or not to display indentation guides. Does not work with `rtl` set to `true`. Defaults to `false`                                       |\r\n| `rtl`               | `boolean`                                                               | Whether the editor uses right to left directionality. Defaults to `false`. Requires extra CSS from `prism-react-editor/rtl-layout.css` to work. |\r\n| `code`              | `string`                                                                | Code to display in the code block.                                                                                                              |\r\n| `style`             | `Omit<React.CSSProperties, \"tabSize\" \\| \"counterReset\">`                | Allows adding inline styles to the container element.                                                                                           |\r\n| `className`         | `string`                                                                | Additional classes for the container element.                                                                                                   |\r\n| `onTokenize`        | `(tokens: TokenStream) => void`                                         | Callback that can be used to modify the tokens before they're stringified to HTML.                                                              |\r\n| `children`          | `(codeBlock: PrismCodeBlock, props: CodeBlockProps) => React.ReactNode` | Callback used to render extensions.                                                                                                             |\r\n\r\n## Performance\r\n\r\nManual DOM manipulation has been kept almost everywhere. This rewrite therefore has very similar performance to the original which would not be the case if only JSX was used.\r\n\r\n## Development\r\n\r\nTo run the development server locally, install dependencies.\r\n\r\n    pnpm install\r\n\r\nNext, you must build the prism-code-editor package.\r\n\r\n    cd ../package\r\n    pnpm install\r\n    pnpm build\r\n\r\nFinally, you can run the development server to test your changes.\r\n\r\n    cd ../react-package\r\n    pnpm dev\r\n","readmeFilename":"README.md"}