{"_id":"@bloklabs/core","_rev":"31-ded9b2812968cedd12cd0b6d2de19307","name":"@bloklabs/core","dist-tags":{"latest":"1.15.2"},"versions":{"1.1.1":{"name":"@bloklabs/core","version":"1.1.1","keywords":["blok","text editor","rich text editor","block-based editor","notion-like editor","headless editor","extensible editor"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.1.1","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://github.com/JackUait/blok#readme","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"2d9227f581e53aa2b3c779c37111608673803296","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.1.1.tgz","fileCount":1487,"integrity":"sha512-kwrKNvfm1w+FP+ixuWuKKMTqBfVUa7Gd+qhbwpGqomoTi33c/q4ep2cBXT0Pu6E+oz1DBJS6ULPpJqHYp3jpUw==","signatures":[{"sig":"MEQCIG9w60Sdb4LGiO5F3djYCEXL0PmDrtXnMgLW6+a87GtgAiBK8lKlr6YGHVuyryG1L6biSMrx2i84a4dz//km1i+79g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98438277},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.1.1.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"yarn build:test && playwright test","lint":"sh -c 'eslint .; ESLINT_EXIT=$?; tsc --noEmit; TSC_EXIT=$?; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/generate-fonts.mjs && vite build --mode production && vite build --config vite.config.iife.mjs --mode production && vite build --config vite.config.umd.mjs --mode production && node scripts/build-locales.mjs && yarn build:angular && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"yarn build:test && playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"yarn build:test && playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/generate-fonts.mjs && vite build --mode test && vite build --config vite.config.iife.mjs --mode test && vite build --config vite.config.umd.mjs --mode test && node scripts/build-locales.mjs test && node scripts/build-react-vendor.mjs && node scripts/build-vue-vendor.mjs && node scripts/build-angular.mjs && node scripts/build-angular-vendor.mjs && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","e2e:chrome":"yarn build:test && playwright test --project=chromium","e2e:safari":"yarn build:test && playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"yarn build:test && playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"yarn build:test && playwright test --ui --project=chromium","e2e:ui:safari":"yarn build:test && playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"yarn build:test && playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"yarn lint && yarn test","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.1.1.tgz","_integrity":"sha512-kwrKNvfm1w+FP+ixuWuKKMTqBfVUa7Gd+qhbwpGqomoTi33c/q4ep2cBXT0Pu6E+oz1DBJS6ULPpJqHYp3jpUw==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.57.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.39","yjs":"13.6.30","rxjs":"7.8.1","vite":"8.0.9","yaml":"^2.8.3","husky":"9.1.7","jscpd":"4.0.9","jsdom":"28.1.0","jszip":"^3.10.1","katex":"^0.16.44","react":"^19.2.4","tslib":"2.8.1","eslint":"10.2.1","nanoid":"5.1.9","vitest":"4.1.8","i18next":"26.0.6","mermaid":"^11.15.0","postcss":"8.5.10","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"16.5.0","dompurify":"^3.4.8","react-dom":"^19.2.4","storybook":"10.3.5","@vitest/ui":"4.1.8","ng-packagr":"20.3.2","playwright":"1.59.1","typescript":"5.9.3","webm-muxer":"^5.1.4","@types/node":"25.6.0","tailwindcss":"4.2.4","@types/mdast":"^4.0.4","@types/react":"^19.2.14","docx-preview":"^0.3.7","html-janitor":"2.0.4","@angular/core":"20.3.25","@angular/build":"20.3.30","@angular/forms":"20.3.25","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.13.0","@angular/common":"20.3.25","@babel/register":"7.28.6","@commitlint/cli":"20.5.0","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.59.1","@types/react-dom":"^19.2.3","semantic-release":"25.0.3","@angular/compiler":"20.3.25","@tailwindcss/vite":"4.2.4","typescript-eslint":"8.57.0","eslint-plugin-jest":"29.15.2","@vitest/coverage-v8":"4.1.8","eslint-plugin-jsdoc":"62.9.0","fractional-indexing":"^3.2.0","@axe-core/playwright":"4.11.2","@oxc-project/runtime":"0.137.0","@storybook/html-vite":"10.3.5","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","@angular/compiler-cli":"20.3.25","@storybook/addon-a11y":"10.3.5","@vitest/eslint-plugin":"1.6.16","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.0.3","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"^1.1.0","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.3.5","eslint-plugin-storybook":"10.3.5","micromark-extension-gfm":"^3.0.0","@angular/platform-server":"20.3.25","eslint-plugin-playwright":"2.10.2","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"20.3.25","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.0.0-beta.0","@fontsource-variable/inter":"^5.2.8","@vitest/browser-playwright":"4.1.8","@fontsource/permanent-marker":"^5.2.7","@analogjs/vite-plugin-angular":"2.6.1","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.1","@commitlint/config-conventional":"20.5.0","@angular/platform-browser-dynamic":"20.3.25","@fontsource-variable/jetbrains-mono":"^5.2.8","@fontsource-variable/source-serif-4":"^5.2.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.1.1_1784139754858_0.10872986971367915","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bloklabs/core","version":"1.2.0","keywords":["blok","text editor","rich text editor","block-based editor","notion-like editor","headless editor","extensible editor"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.2.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://github.com/JackUait/blok#readme","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"6c2c0fc969a4ac1480b62d1be61a207b714ecec2","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.2.0.tgz","fileCount":1487,"integrity":"sha512-aLFMR7MhuIsy000WiJJh+2omjPanw3PczBRzTfqQMRujoCFW4FzP9lW51kuGJtPZuRRAEjjzJICBrIUfNnEyiQ==","signatures":[{"sig":"MEQCIHXgISbfh/IaRp6MOZwDs0n/65BeMRPrrpL2iuXSAqyMAiBMaZmBsUHv87w8m4S8kwzK1Zaa3qWjbKBY5m76falBQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98517597},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.2.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"yarn build:test && playwright test","lint":"sh -c 'eslint .; ESLINT_EXIT=$?; tsc --noEmit; TSC_EXIT=$?; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/generate-fonts.mjs && vite build --mode production && vite build --config vite.config.iife.mjs --mode production && vite build --config vite.config.umd.mjs --mode production && node scripts/build-locales.mjs && yarn build:angular && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"yarn build:test && playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"yarn build:test && playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/generate-fonts.mjs && vite build --mode test && vite build --config vite.config.iife.mjs --mode test && vite build --config vite.config.umd.mjs --mode test && node scripts/build-locales.mjs test && node scripts/build-react-vendor.mjs && node scripts/build-vue-vendor.mjs && node scripts/build-angular.mjs && node scripts/build-angular-vendor.mjs && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","e2e:chrome":"yarn build:test && playwright test --project=chromium","e2e:safari":"yarn build:test && playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"yarn build:test && playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"yarn build:test && playwright test --ui --project=chromium","e2e:ui:safari":"yarn build:test && playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"yarn build:test && playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"yarn lint && yarn test","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.2.0.tgz","_integrity":"sha512-aLFMR7MhuIsy000WiJJh+2omjPanw3PczBRzTfqQMRujoCFW4FzP9lW51kuGJtPZuRRAEjjzJICBrIUfNnEyiQ==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.57.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.39","yjs":"13.6.30","rxjs":"7.8.1","vite":"8.0.9","yaml":"^2.8.3","husky":"9.1.7","jscpd":"4.0.9","jsdom":"28.1.0","jszip":"^3.10.1","katex":"^0.16.44","react":"^19.2.4","tslib":"2.8.1","eslint":"10.2.1","nanoid":"5.1.9","vitest":"4.1.8","i18next":"26.0.6","mermaid":"^11.15.0","postcss":"8.5.10","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"16.5.0","dompurify":"^3.4.8","react-dom":"^19.2.4","storybook":"10.3.5","@vitest/ui":"4.1.8","ng-packagr":"20.3.2","playwright":"1.59.1","typescript":"5.9.3","webm-muxer":"^5.1.4","@types/node":"25.6.0","tailwindcss":"4.2.4","@types/mdast":"^4.0.4","@types/react":"^19.2.14","docx-preview":"^0.3.7","html-janitor":"2.0.4","@angular/core":"20.3.25","@angular/build":"20.3.30","@angular/forms":"20.3.25","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.13.0","@angular/common":"20.3.25","@babel/register":"7.28.6","@commitlint/cli":"20.5.0","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.59.1","@types/react-dom":"^19.2.3","semantic-release":"25.0.3","@angular/compiler":"20.3.25","@tailwindcss/vite":"4.2.4","typescript-eslint":"8.57.0","eslint-plugin-jest":"29.15.2","@vitest/coverage-v8":"4.1.8","eslint-plugin-jsdoc":"62.9.0","fractional-indexing":"^3.2.0","@axe-core/playwright":"4.11.2","@oxc-project/runtime":"0.137.0","@storybook/html-vite":"10.3.5","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","@angular/compiler-cli":"20.3.25","@storybook/addon-a11y":"10.3.5","@vitest/eslint-plugin":"1.6.16","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.0.3","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"^1.1.0","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.3.5","eslint-plugin-storybook":"10.3.5","micromark-extension-gfm":"^3.0.0","@angular/platform-server":"20.3.25","eslint-plugin-playwright":"2.10.2","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"20.3.25","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.0.0-beta.0","@fontsource-variable/inter":"^5.2.8","@vitest/browser-playwright":"4.1.8","@fontsource/permanent-marker":"^5.2.7","@analogjs/vite-plugin-angular":"2.6.1","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.1","@commitlint/config-conventional":"20.5.0","@angular/platform-browser-dynamic":"20.3.25","@fontsource-variable/jetbrains-mono":"^5.2.8","@fontsource-variable/source-serif-4":"^5.2.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.0_1784207768742_0.11034099429342525","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bloklabs/core","version":"1.2.1","keywords":["blok","text editor","rich text editor","block-based editor","notion-like editor","headless editor","extensible editor"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.2.1","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://github.com/JackUait/blok#readme","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"1dcfa4e056b70b802eb8741fc5800997596151d5","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.2.1.tgz","fileCount":1487,"integrity":"sha512-bXWMPVTIXDbzsdhCSnl2CRzx9de8VdOHCDz/z+3VZ7dqtEBqAq8g622kTI+SlfFa8Kc8/qW175Lm06GVYRBnSQ==","signatures":[{"sig":"MEUCIQD+3NcDAN7W1XB9u+kJU6wAvIJhf/Dgui/VGAudN6sXOgIgFRpGLCSa2rodYaCZlPX07xGaB2CZJKdL5rCXyzkMIac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98518165},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.2.1.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"yarn build:test && playwright test","lint":"sh -c 'eslint .; ESLINT_EXIT=$?; tsc --noEmit; TSC_EXIT=$?; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/generate-fonts.mjs && vite build --mode production && vite build --config vite.config.iife.mjs --mode production && vite build --config vite.config.umd.mjs --mode production && node scripts/build-locales.mjs && yarn build:angular && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"yarn build:test && playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"yarn build:test && playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/generate-fonts.mjs && vite build --mode test && vite build --config vite.config.iife.mjs --mode test && vite build --config vite.config.umd.mjs --mode test && node scripts/build-locales.mjs test && node scripts/build-react-vendor.mjs && node scripts/build-vue-vendor.mjs && node scripts/build-angular.mjs && node scripts/build-angular-vendor.mjs && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","e2e:chrome":"yarn build:test && playwright test --project=chromium","e2e:safari":"yarn build:test && playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"yarn build:test && playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"yarn build:test && playwright test --ui --project=chromium","e2e:ui:safari":"yarn build:test && playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"yarn build:test && playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"yarn lint && yarn test","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.2.1.tgz","_integrity":"sha512-bXWMPVTIXDbzsdhCSnl2CRzx9de8VdOHCDz/z+3VZ7dqtEBqAq8g622kTI+SlfFa8Kc8/qW175Lm06GVYRBnSQ==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.57.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.39","yjs":"13.6.30","rxjs":"7.8.1","vite":"8.0.9","yaml":"^2.8.3","husky":"9.1.7","jscpd":"4.0.9","jsdom":"28.1.0","jszip":"^3.10.1","katex":"^0.16.44","react":"^19.2.4","tslib":"2.8.1","eslint":"10.2.1","nanoid":"5.1.9","vitest":"4.1.8","i18next":"26.0.6","mermaid":"^11.15.0","postcss":"8.5.10","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"16.5.0","dompurify":"^3.4.8","react-dom":"^19.2.4","storybook":"10.3.5","@vitest/ui":"4.1.8","ng-packagr":"20.3.2","playwright":"1.59.1","typescript":"5.9.3","webm-muxer":"^5.1.4","@types/node":"25.6.0","tailwindcss":"4.2.4","@types/mdast":"^4.0.4","@types/react":"^19.2.14","docx-preview":"^0.3.7","html-janitor":"2.0.4","@angular/core":"20.3.25","@angular/build":"20.3.30","@angular/forms":"20.3.25","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.13.0","@angular/common":"20.3.25","@babel/register":"7.28.6","@commitlint/cli":"20.5.0","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.59.1","@types/react-dom":"^19.2.3","semantic-release":"25.0.3","@angular/compiler":"20.3.25","@tailwindcss/vite":"4.2.4","typescript-eslint":"8.57.0","eslint-plugin-jest":"29.15.2","@vitest/coverage-v8":"4.1.8","eslint-plugin-jsdoc":"62.9.0","fractional-indexing":"^3.2.0","@axe-core/playwright":"4.11.2","@oxc-project/runtime":"0.137.0","@storybook/html-vite":"10.3.5","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","@angular/compiler-cli":"20.3.25","@storybook/addon-a11y":"10.3.5","@vitest/eslint-plugin":"1.6.16","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.0.3","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"^1.1.0","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.3.5","eslint-plugin-storybook":"10.3.5","micromark-extension-gfm":"^3.0.0","@angular/platform-server":"20.3.25","eslint-plugin-playwright":"2.10.2","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"20.3.25","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.0.0-beta.0","@fontsource-variable/inter":"^5.2.8","@vitest/browser-playwright":"4.1.8","@fontsource/permanent-marker":"^5.2.7","@analogjs/vite-plugin-angular":"2.6.1","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.1","@commitlint/config-conventional":"20.5.0","@angular/platform-browser-dynamic":"20.3.25","@fontsource-variable/jetbrains-mono":"^5.2.8","@fontsource-variable/source-serif-4":"^5.2.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.1_1784221320723_0.31219373717860366","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bloklabs/core","version":"1.2.2","keywords":["blok","text editor","rich text editor","block-based editor","notion-like editor","headless editor","extensible editor"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.2.2","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://github.com/JackUait/blok#readme","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"635161c470364e7fa9faac0644ca0e8ea1305a94","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.2.2.tgz","fileCount":1487,"integrity":"sha512-eGNg6llIUbRtTM4iMZBlOJSrcIT7NXwjQdXHyR2/bSPluGGfRqSj5u/Se/Wwcs6tZCDp+sgS3eqXTb95HVDQCQ==","signatures":[{"sig":"MEYCIQC7cUV3t/TWwQxjAeqlkdSGeICxSo6UIvX20IGiDm3jFgIhAIeB9BPL5GUpGT8AhB7Za1ozA0C9NamurdPcO/D98O0p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98562763},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.2.2.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"yarn build:test && playwright test","lint":"sh -c 'eslint .; ESLINT_EXIT=$?; tsc --noEmit; TSC_EXIT=$?; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"yarn build:test && playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"yarn build:test && playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/generate-fonts.mjs && vite build --mode test && vite build --config vite.config.iife.mjs --mode test && vite build --config vite.config.umd.mjs --mode test && node scripts/build-locales.mjs test && node scripts/build-react-vendor.mjs && node scripts/build-vue-vendor.mjs && node scripts/build-angular.mjs && node scripts/build-angular-vendor.mjs && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","e2e:chrome":"yarn build:test && playwright test --project=chromium","e2e:safari":"yarn build:test && playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"yarn build:test && playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"yarn build:test && playwright test --ui --project=chromium","e2e:ui:safari":"yarn build:test && playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"yarn build:test && playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.2.2.tgz","_integrity":"sha512-eGNg6llIUbRtTM4iMZBlOJSrcIT7NXwjQdXHyR2/bSPluGGfRqSj5u/Se/Wwcs6tZCDp+sgS3eqXTb95HVDQCQ==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.57.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.39","yjs":"13.6.30","rxjs":"7.8.1","vite":"8.0.9","yaml":"^2.8.3","husky":"9.1.7","jscpd":"4.0.9","jsdom":"28.1.0","jszip":"^3.10.1","katex":"^0.16.44","react":"^19.2.4","tslib":"2.8.1","eslint":"10.2.1","nanoid":"5.1.9","vitest":"4.1.8","i18next":"26.0.6","mermaid":"^11.15.0","postcss":"8.5.10","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"16.5.0","dompurify":"^3.4.8","react-dom":"^19.2.4","storybook":"10.3.5","@vitest/ui":"4.1.8","ng-packagr":"20.3.2","playwright":"1.59.1","typescript":"5.9.3","webm-muxer":"^5.1.4","@types/node":"25.6.0","tailwindcss":"4.2.4","@types/mdast":"^4.0.4","@types/react":"^19.2.14","docx-preview":"^0.3.7","html-janitor":"2.0.4","@angular/core":"20.3.25","@angular/build":"20.3.30","@angular/forms":"20.3.25","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.13.0","@angular/common":"20.3.25","@babel/register":"7.28.6","@commitlint/cli":"20.5.0","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.59.1","@types/react-dom":"^19.2.3","semantic-release":"25.0.3","@angular/compiler":"20.3.25","@tailwindcss/vite":"4.2.4","typescript-eslint":"8.57.0","eslint-plugin-jest":"29.15.2","@vitest/coverage-v8":"4.1.8","eslint-plugin-jsdoc":"62.9.0","fractional-indexing":"^3.2.0","@axe-core/playwright":"4.11.2","@oxc-project/runtime":"0.137.0","@storybook/html-vite":"10.3.5","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","@angular/compiler-cli":"20.3.25","@storybook/addon-a11y":"10.3.5","@vitest/eslint-plugin":"1.6.16","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.0.3","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"^1.1.0","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.3.5","eslint-plugin-storybook":"10.3.5","micromark-extension-gfm":"^3.0.0","@angular/platform-server":"20.3.25","eslint-plugin-playwright":"2.10.2","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"20.3.25","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.0.0-beta.0","@fontsource-variable/inter":"^5.2.8","@vitest/browser-playwright":"4.1.8","@fontsource/permanent-marker":"^5.2.7","@analogjs/vite-plugin-angular":"2.6.1","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.1","@commitlint/config-conventional":"20.5.0","@angular/platform-browser-dynamic":"20.3.25","@fontsource-variable/jetbrains-mono":"^5.2.8","@fontsource-variable/source-serif-4":"^5.2.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.2_1784377499242_0.25340108529037053","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"@bloklabs/core","version":"1.2.3","keywords":["blok","text editor","rich text editor","block-based editor","notion-like editor","headless editor","extensible editor"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.2.3","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://github.com/JackUait/blok#readme","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"123ae60ef26588bb49e47750951b4c821a38db81","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.2.3.tgz","fileCount":1488,"integrity":"sha512-sEQiC7/DTq0s3QjxHLi6F8ctiJ4eVd23RvrmRGHjKVD53KPh/auiUcKSW9gV2yynD7QkHAjHQwb9WCuJuEOXAA==","signatures":[{"sig":"MEYCIQCow0H1p+iZafV4gqG1pRhVtNT/3f04FyPP6S+dqXLpCwIhAJde+hBwyaqm9HKQIW9ztXJkfouyK4eCTe8yjHSChqjq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94075802},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.2.3.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"yarn build:test && playwright test","lint":"sh -c 'eslint .; ESLINT_EXIT=$?; tsc --noEmit; TSC_EXIT=$?; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"yarn build:test && playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"yarn build:test && playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/generate-fonts.mjs && vite build --mode test && vite build --config vite.config.iife.mjs --mode test && vite build --config vite.config.umd.mjs --mode test && node scripts/build-locales.mjs test && node scripts/build-react-vendor.mjs && node scripts/build-vue-vendor.mjs && node scripts/build-angular.mjs && node scripts/build-angular-vendor.mjs && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","e2e:chrome":"yarn build:test && playwright test --project=chromium","e2e:safari":"yarn build:test && playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"yarn build:test && playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"yarn build:test && playwright test --ui --project=chromium","e2e:ui:safari":"yarn build:test && playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"yarn build:test && playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.2.3.tgz","_integrity":"sha512-sEQiC7/DTq0s3QjxHLi6F8ctiJ4eVd23RvrmRGHjKVD53KPh/auiUcKSW9gV2yynD7QkHAjHQwb9WCuJuEOXAA==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.57.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.39","yjs":"13.6.30","rxjs":"7.8.1","vite":"8.0.9","yaml":"^2.8.3","husky":"9.1.7","jscpd":"4.0.9","jsdom":"28.1.0","jszip":"^3.10.1","katex":"^0.16.44","react":"^19.2.4","tslib":"2.8.1","eslint":"10.2.1","nanoid":"5.1.9","vitest":"4.1.8","i18next":"26.0.6","mermaid":"^11.15.0","postcss":"8.5.10","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"16.5.0","dompurify":"^3.4.8","react-dom":"^19.2.4","storybook":"10.3.5","@vitest/ui":"4.1.8","ng-packagr":"20.3.2","playwright":"1.59.1","typescript":"5.9.3","webm-muxer":"^5.1.4","@types/node":"25.6.0","tailwindcss":"4.2.4","@types/mdast":"^4.0.4","@types/react":"^19.2.14","docx-preview":"^0.3.7","html-janitor":"2.0.4","@angular/core":"20.3.25","@angular/build":"20.3.30","@angular/forms":"20.3.25","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.13.0","@angular/common":"20.3.25","@babel/register":"7.28.6","@commitlint/cli":"20.5.0","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.59.1","@types/react-dom":"^19.2.3","semantic-release":"25.0.3","@angular/compiler":"20.3.25","@tailwindcss/vite":"4.2.4","typescript-eslint":"8.57.0","eslint-plugin-jest":"29.15.2","@vitest/coverage-v8":"4.1.8","eslint-plugin-jsdoc":"62.9.0","fractional-indexing":"^3.2.0","@axe-core/playwright":"4.11.2","@oxc-project/runtime":"0.137.0","@storybook/html-vite":"10.3.5","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","@angular/compiler-cli":"20.3.25","@storybook/addon-a11y":"10.3.5","@vitest/eslint-plugin":"1.6.16","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.0.3","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"^1.1.0","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.3.5","eslint-plugin-storybook":"10.3.5","micromark-extension-gfm":"^3.0.0","@angular/platform-server":"20.3.25","eslint-plugin-playwright":"2.10.2","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"20.3.25","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.0.0-beta.0","@fontsource-variable/inter":"^5.2.8","@vitest/browser-playwright":"4.1.8","@fontsource/permanent-marker":"^5.2.7","@analogjs/vite-plugin-angular":"2.6.1","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.1","@commitlint/config-conventional":"20.5.0","@angular/platform-browser-dynamic":"20.3.25","@fontsource-variable/jetbrains-mono":"^5.2.8","@fontsource-variable/source-serif-4":"^5.2.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.3_1784391945393_0.6744423257559611","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"@bloklabs/core","version":"1.2.4","keywords":["blok","text editor","rich text editor","block-based editor","notion-like editor","headless editor","extensible editor"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.2.4","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://github.com/JackUait/blok#readme","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"a41303292e266aa2987316bcd17eee5c277172c8","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.2.4.tgz","fileCount":1488,"integrity":"sha512-pqcWIRHCIYG7onwrjuH6zoP5wFQ0KDX9nQEUzwTFw3AzRDy/DhZr8+xW//xyj1d59HklnP3xESPlVcx/zgZSVQ==","signatures":[{"sig":"MEQCIA5fyY8hKI+pCmilIGx64XYk6c6MaEFAXOGZVocUtgQQAiAIKWevLLtsEuC9Ht9O5ROsM2kgoh0itQGHsqQv8aN8Qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":94080676},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.2.4.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"yarn build:test && playwright test","lint":"sh -c 'eslint .; ESLINT_EXIT=$?; tsc --noEmit; TSC_EXIT=$?; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"yarn build:test && playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"yarn build:test && playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/generate-fonts.mjs && vite build --mode test && vite build --config vite.config.iife.mjs --mode test && vite build --config vite.config.umd.mjs --mode test && node scripts/build-locales.mjs test && node scripts/build-react-vendor.mjs && node scripts/build-vue-vendor.mjs && node scripts/build-angular.mjs && node scripts/build-angular-vendor.mjs && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","e2e:chrome":"yarn build:test && playwright test --project=chromium","e2e:safari":"yarn build:test && playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"yarn build:test && playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"yarn build:test && playwright test --ui --project=chromium","e2e:ui:safari":"yarn build:test && playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"yarn build:test && playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.2.4.tgz","_integrity":"sha512-pqcWIRHCIYG7onwrjuH6zoP5wFQ0KDX9nQEUzwTFw3AzRDy/DhZr8+xW//xyj1d59HklnP3xESPlVcx/zgZSVQ==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.57.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.39","yjs":"13.6.30","rxjs":"7.8.1","vite":"8.0.9","yaml":"^2.8.3","husky":"9.1.7","jscpd":"4.0.9","jsdom":"28.1.0","jszip":"^3.10.1","katex":"^0.16.44","react":"^19.2.4","tslib":"2.8.1","eslint":"10.2.1","nanoid":"5.1.9","vitest":"4.1.8","i18next":"26.0.6","mermaid":"^11.15.0","postcss":"8.5.10","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"16.5.0","dompurify":"^3.4.8","react-dom":"^19.2.4","storybook":"10.3.5","@vitest/ui":"4.1.8","ng-packagr":"20.3.2","playwright":"1.59.1","typescript":"5.9.3","webm-muxer":"^5.1.4","@types/node":"25.6.0","tailwindcss":"4.2.4","@types/mdast":"^4.0.4","@types/react":"^19.2.14","docx-preview":"^0.3.7","html-janitor":"2.0.4","@angular/core":"20.3.25","@angular/build":"20.3.30","@angular/forms":"20.3.25","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.13.0","@angular/common":"20.3.25","@babel/register":"7.28.6","@commitlint/cli":"20.5.0","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.59.1","@types/react-dom":"^19.2.3","semantic-release":"25.0.3","@angular/compiler":"20.3.25","@tailwindcss/vite":"4.2.4","typescript-eslint":"8.57.0","eslint-plugin-jest":"29.15.2","@vitest/coverage-v8":"4.1.8","eslint-plugin-jsdoc":"62.9.0","fractional-indexing":"^3.2.0","@axe-core/playwright":"4.11.2","@oxc-project/runtime":"0.137.0","@storybook/html-vite":"10.3.5","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","@angular/compiler-cli":"20.3.25","@storybook/addon-a11y":"10.3.5","@vitest/eslint-plugin":"1.6.16","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.0.3","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"^1.1.0","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.3.5","eslint-plugin-storybook":"10.3.5","micromark-extension-gfm":"^3.0.0","@angular/platform-server":"20.3.25","eslint-plugin-playwright":"2.10.2","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"20.3.25","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.0.0-beta.0","@fontsource-variable/inter":"^5.2.8","@vitest/browser-playwright":"4.1.8","@fontsource/permanent-marker":"^5.2.7","@analogjs/vite-plugin-angular":"2.6.1","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.1","@commitlint/config-conventional":"20.5.0","@angular/platform-browser-dynamic":"20.3.25","@fontsource-variable/jetbrains-mono":"^5.2.8","@fontsource-variable/source-serif-4":"^5.2.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.4_1784403368955_0.44164842170556096","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@bloklabs/core","version":"1.2.5","keywords":["blok","text editor","rich text editor","block-based editor","notion-like editor","headless editor","extensible editor"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.2.5","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://github.com/JackUait/blok#readme","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"d82a1734086b4cf6c509a57d0e94d8c56dea60d5","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.2.5.tgz","fileCount":1502,"integrity":"sha512-pNY5F0gwKW8FDJnlU9vIvGqE+MHD2XABlppaLAWdh8YizWDaAucSU9otKNDZYNU2dbTCPzkcL9opwk1Iik+tyA==","signatures":[{"sig":"MEYCIQCInzs0bah8wwbM5VkfC1D+35N7EuEsZ77v7obkAgS2fQIhAIOP2O5VrtRqCjU+tgGNINJwBZjcUucQm6vcUB9dWlNf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95346951},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.2.5.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"yarn build:test && playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"yarn build:test && playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"yarn build:test && playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/generate-fonts.mjs && vite build --mode test && vite build --config vite.config.iife.mjs --mode test && vite build --config vite.config.umd.mjs --mode test && node scripts/build-locales.mjs test && node scripts/build-react-vendor.mjs && node scripts/build-vue-vendor.mjs && node scripts/build-angular.mjs && node scripts/build-angular-vendor.mjs && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","e2e:chrome":"yarn build:test && playwright test --project=chromium","e2e:safari":"yarn build:test && playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"yarn build:test && playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"yarn build:test && playwright test --ui --project=chromium","e2e:ui:safari":"yarn build:test && playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"yarn build:test && playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.2.5.tgz","_integrity":"sha512-pNY5F0gwKW8FDJnlU9vIvGqE+MHD2XABlppaLAWdh8YizWDaAucSU9otKNDZYNU2dbTCPzkcL9opwk1Iik+tyA==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.57.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.39","yjs":"13.6.30","rxjs":"7.8.1","vite":"8.0.9","yaml":"^2.8.3","husky":"9.1.7","jscpd":"4.0.9","jsdom":"28.1.0","jszip":"^3.10.1","katex":"^0.16.44","react":"^19.2.4","tslib":"2.8.1","eslint":"10.2.1","nanoid":"5.1.9","vitest":"4.1.8","i18next":"26.0.6","mermaid":"^11.15.0","postcss":"8.5.10","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"16.5.0","dompurify":"^3.4.8","react-dom":"^19.2.4","storybook":"10.3.5","@vitest/ui":"4.1.8","ng-packagr":"20.3.2","playwright":"1.59.1","typescript":"5.9.3","webm-muxer":"^5.1.4","@types/node":"25.6.0","tailwindcss":"4.2.4","@types/mdast":"^4.0.4","@types/react":"^19.2.14","docx-preview":"^0.3.7","html-janitor":"2.0.4","@angular/core":"20.3.25","@angular/build":"20.3.30","@angular/forms":"20.3.25","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.13.0","@angular/common":"20.3.25","@babel/register":"7.28.6","@commitlint/cli":"20.5.0","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.59.1","@types/react-dom":"^19.2.3","semantic-release":"25.0.3","@angular/compiler":"20.3.25","@tailwindcss/vite":"4.2.4","typescript-eslint":"8.57.0","eslint-plugin-jest":"29.15.2","@vitest/coverage-v8":"4.1.8","eslint-plugin-jsdoc":"62.9.0","fractional-indexing":"^3.2.0","@axe-core/playwright":"4.11.2","@oxc-project/runtime":"0.137.0","@storybook/html-vite":"10.3.5","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","@angular/compiler-cli":"20.3.25","@storybook/addon-a11y":"10.3.5","@vitest/eslint-plugin":"1.6.16","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.0.3","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"^1.1.0","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.3.5","eslint-plugin-storybook":"10.3.5","micromark-extension-gfm":"^3.0.0","@angular/platform-server":"20.3.25","eslint-plugin-playwright":"2.10.2","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"20.3.25","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.0.0-beta.0","@fontsource-variable/inter":"^5.2.8","@vitest/browser-playwright":"4.1.8","@fontsource/permanent-marker":"^5.2.7","@analogjs/vite-plugin-angular":"2.6.1","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.1","@commitlint/config-conventional":"20.5.0","@angular/platform-browser-dynamic":"20.3.25","@fontsource-variable/jetbrains-mono":"^5.2.8","@fontsource-variable/source-serif-4":"^5.2.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.5_1784519352047_0.8364112644588955","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@bloklabs/core","version":"1.2.6","keywords":["blok","text editor","rich text editor","block-based editor","notion-like editor","headless editor","extensible editor"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.2.6","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://github.com/JackUait/blok#readme","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"c3547039049fac19375bf28b6b35a92775b825ee","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.2.6.tgz","fileCount":1505,"integrity":"sha512-pg9msdrp67l+SmnWI/gAq+MHxHeKFSWnAcQP5lL7noghELjIQVxQKTB2mStIRBKNlxzY98eTRTgfnC+arVqFaQ==","signatures":[{"sig":"MEUCIQCulKgFhKKzcN203xgruwqlKVsO2rJCi0wObgjtdkJ3CAIgWZ0Qc6RdrM+TseIa4P8RoJ5Ci5NfDHFNcs7TPT33uNQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":95427624},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.2.6.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"yarn build:test && playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"yarn build:test && playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"yarn build:test && playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/generate-fonts.mjs && vite build --mode test && vite build --config vite.config.iife.mjs --mode test && vite build --config vite.config.umd.mjs --mode test && node scripts/build-locales.mjs test && node scripts/build-react-vendor.mjs && node scripts/build-vue-vendor.mjs && node scripts/build-angular.mjs && node scripts/build-angular-vendor.mjs && yarn workspace @bloklabs/react build && yarn workspace @bloklabs/vue build","e2e:chrome":"yarn build:test && playwright test --project=chromium","e2e:safari":"yarn build:test && playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"yarn build:test && playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"yarn build:test && playwright test --ui --project=chromium","e2e:ui:safari":"yarn build:test && playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"yarn build:test && playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.2.6.tgz","_integrity":"sha512-pg9msdrp67l+SmnWI/gAq+MHxHeKFSWnAcQP5lL7noghELjIQVxQKTB2mStIRBKNlxzY98eTRTgfnC+arVqFaQ==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.57.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.39","yjs":"13.6.30","rxjs":"7.8.1","vite":"8.0.9","yaml":"^2.8.3","husky":"9.1.7","jscpd":"4.0.9","jsdom":"28.1.0","jszip":"^3.10.1","katex":"^0.16.44","react":"^19.2.4","tslib":"2.8.1","eslint":"10.2.1","nanoid":"5.1.9","vitest":"4.1.8","i18next":"26.0.6","mermaid":"^11.15.0","postcss":"8.5.10","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"16.5.0","dompurify":"^3.4.8","react-dom":"^19.2.4","storybook":"10.3.5","@vitest/ui":"4.1.8","ng-packagr":"20.3.2","playwright":"1.59.1","typescript":"5.9.3","webm-muxer":"^5.1.4","@types/node":"25.6.0","tailwindcss":"4.2.4","@types/mdast":"^4.0.4","@types/react":"^19.2.14","docx-preview":"^0.3.7","html-janitor":"2.0.4","@angular/core":"20.3.25","@angular/build":"20.3.30","@angular/forms":"20.3.25","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.13.0","@angular/common":"20.3.25","@babel/register":"7.28.6","@commitlint/cli":"20.5.0","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.59.1","@types/react-dom":"^19.2.3","semantic-release":"25.0.3","@angular/compiler":"20.3.25","@tailwindcss/vite":"4.2.4","typescript-eslint":"8.57.0","eslint-plugin-jest":"29.15.2","@vitest/coverage-v8":"4.1.8","eslint-plugin-jsdoc":"62.9.0","fractional-indexing":"^3.2.0","@axe-core/playwright":"4.11.2","@oxc-project/runtime":"0.137.0","@storybook/html-vite":"10.3.5","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","@angular/compiler-cli":"20.3.25","@storybook/addon-a11y":"10.3.5","@vitest/eslint-plugin":"1.6.16","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.0.3","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"^1.1.0","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.3.5","eslint-plugin-storybook":"10.3.5","micromark-extension-gfm":"^3.0.0","@angular/platform-server":"20.3.25","eslint-plugin-playwright":"2.10.2","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"20.3.25","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.0.0-beta.0","@fontsource-variable/inter":"^5.2.8","@vitest/browser-playwright":"4.1.8","@fontsource/permanent-marker":"^5.2.7","@analogjs/vite-plugin-angular":"2.6.1","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.1","@commitlint/config-conventional":"20.5.0","@angular/platform-browser-dynamic":"20.3.25","@fontsource-variable/jetbrains-mono":"^5.2.8","@fontsource-variable/source-serif-4":"^5.2.9"},"_npmOperationalInternal":{"tmp":"tmp/core_1.2.6_1784551156273_0.00019496410829855648","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bloklabs/core","version":"1.3.0","keywords":["blok","text editor","rich text editor","block-based editor","notion-like editor","headless editor","extensible editor"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.3.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://github.com/JackUait/blok#readme","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"12ea4f2b3e0bcf4de1e1cf3f5afc642a9029921f","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.3.0.tgz","fileCount":1558,"integrity":"sha512-s4p009DpRrZU2h20rJRjVyUH3OkxOjEbP8N4zYtYYu7FvC3NtQusxChIOo58v6sxA5FHlqKqqbZWgvnL3Cyg1w==","signatures":[{"sig":"MEYCIQDAotyaS/5R7Do6afAidNBEvsBJBHuWRnHo4jDCJJGSxgIhAO6w1SZ1AYw8BxKAt4/YsZqLItE+5wvjnN6wXyXJp9p2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97752107},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.3.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.3.0.tgz","_integrity":"sha512-s4p009DpRrZU2h20rJRjVyUH3OkxOjEbP8N4zYtYYu7FvC3NtQusxChIOo58v6sxA5FHlqKqqbZWgvnL3Cyg1w==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.7","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.3.0_1784651473978_0.21915645137782636","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bloklabs/core","version":"1.4.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.4.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"bdfaa645704b7639d87673362490f8751105a52d","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.4.0.tgz","fileCount":1582,"integrity":"sha512-nnFRdZpYeMvWs8KwNE6SkmMhaiUYj7vQu1w55+40DOlogx59OP67NPuCn/IkImHonkR3BxGal/b3MYTsm5Oivw==","signatures":[{"sig":"MEQCIA8qhlf0cLsWOaTqmF8z8tDoLKmSowVBmnZdxs8nFJIMAiAkhrS1eVlfQRuYWqvkAtQAhnsoGjv7y2ydfbVEVJLyFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98280753},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.4.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.4.0.tgz","_integrity":"sha512-nnFRdZpYeMvWs8KwNE6SkmMhaiUYj7vQu1w55+40DOlogx59OP67NPuCn/IkImHonkR3BxGal/b3MYTsm5Oivw==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.7","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.0_1784768396959_0.38809695980332437","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@bloklabs/core","version":"1.4.1","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.4.1","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"f0ffdb65a233370038d298f92536bcda4707baeb","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.4.1.tgz","fileCount":1585,"integrity":"sha512-Tjhdd9j6RNCTu+YkxAKJb45aSOnpJlp1dgUTNDtPJVUBy8d5uvZrHEq4HjkZjjq/rqrcvhs0nEKqXhHxdhen+A==","signatures":[{"sig":"MEYCIQCG5X97pU4v09fefKu1iykitt4bt+vgU34lOEw6CTM4JAIhAMcopoag21El7ukin2hYxUzRfnoDwy2bTV9jHgbnV09L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98638379},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.4.1.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.4.1.tgz","_integrity":"sha512-Tjhdd9j6RNCTu+YkxAKJb45aSOnpJlp1dgUTNDtPJVUBy8d5uvZrHEq4HjkZjjq/rqrcvhs0nEKqXhHxdhen+A==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.7","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.1_1784813459668_0.5713066038657015","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@bloklabs/core","version":"1.4.2","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.4.2","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"bc5c6ca818b9d75b1567e2e6f56795355e5b6bed","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.4.2.tgz","fileCount":1585,"integrity":"sha512-w4/nIAzlgQ3YXrUgGRx+bUfb5vnSHqU14jBk8G09bkm0wNRm5zHJt9/lxo0wp/mnZEtXveoVml71HaJ3xNk0hg==","signatures":[{"sig":"MEUCIQCu/HNJEFIHzzwIAeN9Duuc7NPqu/hvVuvnzdG3WRlJlAIgf8FdK5XYHWem3OMUhHIok1jbZqDR0OPGjCS4rTV0STc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98638446},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.4.2.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"}},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.4.2.tgz","_integrity":"sha512-w4/nIAzlgQ3YXrUgGRx+bUfb5vnSHqU14jBk8G09bkm0wNRm5zHJt9/lxo0wp/mnZEtXveoVml71HaJ3xNk0hg==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.7","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.2_1784821289913_0.6224614938581161","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@bloklabs/core","version":"1.4.3","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.4.3","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"6940b671ea47f527a6deb139a0e1300c73fb7091","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.4.3.tgz","fileCount":1603,"integrity":"sha512-CkLHftI/c8ShKuZim1FCmSyduaNSXGiCWjPLAMvp4HG+iKl502darCcanUrl/6WLUlUzUW6KH3sI/fdEB9p2eg==","signatures":[{"sig":"MEUCIQDqrsa2JFUIZGSqlc3A4mDeyvcY1UD19FPv8NXgG+1SugIgWq15+JrS9R4FBnHfL+CuHX4PpinovMYDrO5m/7sjI6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98746410},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.4.3.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.4.3.tgz","_integrity":"sha512-CkLHftI/c8ShKuZim1FCmSyduaNSXGiCWjPLAMvp4HG+iKl502darCcanUrl/6WLUlUzUW6KH3sI/fdEB9p2eg==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.7","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.3_1784887928697_0.9902150705539683","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"@bloklabs/core","version":"1.4.4","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.4.4","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"3b332b6b75d39c68c6dc311edd3fef6c56d79a09","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.4.4.tgz","fileCount":1604,"integrity":"sha512-D3sfRozWEiuVProiWVAtE2LtrW+q3cN5fYkkfCFaQ5BC3G0VM381x2ta3UmnOfUDnGJfmaqeRHwt4Yj9Yf+F1A==","signatures":[{"sig":"MEUCIDOUbMOvmGQRDNDvIhJz36K2tKGZsPAify3PAspYjlQhAiEAgxxBt32hJG22dj5mk/kYYYFkro1jHCxQnQNCpSJhuy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98756725},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.4.4.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.4.4.tgz","_integrity":"sha512-D3sfRozWEiuVProiWVAtE2LtrW+q3cN5fYkkfCFaQ5BC3G0VM381x2ta3UmnOfUDnGJfmaqeRHwt4Yj9Yf+F1A==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.7","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.4_1784930121299_0.8017176101475669","host":"s3://npm-registry-packages-npm-production"}},"1.4.5":{"name":"@bloklabs/core","version":"1.4.5","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.4.5","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"eb0285d90571c28868c4836c9ad8e3ce0a1e5445","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.4.5.tgz","fileCount":1604,"integrity":"sha512-yeGnXiUXYViVW/f421DD+gt5BRcGDuAMbV115+CIewYc8isOauojqCNUTyNIzfyeTiXRbO+RCC0XUMQymRdZxw==","signatures":[{"sig":"MEMCHwhzB+epdZWQQ2aBQIFugWXWX1cNm13M5BIAh6DVFeQCIG8UW4DEoCUIKGZveRjZeYAiX8XQFwYK0LjLA114zddU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98786076},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.4.5.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.4.5.tgz","_integrity":"sha512-yeGnXiUXYViVW/f421DD+gt5BRcGDuAMbV115+CIewYc8isOauojqCNUTyNIzfyeTiXRbO+RCC0XUMQymRdZxw==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.7","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.4.5_1784935787730_0.8517324831214403","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@bloklabs/core","version":"1.5.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.5.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"60d0596f619d30337756cd72770733688daf5e0a","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.5.0.tgz","fileCount":1620,"integrity":"sha512-AJow7afd32EE43hK7eGAxX3kxZV7Zo3JclelTeBdYjJsiVeQGEodIMFfDjualvN/UZpEiNWOrTTaiRqsnsM3FA==","signatures":[{"sig":"MEYCIQCuHIJMeW6I1KVu7ymztpe431kIma/bkEuLlb9/7i4ULwIhAMHoSMBa4TM2edjnRR5KA72NMpCqzew+mVsuIzyu9SoL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98973694},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.5.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.5.0.tgz","_integrity":"sha512-AJow7afd32EE43hK7eGAxX3kxZV7Zo3JclelTeBdYjJsiVeQGEodIMFfDjualvN/UZpEiNWOrTTaiRqsnsM3FA==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.5.0_1785174102120_0.7884131470745681","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bloklabs/core","version":"1.6.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.6.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"81dc08e7e1fb5d7cc5b02d653499d8cc22e3e2ca","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.6.0.tgz","fileCount":1622,"integrity":"sha512-mijRivFcEvfuHafZatydfl0/M9E2OkZUGgLRgYJ1TE+RLAXLe10wuABxdWIXTbGlW1ejKyWbm+aOuqeOcGA/iw==","signatures":[{"sig":"MEYCIQC+CV13tbDXFELhNsqvk7lPaLj7xIXZLHGEkK6NKADm0wIhAJPu9k4IazPBPkIbds2S9jxWf5PQJiSJjSR0u8xg+ynI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99108312},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.6.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.6.0.tgz","_integrity":"sha512-mijRivFcEvfuHafZatydfl0/M9E2OkZUGgLRgYJ1TE+RLAXLe10wuABxdWIXTbGlW1ejKyWbm+aOuqeOcGA/iw==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.6.0_1785572600020_0.057356574242019676","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@bloklabs/core","version":"1.6.1","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.6.1","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"6a8e2c5f13d5a990e9d477a822dc1dad76d49e7d","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.6.1.tgz","fileCount":1622,"integrity":"sha512-/xtYU4hsgYduUe1jPfyhBk+VsAYraeDtlrCEVnNQeXYym3HotdI1Dn21fLjrYgdM8fQ6N+n5vzGd1pL6mzfKLg==","signatures":[{"sig":"MEUCICDO8Kh6avfKjfaxI284YCOR89BXV3jB5XBYDOX1GS1iAiEAgHu80fu8hvgK/uFlg91JQrbqtDslHczLJuwfJt84zW8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99109734},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.6.1.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.6.1.tgz","_integrity":"sha512-/xtYU4hsgYduUe1jPfyhBk+VsAYraeDtlrCEVnNQeXYym3HotdI1Dn21fLjrYgdM8fQ6N+n5vzGd1pL6mzfKLg==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.6.1_1785621092604_0.35381061118830437","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"@bloklabs/core","version":"1.6.2","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.6.2","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"6c1d36cdcf0510aa221c82d8c945bdabe903721a","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.6.2.tgz","fileCount":1622,"integrity":"sha512-Xnms0XtOOaDhHpdTy0mveJpZ96HcYYKmt3+AqlAjYDgq3R6dLZi/N4R30AqIE9mWWqrpVRrjW1YglrRR9j+0ig==","signatures":[{"sig":"MEUCIQCiqZY88JTjXBNpleGbsBZWgHQa0F5q2+zLxcCQn5ysOAIgbzHzwCGONZPHambbuYXkhTXxxFeOkii99lpaKRt+HWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99113609},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.6.2.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.6.2.tgz","_integrity":"sha512-Xnms0XtOOaDhHpdTy0mveJpZ96HcYYKmt3+AqlAjYDgq3R6dLZi/N4R30AqIE9mWWqrpVRrjW1YglrRR9j+0ig==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.6.2_1785661156874_0.22729415376889128","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@bloklabs/core","version":"1.7.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.7.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"7bbf92677c95be0edc2d93dbf00cae12b46bea33","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.7.0.tgz","fileCount":1623,"integrity":"sha512-uv30M60vdii5S3BNqTD73w8bva+RV7WMfVda3T+TB4D9MIPNkf5Lo9Z4R/AJHITe5yM6tWxw+4H+iimewkrHcw==","signatures":[{"sig":"MEYCIQCTozHIKIr7XPdP3q8wAmKFqZ3wLY6OFjsoRnOm0iA1QgIhAOpE4hKQxXbXSEZf3FmsUzEtpZA7ntDXn+hiumI8f9CL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99137311},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.7.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.7.0.tgz","_integrity":"sha512-uv30M60vdii5S3BNqTD73w8bva+RV7WMfVda3T+TB4D9MIPNkf5Lo9Z4R/AJHITe5yM6tWxw+4H+iimewkrHcw==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.7.0_1785866213709_0.2612182074303311","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@bloklabs/core","version":"1.8.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.8.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"40e10874a7b33f08720ee2fc2bcf03ebcb72e902","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.8.0.tgz","fileCount":1628,"integrity":"sha512-si6LTUNSNAkk3ZsPdgoOgVW9oclMPVEqe8KjSca8QvrZm1bfZCxQwEitQPzKQ4KAEh9mIF+vU7fmNJdiElFpbw==","signatures":[{"sig":"MEUCIQCGekDhlxz9ZSBtWG28pHoMAbHg9QaNfi0Rdu2NdSP/VgIgMxqzrkthYmW9UiKYYtC9sMIV1Wji2t3YIqxRkh7DJV0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99470223},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.8.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.8.0.tgz","_integrity":"sha512-si6LTUNSNAkk3ZsPdgoOgVW9oclMPVEqe8KjSca8QvrZm1bfZCxQwEitQPzKQ4KAEh9mIF+vU7fmNJdiElFpbw==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.20","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.8.0_1785976004654_0.7324513908446477","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@bloklabs/core","version":"1.9.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.9.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"fb8833b80f14a0a08db8863aec31e60ef63f8fc7","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.9.0.tgz","fileCount":1631,"integrity":"sha512-je0beND7j4YD2wHR48a8I12LXr6qji2wiocigeCi9UQYnUMLudQ8cHTJxjWsCfMI6iju35WvBaHKveYPmAp/ow==","signatures":[{"sig":"MEUCIQCfcQQUXe1mbMD9q6lhl3CqMbczdLzCuhuyMI8SwnqI+gIgPefArEls2NijFDzxWrnDXIkd9bgpJmxULKyWJstGmDE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99540786},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.9.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.9.0.tgz","_integrity":"sha512-je0beND7j4YD2wHR48a8I12LXr6qji2wiocigeCi9UQYnUMLudQ8cHTJxjWsCfMI6iju35WvBaHKveYPmAp/ow==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.23","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.9.0_1786032904330_0.32690339982519423","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"@bloklabs/core","version":"1.10.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.10.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"333ff4d9b807070e2b74f9544b21704809b22c79","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.10.0.tgz","fileCount":1633,"integrity":"sha512-QO3U4Na1WY6u2iPBb8eJiYGhawQCcX0ZqLql1yo6+0BjZ7zPvvbhKnbPSXjm9b97r0fIW+YzBxegwdrBadSbug==","signatures":[{"sig":"MEQCIGSd0bWpWB1yKFMFXJANiYic1uPpRfwbNCQXPSW15ptRAiArdJVZzWMxhA5hXivlDwhlDR+53hDYJAgq1IzpIHvc7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99564763},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.10.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.10.0.tgz","_integrity":"sha512-QO3U4Na1WY6u2iPBb8eJiYGhawQCcX0ZqLql1yo6+0BjZ7zPvvbhKnbPSXjm9b97r0fIW+YzBxegwdrBadSbug==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.23","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.10.0_1786096034255_0.6752862760492584","host":"s3://npm-registry-packages-npm-production"}},"1.10.1":{"name":"@bloklabs/core","version":"1.10.1","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.10.1","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"cc49fb778dd265b62e133475a3fe3c34ff7e5a45","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.10.1.tgz","fileCount":1634,"integrity":"sha512-f9Avx7V2QHxm/cRR+VeNl+dP8SYaUD6mWn5Ebz0bosIz+3ca0wFfn7KxiwlRwLkqDO5mF0MDFHctKYGrp5/aCA==","signatures":[{"sig":"MEYCIQDZd1D2wAPOd6Crtq4jdI/iXeQe2rDzBg19rfkTb9b3MQIhAN0f4fDeH/Ao+WWek8o1JvCNeDR1UAVsZPdDs23w4cpL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99627444},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.10.1.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.10.1.tgz","_integrity":"sha512-f9Avx7V2QHxm/cRR+VeNl+dP8SYaUD6mWn5Ebz0bosIz+3ca0wFfn7KxiwlRwLkqDO5mF0MDFHctKYGrp5/aCA==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.23","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.10.1_1787179965985_0.6989581648210552","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"@bloklabs/core","version":"1.11.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.11.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"4fe5b17913435a3c6ef9a7b04321050fdbcf024c","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.11.0.tgz","fileCount":1656,"integrity":"sha512-yPmsKQKXwarMDacifxoxULWgZVrpi9KsOx9vZe8ulmipTZrd5jz8R7ElLb0243f4cQSLtkeQdJlRC66wl1I2pQ==","signatures":[{"sig":"MEQCIFzTu2vYQkarQopyhtmBzwqH9P1PF8orMmtIoXjMrdk6AiBQiKb/xW4APQ878rhG8pHEQjYiS+a46iKTuukI8MhnWg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99857599},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.11.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./dist/*":"./dist/*","./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","override:sync":"node scripts/override/sync.mjs","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.11.0.tgz","_integrity":"sha512-yPmsKQKXwarMDacifxoxULWgZVrpi9KsOx9vZe8ulmipTZrd5jz8R7ElLb0243f4cQSLtkeQdJlRC66wl1I2pQ==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.23","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","es-module-lexer":"^1.5.4","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.11.0_1787607105278_0.38149640302180066","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"@bloklabs/core","version":"1.12.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.12.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"1007555e6da0cd4f08021f19bb26700b22402acc","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.12.0.tgz","fileCount":1658,"integrity":"sha512-N4DS7kVvxUlwPGnuQ8tNQtAL9/rvoxAy4SNV3PnvF4PhqXGrksOAvbqhyP7C99FUkLeJySAjVNprCNGoKqrm+Q==","signatures":[{"sig":"MEUCIFUb6BAfQjNK84I+0glIxyM41PFgQTf2dV86d7bRHzMUAiEAoSulw3HI8HfdZmPZn6hbcTJgrrH4T6Kywz/0pZ/b1EE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99881279},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.12.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./dist/*":"./dist/*","./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"vite --no-open","e2e:ui":"playwright test --ui","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","override:sync":"node scripts/override/sync.mjs","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.12.0.tgz","_integrity":"sha512-N4DS7kVvxUlwPGnuQ8tNQtAL9/rvoxAy4SNV3PnvF4PhqXGrksOAvbqhyP7C99FUkLeJySAjVNprCNGoKqrm+Q==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.64.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.31","glob":"13.0.0","rxjs":"7.8.2","vite":"8.1.5","yaml":"^2.9.0","husky":"9.1.7","jscpd":"4.0.9","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.1","react":"^19.2.7","tslib":"2.8.1","eslint":"10.7.0","nanoid":"6.0.0","parse5":"^8.0.0","rollup":"4.62.2","vitest":"4.1.10","esbuild":"0.28.1","i18next":"26.3.6","mermaid":"11.16.0","postcss":"8.5.23","prismjs":"^1.30.0","zone.js":"0.15.1","chromatic":"18.0.1","dompurify":"^3.4.12","react-dom":"^19.2.7","storybook":"10.5.2","@vitest/ui":"4.1.10","ng-packagr":"22.0.1","playwright":"1.61.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.1.1","tailwindcss":"4.3.3","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.0.7","@angular/build":"22.0.8","@angular/forms":"22.0.7","@types/prismjs":"^1.26.6","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.0.7","@commitlint/cli":"21.2.1","@vue/test-utils":"^2.4.11","es-module-lexer":"^1.5.4","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.61.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.0.7","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.4.1","typescript-eslint":"8.64.0","eslint-plugin-jest":"29.15.4","@vitest/coverage-v8":"4.1.10","eslint-plugin-jsdoc":"63.2.0","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.12.1","@oxc-project/runtime":"0.140.0","@storybook/html-vite":"10.5.2","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.0.7","@storybook/addon-a11y":"10.5.2","@vitest/eslint-plugin":"1.6.23","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.2","eslint-plugin-storybook":"10.5.2","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.1","@angular/platform-server":"22.0.7","eslint-plugin-playwright":"2.10.5","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.0.7","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.2.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.10","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.6.3","eslint-plugin-testing-library":"^7.16.2","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.12.0_1787734196941_0.25665269564356086","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"@bloklabs/core","version":"1.13.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.13.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"246ff578b2e64c37333a433a824ceec0776d29f8","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.13.0.tgz","fileCount":1627,"integrity":"sha512-Y/7dlBMU9S9TSSomCWGPUeTStVReJrG+4JMPR2YsIiGFyU7NQXzYkt/rRi1PGEtJaMX5aP+rPOZXKKYJHqyOBA==","signatures":[{"sig":"MEUCIQDzZYou09D9GmQvlx94+fqLEfkVC9hxBP/9/qIE3SsxMgIgCC2HtrySViir81AJBB5JYhMqmcrMuwgwwT52I348iw0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":101179477},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.13.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./dist/*":"./dist/*","./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"node scripts/dev.mjs","e2e:ui":"playwright test --ui","mutate":"node scripts/mutation-scope.mjs run","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","mutate:plan":"node scripts/mutation-scope.mjs plan","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","override:sync":"node scripts/override/sync.mjs","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.13.0.tgz","_integrity":"sha512-Y/7dlBMU9S9TSSomCWGPUeTStVReJrG+4JMPR2YsIiGFyU7NQXzYkt/rRi1PGEtJaMX5aP+rPOZXKKYJHqyOBA==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.68.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.32","glob":"13.0.6","lib0":"0.2.117","rxjs":"7.8.2","vite":"8.2.2","yaml":"^2.9.0","husky":"9.1.7","jscpd":"5.0.16","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.4","react":"^19.2.7","tslib":"2.8.1","eslint":"10.9.1","nanoid":"6.0.1","parse5":"^8.0.0","rollup":"4.63.1","vitest":"4.1.11","esbuild":"0.28.2","i18next":"26.4.0","mermaid":"11.17.2","postcss":"8.5.26","prismjs":"^1.30.0","zone.js":"0.16.2","chromatic":"18.6.1","dompurify":"^3.4.13","react-dom":"^19.2.7","storybook":"10.5.10","@vitest/ui":"4.1.11","ng-packagr":"22.1.1","playwright":"1.62.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.4.0","tailwindcss":"4.3.3","y-protocols":"1.0.7","y-websocket":"3.1.0","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.1.4","@angular/build":"22.1.6","@angular/forms":"22.1.4","@types/prismjs":"^1.26.6","fake-indexeddb":"6.2.5","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.1.4","@commitlint/cli":"21.2.2","@vue/test-utils":"^2.4.11","es-module-lexer":"^2.3.2","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.62.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.1.4","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.5.1","typescript-eslint":"8.68.0","eslint-plugin-jest":"29.16.5","@vitest/coverage-v8":"4.1.11","eslint-plugin-jsdoc":"64.2.1","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.13.0","@oxc-project/runtime":"0.147.0","@storybook/html-vite":"10.5.10","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.1.4","@storybook/addon-a11y":"10.5.10","@stryker-mutator/core":"10.0.0","@vitest/eslint-plugin":"1.6.27","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.5.10","eslint-plugin-storybook":"10.5.10","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.5","@angular/platform-server":"22.1.4","eslint-plugin-playwright":"2.11.0","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.1.4","@testing-library/jest-dom":"^7.0.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.4.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.11","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.7.1","eslint-plugin-testing-library":"^7.16.2","@stryker-mutator/vitest-runner":"10.0.0","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.2","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.13.0_1788467439652_0.6673696634258313","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"@bloklabs/core","version":"1.14.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.14.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"2c79d9be9ef9697e2520255a9cbd44d607fc909e","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.14.0.tgz","fileCount":1637,"integrity":"sha512-3m5XwGLgIj81OUnyNoNlCxytfxtpOfingCpIJ4/xpEViStK50SA+gdzO7p6gvkI9x+DbrxxghIKtLgVsKJO1ig==","signatures":[{"sig":"MEYCIQCSUgtu+0A+wWZMIFY3X6ASkbSDLStECRO152TFawylnwIhALvNtf2+QiP05iwYfdbsxo1r1ClL09YBDlvHLBcc+yk6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116255490},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.14.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./dist/*":"./dist/*","./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css"},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"node scripts/dev.mjs","e2e:ui":"playwright test --ui","mutate":"node scripts/mutation-scope.mjs run","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","mutate:plan":"node scripts/mutation-scope.mjs plan","mutate:seed":"node scripts/mutation-scope.mjs seed","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","override:sync":"node scripts/override/sync.mjs","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.14.0.tgz","_integrity":"sha512-3m5XwGLgIj81OUnyNoNlCxytfxtpOfingCpIJ4/xpEViStK50SA+gdzO7p6gvkI9x+DbrxxghIKtLgVsKJO1ig==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.68.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.32","glob":"13.0.6","lib0":"0.2.117","rxjs":"7.8.2","vite":"8.2.2","yaml":"^2.9.0","husky":"9.1.7","jscpd":"5.1.2","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.5","react":"^19.2.7","serve":"14.2.6","tslib":"2.8.1","eslint":"10.10.0","nanoid":"6.0.1","parse5":"^8.0.0","rollup":"4.63.1","vitest":"4.1.11","esbuild":"0.28.2","i18next":"26.4.2","mermaid":"11.17.2","postcss":"8.5.28","prismjs":"^1.30.0","zone.js":"0.16.3","chromatic":"18.7.2","dompurify":"^3.4.13","react-dom":"^19.2.7","storybook":"10.6.0","@vitest/ui":"4.1.11","ng-packagr":"22.1.1","playwright":"1.62.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.4.1","tailwindcss":"4.3.3","y-protocols":"1.0.7","y-websocket":"3.1.0","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.1.5","@angular/build":"22.1.7","@angular/forms":"22.1.5","@types/prismjs":"^1.26.6","fake-indexeddb":"6.2.5","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.1.5","@commitlint/cli":"21.2.2","@vue/test-utils":"^2.4.11","es-module-lexer":"^2.3.2","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.62.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.1.5","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.5.1","typescript-eslint":"8.68.0","eslint-plugin-jest":"29.16.6","@vitest/coverage-v8":"4.1.11","eslint-plugin-jsdoc":"64.3.5","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.13.0","@oxc-project/runtime":"0.148.0","@storybook/html-vite":"10.6.0","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.1.5","@storybook/addon-a11y":"10.6.0","@stryker-mutator/core":"10.0.0","@vitest/eslint-plugin":"1.6.27","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.6.0","eslint-plugin-storybook":"10.6.0","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.6","@angular/platform-server":"22.1.5","eslint-plugin-playwright":"2.11.0","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.1.5","@testing-library/jest-dom":"^7.0.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.4.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.11","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.7.1","eslint-plugin-testing-library":"^7.16.2","@stryker-mutator/vitest-runner":"10.0.0","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.2","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.14.0_1789513936266_0.36194694447328746","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"@bloklabs/core","version":"1.15.0","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.15.0","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"581ea4be21ab202beb51eafa68e11513cd6a584a","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.15.0.tgz","fileCount":1648,"integrity":"sha512-0rsuCky80zcBZSpjrqptFBNubWDIKo+hpng+95S/1u2s+V7xuPTF+Tji18LVSQf40ff6IcMSbLJAUFdj1rVUog==","signatures":[{"sig":"MEUCIHftHIuS0UZxVuh0KIyoRX0Nf/yDUNlkfoZaWlAqYg4CAiEA8lQV2DF/Zkp62sTFS/vpzq0sHMupt0wlRSyCr4lfekI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116337515},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.15.0.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./dist/*":"./dist/*","./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css","./preprocess":{"types":"./types/preprocess.d.ts","import":"./dist/preprocess.mjs","require":"./dist/preprocess.cjs"}},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"node scripts/dev.mjs","e2e:ui":"playwright test --ui","mutate":"node scripts/mutation-scope.mjs run","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","mutate:plan":"node scripts/mutation-scope.mjs plan","mutate:seed":"node scripts/mutation-scope.mjs seed","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","override:sync":"node scripts/override/sync.mjs","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.15.0.tgz","_integrity":"sha512-0rsuCky80zcBZSpjrqptFBNubWDIKo+hpng+95S/1u2s+V7xuPTF+Tji18LVSQf40ff6IcMSbLJAUFdj1rVUog==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.68.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"],"preprocess":["./types/preprocess.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.32","glob":"13.0.6","lib0":"0.2.117","rxjs":"7.8.2","vite":"8.2.2","yaml":"^2.9.0","husky":"9.1.7","jscpd":"5.1.2","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.5","react":"^19.2.7","serve":"14.2.6","tslib":"2.8.1","eslint":"10.10.0","nanoid":"6.0.1","parse5":"^8.0.0","rollup":"4.63.1","vitest":"4.1.11","esbuild":"0.28.2","i18next":"26.4.2","mermaid":"11.17.2","postcss":"8.5.28","prismjs":"^1.30.0","zone.js":"0.16.3","chromatic":"18.7.2","dompurify":"^3.4.13","react-dom":"^19.2.7","storybook":"10.6.0","@vitest/ui":"4.1.11","ng-packagr":"22.1.1","playwright":"1.62.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.4.1","tailwindcss":"4.3.3","y-protocols":"1.0.7","y-websocket":"3.1.0","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.1.5","@angular/build":"22.1.7","@angular/forms":"22.1.5","@types/prismjs":"^1.26.6","fake-indexeddb":"6.2.5","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.1.5","@commitlint/cli":"21.2.2","@vue/test-utils":"^2.4.11","es-module-lexer":"^2.3.2","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.62.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.1.5","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.5.1","typescript-eslint":"8.68.0","eslint-plugin-jest":"29.16.6","@vitest/coverage-v8":"4.1.11","eslint-plugin-jsdoc":"64.3.5","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.13.0","@oxc-project/runtime":"0.148.0","@storybook/html-vite":"10.6.0","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.1.5","@storybook/addon-a11y":"10.6.0","@stryker-mutator/core":"10.0.0","@vitest/eslint-plugin":"1.6.27","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.6.0","eslint-plugin-storybook":"10.6.0","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.6","@angular/platform-server":"22.1.5","eslint-plugin-playwright":"2.11.0","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.1.5","@testing-library/jest-dom":"^7.0.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.4.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.11","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.7.1","eslint-plugin-testing-library":"^7.16.2","@stryker-mutator/vitest-runner":"10.0.0","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.2","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.15.0_1789566261601_0.30105306575901314","host":"s3://npm-registry-packages-npm-production"}},"1.15.1":{"name":"@bloklabs/core","version":"1.15.1","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"author":{"name":"JackUait"},"license":"Apache-2.0","_id":"@bloklabs/core@1.15.1","maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"contributors":[{"url":"the author of initial solution","name":"CodeX"}],"homepage":"https://blokeditor.com","bugs":{"url":"https://github.com/JackUait/blok/issues"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"dist":{"shasum":"9481ab3acf9ca466a9780898cc340dd8fe59ad68","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.15.1.tgz","fileCount":1648,"integrity":"sha512-kAqgTv3TCCOTapm09A5oNuu6kCR7oHJu6UkhPdTHN4LnHGAYM3/PYsL6pVc7BkXK5QLdD+8zrKPsBeqGjKC/kA==","signatures":[{"sig":"MEUCIBsz+6ILedykhqLFNaVE2E4SgrodD3Pbdtbj36BOk9HqAiEApJ8VAOFYwy1V9HsqfNZVa9H5BwY/ELvYkYCrnLHKVmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116342147},"main":"./dist/blok.cjs","_from":"file:/tmp/bloklabs-core-1.15.1.tgz","types":"./types/index.d.ts","unpkg":"./dist/blok.iife.js","module":"dist/blok.mjs","browser":"./dist/blok.iife.js","engines":{"node":">=20.19.0"},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./dist/*":"./dist/*","./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view.css":"./view.css","./preprocess":{"types":"./types/preprocess.d.ts","import":"./dist/preprocess.mjs","require":"./dist/preprocess.cjs"}},"scripts":{"e2e":"playwright test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","test":"vitest run --project=unit --project=unit-angular","build":"node scripts/build-all.mjs","jscpd":"jscpd src/ test/","serve":"node scripts/dev.mjs","e2e:ui":"playwright test --ui","mutate":"node scripts/mutation-scope.mjs run","prepare":"husky","release":"node scripts/release.mjs","lint:fix":"eslint . --fix","build:cli":"node scripts/build-cli.mjs","chromatic":"chromatic --exit-zero-on-changes","ci:timing":"node scripts/ci-timing-probe.mjs","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","storybook":"storybook dev -p 6006 --no-open","build:test":"node scripts/build-all.mjs --mode test","e2e:chrome":"playwright test --project=chromium","e2e:safari":"playwright test --project=webkit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","lint:tests":"eslint test/","lint:types":"tsc --noEmit","serve:docs":"cd docs && vite --port 8080","test:watch":"vitest --project=unit --project=unit-angular","unused-css":"node scripts/unused-css-finder/cli.mjs","e2e:firefox":"playwright test --project=firefox","mutate:plan":"node scripts/mutation-scope.mjs plan","mutate:seed":"node scripts/mutation-scope.mjs seed","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","lint:angular":"ngc -p tsconfig.spec.json --noEmit","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","test:angular":"vitest run --project=unit-angular","build:angular":"node scripts/build-angular.mjs","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:safari":"playwright test --ui --project=webkit","override:sync":"node scripts/override/sync.mjs","test:coverage":"vitest run --coverage --project=unit","e2e:ui:firefox":"playwright test --ui --project=firefox","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","prepublishOnly":"yarn build","storybook:test":"vitest --project=storybook --run","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","storybook:build":"storybook build --stats-json","typography:check":"node scripts/typography-finder/cli.mjs","release:preflight":"node scripts/release-preflight.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs"},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"jsdelivr":"./dist/blok.iife.js","_resolved":"/tmp/bloklabs-core-1.15.1.tgz","_integrity":"sha512-kAqgTv3TCCOTapm09A5oNuu6kCR7oHJu6UkhPdTHN4LnHGAYM3/PYsL6pVc7BkXK5QLdD+8zrKPsBeqGjKC/kA==","repository":{"url":"git+https://github.com/JackUait/blok.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"11.6.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","directories":{},"resolutions":{"lodash-es":"^4.18.0","@typescript-eslint/utils":"8.68.0"},"sideEffects":["./src/components/polyfills.ts","*.css"],"_nodeVersion":"24.13.0","publishConfig":{"access":"public"},"typesVersions":{"*":{"full":["./types/full.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"tools":["./types/tools-entry.d.ts"],"locales":["./types/locales.d.ts"],"migrate":["./types/migrate.d.ts"],"markdown":["./types/markdown.d.ts"],"preprocess":["./types/preprocess.d.ts"]}},"_hasShrinkwrap":false,"packageManager":"yarn@4.9.4","devDependencies":{"vue":"^3.5.40","yjs":"13.6.32","glob":"13.0.6","lib0":"0.2.117","rxjs":"7.8.2","vite":"8.2.2","yaml":"^2.9.0","husky":"9.1.7","jscpd":"5.1.2","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.5","react":"^19.2.7","serve":"14.2.6","tslib":"2.8.1","eslint":"10.10.0","nanoid":"6.0.1","parse5":"^8.0.0","rollup":"4.63.1","vitest":"4.1.11","esbuild":"0.28.2","i18next":"26.4.2","mermaid":"11.17.2","postcss":"8.5.28","prismjs":"^1.30.0","zone.js":"0.16.3","chromatic":"18.7.2","dompurify":"^3.4.13","react-dom":"^19.2.7","storybook":"10.6.0","@vitest/ui":"4.1.11","ng-packagr":"22.1.1","playwright":"1.62.1","typescript":"6.0.3","webm-muxer":"^5.1.4","@types/node":"26.4.1","tailwindcss":"4.3.3","y-protocols":"1.0.7","y-websocket":"3.1.0","@types/mdast":"^4.0.4","@types/react":"^19.2.17","docx-preview":"0.4.0","html-janitor":"2.0.4","@angular/core":"22.1.5","@angular/build":"22.1.7","@angular/forms":"22.1.5","@types/prismjs":"^1.26.6","fake-indexeddb":"6.2.5","mdast-util-gfm":"^3.1.0","music-metadata":"^11.14.0","@angular/common":"22.1.5","@commitlint/cli":"21.2.2","@vue/test-utils":"^2.4.11","es-module-lexer":"^2.3.2","mdast-util-math":"^3.0.0","@emoji-mart/data":"^1.2.1","@playwright/test":"1.62.1","@types/react-dom":"^19.2.3","@angular/compiler":"22.1.5","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","rollup-plugin-dts":"6.5.1","typescript-eslint":"8.68.0","eslint-plugin-jest":"29.16.6","@vitest/coverage-v8":"4.1.11","eslint-plugin-jsdoc":"64.3.5","fractional-indexing":"^4.0.0","@axe-core/playwright":"4.13.0","@oxc-project/runtime":"0.148.0","@storybook/html-vite":"10.6.0","@testing-library/dom":"^10.4.1","eslint-plugin-import":"2.32.0","micromark-util-types":"^2.0.2","@angular/compiler-cli":"22.1.5","@storybook/addon-a11y":"10.6.0","@stryker-mutator/core":"10.0.0","@vitest/eslint-plugin":"1.6.27","cldr-annotations-full":"^48.2.0","eslint-plugin-sonarjs":"4.2.0","rollup-plugin-license":"3.7.1","@aiden0z/pptx-renderer":"1.2.4","@testing-library/react":"^16.3.2","eslint-plugin-jest-dom":"^5.5.0","@storybook/addon-vitest":"10.6.0","eslint-plugin-storybook":"10.6.0","micromark-extension-gfm":"^3.0.0","postcss-selector-parser":"7.1.6","@angular/platform-server":"22.1.5","eslint-plugin-playwright":"2.11.0","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","@angular/platform-browser":"22.1.5","@testing-library/jest-dom":"^7.0.1","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-tailwindcss":"4.4.0","@fontsource-variable/inter":"^5.3.0","@vitest/browser-playwright":"4.1.11","@fontsource/permanent-marker":"^5.3.0","@analogjs/vite-plugin-angular":"2.7.1","eslint-plugin-testing-library":"^7.16.2","@stryker-mutator/vitest-runner":"10.0.0","vite-plugin-css-injected-by-js":"5.0.2","@commitlint/config-conventional":"21.2.2","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_1.15.1_1789582765583_0.20313013287988424","host":"s3://npm-registry-packages-npm-production"}},"1.15.2":{"name":"@bloklabs/core","version":"1.15.2","description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","module":"dist/blok.mjs","main":"./dist/blok.cjs","browser":"./dist/blok.iife.js","unpkg":"./dist/blok.iife.js","jsdelivr":"./dist/blok.iife.js","types":"./types/index.d.ts","typesVersions":{"*":{"tools":["./types/tools-entry.d.ts"],"full":["./types/full.d.ts"],"locales":["./types/locales.d.ts"],"markdown":["./types/markdown.d.ts"],"migrate":["./types/migrate.d.ts"],"view":["./types/view.d.ts"],"icons":["./types/icons.d.ts"],"preprocess":["./types/preprocess.d.ts"]}},"exports":{".":{"types":"./types/index.d.ts","import":"./dist/blok.mjs","require":"./dist/blok.cjs"},"./tools":{"types":"./types/tools-entry.d.ts","import":"./dist/tools.mjs","require":"./dist/tools.cjs"},"./full":{"types":"./types/full.d.ts","import":"./dist/full.mjs","require":"./dist/full.cjs"},"./locales":{"types":"./types/locales.d.ts","import":"./dist/locales.mjs"},"./markdown":{"types":"./types/markdown.d.ts","import":"./dist/markdown.mjs","require":"./dist/markdown.cjs"},"./view":{"types":"./types/view.d.ts","import":"./dist/view.mjs","require":"./dist/view.cjs"},"./migrate":{"types":"./types/migrate.d.ts","import":"./dist/migrate.mjs","require":"./dist/migrate.cjs"},"./adapters":{"import":"./dist/adapters.mjs","require":"./dist/adapters.cjs"},"./preprocess":{"types":"./types/preprocess.d.ts","import":"./dist/preprocess.mjs","require":"./dist/preprocess.cjs"},"./icons":{"types":"./types/icons.d.ts","import":"./dist/icons.mjs","require":"./dist/icons.cjs"},"./umd":{"default":"./dist/blok.umd.js"},"./dist/*":"./dist/*","./view.css":"./view.css"},"bin":{"migrate-from-editorjs":"codemod/migrate-editorjs-to-blok.js"},"publishConfig":{"access":"public"},"packageManager":"yarn@4.9.4","workspaces":["packages/*"],"engines":{"node":">=20.19.0"},"keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"sideEffects":["./src/components/polyfills.ts","*.css"],"scripts":{"serve":"node scripts/dev.mjs","serve:docs":"cd docs && vite --port 8080","build":"node scripts/build-all.mjs","build:angular":"node scripts/build-angular.mjs","build:cli":"node scripts/build-cli.mjs","build:test":"node scripts/build-all.mjs --mode test","lint":"sh -c 'ESLINT_CONCURRENCY=off; ESLINT_CACHE=warm; if [ ! -f node_modules/.cache/blok-eslint ]; then ESLINT_CONCURRENCY=4; ESLINT_CACHE=cold; fi; ESLINT_STARTED=$(date +%s); echo \"Lint: ESLint ($ESLINT_CACHE cache, concurrency=$ESLINT_CONCURRENCY)\"; eslint . --concurrency=$ESLINT_CONCURRENCY --cache --cache-location node_modules/.cache/blok-eslint --cache-strategy content; ESLINT_EXIT=$?; ESLINT_SECONDS=$(($(date +%s) - ESLINT_STARTED)); echo \"Lint: ESLint finished in ${ESLINT_SECONDS}s (exit $ESLINT_EXIT)\"; TSC_STARTED=$(date +%s); echo \"Lint: TypeScript (incremental)\"; tsc --noEmit --incremental --tsBuildInfoFile node_modules/.cache/blok-lint.tsbuildinfo; TSC_EXIT=$?; TSC_SECONDS=$(($(date +%s) - TSC_STARTED)); echo \"Lint: TypeScript finished in ${TSC_SECONDS}s (exit $TSC_EXIT)\"; if [ $ESLINT_EXIT -ne 0 ] || [ $TSC_EXIT -ne 0 ]; then exit 1; fi'","lint:fix":"eslint . --fix","lint:tests":"eslint test/","lint:types":"tsc --noEmit","lint:angular":"ngc -p tsconfig.spec.json --noEmit","i18n:audit":"node scripts/i18n-audit.js","i18n:check":"node scripts/i18n/check-translations.mjs","i18n:check:docs":"node scripts/i18n/check-docs-translations.mjs","typography:check":"node scripts/typography-finder/cli.mjs","override:sync":"node scripts/override/sync.mjs","e2e":"playwright test","e2e:smoke":"playwright test --project=chromium --grep=\"@smoke\"","e2e:chrome":"playwright test --project=chromium","e2e:firefox":"playwright test --project=firefox","e2e:safari":"playwright test --project=webkit","e2e:ui":"playwright test --ui","e2e:ui:chrome":"playwright test --ui --project=chromium","e2e:ui:firefox":"playwright test --ui --project=firefox","e2e:ui:safari":"playwright test --ui --project=webkit","test":"vitest run --project=unit --project=unit-angular","test:watch":"vitest --project=unit --project=unit-angular","test:angular":"vitest run --project=unit-angular","test:coverage":"vitest run --coverage --project=unit","mutate":"node scripts/mutation-scope.mjs run","mutate:plan":"node scripts/mutation-scope.mjs plan","mutate:seed":"node scripts/mutation-scope.mjs seed","jscpd":"jscpd src/ test/","jscpd:report":"jscpd . --reporters html,json --output .jscpd-report","prepublishOnly":"yarn build","prepare":"husky","storybook":"storybook dev -p 6006 --no-open","storybook:build":"storybook build --stats-json","storybook:test":"vitest --project=storybook --run","chromatic":"chromatic --exit-zero-on-changes","perf:analyze":"node scripts/analyze-performance.mjs","perf:compare":"node scripts/analyze-performance.mjs --baseline","perf:dashboard":"node scripts/generate-performance-dashboard.mjs","e2e:validate-categories":"node scripts/validate-test-categories.mjs","validate:spec-coverage":"node scripts/validate-spec-file-coverage.mjs","ci:timing":"node scripts/ci-timing-probe.mjs","release":"node scripts/release.mjs","release:preflight":"node scripts/release-preflight.mjs","unused-css":"node scripts/unused-css-finder/cli.mjs"},"author":{"name":"JackUait"},"contributors":[{"name":"CodeX","url":"the author of initial solution"}],"license":"Apache-2.0","homepage":"https://blokeditor.com","repository":{"type":"git","url":"git+https://github.com/JackUait/blok.git"},"bugs":{"url":"https://github.com/JackUait/blok/issues"},"devDependencies":{"@aiden0z/pptx-renderer":"1.2.4","@analogjs/vite-plugin-angular":"2.7.1","@angular/build":"22.1.7","@angular/common":"22.1.5","@angular/compiler":"22.1.5","@angular/compiler-cli":"22.1.5","@angular/core":"22.1.5","@angular/forms":"22.1.5","@angular/platform-browser":"22.1.5","@angular/platform-server":"22.1.5","@axe-core/playwright":"4.13.0","@commitlint/cli":"21.2.2","@commitlint/config-conventional":"21.2.2","@emoji-mart/data":"^1.2.1","@fontsource-variable/inter":"^5.3.0","@fontsource-variable/jetbrains-mono":"^5.3.0","@fontsource-variable/source-serif-4":"^5.3.0","@fontsource/permanent-marker":"^5.3.0","@oxc-project/runtime":"0.148.0","@playwright/test":"1.62.1","@storybook/addon-a11y":"10.6.0","@storybook/addon-vitest":"10.6.0","@storybook/html-vite":"10.6.0","@stryker-mutator/core":"10.0.0","@stryker-mutator/vitest-runner":"10.0.0","@tailwindcss/node":"4.3.3","@tailwindcss/vite":"4.3.3","@testing-library/dom":"^10.4.1","@testing-library/jest-dom":"^7.0.1","@testing-library/react":"^16.3.2","@types/mdast":"^4.0.4","@types/node":"26.4.1","@types/prismjs":"^1.26.6","@types/react":"^19.2.17","@types/react-dom":"^19.2.3","@vitest/browser-playwright":"4.1.11","@vitest/coverage-v8":"4.1.11","@vitest/eslint-plugin":"1.6.27","@vitest/ui":"4.1.11","@vue/test-utils":"^2.4.11","chromatic":"18.7.2","cldr-annotations-full":"^48.2.0","docx-preview":"0.4.0","dompurify":"^3.4.13","es-module-lexer":"^2.3.2","esbuild":"0.28.2","eslint":"10.10.0","eslint-plugin-import":"2.32.0","eslint-plugin-jest":"29.16.6","eslint-plugin-jest-dom":"^5.5.0","eslint-plugin-jsdoc":"64.3.5","eslint-plugin-playwright":"2.11.0","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-sonarjs":"4.2.0","eslint-plugin-storybook":"10.6.0","eslint-plugin-tailwindcss":"4.4.0","eslint-plugin-testing-library":"^7.16.2","fake-indexeddb":"6.2.5","fractional-indexing":"^4.0.0","glob":"13.0.6","html-janitor":"2.0.4","husky":"9.1.7","i18next":"26.4.2","jscpd":"5.1.2","jsdom":"29.1.1","jszip":"^3.10.1","katex":"0.18.5","lib0":"0.2.117","mdast-util-from-markdown":"^2.0.3","mdast-util-gfm":"^3.1.0","mdast-util-math":"^3.0.0","mermaid":"11.17.2","micromark-extension-gfm":"^3.0.0","micromark-extension-math":"^3.1.0","micromark-util-types":"^2.0.2","music-metadata":"^11.14.0","nanoid":"6.0.1","ng-packagr":"22.1.1","parse5":"^8.0.0","playwright":"1.62.1","postcss":"8.5.28","postcss-selector-parser":"7.1.6","prismjs":"^1.30.0","react":"^19.2.7","react-dom":"^19.2.7","rollup":"4.63.1","rollup-plugin-dts":"6.5.1","rollup-plugin-license":"3.7.1","rxjs":"7.8.2","serve":"14.2.6","storybook":"10.6.0","tailwindcss":"4.3.3","tslib":"2.8.1","typescript":"6.0.3","typescript-eslint":"8.68.0","vite":"8.2.2","vite-plugin-css-injected-by-js":"5.0.2","vitest":"4.1.11","vue":"^3.5.40","webm-muxer":"^5.1.4","y-protocols":"1.0.7","y-websocket":"3.1.0","yaml":"^2.9.0","yjs":"13.6.32","zone.js":"0.16.3"},"resolutions":{"@typescript-eslint/utils":"8.68.0","lodash-es":"^4.18.0"},"_id":"@bloklabs/core@1.15.2","_integrity":"sha512-E4FUzbWDKjwa0GOBjbFyA/YWB7PhosNs4dLX4ql6kg8/hy5M8GC5O1QjyevflHOqRY2fXXEJL81L4+vzJkcigA==","_resolved":"/tmp/bloklabs-core-1.15.2.tgz","_from":"file:/tmp/bloklabs-core-1.15.2.tgz","_nodeVersion":"24.13.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-E4FUzbWDKjwa0GOBjbFyA/YWB7PhosNs4dLX4ql6kg8/hy5M8GC5O1QjyevflHOqRY2fXXEJL81L4+vzJkcigA==","shasum":"eeb36e5d17420375822f126bf8229fb5192e0f46","tarball":"https://registry.npmjs.org/@bloklabs/core/-/core-1.15.2.tgz","fileCount":1648,"unpackedSize":116374380,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCID8oVW50E1acwy7ZXCGUr5v/6dzZuwiYMcSCwqpJiJ12AiEAmD1mZxdBI3F+iMYHfQ0BefSzEg133uQWCmS4YBzPocU="}]},"_npmUser":{"name":"jackuait","email":"jackuait@bk.ru"},"directories":{},"maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_1.15.2_1789607918099_0.5366585130756851"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-15T18:22:34.706Z","modified":"2026-09-17T01:18:38.721Z","1.1.1":"2026-07-15T18:22:35.462Z","1.2.0":"2026-07-16T13:16:09.290Z","1.2.1":"2026-07-16T17:02:01.190Z","1.2.2":"2026-07-18T12:24:59.640Z","1.2.3":"2026-07-18T16:25:45.821Z","1.2.4":"2026-07-18T19:36:09.388Z","1.2.5":"2026-07-20T03:49:12.504Z","1.2.6":"2026-07-20T12:39:16.676Z","1.3.0":"2026-07-21T16:31:14.381Z","1.4.0":"2026-07-23T00:59:57.480Z","1.4.1":"2026-07-23T13:31:00.118Z","1.4.2":"2026-07-23T15:41:30.471Z","1.4.3":"2026-07-24T10:12:09.160Z","1.4.4":"2026-07-24T21:55:21.747Z","1.4.5":"2026-07-24T23:29:48.198Z","1.5.0":"2026-07-27T17:41:42.539Z","1.6.0":"2026-08-01T08:23:20.473Z","1.6.1":"2026-08-01T21:51:33.022Z","1.6.2":"2026-08-02T08:59:17.320Z","1.7.0":"2026-08-04T17:56:54.122Z","1.8.0":"2026-08-06T00:26:45.154Z","1.9.0":"2026-08-06T16:15:04.798Z","1.10.0":"2026-08-07T09:47:14.652Z","1.10.1":"2026-08-19T22:52:46.535Z","1.11.0":"2026-08-24T21:31:45.721Z","1.12.0":"2026-08-26T08:49:57.399Z","1.13.0":"2026-09-03T20:30:40.074Z","1.14.0":"2026-09-15T23:12:16.753Z","1.15.0":"2026-09-16T13:44:22.087Z","1.15.1":"2026-09-16T18:19:26.060Z","1.15.2":"2026-09-17T01:18:38.552Z"},"bugs":{"url":"https://github.com/JackUait/blok/issues"},"author":{"name":"JackUait"},"license":"Apache-2.0","homepage":"https://blokeditor.com","keywords":["blok","block-editor","rich-text-editor","wysiwyg","editor","text editor","rich text editor","block-based","block-based editor","notion","notion-like","notion-like editor","headless","headless editor","contenteditable","json","typescript","extensible editor","react","vue","angular"],"repository":{"type":"git","url":"git+https://github.com/JackUait/blok.git"},"description":"Blok — headless, highly extensible rich text editor built for developers who need to implement a block-based editing experience (similar to Notion) without building it from scratch","contributors":[{"name":"CodeX","url":"the author of initial solution"}],"maintainers":[{"name":"jackuait","email":"jackuait@bk.ru"}],"readme":"<p align=\"center\">\n  <a href=\"https://blokeditor.com\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <img width=\"40%\" alt=\"Blok logotype\" src=\"./static/blok.png\">\n  </a>\n</p>\n\n# Blok\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@bloklabs/core\"><img alt=\"@bloklabs/core on npm\" src=\"https://img.shields.io/npm/v/%40bloklabs%2Fcore?style=flat-square&logo=npm&logoColor=white&label=%40bloklabs%2Fcore&color=CB3837\"></a>\n  <a href=\"https://www.npmjs.com/package/@bloklabs/react\"><img alt=\"@bloklabs/react on npm\" src=\"https://img.shields.io/npm/v/%40bloklabs%2Freact?style=flat-square&logo=npm&logoColor=white&label=%40bloklabs%2Freact&color=CB3837\"></a>\n  <a href=\"https://www.npmjs.com/package/@bloklabs/vue\"><img alt=\"@bloklabs/vue on npm\" src=\"https://img.shields.io/npm/v/%40bloklabs%2Fvue?style=flat-square&logo=npm&logoColor=white&label=%40bloklabs%2Fvue&color=CB3837\"></a>\n  <a href=\"https://www.npmjs.com/package/@bloklabs/angular\"><img alt=\"@bloklabs/angular on npm\" src=\"https://img.shields.io/npm/v/%40bloklabs%2Fangular?style=flat-square&logo=npm&logoColor=white&label=%40bloklabs%2Fangular&color=CB3837\"></a>\n  <a href=\"https://www.npmjs.com/package/@bloklabs/presets\"><img alt=\"@bloklabs/presets on npm\" src=\"https://img.shields.io/npm/v/%40bloklabs%2Fpresets?style=flat-square&logo=npm&logoColor=white&label=%40bloklabs%2Fpresets&color=CB3837\"></a>\n  <a href=\"https://www.npmjs.com/package/@bloklabs/cli\"><img alt=\"@bloklabs/cli on npm\" src=\"https://img.shields.io/npm/v/%40bloklabs%2Fcli?style=flat-square&logo=npm&logoColor=white&label=%40bloklabs%2Fcli&color=CB3837\"></a>\n  <a href=\"https://www.npmjs.com/package/@bloklabs/server\"><img alt=\"@bloklabs/server on npm\" src=\"https://img.shields.io/npm/v/%40bloklabs%2Fserver?style=flat-square&logo=npm&logoColor=white&label=%40bloklabs%2Fserver&color=CB3837\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.nuget.org/packages/Blok.Server\"><img alt=\"Blok.Server on NuGet\" src=\"https://img.shields.io/nuget/v/Blok.Server?style=flat-square&logo=nuget&logoColor=white&label=Blok.Server&color=004880\"></a>\n  <a href=\"https://www.nuget.org/packages/Blok.Server.AspNetCore\"><img alt=\"Blok.Server.AspNetCore on NuGet\" src=\"https://img.shields.io/nuget/v/Blok.Server.AspNetCore?style=flat-square&logo=nuget&logoColor=white&label=Blok.Server.AspNetCore&color=004880\"></a>\n</p>\n\nA block-based rich text editor for the web, like the one in Notion. Every paragraph, heading, image or list is its own block. You can drag it, nest it, or convert it into something else.\n\nA plain `contenteditable` field hands you one HTML blob and leaves you to parse it. Blok saves typed JSON blocks instead. The same content can then go into a database column, be diffed between revisions, or be rendered on a server that never touches the DOM.\n\nBlok is also headless. It ships the engine and the tools, not a theme, so the chrome is yours.\n\n- **JSON in, JSON out.** `save()` returns `{ id, type, data }` blocks — no HTML parsing on your side.\n- **Renders without a browser.** `@bloklabs/core/view` turns saved documents into sanitized HTML synchronously, in Node, workers, or React Server Components.\n- **React, Vue and Angular adapters.** Separate packages that peer on the core, so the engine is never bundled twice. In React, `<BlokEditor data={…} onSave={…} />` is a real controlled component.\n- **69 languages, RTL included.** Locales lazy-load by browser language; right-to-left scripts lay out correctly.\n- **CRDT-backed undo.** History runs on Yjs: undo restores the caret, groups small edits, and batches atomically via `blocks.transact()`.\n- **Extensible by design.** Block tools, inline tools and block tunes, each reaching the editor through 21 API namespaces (`blocks`, `caret`, `selection`, `marks`, …).\n- **Migration path from Editor.js.** Blok is a fork of Editor.js. A codemod (`npx migrate-from-editorjs`) and a data migration guide ship with it.\n\n```js\nimport { Blok, defaultTools } from '@bloklabs/core/full';\nimport { blocksToHtml } from '@bloklabs/core/view';\n\nconst editor = new Blok({ holder: 'editor', tools: defaultTools });\n\nconst data = await editor.save();\n//=> { blocks: [{ id: 'a1', type: 'header', data: { text: 'Hello', level: 2 } },\n//               { id: 'a2', type: 'paragraph', data: { text: 'A <b>block</b>-based editor.' } }] }\n\nblocksToHtml(data);\n//=> '<h2>Hello</h2><p>A <b>block</b>-based editor.</p>'\n```\n\n<p align=\"center\">\n  <a href=\"https://blokeditor.com/demo\" target=\"_blank\" rel=\"noopener noreferrer\">\n    <img width=\"90%\" alt=\"The Blok editor: a heading, a bulleted list, a toggle and a to-do list, with the add and drag handles shown beside the hovered block\" src=\"./static/editor-screenshot.png\">\n  </a>\n</p>\n\n<p align=\"center\"><a href=\"https://blokeditor.com/demo\">Try the live demo →</a></p>\n\n---\n\n## Contents\n\n- [Getting started](#getting-started)\n- [Framework adapters](#framework-adapters)\n- [What's in the box](#whats-in-the-box)\n- [Rendering saved content](#rendering-saved-content)\n- [Styling and theming](#styling-and-theming)\n- [Other entry points](#other-entry-points)\n- [Documentation](#documentation)\n- [Community](#community)\n- [Contributing](#contributing)\n- [License and attribution](#license-and-attribution)\n\n---\n\n## Getting started\n\n**1. Install the package** (Node 20.19 or newer):\n\n```bash\nnpm install @bloklabs/core\n# or: yarn add @bloklabs/core / pnpm add @bloklabs/core\n```\n\n**2. Add a container to your page:**\n\n```html\n<div id=\"editor\"></div>\n```\n\n**3. Create the editor.** The core package ships the engine but no tools, so you pick what to load. The quickest start is the batteries-included bundle:\n\n```js\nimport { Blok, defaultTools, defaultInlineTools } from '@bloklabs/core/full';\n\nconst editor = new Blok({\n  holder: 'editor',\n  tools: defaultTools,\n  inlineTools: defaultInlineTools,\n});\n```\n\nTo ship less, import tools one by one from `@bloklabs/core/tools` and pass only those.\n\n**4. Save the content** whenever you need it — on a button click, on a timer, on form submit:\n\n```js\nconst data = await editor.save();\n// Store `data` as JSON. Pass it back later as `new Blok({ holder, tools, data })`.\n```\n\nThat's the whole loop: create, edit, `save()`, re-render.\n\n### CommonJS\n\n```js\nconst { Blok } = require('@bloklabs/core');\n```\n\n### CDN, no bundler\n\n```html\n<script src=\"https://unpkg.com/@bloklabs/core/dist/blok.iife.js\"></script>\n<!-- or jsDelivr: https://cdn.jsdelivr.net/npm/@bloklabs/core/dist/blok.iife.js -->\n\n<div id=\"editor\"></div>\n<script>\n  const editor = new BlokEditor.Blok({ holder: 'editor' });\n</script>\n```\n\nThe IIFE build puts everything under the `BlokEditor` global.\n\n---\n\n## Framework adapters\n\nAdapters are separate packages that peer on `@bloklabs/core`, so versions stay in lockstep and the editor engine is never bundled twice:\n\n```bash\nnpm install @bloklabs/core @bloklabs/react    # or @bloklabs/vue / @bloklabs/angular\n```\n\n### React\n\n`<BlokEditor>` is an all-in-one component that forwards a ref to the live `Blok` instance:\n\n```tsx\nconst [data, setData] = useState(initialData);\n\n<BlokEditor tools={tools} data={data} onSave={setData} theme={theme} />;\n```\n\n`data` + `onSave` make it a **true controlled component**. `data` is reactive, and `onSave` fires (debounced) with the full serialized `OutputData` on every content change. No polling `ref.current.save()` by hand.\n\nWiring `onSave={setData}` is caret-stable. The adapter records its own emitted output as the baseline. Echoing it back deduplicates to a no-op, while genuine external changes still render.\n\nThree things to know:\n\n- **Reactive props sync without remounting** — `readOnly`, `theme`, `width`, `autofocus`.\n- **Structural config needs `deps`** — pass a `deps` array to recreate the editor when values like `tools` change. Keep each value referentially stable (primitives or `useMemo`). Otherwise you recreate the editor on every render.\n- **Don't wrap it in `styled()`** — styled-components claims the `theme` prop for its own `ThemeProvider`. The prop never reaches the editor, so theme sync breaks silently. Render `<BlokEditor>` directly and style it via `className`.\n\nFor advanced control (e.g. rendering outside a single container) use `useBlok` + `BlokContent` directly.\n\n### Vue and Angular\n\n- **`@bloklabs/vue`** — Vue 3: `<BlokEditor>`, the `useBlok`/`useBlocks` composables, and `createVueBlock` for authoring block tools as Vue components.\n- **`@bloklabs/angular`** — Angular (APF partial-Ivy bundle): `BlokEditorComponent`, `injectBlocks`, and `createAngularBlock` for component-based block tools.\n\n---\n\n## What's in the box\n\n| Feature | What you get |\n| --- | --- |\n| **Block tools** | Paragraph, heading, list, quote, callout, code, image, divider, table, toggle, and a column layout. Plus a Notion-style database block (rows are child blocks) and embed/bookmark blocks for pasted links. |\n| **Inline formatting** | Bold, italic, underline, strikethrough, inline code, link, and a highlight marker. |\n| **Slash menu and markdown** | Type `/` in an empty block to search and insert, or type markdown (`#`, `-`, `1.`, `[]`, `>`) and it converts on space. |\n| **Drag and drop** | Pointer-based reordering (not the flaky HTML5 drag API). Grab multiple blocks, hold Alt to duplicate while dragging, and it auto-scrolls near edges. Keyboard works too. |\n| **Undo/redo on Yjs** | History is CRDT-backed: undo restores the caret, groups small edits, and batches atomically via `blocks.transact()`. |\n| **69 locales, RTL** | Reads the browser language, lazy-loads the matching locale, and lays out right-to-left scripts correctly. |\n| **Plugin system** | Three extension points — block tools, inline tools, block tunes — with lifecycle hooks, paste handling, and conversion rules, over 21 API namespaces. |\n| **Smart paste** | Copy an answer out of ChatGPT, Claude or Gemini, or a page out of Notion or Google Docs. It arrives as real blocks — headings, lists, tables, quotes and code — not one flat paragraph. A handler chain keeps block structure intact on internal paste. Tools can also claim specific file types or patterns. |\n| **Block conversion** | Turn one block type into another from the inline toolbar or in code, one block or a whole selection at a time. |\n| **Read-only mode** | Call `readOnly.set(true)` and the editor re-renders without editing affordances. |\n| **Accessibility** | ARIA live announcements for drag and block ops, Notion-style vertical caret movement, semantic data attributes for tests. |\n\n---\n\n## Rendering saved content\n\n`@bloklabs/core/view` renders a saved document to HTML **synchronously, without a DOM**. It runs in Node, in a worker, or inside a React Server Component. Every inline field is sanitized against the allowlist before interpolation:\n\n```js\nimport { blocksToHtml, blocksToPlainText } from '@bloklabs/core/view';\n\nblocksToHtml(data);      //=> '<h2>Hello</h2><p>A <b>block</b>-based editor.</p>'\nblocksToPlainText(data); //=> 'Hello\\n\\nA block-based editor.'\n```\n\nShip `@bloklabs/core/view.css` alongside it to match the editor's own look, or style the output yourself.\n\n---\n\n## Styling and theming\n\nYou can customize Blok's chrome with public `--blok-*` CSS custom properties. Pass them as `style.tokens` in the constructor config, or swap them at runtime with `editor.tokens.set()`. They recolor popovers, surfaces, selection, headings, lists, and block rhythm. The full token list is in the [API reference](https://blokeditor.com).\n\nLayout hooks are CSS-only. The most commonly overridden one is the **editor gutter**. Blok reserves `--blok-editor-gutter-start: 56px` in edit mode for the floating +/⠿ block controls, and collapses it automatically in read-only mode. Don't hand-roll wrapper padding for those controls. To change or remove the gutter, declare the token on the wrapper element itself:\n\n```css\n[data-blok-interface] {\n  --blok-editor-gutter-start: 0px; /* or any width; --blok-editor-gutter-end also exists */\n}\n```\n\nBlok declares its defaults at zero specificity via `:where()`, so any host declaration wins. The gutter tokens are state-dependent, so `style.tokens` / `tokens.set()` rejects them. Set them in CSS as above.\n\n---\n\n## Other entry points\n\n- **`@bloklabs/core/markdown`** — `markdownToBlocks(md)` imports Markdown (GFM, optional math) as Blok data.\n- **`@bloklabs/core/migrate`** — data migrations: upgrade your own block shapes between versions, and convert saved Editor.js documents to Blok's format.\n- **`@bloklabs/core/locales`** — locale data, if you'd rather load it yourself.\n- **`@bloklabs/core/icons`** — the editor's icon set as SVG strings.\n- **`npx migrate-from-editorjs`** — a codemod that rewrites Editor.js imports and config in your source.\n\n---\n\n## Documentation\n\nFull docs live at [blokeditor.com](https://blokeditor.com): API reference, an interactive demo, usage guides, and a migration guide if you're coming from Editor.js.\n\n## Community\n\nThere's a Telegram channel at [t.me/that_ai_guy](https://t.me/that_ai_guy) for updates and questions about Blok and related projects.\n\n## Contributing\n\nContributions are welcome — issues, discussions and pull requests alike. Read [CONTRIBUTING.md](./CONTRIBUTING.md) first. It covers how to propose a change before you build it, the code style, and what tests and docs a PR needs.\n\n```bash\nyarn install\nyarn serve   # dev playground (add --no-server to skip the collaboration backend)\nyarn test    # unit tests\nyarn lint    # ESLint + TypeScript\n```\n\n## License and attribution\n\nBlok is licensed under the [Apache License 2.0](./LICENSE). See [NOTICE](./NOTICE) for attribution.\n\nBlok was forked from [Editor.js](https://github.com/codex-team/editor.js) by [CodeX](https://codex.so/) in November 2025 and reworked heavily since. The original Editor.js code remains © CodeX under Apache-2.0. Blok-specific changes are © JackUait, also under Apache-2.0.\n","readmeFilename":"README.md"}