@jackuait/blok 0.4.1 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +136 -17
- package/codemod/README.md +16 -0
- package/codemod/migrate-editorjs-to-blok.js +859 -92
- package/codemod/test.js +682 -77
- package/dist/blok.mjs +5 -2
- package/dist/chunks/blok-BjgH1REI.mjs +12838 -0
- package/dist/chunks/i18next-CugVlwWp.mjs +1292 -0
- package/dist/chunks/i18next-loader-DfiUa_gd.mjs +43 -0
- package/dist/{index-CBkApZKo.mjs → chunks/index-5m5JWNey.mjs} +2 -2
- package/dist/chunks/inline-tool-convert-Bx5BVd8I.mjs +1988 -0
- package/dist/chunks/messages-2434tVOK.mjs +47 -0
- package/dist/chunks/messages-3DcCwXMF.mjs +47 -0
- package/dist/chunks/messages-4kMwVAKY.mjs +47 -0
- package/dist/chunks/messages-57uL5htT.mjs +47 -0
- package/dist/chunks/messages-76-iJV9Q.mjs +47 -0
- package/dist/chunks/messages-8p86Eyf2.mjs +47 -0
- package/dist/chunks/messages-BBX0p0Pi.mjs +47 -0
- package/dist/chunks/messages-BCm2eudQ.mjs +47 -0
- package/dist/chunks/messages-BFiUomgG.mjs +47 -0
- package/dist/chunks/messages-BIPNHHAV.mjs +47 -0
- package/dist/chunks/messages-BUlwu9mo.mjs +47 -0
- package/dist/chunks/messages-BX-DPa-z.mjs +47 -0
- package/dist/chunks/messages-BextV3Qh.mjs +47 -0
- package/dist/chunks/messages-BiPSFlUG.mjs +47 -0
- package/dist/chunks/messages-BiXe9G-O.mjs +47 -0
- package/dist/chunks/messages-Bl5z_Igo.mjs +47 -0
- package/dist/chunks/messages-BnsE97ku.mjs +47 -0
- package/dist/chunks/messages-BoO8gsVD.mjs +47 -0
- package/dist/chunks/messages-BqWaOGMn.mjs +47 -0
- package/dist/chunks/messages-BqkL2_Ro.mjs +47 -0
- package/dist/chunks/messages-BvCkXKX-.mjs +47 -0
- package/dist/chunks/messages-C6tbPLoj.mjs +47 -0
- package/dist/chunks/messages-CA6T3-gQ.mjs +47 -0
- package/dist/chunks/messages-CFFPFdWP.mjs +47 -0
- package/dist/chunks/messages-CFrKE-TN.mjs +47 -0
- package/dist/chunks/messages-CHz8VlG-.mjs +47 -0
- package/dist/chunks/messages-CLixzySl.mjs +47 -0
- package/dist/chunks/messages-CV7OM_qk.mjs +47 -0
- package/dist/chunks/messages-CXHt3eCC.mjs +47 -0
- package/dist/chunks/messages-CbmsBrB0.mjs +47 -0
- package/dist/chunks/messages-Ceo1KtFx.mjs +47 -0
- package/dist/chunks/messages-Cm0LJLtB.mjs +47 -0
- package/dist/chunks/messages-CmymP_Ar.mjs +47 -0
- package/dist/chunks/messages-D0ohMB5H.mjs +47 -0
- package/dist/chunks/messages-D3GrDwXh.mjs +47 -0
- package/dist/chunks/messages-D3vTzIpL.mjs +47 -0
- package/dist/chunks/messages-D5WeksbV.mjs +47 -0
- package/dist/chunks/messages-DGaab4EP.mjs +47 -0
- package/dist/chunks/messages-DKha57ZU.mjs +47 -0
- package/dist/chunks/messages-DOaujgMW.mjs +47 -0
- package/dist/chunks/messages-DVbPLd_0.mjs +47 -0
- package/dist/chunks/messages-D_FCyfW6.mjs +47 -0
- package/dist/chunks/messages-Dd5iZN3c.mjs +47 -0
- package/dist/chunks/messages-DehM7135.mjs +47 -0
- package/dist/chunks/messages-Dg1OHftD.mjs +47 -0
- package/dist/chunks/messages-Di6Flq-b.mjs +47 -0
- package/dist/chunks/messages-Dqhhex6e.mjs +47 -0
- package/dist/chunks/messages-DueVe0F1.mjs +47 -0
- package/dist/chunks/messages-Dx3eFwI0.mjs +47 -0
- package/dist/chunks/messages-FOtiUoKl.mjs +47 -0
- package/dist/chunks/messages-FTOZNhRD.mjs +47 -0
- package/dist/chunks/messages-IQxGfQIV.mjs +47 -0
- package/dist/chunks/messages-JF2fzCkK.mjs +47 -0
- package/dist/chunks/messages-MOGl7I5v.mjs +47 -0
- package/dist/chunks/messages-QgYhPL-3.mjs +47 -0
- package/dist/chunks/messages-WYWIbQwo.mjs +47 -0
- package/dist/chunks/messages-a6A_LgDv.mjs +47 -0
- package/dist/chunks/messages-bSf31LJi.mjs +47 -0
- package/dist/chunks/messages-diGozhTn.mjs +47 -0
- package/dist/chunks/messages-er-kd-VO.mjs +47 -0
- package/dist/chunks/messages-ez3w5NBn.mjs +47 -0
- package/dist/chunks/messages-f3uXjegd.mjs +47 -0
- package/dist/chunks/messages-ohwI1UGv.mjs +47 -0
- package/dist/chunks/messages-p9BZJaFV.mjs +47 -0
- package/dist/chunks/messages-qIQ4L4rw.mjs +47 -0
- package/dist/chunks/messages-qWkXPggi.mjs +47 -0
- package/dist/chunks/messages-w5foGze_.mjs +47 -0
- package/dist/full.mjs +50 -0
- package/dist/locales.mjs +227 -0
- package/dist/messages-2434tVOK.mjs +47 -0
- package/dist/messages-3DcCwXMF.mjs +47 -0
- package/dist/messages-4kMwVAKY.mjs +47 -0
- package/dist/messages-57uL5htT.mjs +47 -0
- package/dist/messages-76-iJV9Q.mjs +47 -0
- package/dist/messages-8p86Eyf2.mjs +47 -0
- package/dist/messages-BBX0p0Pi.mjs +47 -0
- package/dist/messages-BCm2eudQ.mjs +47 -0
- package/dist/messages-BFiUomgG.mjs +47 -0
- package/dist/messages-BIPNHHAV.mjs +47 -0
- package/dist/messages-BUlwu9mo.mjs +47 -0
- package/dist/messages-BX-DPa-z.mjs +47 -0
- package/dist/messages-BextV3Qh.mjs +47 -0
- package/dist/messages-BiPSFlUG.mjs +47 -0
- package/dist/messages-BiXe9G-O.mjs +47 -0
- package/dist/messages-Bl5z_Igo.mjs +47 -0
- package/dist/messages-BnsE97ku.mjs +47 -0
- package/dist/messages-BoO8gsVD.mjs +47 -0
- package/dist/messages-BqWaOGMn.mjs +47 -0
- package/dist/messages-BqkL2_Ro.mjs +47 -0
- package/dist/messages-BvCkXKX-.mjs +47 -0
- package/dist/messages-C6tbPLoj.mjs +47 -0
- package/dist/messages-CA6T3-gQ.mjs +47 -0
- package/dist/messages-CFFPFdWP.mjs +47 -0
- package/dist/messages-CFrKE-TN.mjs +47 -0
- package/dist/messages-CHz8VlG-.mjs +47 -0
- package/dist/messages-CLixzySl.mjs +47 -0
- package/dist/messages-CV7OM_qk.mjs +47 -0
- package/dist/messages-CXHt3eCC.mjs +47 -0
- package/dist/messages-CbmsBrB0.mjs +47 -0
- package/dist/messages-Ceo1KtFx.mjs +47 -0
- package/dist/messages-Cm0LJLtB.mjs +47 -0
- package/dist/messages-CmymP_Ar.mjs +47 -0
- package/dist/messages-D0ohMB5H.mjs +47 -0
- package/dist/messages-D3GrDwXh.mjs +47 -0
- package/dist/messages-D3vTzIpL.mjs +47 -0
- package/dist/messages-D5WeksbV.mjs +47 -0
- package/dist/messages-DGaab4EP.mjs +47 -0
- package/dist/messages-DKha57ZU.mjs +47 -0
- package/dist/messages-DOaujgMW.mjs +47 -0
- package/dist/messages-DVbPLd_0.mjs +47 -0
- package/dist/messages-D_FCyfW6.mjs +47 -0
- package/dist/messages-Dd5iZN3c.mjs +47 -0
- package/dist/messages-DehM7135.mjs +47 -0
- package/dist/messages-Dg1OHftD.mjs +47 -0
- package/dist/messages-Di6Flq-b.mjs +47 -0
- package/dist/messages-Dqhhex6e.mjs +47 -0
- package/dist/messages-DueVe0F1.mjs +47 -0
- package/dist/messages-Dx3eFwI0.mjs +47 -0
- package/dist/messages-FOtiUoKl.mjs +47 -0
- package/dist/messages-FTOZNhRD.mjs +47 -0
- package/dist/messages-IQxGfQIV.mjs +47 -0
- package/dist/messages-JF2fzCkK.mjs +47 -0
- package/dist/messages-MOGl7I5v.mjs +47 -0
- package/dist/messages-QgYhPL-3.mjs +47 -0
- package/dist/messages-WYWIbQwo.mjs +47 -0
- package/dist/messages-a6A_LgDv.mjs +47 -0
- package/dist/messages-bSf31LJi.mjs +47 -0
- package/dist/messages-diGozhTn.mjs +47 -0
- package/dist/messages-er-kd-VO.mjs +47 -0
- package/dist/messages-ez3w5NBn.mjs +47 -0
- package/dist/messages-f3uXjegd.mjs +47 -0
- package/dist/messages-ohwI1UGv.mjs +47 -0
- package/dist/messages-p9BZJaFV.mjs +47 -0
- package/dist/messages-qIQ4L4rw.mjs +47 -0
- package/dist/messages-qWkXPggi.mjs +47 -0
- package/dist/messages-w5foGze_.mjs +47 -0
- package/dist/tools.mjs +3073 -0
- package/dist/vendor.LICENSE.txt +59 -156
- package/package.json +47 -15
- package/src/blok.ts +267 -0
- package/src/components/__module.ts +139 -0
- package/src/components/block/api.ts +155 -0
- package/src/components/block/index.ts +1427 -0
- package/src/components/block-tunes/block-tune-delete.ts +51 -0
- package/src/components/blocks.ts +338 -0
- package/src/components/constants/data-attributes.ts +342 -0
- package/src/components/constants.ts +76 -0
- package/src/components/core.ts +392 -0
- package/src/components/dom.ts +773 -0
- package/src/components/domIterator.ts +189 -0
- package/src/components/errors/critical.ts +5 -0
- package/src/components/events/BlockChanged.ts +16 -0
- package/src/components/events/BlockHovered.ts +21 -0
- package/src/components/events/BlockSettingsClosed.ts +12 -0
- package/src/components/events/BlockSettingsOpened.ts +12 -0
- package/src/components/events/BlokMobileLayoutToggled.ts +15 -0
- package/src/components/events/FakeCursorAboutToBeToggled.ts +17 -0
- package/src/components/events/FakeCursorHaveBeenSet.ts +17 -0
- package/src/components/events/HistoryStateChanged.ts +19 -0
- package/src/components/events/RedactorDomChanged.ts +14 -0
- package/src/components/events/index.ts +46 -0
- package/src/components/flipper.ts +481 -0
- package/src/components/i18n/i18next-loader.ts +84 -0
- package/src/components/i18n/lightweight-i18n.ts +86 -0
- package/src/components/i18n/locales/TRANSLATION_GUIDELINES.md +113 -0
- package/src/components/i18n/locales/am/messages.json +44 -0
- package/src/components/i18n/locales/ar/messages.json +44 -0
- package/src/components/i18n/locales/az/messages.json +44 -0
- package/src/components/i18n/locales/bg/messages.json +44 -0
- package/src/components/i18n/locales/bn/messages.json +44 -0
- package/src/components/i18n/locales/bs/messages.json +44 -0
- package/src/components/i18n/locales/cs/messages.json +44 -0
- package/src/components/i18n/locales/da/messages.json +44 -0
- package/src/components/i18n/locales/de/messages.json +44 -0
- package/src/components/i18n/locales/dv/messages.json +44 -0
- package/src/components/i18n/locales/el/messages.json +44 -0
- package/src/components/i18n/locales/en/messages.json +44 -0
- package/src/components/i18n/locales/es/messages.json +44 -0
- package/src/components/i18n/locales/et/messages.json +44 -0
- package/src/components/i18n/locales/fa/messages.json +44 -0
- package/src/components/i18n/locales/fi/messages.json +44 -0
- package/src/components/i18n/locales/fil/messages.json +44 -0
- package/src/components/i18n/locales/fr/messages.json +44 -0
- package/src/components/i18n/locales/gu/messages.json +44 -0
- package/src/components/i18n/locales/he/messages.json +44 -0
- package/src/components/i18n/locales/hi/messages.json +44 -0
- package/src/components/i18n/locales/hr/messages.json +44 -0
- package/src/components/i18n/locales/hu/messages.json +44 -0
- package/src/components/i18n/locales/hy/messages.json +44 -0
- package/src/components/i18n/locales/id/messages.json +44 -0
- package/src/components/i18n/locales/index.ts +225 -0
- package/src/components/i18n/locales/it/messages.json +44 -0
- package/src/components/i18n/locales/ja/messages.json +44 -0
- package/src/components/i18n/locales/ka/messages.json +44 -0
- package/src/components/i18n/locales/km/messages.json +44 -0
- package/src/components/i18n/locales/kn/messages.json +44 -0
- package/src/components/i18n/locales/ko/messages.json +44 -0
- package/src/components/i18n/locales/ku/messages.json +44 -0
- package/src/components/i18n/locales/lo/messages.json +44 -0
- package/src/components/i18n/locales/lt/messages.json +44 -0
- package/src/components/i18n/locales/lv/messages.json +44 -0
- package/src/components/i18n/locales/mk/messages.json +44 -0
- package/src/components/i18n/locales/ml/messages.json +44 -0
- package/src/components/i18n/locales/mn/messages.json +44 -0
- package/src/components/i18n/locales/mr/messages.json +44 -0
- package/src/components/i18n/locales/ms/messages.json +44 -0
- package/src/components/i18n/locales/my/messages.json +44 -0
- package/src/components/i18n/locales/ne/messages.json +44 -0
- package/src/components/i18n/locales/nl/messages.json +44 -0
- package/src/components/i18n/locales/no/messages.json +44 -0
- package/src/components/i18n/locales/pa/messages.json +44 -0
- package/src/components/i18n/locales/pl/messages.json +44 -0
- package/src/components/i18n/locales/ps/messages.json +44 -0
- package/src/components/i18n/locales/pt/messages.json +44 -0
- package/src/components/i18n/locales/ro/messages.json +44 -0
- package/src/components/i18n/locales/ru/messages.json +44 -0
- package/src/components/i18n/locales/sd/messages.json +44 -0
- package/src/components/i18n/locales/si/messages.json +44 -0
- package/src/components/i18n/locales/sk/messages.json +44 -0
- package/src/components/i18n/locales/sl/messages.json +44 -0
- package/src/components/i18n/locales/sq/messages.json +44 -0
- package/src/components/i18n/locales/sr/messages.json +44 -0
- package/src/components/i18n/locales/sv/messages.json +44 -0
- package/src/components/i18n/locales/sw/messages.json +44 -0
- package/src/components/i18n/locales/ta/messages.json +44 -0
- package/src/components/i18n/locales/te/messages.json +44 -0
- package/src/components/i18n/locales/th/messages.json +44 -0
- package/src/components/i18n/locales/tr/messages.json +44 -0
- package/src/components/i18n/locales/ug/messages.json +44 -0
- package/src/components/i18n/locales/uk/messages.json +44 -0
- package/src/components/i18n/locales/ur/messages.json +44 -0
- package/src/components/i18n/locales/vi/messages.json +44 -0
- package/src/components/i18n/locales/yi/messages.json +44 -0
- package/src/components/i18n/locales/zh/messages.json +44 -0
- package/src/components/icons/index.ts +242 -0
- package/src/components/inline-tools/inline-tool-bold.ts +2213 -0
- package/src/components/inline-tools/inline-tool-convert.ts +141 -0
- package/src/components/inline-tools/inline-tool-italic.ts +500 -0
- package/src/components/inline-tools/inline-tool-link.ts +539 -0
- package/src/components/modules/api/blocks.ts +363 -0
- package/src/components/modules/api/caret.ts +125 -0
- package/src/components/modules/api/events.ts +51 -0
- package/src/components/modules/api/history.ts +73 -0
- package/src/components/modules/api/i18n.ts +33 -0
- package/src/components/modules/api/index.ts +39 -0
- package/src/components/modules/api/inlineToolbar.ts +33 -0
- package/src/components/modules/api/listeners.ts +56 -0
- package/src/components/modules/api/notifier.ts +46 -0
- package/src/components/modules/api/readonly.ts +39 -0
- package/src/components/modules/api/sanitizer.ts +30 -0
- package/src/components/modules/api/saver.ts +52 -0
- package/src/components/modules/api/selection.ts +48 -0
- package/src/components/modules/api/styles.ts +72 -0
- package/src/components/modules/api/toolbar.ts +79 -0
- package/src/components/modules/api/tools.ts +16 -0
- package/src/components/modules/api/tooltip.ts +67 -0
- package/src/components/modules/api/ui.ts +36 -0
- package/src/components/modules/blockEvents.ts +1375 -0
- package/src/components/modules/blockManager.ts +1348 -0
- package/src/components/modules/blockSelection.ts +708 -0
- package/src/components/modules/caret.ts +853 -0
- package/src/components/modules/crossBlockSelection.ts +329 -0
- package/src/components/modules/dragManager.ts +1141 -0
- package/src/components/modules/history.ts +1098 -0
- package/src/components/modules/i18n.ts +325 -0
- package/src/components/modules/index.ts +139 -0
- package/src/components/modules/modificationsObserver.ts +147 -0
- package/src/components/modules/paste.ts +1092 -0
- package/src/components/modules/readonly.ts +136 -0
- package/src/components/modules/rectangleSelection.ts +668 -0
- package/src/components/modules/renderer.ts +155 -0
- package/src/components/modules/saver.ts +283 -0
- package/src/components/modules/toolbar/blockSettings.ts +776 -0
- package/src/components/modules/toolbar/index.ts +1311 -0
- package/src/components/modules/toolbar/inline.ts +956 -0
- package/src/components/modules/tools.ts +589 -0
- package/src/components/modules/ui.ts +1179 -0
- package/src/components/polyfills.ts +113 -0
- package/src/components/selection.ts +1189 -0
- package/src/components/tools/base.ts +274 -0
- package/src/components/tools/block.ts +291 -0
- package/src/components/tools/collection.ts +67 -0
- package/src/components/tools/factory.ts +85 -0
- package/src/components/tools/inline.ts +71 -0
- package/src/components/tools/tune.ts +33 -0
- package/src/components/ui/toolbox.ts +497 -0
- package/src/components/utils/announcer.ts +205 -0
- package/src/components/utils/api.ts +20 -0
- package/src/components/utils/bem.ts +26 -0
- package/src/components/utils/blocks.ts +284 -0
- package/src/components/utils/caret.ts +1067 -0
- package/src/components/utils/data-model-transform.ts +382 -0
- package/src/components/utils/events.ts +117 -0
- package/src/components/utils/keyboard.ts +60 -0
- package/src/components/utils/listeners.ts +296 -0
- package/src/components/utils/mutations.ts +39 -0
- package/src/components/utils/notifier/draw.ts +190 -0
- package/src/components/utils/notifier/index.ts +66 -0
- package/src/components/utils/notifier/types.ts +1 -0
- package/src/components/utils/notifier.ts +77 -0
- package/src/components/utils/placeholder.ts +140 -0
- package/src/components/utils/popover/components/hint/hint.const.ts +10 -0
- package/src/components/utils/popover/components/hint/hint.ts +46 -0
- package/src/components/utils/popover/components/hint/index.ts +6 -0
- package/src/components/utils/popover/components/popover-header/index.ts +2 -0
- package/src/components/utils/popover/components/popover-header/popover-header.const.ts +8 -0
- package/src/components/utils/popover/components/popover-header/popover-header.ts +80 -0
- package/src/components/utils/popover/components/popover-header/popover-header.types.ts +14 -0
- package/src/components/utils/popover/components/popover-item/index.ts +13 -0
- package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.const.ts +50 -0
- package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.ts +666 -0
- package/src/components/utils/popover/components/popover-item/popover-item-html/popover-item-html.const.ts +14 -0
- package/src/components/utils/popover/components/popover-item/popover-item-html/popover-item-html.ts +136 -0
- package/src/components/utils/popover/components/popover-item/popover-item-separator/popover-item-separator.const.ts +20 -0
- package/src/components/utils/popover/components/popover-item/popover-item-separator/popover-item-separator.ts +117 -0
- package/src/components/utils/popover/components/popover-item/popover-item.ts +187 -0
- package/src/components/utils/popover/components/search-input/index.ts +2 -0
- package/src/components/utils/popover/components/search-input/search-input.const.ts +8 -0
- package/src/components/utils/popover/components/search-input/search-input.ts +181 -0
- package/src/components/utils/popover/components/search-input/search-input.types.ts +30 -0
- package/src/components/utils/popover/index.ts +13 -0
- package/src/components/utils/popover/popover-abstract.ts +448 -0
- package/src/components/utils/popover/popover-desktop.ts +643 -0
- package/src/components/utils/popover/popover-inline.ts +338 -0
- package/src/components/utils/popover/popover-mobile.ts +201 -0
- package/src/components/utils/popover/popover.const.ts +81 -0
- package/src/components/utils/popover/utils/popover-states-history.ts +72 -0
- package/src/components/utils/promise-queue.ts +43 -0
- package/src/components/utils/sanitizer.ts +537 -0
- package/src/components/utils/scroll-locker.ts +87 -0
- package/src/components/utils/shortcut.ts +231 -0
- package/src/components/utils/shortcuts.ts +113 -0
- package/src/components/utils/tools.ts +105 -0
- package/src/components/utils/tooltip.ts +642 -0
- package/src/components/utils/tw.ts +241 -0
- package/src/components/utils.ts +1081 -0
- package/src/env.d.ts +13 -0
- package/src/full.ts +69 -0
- package/src/locales.ts +51 -0
- package/src/stories/Block.stories.ts +498 -0
- package/src/stories/EditorModes.stories.ts +505 -0
- package/src/stories/Header.stories.ts +137 -0
- package/src/stories/InlineToolbar.stories.ts +498 -0
- package/src/stories/List.stories.ts +259 -0
- package/src/stories/Notifier.stories.ts +340 -0
- package/src/stories/Paragraph.stories.ts +112 -0
- package/src/stories/Placeholder.stories.ts +319 -0
- package/src/stories/Popover.stories.ts +844 -0
- package/src/stories/Selection.stories.ts +250 -0
- package/src/stories/StubBlock.stories.ts +156 -0
- package/src/stories/Toolbar.stories.ts +223 -0
- package/src/stories/Toolbox.stories.ts +166 -0
- package/src/stories/Tooltip.stories.ts +198 -0
- package/src/stories/helpers.ts +463 -0
- package/src/styles/main.css +123 -0
- package/src/tools/header/index.ts +570 -0
- package/src/tools/index.ts +38 -0
- package/src/tools/list/index.ts +1803 -0
- package/src/tools/paragraph/index.ts +411 -0
- package/src/tools/stub/index.ts +107 -0
- package/src/types-internal/blok-modules.d.ts +87 -0
- package/src/types-internal/html-janitor.d.ts +28 -0
- package/src/types-internal/module-config.d.ts +11 -0
- package/src/variants/all-locales.ts +155 -0
- package/src/variants/blok-maximum.ts +20 -0
- package/src/variants/blok-minimum.ts +243 -0
- package/types/api/blocks.d.ts +1 -1
- package/types/api/i18n.d.ts +5 -3
- package/types/api/selection.d.ts +6 -0
- package/types/api/styles.d.ts +0 -5
- package/types/configs/blok-config.d.ts +21 -0
- package/types/configs/i18n-config.d.ts +52 -2
- package/types/configs/i18n-dictionary.d.ts +16 -90
- package/types/data-attributes.d.ts +169 -0
- package/types/data-formats/output-data.d.ts +15 -0
- package/types/full.d.ts +80 -0
- package/types/index.d.ts +9 -24
- package/types/locales.d.ts +59 -0
- package/types/tools/adapters/inline-tool-adapter.d.ts +10 -0
- package/types/tools/block-tool.d.ts +9 -0
- package/types/tools/list.d.ts +25 -18
- package/types/tools/tool-settings.d.ts +8 -1
- package/types/tools/tool.d.ts +6 -0
- package/types/tools-entry.d.ts +49 -0
- package/types/utils/popover/popover-item.d.ts +0 -5
- package/dist/blok-BwPfU8ro.mjs +0 -21510
- package/dist/blok.umd.js +0 -198
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import { Dom } from './dom';
|
|
2
|
+
import { delay } from './utils';
|
|
3
|
+
import { SelectionUtils } from './selection';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Iterator above passed Elements list.
|
|
7
|
+
* Each next or previous action adds provides CSS-class and sets cursor to this item
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
export class DomIterator {
|
|
11
|
+
/**
|
|
12
|
+
* This is a static property that defines iteration directions
|
|
13
|
+
* @type {{RIGHT: string, LEFT: string}}
|
|
14
|
+
*/
|
|
15
|
+
public static directions = {
|
|
16
|
+
RIGHT: 'right',
|
|
17
|
+
LEFT: 'left',
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* User-provided CSS-class name for focused button
|
|
22
|
+
*/
|
|
23
|
+
private focusedCssClass: string;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Focused button index.
|
|
27
|
+
* Default is -1 which means nothing is active
|
|
28
|
+
* @type {number}
|
|
29
|
+
*/
|
|
30
|
+
private cursor = -1;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Items to flip
|
|
34
|
+
*/
|
|
35
|
+
private items: HTMLElement[] = [];
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* @param {HTMLElement[]} nodeList — the list of iterable HTML-items
|
|
39
|
+
* @param {string} focusedCssClass - user-provided CSS-class that will be set in flipping process
|
|
40
|
+
*/
|
|
41
|
+
constructor(
|
|
42
|
+
nodeList: HTMLElement[] | null | undefined,
|
|
43
|
+
focusedCssClass: string
|
|
44
|
+
) {
|
|
45
|
+
this.items = nodeList ?? [];
|
|
46
|
+
this.focusedCssClass = focusedCssClass;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Returns Focused button Node
|
|
51
|
+
* @returns {HTMLElement | null}
|
|
52
|
+
*/
|
|
53
|
+
public get currentItem(): HTMLElement | null {
|
|
54
|
+
if (this.cursor === -1) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return this.items[this.cursor];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Sets cursor to specified position
|
|
63
|
+
* @param cursorPosition - new cursor position
|
|
64
|
+
*/
|
|
65
|
+
public setCursor(cursorPosition: number): void {
|
|
66
|
+
if (cursorPosition < this.items.length && cursorPosition >= -1) {
|
|
67
|
+
this.dropCursor();
|
|
68
|
+
this.cursor = cursorPosition;
|
|
69
|
+
this.items[this.cursor].classList.add(this.focusedCssClass);
|
|
70
|
+
this.items[this.cursor].setAttribute('data-blok-focused', 'true');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Sets items. Can be used when iterable items changed dynamically
|
|
76
|
+
* @param {HTMLElement[]} nodeList - nodes to iterate
|
|
77
|
+
*/
|
|
78
|
+
public setItems(nodeList: HTMLElement[]): void {
|
|
79
|
+
this.items = nodeList;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Returns true if iterator has items to navigate
|
|
84
|
+
*/
|
|
85
|
+
public hasItems(): boolean {
|
|
86
|
+
return this.items.length > 0;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Sets cursor next to the current
|
|
91
|
+
*/
|
|
92
|
+
public next(): void {
|
|
93
|
+
this.cursor = this.leafNodesAndReturnIndex(DomIterator.directions.RIGHT);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Sets cursor before current
|
|
98
|
+
*/
|
|
99
|
+
public previous(): void {
|
|
100
|
+
this.cursor = this.leafNodesAndReturnIndex(DomIterator.directions.LEFT);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Sets cursor to the default position and removes CSS-class from previously focused item
|
|
105
|
+
*/
|
|
106
|
+
public dropCursor(): void {
|
|
107
|
+
if (this.cursor === -1) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
this.items[this.cursor].classList.remove(this.focusedCssClass);
|
|
112
|
+
this.items[this.cursor].removeAttribute('data-blok-focused');
|
|
113
|
+
this.cursor = -1;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Leafs nodes inside the target list from active element
|
|
118
|
+
* @param {string} direction - leaf direction. Can be 'left' or 'right'
|
|
119
|
+
* @returns {number} index of focused node
|
|
120
|
+
*/
|
|
121
|
+
private leafNodesAndReturnIndex(direction: string): number {
|
|
122
|
+
/**
|
|
123
|
+
* if items are empty then there is nothing to leaf
|
|
124
|
+
*/
|
|
125
|
+
if (this.items.length === 0) {
|
|
126
|
+
return this.cursor;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* If activeButtonIndex === -1 then we have no chosen Tool in Toolbox
|
|
131
|
+
* Normalize "previous" Tool index depending on direction.
|
|
132
|
+
* We need to do this to highlight "first" Tool correctly
|
|
133
|
+
*
|
|
134
|
+
* Order of Tools: [0] [1] ... [n - 1]
|
|
135
|
+
* [0 = n] because of: n % n = 0 % n
|
|
136
|
+
*
|
|
137
|
+
* Direction 'right': for [0] the [n - 1] is a previous index
|
|
138
|
+
* [n - 1] -> [0]
|
|
139
|
+
*
|
|
140
|
+
* Direction 'left': for [n - 1] the [0] is a previous index
|
|
141
|
+
* [n - 1] <- [0]
|
|
142
|
+
*/
|
|
143
|
+
const defaultIndex = direction === DomIterator.directions.RIGHT ? -1 : 0;
|
|
144
|
+
const startingIndex = this.cursor === -1 ? defaultIndex : this.cursor;
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* If we have chosen Tool then remove highlighting
|
|
148
|
+
*/
|
|
149
|
+
if (startingIndex !== -1) {
|
|
150
|
+
this.items[startingIndex].classList.remove(this.focusedCssClass);
|
|
151
|
+
this.items[startingIndex].removeAttribute('data-blok-focused');
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Count index for next Tool
|
|
156
|
+
*/
|
|
157
|
+
const focusedButtonIndex = direction === DomIterator.directions.RIGHT
|
|
158
|
+
? /**
|
|
159
|
+
* If we go right then choose next (+1) Tool
|
|
160
|
+
* @type {number}
|
|
161
|
+
*/
|
|
162
|
+
(startingIndex + 1) % this.items.length
|
|
163
|
+
: /**
|
|
164
|
+
* If we go left then choose previous (-1) Tool
|
|
165
|
+
* Before counting module we need to add length before because of "The JavaScript Modulo Bug"
|
|
166
|
+
* @type {number}
|
|
167
|
+
*/
|
|
168
|
+
(this.items.length + startingIndex - 1) % this.items.length;
|
|
169
|
+
|
|
170
|
+
if (Dom.canSetCaret(this.items[focusedButtonIndex])) {
|
|
171
|
+
/**
|
|
172
|
+
* Focus input with micro-delay to ensure DOM is updated
|
|
173
|
+
*/
|
|
174
|
+
|
|
175
|
+
delay(() => SelectionUtils.setCursor(this.items[focusedButtonIndex]), 50)();
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Highlight new chosen Tool
|
|
180
|
+
*/
|
|
181
|
+
this.items[focusedButtonIndex].classList.add(this.focusedCssClass);
|
|
182
|
+
this.items[focusedButtonIndex].setAttribute('data-blok-focused', 'true');
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Return focused button's index
|
|
186
|
+
*/
|
|
187
|
+
return focusedButtonIndex;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BlockMutationEvent } from '../../../types/events/block';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Fired when some block state has changed
|
|
5
|
+
*/
|
|
6
|
+
export const BlockChanged = 'block changed';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Payload that will be passed with the event
|
|
10
|
+
*/
|
|
11
|
+
export interface BlockChangedPayload {
|
|
12
|
+
/**
|
|
13
|
+
* CustomEvent describing a block change
|
|
14
|
+
*/
|
|
15
|
+
event: BlockMutationEvent;
|
|
16
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Block } from '../block';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Fired when some block is hovered by user
|
|
5
|
+
*/
|
|
6
|
+
export const BlockHovered = 'block hovered';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Payload that will be passed with the event
|
|
10
|
+
*/
|
|
11
|
+
export interface BlockHoveredPayload {
|
|
12
|
+
/**
|
|
13
|
+
* Hovered block
|
|
14
|
+
*/
|
|
15
|
+
block: Block;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The actual element that was hovered (could be a nested element like a list item)
|
|
19
|
+
*/
|
|
20
|
+
target?: Element;
|
|
21
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fired when block settings is closed
|
|
3
|
+
*/
|
|
4
|
+
export const BlockSettingsClosed = 'block-settings-closed';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Payload that will be passed with the event
|
|
8
|
+
*/
|
|
9
|
+
export interface BlockSettingsClosedPayload {
|
|
10
|
+
// No payload needed for this event
|
|
11
|
+
}
|
|
12
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fired when block settings is opened
|
|
3
|
+
*/
|
|
4
|
+
export const BlockSettingsOpened = 'block-settings-opened';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Payload that will be passed with the event
|
|
8
|
+
*/
|
|
9
|
+
export interface BlockSettingsOpenedPayload {
|
|
10
|
+
// No payload needed for this event
|
|
11
|
+
}
|
|
12
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fired when blok mobile layout toggled
|
|
3
|
+
*/
|
|
4
|
+
export const BlokMobileLayoutToggled = 'blok mobile layout toggled';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Payload that will be passed with the event
|
|
8
|
+
*/
|
|
9
|
+
export interface BlokMobileLayoutToggledPayload {
|
|
10
|
+
/**
|
|
11
|
+
* True, if mobile layout enabled
|
|
12
|
+
*/
|
|
13
|
+
isEnabled: boolean;
|
|
14
|
+
}
|
|
15
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fired before we're adding/removing a fake cursor.
|
|
3
|
+
*
|
|
4
|
+
* Allows to disable mutation observer to skip this block change
|
|
5
|
+
*/
|
|
6
|
+
export const FakeCursorAboutToBeToggled = 'fake cursor is about to be toggled';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Payload that will be passed with the event
|
|
10
|
+
*/
|
|
11
|
+
export interface FakeCursorAboutToBeToggledPayload {
|
|
12
|
+
/**
|
|
13
|
+
* true - when added a cursor
|
|
14
|
+
* false - when removed
|
|
15
|
+
*/
|
|
16
|
+
state: boolean;
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fired after we've added/removed a fake cursor.
|
|
3
|
+
*
|
|
4
|
+
* Allows to enable mutation observer which was disabled before setting
|
|
5
|
+
*/
|
|
6
|
+
export const FakeCursorHaveBeenSet = 'fake cursor have been set';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Payload that will be passed with the event
|
|
10
|
+
*/
|
|
11
|
+
export interface FakeCursorHaveBeenSetPayload {
|
|
12
|
+
/**
|
|
13
|
+
* true - when added a cursor
|
|
14
|
+
* false - when removed
|
|
15
|
+
*/
|
|
16
|
+
state: boolean;
|
|
17
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event name for history state changes
|
|
3
|
+
*/
|
|
4
|
+
export const HistoryStateChanged = 'history:state-changed';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Payload for history state change event
|
|
8
|
+
*/
|
|
9
|
+
export interface HistoryStateChangedPayload {
|
|
10
|
+
/**
|
|
11
|
+
* Whether undo action is available
|
|
12
|
+
*/
|
|
13
|
+
canUndo: boolean;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Whether redo action is available
|
|
17
|
+
*/
|
|
18
|
+
canRedo: boolean;
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fired when blocks wrapper dom changed
|
|
3
|
+
*/
|
|
4
|
+
export const RedactorDomChanged = 'redactor dom changed';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Payload that will be passed with the event
|
|
8
|
+
*/
|
|
9
|
+
export interface RedactorDomChangedPayload {
|
|
10
|
+
/**
|
|
11
|
+
* Mutations happened with blocks wrapper
|
|
12
|
+
*/
|
|
13
|
+
mutations: MutationRecord[];
|
|
14
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { RedactorDomChangedPayload } from './RedactorDomChanged';
|
|
2
|
+
import { RedactorDomChanged } from './RedactorDomChanged';
|
|
3
|
+
import type { BlockChangedPayload } from './BlockChanged';
|
|
4
|
+
import { BlockChanged } from './BlockChanged';
|
|
5
|
+
import type { BlockHovered, BlockHoveredPayload } from './BlockHovered';
|
|
6
|
+
import type { FakeCursorAboutToBeToggledPayload } from './FakeCursorAboutToBeToggled';
|
|
7
|
+
import { FakeCursorAboutToBeToggled } from './FakeCursorAboutToBeToggled';
|
|
8
|
+
import type { FakeCursorHaveBeenSetPayload } from './FakeCursorHaveBeenSet';
|
|
9
|
+
import { FakeCursorHaveBeenSet } from './FakeCursorHaveBeenSet';
|
|
10
|
+
import type { BlokMobileLayoutToggledPayload } from './BlokMobileLayoutToggled';
|
|
11
|
+
import { BlokMobileLayoutToggled } from './BlokMobileLayoutToggled';
|
|
12
|
+
import type { BlockSettingsOpenedPayload } from './BlockSettingsOpened';
|
|
13
|
+
import { BlockSettingsOpened } from './BlockSettingsOpened';
|
|
14
|
+
import type { BlockSettingsClosedPayload } from './BlockSettingsClosed';
|
|
15
|
+
import { BlockSettingsClosed } from './BlockSettingsClosed';
|
|
16
|
+
import type { HistoryStateChangedPayload } from './HistoryStateChanged';
|
|
17
|
+
import { HistoryStateChanged } from './HistoryStateChanged';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Events fired by Blok Event Dispatcher
|
|
21
|
+
*/
|
|
22
|
+
export {
|
|
23
|
+
RedactorDomChanged,
|
|
24
|
+
BlockChanged,
|
|
25
|
+
FakeCursorAboutToBeToggled,
|
|
26
|
+
FakeCursorHaveBeenSet,
|
|
27
|
+
BlokMobileLayoutToggled,
|
|
28
|
+
BlockSettingsOpened,
|
|
29
|
+
BlockSettingsClosed,
|
|
30
|
+
HistoryStateChanged
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Event name -> Event payload
|
|
35
|
+
*/
|
|
36
|
+
export interface BlokEventMap {
|
|
37
|
+
[BlockHovered]: BlockHoveredPayload;
|
|
38
|
+
[RedactorDomChanged]: RedactorDomChangedPayload;
|
|
39
|
+
[BlockChanged]: BlockChangedPayload;
|
|
40
|
+
[FakeCursorAboutToBeToggled]: FakeCursorAboutToBeToggledPayload;
|
|
41
|
+
[FakeCursorHaveBeenSet]: FakeCursorHaveBeenSetPayload;
|
|
42
|
+
[BlokMobileLayoutToggled]: BlokMobileLayoutToggledPayload;
|
|
43
|
+
[BlockSettingsOpened]: BlockSettingsOpenedPayload;
|
|
44
|
+
[BlockSettingsClosed]: BlockSettingsClosedPayload;
|
|
45
|
+
[HistoryStateChanged]: HistoryStateChangedPayload;
|
|
46
|
+
}
|