@jackuait/blok 0.7.0-beta.3 → 0.7.0
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/dist/blok.mjs +3 -7
- package/dist/chunks/blok-Ufr5cPq-.mjs +12435 -0
- package/dist/chunks/constants-DT17zmu_.mjs +2934 -0
- package/dist/chunks/i18next-DymC16cN.mjs +1146 -0
- package/dist/chunks/i18next-loader-qjweOJ-t.mjs +35 -0
- package/dist/chunks/lightweight-i18n-vbtPx5C4.mjs +105 -0
- package/dist/chunks/messages-3bOAVT3X2.mjs +80 -0
- package/dist/chunks/messages-43N0Vfg42.mjs +80 -0
- package/dist/chunks/messages-B0cg-ThO2.mjs +80 -0
- package/dist/chunks/messages-B3StvafX.mjs +80 -0
- package/dist/chunks/messages-B7LU-b6n2.mjs +80 -0
- package/dist/chunks/messages-B87-89os.mjs +80 -0
- package/dist/chunks/messages-BFiMCfDX2.mjs +80 -0
- package/dist/chunks/messages-BLxyso1L.mjs +80 -0
- package/dist/chunks/messages-BQZtOYxr2.mjs +80 -0
- package/dist/chunks/messages-BRrtoRdw2.mjs +80 -0
- package/dist/chunks/messages-BU_YdaAf.mjs +80 -0
- package/dist/chunks/messages-BWbZYIs12.mjs +80 -0
- package/dist/chunks/messages-B_Qcy8kr2.mjs +80 -0
- package/dist/chunks/messages-B_uTiuQ-.mjs +80 -0
- package/dist/chunks/messages-BdWTM73p.mjs +80 -0
- package/dist/chunks/messages-BhZcNoIQ.mjs +80 -0
- package/dist/chunks/messages-Bn6LwI4B.mjs +80 -0
- package/dist/chunks/messages-BoTtYEct2.mjs +80 -0
- package/dist/chunks/messages-BrvAiuWT.mjs +80 -0
- package/dist/chunks/messages-Byp0YFMg.mjs +80 -0
- package/dist/chunks/messages-C0ZWDShx2.mjs +80 -0
- package/dist/chunks/messages-CA-jms9R.mjs +80 -0
- package/dist/chunks/messages-CFr0Ha6p2.mjs +80 -0
- package/dist/chunks/messages-CG2xl0IV.mjs +80 -0
- package/dist/chunks/messages-CIGX0FfW.mjs +80 -0
- package/dist/chunks/messages-CRMdL0jG.mjs +80 -0
- package/dist/chunks/messages-CRdl14uE.mjs +80 -0
- package/dist/chunks/messages-Cimsel4e.mjs +80 -0
- package/dist/chunks/messages-CjcSWeud.mjs +80 -0
- package/dist/chunks/messages-ClDJuy8K2.mjs +80 -0
- package/dist/chunks/messages-Cn1AC0Qk.mjs +80 -0
- package/dist/chunks/messages-CpnXbVOK2.mjs +80 -0
- package/dist/chunks/messages-CqsES1wk2.mjs +80 -0
- package/dist/chunks/messages-Csq7JatN.mjs +80 -0
- package/dist/chunks/messages-CtufKbaD.mjs +80 -0
- package/dist/chunks/messages-Cuk0QaLM.mjs +80 -0
- package/dist/chunks/messages-CvamFN6x.mjs +80 -0
- package/dist/chunks/messages-CwRhVVui.mjs +80 -0
- package/dist/chunks/messages-CzCezryo.mjs +80 -0
- package/dist/chunks/messages-D0v0Xa_i2.mjs +80 -0
- package/dist/chunks/messages-D3JVx_CH2.mjs +80 -0
- package/dist/chunks/messages-D4jR5Oc-.mjs +80 -0
- package/dist/chunks/messages-D7fI9Pj52.mjs +80 -0
- package/dist/chunks/messages-DGodJU2R.mjs +80 -0
- package/dist/chunks/messages-DLrmLkco2.mjs +80 -0
- package/dist/chunks/messages-DPe7kW6J.mjs +80 -0
- package/dist/chunks/messages-DRYKKPk8.mjs +80 -0
- package/dist/chunks/messages-DV5c_ZRQ.mjs +80 -0
- package/dist/chunks/messages-Dg6kSnxq.mjs +80 -0
- package/dist/chunks/messages-Dgfbmyf-.mjs +80 -0
- package/dist/chunks/messages-DihczS7L.mjs +80 -0
- package/dist/chunks/messages-DkSwQvmi2.mjs +80 -0
- package/dist/chunks/messages-Doxcj7Qy.mjs +80 -0
- package/dist/chunks/messages-DqGQvcXv2.mjs +80 -0
- package/dist/chunks/messages-Dr7yA3xM.mjs +80 -0
- package/dist/chunks/messages-DriB5lEF.mjs +80 -0
- package/dist/chunks/messages-FB_MePlt.mjs +80 -0
- package/dist/chunks/messages-JyZvGvrN.mjs +80 -0
- package/dist/chunks/messages-KdvbGwLH.mjs +80 -0
- package/dist/chunks/messages-M0HT-kBW.mjs +80 -0
- package/dist/chunks/messages-M8noQ6Kp2.mjs +80 -0
- package/dist/chunks/messages-elZUbCrN.mjs +80 -0
- package/dist/chunks/messages-iWMOMK822.mjs +80 -0
- package/dist/chunks/messages-kC92TJI72.mjs +80 -0
- package/dist/chunks/messages-tfyq1JIh2.mjs +80 -0
- package/dist/chunks/messages-v1HkA3kF2.mjs +80 -0
- package/dist/chunks/messages-yuqArCc6.mjs +80 -0
- package/dist/chunks/notifier-BqYxvxnV.mjs +96 -0
- package/dist/chunks/objectSpread2-CyPxu8-u.mjs +62 -0
- package/dist/chunks/tools-CJIETS-H.mjs +6004 -0
- package/dist/chunks/tw-DmW6-pCY.mjs +237 -0
- package/dist/cli.mjs +36 -49
- package/dist/full.mjs +26 -52
- package/dist/locales.mjs +181 -254
- package/dist/messages-2iHnlF0U.mjs +80 -0
- package/dist/messages-49ZJ_ISf.mjs +80 -0
- package/dist/messages-B8jjwMLK.mjs +80 -0
- package/dist/messages-BEDVb3ZX.mjs +80 -0
- package/dist/messages-BEEr6Vh82.mjs +80 -0
- package/dist/messages-BFT0F9pw.mjs +80 -0
- package/dist/messages-BHOI7R4K.mjs +80 -0
- package/dist/messages-BRPH_a6a.mjs +80 -0
- package/dist/messages-BSlQrYwp.mjs +80 -0
- package/dist/messages-BTNuOkhL.mjs +80 -0
- package/dist/messages-BX2KVzJp2.mjs +80 -0
- package/dist/messages-BaGwIHPb2.mjs +80 -0
- package/dist/messages-BdA_xvxj.mjs +80 -0
- package/dist/messages-BeJaje7e2.mjs +80 -0
- package/dist/messages-BfgHOkAy.mjs +80 -0
- package/dist/messages-BflWzIcP2.mjs +80 -0
- package/dist/messages-BigRnQS92.mjs +80 -0
- package/dist/messages-BjnJajTO2.mjs +80 -0
- package/dist/messages-BpA30dPf.mjs +80 -0
- package/dist/messages-BrPEPj382.mjs +80 -0
- package/dist/messages-Bt_9ptDu.mjs +80 -0
- package/dist/messages-C0cXOCHN2.mjs +80 -0
- package/dist/messages-C3tLCwJp2.mjs +80 -0
- package/dist/messages-C45IBZtA2.mjs +80 -0
- package/dist/messages-CA0hwajz.mjs +80 -0
- package/dist/messages-CCKZS2f4.mjs +80 -0
- package/dist/messages-CCm71gq3.mjs +80 -0
- package/dist/messages-CERs9LC9.mjs +80 -0
- package/dist/messages-CLQvtc_8.mjs +80 -0
- package/dist/messages-CPx1R-PH.mjs +80 -0
- package/dist/messages-CYFdbooL2.mjs +80 -0
- package/dist/messages-CYLYnOV82.mjs +80 -0
- package/dist/messages-CYZVFnaF.mjs +80 -0
- package/dist/messages-CaAdEXoh2.mjs +80 -0
- package/dist/messages-CicggErN2.mjs +80 -0
- package/dist/messages-CkAWTSc4.mjs +80 -0
- package/dist/messages-CkVfziK_2.mjs +80 -0
- package/dist/messages-CsM2iz1H2.mjs +80 -0
- package/dist/messages-D-12TeCM2.mjs +80 -0
- package/dist/messages-D0i5Vdyy2.mjs +80 -0
- package/dist/messages-D5KmRsUV2.mjs +80 -0
- package/dist/messages-DBwaWI0X.mjs +80 -0
- package/dist/messages-DDGzypb4.mjs +80 -0
- package/dist/messages-DQGzw4IC.mjs +80 -0
- package/dist/messages-DWZyaZNA.mjs +80 -0
- package/dist/messages-DYlxQEIv.mjs +80 -0
- package/dist/messages-DZo0x7Bd.mjs +80 -0
- package/dist/messages-Dc1yFFBM.mjs +80 -0
- package/dist/messages-DdUpYaJ1.mjs +80 -0
- package/dist/messages-DgstU8GH.mjs +80 -0
- package/dist/messages-DhdWq5oQ2.mjs +80 -0
- package/dist/messages-DmX52AQr.mjs +80 -0
- package/dist/messages-Dr-YJYIK2.mjs +80 -0
- package/dist/messages-DuubRyFf.mjs +80 -0
- package/dist/messages-DvTVsLOK2.mjs +80 -0
- package/dist/messages-DwPfgL_u.mjs +80 -0
- package/dist/messages-DxKIxLKw.mjs +80 -0
- package/dist/messages-DzhR8Klk.mjs +80 -0
- package/dist/messages-MBBSKGjJ2.mjs +80 -0
- package/dist/messages-RNusm48G2.mjs +80 -0
- package/dist/messages-XwPD18Kk.mjs +80 -0
- package/dist/messages-YfjdnhUF.mjs +80 -0
- package/dist/messages-aNMLsF8T2.mjs +80 -0
- package/dist/messages-cOqXp22e.mjs +80 -0
- package/dist/messages-g58itYPI.mjs +80 -0
- package/dist/messages-vfkwiKQo.mjs +80 -0
- package/dist/messages-vssmW7KO.mjs +80 -0
- package/dist/react.mjs +108 -0
- package/dist/tools.mjs +3 -7462
- package/dist/vendor.LICENSE.txt +86 -86
- package/package.json +56 -29
- package/src/blok.ts +52 -2
- package/src/components/block/api.ts +8 -0
- package/src/components/block/mutation-handler.ts +29 -4
- package/src/components/block/style-manager.ts +1 -1
- package/src/components/block-tunes/block-tune-width.ts +39 -0
- package/src/components/blocks.ts +56 -2
- package/src/components/core.ts +1 -0
- package/src/components/i18n/locales/am/messages.json +6 -1
- package/src/components/i18n/locales/ar/messages.json +6 -1
- package/src/components/i18n/locales/az/messages.json +6 -1
- package/src/components/i18n/locales/bg/messages.json +8 -3
- package/src/components/i18n/locales/bn/messages.json +6 -1
- package/src/components/i18n/locales/bs/messages.json +6 -1
- package/src/components/i18n/locales/cs/messages.json +6 -1
- package/src/components/i18n/locales/da/messages.json +6 -1
- package/src/components/i18n/locales/de/messages.json +8 -3
- package/src/components/i18n/locales/dv/messages.json +6 -1
- package/src/components/i18n/locales/el/messages.json +8 -3
- package/src/components/i18n/locales/en/messages.json +5 -0
- package/src/components/i18n/locales/es/messages.json +6 -1
- package/src/components/i18n/locales/et/messages.json +6 -1
- package/src/components/i18n/locales/fa/messages.json +8 -3
- package/src/components/i18n/locales/fi/messages.json +6 -1
- package/src/components/i18n/locales/fil/messages.json +21 -16
- package/src/components/i18n/locales/fr/messages.json +6 -1
- package/src/components/i18n/locales/gu/messages.json +6 -1
- package/src/components/i18n/locales/he/messages.json +6 -1
- package/src/components/i18n/locales/hi/messages.json +6 -1
- package/src/components/i18n/locales/hr/messages.json +6 -1
- package/src/components/i18n/locales/hu/messages.json +6 -1
- package/src/components/i18n/locales/hy/messages.json +8 -3
- package/src/components/i18n/locales/id/messages.json +12 -7
- package/src/components/i18n/locales/it/messages.json +6 -1
- package/src/components/i18n/locales/ja/messages.json +6 -1
- package/src/components/i18n/locales/ka/messages.json +6 -1
- package/src/components/i18n/locales/km/messages.json +6 -1
- package/src/components/i18n/locales/kn/messages.json +6 -1
- package/src/components/i18n/locales/ko/messages.json +6 -1
- package/src/components/i18n/locales/ku/messages.json +7 -2
- package/src/components/i18n/locales/lo/messages.json +7 -2
- package/src/components/i18n/locales/lt/messages.json +6 -1
- package/src/components/i18n/locales/lv/messages.json +6 -1
- package/src/components/i18n/locales/mk/messages.json +6 -1
- package/src/components/i18n/locales/ml/messages.json +6 -1
- package/src/components/i18n/locales/mn/messages.json +6 -1
- package/src/components/i18n/locales/mr/messages.json +6 -1
- package/src/components/i18n/locales/ms/messages.json +6 -1
- package/src/components/i18n/locales/my/messages.json +6 -1
- package/src/components/i18n/locales/ne/messages.json +9 -4
- package/src/components/i18n/locales/nl/messages.json +6 -1
- package/src/components/i18n/locales/no/messages.json +6 -1
- package/src/components/i18n/locales/pa/messages.json +6 -1
- package/src/components/i18n/locales/pl/messages.json +6 -1
- package/src/components/i18n/locales/ps/messages.json +8 -3
- package/src/components/i18n/locales/pt/messages.json +6 -1
- package/src/components/i18n/locales/ro/messages.json +6 -1
- package/src/components/i18n/locales/ru/messages.json +10 -5
- package/src/components/i18n/locales/sd/messages.json +6 -1
- package/src/components/i18n/locales/si/messages.json +6 -1
- package/src/components/i18n/locales/sk/messages.json +6 -1
- package/src/components/i18n/locales/sl/messages.json +6 -1
- package/src/components/i18n/locales/sq/messages.json +6 -1
- package/src/components/i18n/locales/sr/messages.json +6 -1
- package/src/components/i18n/locales/sv/messages.json +6 -1
- package/src/components/i18n/locales/sw/messages.json +6 -1
- package/src/components/i18n/locales/ta/messages.json +6 -1
- package/src/components/i18n/locales/te/messages.json +9 -4
- package/src/components/i18n/locales/th/messages.json +6 -1
- package/src/components/i18n/locales/tr/messages.json +6 -1
- package/src/components/i18n/locales/ug/messages.json +7 -2
- package/src/components/i18n/locales/uk/messages.json +6 -1
- package/src/components/i18n/locales/ur/messages.json +6 -1
- package/src/components/i18n/locales/vi/messages.json +6 -1
- package/src/components/i18n/locales/yi/messages.json +7 -2
- package/src/components/i18n/locales/zh/messages.json +6 -1
- package/src/components/icons/index.ts +16 -0
- package/src/components/inline-tools/inline-tool-link.ts +1 -1
- package/src/components/modules/api/blocks.ts +45 -2
- package/src/components/modules/api/index.ts +1 -0
- package/src/components/modules/api/width.ts +17 -0
- package/src/components/modules/blockEvents/composers/keyboardNavigation.ts +99 -0
- package/src/components/modules/blockEvents/composers/markdownShortcuts.ts +109 -2
- package/src/components/modules/blockEvents/constants.ts +7 -0
- package/src/components/modules/blockManager/blockManager.ts +113 -9
- package/src/components/modules/blockManager/hierarchy.ts +61 -0
- package/src/components/modules/blockManager/operations.ts +161 -16
- package/src/components/modules/blockManager/yjs-sync.ts +112 -4
- package/src/components/modules/blockSelection.ts +36 -2
- package/src/components/modules/crossBlockSelection.ts +22 -2
- package/src/components/modules/drag/DragController.ts +178 -4
- package/src/components/modules/drag/operations/DragOperations.ts +48 -9
- package/src/components/modules/drag/preview/DragPreview.ts +21 -1
- package/src/components/modules/drag/state/DragStateMachine.ts +6 -1
- package/src/components/modules/drag/target/DropTargetDetector.ts +80 -4
- package/src/components/modules/drag/utils/ToggleSpringLoader.ts +71 -0
- package/src/components/modules/index.ts +7 -1
- package/src/components/modules/modificationsObserver.ts +19 -0
- package/src/components/modules/paste/constants.ts +2 -0
- package/src/components/modules/paste/handlers/base.ts +33 -1
- package/src/components/modules/paste/handlers/html-handler.ts +121 -54
- package/src/components/modules/paste/index.ts +5 -0
- package/src/components/modules/paste/types.ts +5 -0
- package/src/components/modules/rectangleSelection.ts +74 -81
- package/src/components/modules/toolbar/blockSettings.ts +25 -7
- package/src/components/modules/toolbar/index.ts +9 -7
- package/src/components/modules/toolbar/inline/index.ts +6 -1
- package/src/components/modules/toolbar/plus-button.ts +2 -6
- package/src/components/modules/toolbar/positioning.ts +10 -1
- package/src/components/modules/toolbar/settings-toggler.ts +1 -1
- package/src/components/modules/toolbar/styles.ts +3 -7
- package/src/components/modules/ui.ts +59 -5
- package/src/components/modules/uiControllers/handlers/click.ts +3 -2
- package/src/components/modules/widthManager.ts +69 -0
- package/src/components/modules/yjs/document-store.ts +11 -0
- package/src/components/modules/yjs/index.ts +11 -0
- package/src/components/shared/color-picker.ts +3 -3
- package/src/components/tools/block.ts +1 -11
- package/src/components/ui/toolbox.ts +52 -8
- package/src/components/utils/blocks.ts +37 -7
- package/src/components/utils/mutations.ts +2 -2
- package/src/components/utils/notifier/draw.ts +1 -1
- package/src/components/utils/placeholder.ts +5 -6
- package/src/components/utils/popover/components/popover-header/popover-header.const.ts +1 -1
- package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.const.ts +4 -4
- package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.ts +6 -6
- package/src/components/utils/popover/components/popover-item/popover-item-separator/popover-item-separator.const.ts +2 -2
- package/src/components/utils/popover/components/search-input/search-input.const.ts +2 -2
- package/src/components/utils/popover/components/search-input/search-input.ts +7 -11
- package/src/components/utils/popover/components/search-input/search-input.types.ts +149 -10
- package/src/components/utils/popover/popover-abstract.ts +3 -2
- package/src/components/utils/popover/popover-desktop.ts +133 -11
- package/src/components/utils/popover/popover-inline.ts +1 -1
- package/src/components/utils/popover/popover.const.ts +3 -3
- package/src/components/utils/shortcut.ts +2 -0
- package/src/components/utils/tooltip.ts +11 -1
- package/src/react/BlokContent.tsx +46 -0
- package/src/react/holder-map.ts +17 -0
- package/src/react/index.ts +3 -0
- package/src/react/types.ts +16 -0
- package/src/react/useBlok.ts +173 -0
- package/src/stories/Placeholder.stories.ts +0 -59
- package/src/styles/main.css +663 -52
- package/src/tools/header/header-toggle-keyboard.ts +115 -0
- package/src/tools/header/index.ts +382 -187
- package/src/tools/list/block-operations.ts +1 -1
- package/src/tools/list/caret-manager.ts +9 -12
- package/src/tools/list/index.ts +2 -6
- package/src/tools/list/list-keyboard.ts +2 -2
- package/src/tools/paragraph/index.ts +1 -1
- package/src/tools/table/index.ts +75 -3
- package/src/tools/table/table-add-controls.ts +97 -8
- package/src/tools/table/table-cell-blocks.ts +17 -8
- package/src/tools/table/table-cell-clipboard.ts +1 -1
- package/src/tools/table/table-cell-selection.ts +27 -2
- package/src/tools/table/table-operations.ts +3 -2
- package/src/tools/toggle/block-operations.ts +4 -2
- package/src/tools/toggle/constants.ts +26 -2
- package/src/tools/toggle/dom-builder.ts +90 -25
- package/src/tools/toggle/index.ts +112 -9
- package/src/tools/toggle/toggle-keyboard.ts +5 -3
- package/src/tools/toggle/toggle-lifecycle.ts +79 -7
- package/src/tools/toggle/toggle-shortcuts.ts +214 -20
- package/src/tools/toggle/types.ts +2 -0
- package/src/types-internal/blok-modules.d.ts +4 -0
- package/types/api/block.d.ts +5 -0
- package/types/api/blocks.d.ts +29 -0
- package/types/api/index.d.ts +1 -0
- package/types/api/width.d.ts +19 -0
- package/types/configs/blok-config.d.ts +33 -0
- package/types/index.d.ts +4 -0
- package/types/react.d.ts +58 -0
- package/types/utils/popover/popover.d.ts +7 -0
- package/dist/chunks/blok-BlyYiZTm.mjs +0 -20098
- package/dist/chunks/constants-DEy4jBO5.mjs +0 -5123
- package/dist/chunks/i18next-B47TKgbU.mjs +0 -1303
- package/dist/chunks/i18next-loader-Cfbv-x6v.mjs +0 -43
- package/dist/chunks/index-Cu1w-sLZ.mjs +0 -130
- package/dist/chunks/messages-0Pxnqd4N.mjs +0 -75
- package/dist/chunks/messages-0ZXYUq7S.mjs +0 -75
- package/dist/chunks/messages-2OD2uUDS.mjs +0 -75
- package/dist/chunks/messages-7cEMfYzh.mjs +0 -75
- package/dist/chunks/messages-8mwfda1Q.mjs +0 -75
- package/dist/chunks/messages-B-FqWsBM.mjs +0 -75
- package/dist/chunks/messages-B1jzqWiQ.mjs +0 -75
- package/dist/chunks/messages-B5wk4Ezz.mjs +0 -75
- package/dist/chunks/messages-BAZ5Ld8x.mjs +0 -75
- package/dist/chunks/messages-BBhGp198.mjs +0 -75
- package/dist/chunks/messages-BC9IjIb7.mjs +0 -75
- package/dist/chunks/messages-BFEmpeV-.mjs +0 -75
- package/dist/chunks/messages-BGqzTZy0.mjs +0 -75
- package/dist/chunks/messages-BICs1abK.mjs +0 -75
- package/dist/chunks/messages-BJX6rOnd.mjs +0 -75
- package/dist/chunks/messages-BL2bXRhN.mjs +0 -75
- package/dist/chunks/messages-BMs5qdlH.mjs +0 -75
- package/dist/chunks/messages-BRsjUNwB.mjs +0 -75
- package/dist/chunks/messages-BSqV8OUR.mjs +0 -75
- package/dist/chunks/messages-BTqu3DfG.mjs +0 -75
- package/dist/chunks/messages-BXnDEsur.mjs +0 -75
- package/dist/chunks/messages-BYcre4-6.mjs +0 -75
- package/dist/chunks/messages-BZ9LRJf-.mjs +0 -75
- package/dist/chunks/messages-BgypBy7y.mjs +0 -75
- package/dist/chunks/messages-BsuGf70G.mjs +0 -75
- package/dist/chunks/messages-BwaoF4lQ.mjs +0 -75
- package/dist/chunks/messages-C1l8_7-y.mjs +0 -75
- package/dist/chunks/messages-C5NA_r9v.mjs +0 -75
- package/dist/chunks/messages-C6zgZ5pA.mjs +0 -75
- package/dist/chunks/messages-CAo5ghFI.mjs +0 -75
- package/dist/chunks/messages-CH9qlJ9I.mjs +0 -75
- package/dist/chunks/messages-CI0HqAeS.mjs +0 -75
- package/dist/chunks/messages-CJJtms9k.mjs +0 -75
- package/dist/chunks/messages-CM2hJqk6.mjs +0 -75
- package/dist/chunks/messages-CRMiDPIQ.mjs +0 -75
- package/dist/chunks/messages-CWsZuBj1.mjs +0 -75
- package/dist/chunks/messages-C_gLHo6A.mjs +0 -75
- package/dist/chunks/messages-Cbu-NUDn.mjs +0 -75
- package/dist/chunks/messages-Cjb_MCeh.mjs +0 -75
- package/dist/chunks/messages-ClXYO9Wn.mjs +0 -75
- package/dist/chunks/messages-CsH20vhP.mjs +0 -75
- package/dist/chunks/messages-CsjAGhzA.mjs +0 -75
- package/dist/chunks/messages-Cx7VKFOE.mjs +0 -75
- package/dist/chunks/messages-D3JeBwxo.mjs +0 -75
- package/dist/chunks/messages-D541fieJ.mjs +0 -75
- package/dist/chunks/messages-D7XPdglc.mjs +0 -75
- package/dist/chunks/messages-DBhylfvt.mjs +0 -75
- package/dist/chunks/messages-DCA120lW.mjs +0 -75
- package/dist/chunks/messages-DCf_xZMN.mjs +0 -75
- package/dist/chunks/messages-DDwXKCpe.mjs +0 -75
- package/dist/chunks/messages-DNKDlxcy.mjs +0 -75
- package/dist/chunks/messages-DPvEjrGK.mjs +0 -75
- package/dist/chunks/messages-DQ-AkNxA.mjs +0 -75
- package/dist/chunks/messages-DVuvkNap.mjs +0 -75
- package/dist/chunks/messages-DaglyqUT.mjs +0 -75
- package/dist/chunks/messages-Di0bAfwA.mjs +0 -75
- package/dist/chunks/messages-DuLct0Yr.mjs +0 -75
- package/dist/chunks/messages-DzEYYhZh.mjs +0 -75
- package/dist/chunks/messages-DznNGAB2.mjs +0 -75
- package/dist/chunks/messages-DzoIzyu8.mjs +0 -75
- package/dist/chunks/messages-QYOGmket.mjs +0 -75
- package/dist/chunks/messages-cEjGDAgI.mjs +0 -75
- package/dist/chunks/messages-ddhvrdpE.mjs +0 -75
- package/dist/chunks/messages-mwfNK5nZ.mjs +0 -75
- package/dist/chunks/messages-nG_vNDte.mjs +0 -75
- package/dist/chunks/messages-tDq3Owh7.mjs +0 -75
- package/dist/chunks/messages-x6VJVZKx.mjs +0 -75
- package/dist/messages-0Pxnqd4N.mjs +0 -75
- package/dist/messages-0ZXYUq7S.mjs +0 -75
- package/dist/messages-2OD2uUDS.mjs +0 -75
- package/dist/messages-7cEMfYzh.mjs +0 -75
- package/dist/messages-8mwfda1Q.mjs +0 -75
- package/dist/messages-B-FqWsBM.mjs +0 -75
- package/dist/messages-B1jzqWiQ.mjs +0 -75
- package/dist/messages-B5wk4Ezz.mjs +0 -75
- package/dist/messages-BAZ5Ld8x.mjs +0 -75
- package/dist/messages-BBhGp198.mjs +0 -75
- package/dist/messages-BC9IjIb7.mjs +0 -75
- package/dist/messages-BFEmpeV-.mjs +0 -75
- package/dist/messages-BGqzTZy0.mjs +0 -75
- package/dist/messages-BICs1abK.mjs +0 -75
- package/dist/messages-BJX6rOnd.mjs +0 -75
- package/dist/messages-BL2bXRhN.mjs +0 -75
- package/dist/messages-BMs5qdlH.mjs +0 -75
- package/dist/messages-BRsjUNwB.mjs +0 -75
- package/dist/messages-BSqV8OUR.mjs +0 -75
- package/dist/messages-BTqu3DfG.mjs +0 -75
- package/dist/messages-BXnDEsur.mjs +0 -75
- package/dist/messages-BYcre4-6.mjs +0 -75
- package/dist/messages-BZ9LRJf-.mjs +0 -75
- package/dist/messages-BgypBy7y.mjs +0 -75
- package/dist/messages-BsuGf70G.mjs +0 -75
- package/dist/messages-BwaoF4lQ.mjs +0 -75
- package/dist/messages-C1l8_7-y.mjs +0 -75
- package/dist/messages-C5NA_r9v.mjs +0 -75
- package/dist/messages-C6zgZ5pA.mjs +0 -75
- package/dist/messages-CAo5ghFI.mjs +0 -75
- package/dist/messages-CH9qlJ9I.mjs +0 -75
- package/dist/messages-CI0HqAeS.mjs +0 -75
- package/dist/messages-CJJtms9k.mjs +0 -75
- package/dist/messages-CM2hJqk6.mjs +0 -75
- package/dist/messages-CRMiDPIQ.mjs +0 -75
- package/dist/messages-CWsZuBj1.mjs +0 -75
- package/dist/messages-C_gLHo6A.mjs +0 -75
- package/dist/messages-Cbu-NUDn.mjs +0 -75
- package/dist/messages-Cjb_MCeh.mjs +0 -75
- package/dist/messages-ClXYO9Wn.mjs +0 -75
- package/dist/messages-CsH20vhP.mjs +0 -75
- package/dist/messages-CsjAGhzA.mjs +0 -75
- package/dist/messages-Cx7VKFOE.mjs +0 -75
- package/dist/messages-D3JeBwxo.mjs +0 -75
- package/dist/messages-D541fieJ.mjs +0 -75
- package/dist/messages-D7XPdglc.mjs +0 -75
- package/dist/messages-DBhylfvt.mjs +0 -75
- package/dist/messages-DCA120lW.mjs +0 -75
- package/dist/messages-DCf_xZMN.mjs +0 -75
- package/dist/messages-DDwXKCpe.mjs +0 -75
- package/dist/messages-DNKDlxcy.mjs +0 -75
- package/dist/messages-DPvEjrGK.mjs +0 -75
- package/dist/messages-DQ-AkNxA.mjs +0 -75
- package/dist/messages-DVuvkNap.mjs +0 -75
- package/dist/messages-DaglyqUT.mjs +0 -75
- package/dist/messages-Di0bAfwA.mjs +0 -75
- package/dist/messages-DuLct0Yr.mjs +0 -75
- package/dist/messages-DzEYYhZh.mjs +0 -75
- package/dist/messages-DznNGAB2.mjs +0 -75
- package/dist/messages-DzoIzyu8.mjs +0 -75
- package/dist/messages-QYOGmket.mjs +0 -75
- package/dist/messages-cEjGDAgI.mjs +0 -75
- package/dist/messages-ddhvrdpE.mjs +0 -75
- package/dist/messages-mwfNK5nZ.mjs +0 -75
- package/dist/messages-nG_vNDte.mjs +0 -75
- package/dist/messages-tDq3Owh7.mjs +0 -75
- package/dist/messages-x6VJVZKx.mjs +0 -75
|
@@ -1,22 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Toggle Shortcuts - Manages
|
|
2
|
+
* Toggle Shortcuts - Manages keyboard shortcuts for toggle blocks.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* CMD+ALT+T: Collapse/expand all toggle blocks on the page.
|
|
5
|
+
* CMD+SHIFT+[: Collapse/expand the toggle block that currently has focus
|
|
6
|
+
* (or its parent toggle if the focused block is a child).
|
|
7
|
+
* CMD+ALT+SHIFT+T: Collapse/expand all descendant toggles of the current toggle.
|
|
8
|
+
* Falls back to page-wide CMD+ALT+T behavior when cursor is not inside any toggle.
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
|
-
import type { API } from '../../../types';
|
|
11
|
+
import type { API, BlockAPI } from '../../../types';
|
|
11
12
|
|
|
12
13
|
import { Shortcuts } from '../../components/utils/shortcuts';
|
|
13
14
|
|
|
14
|
-
import { TOGGLE_ATTR } from './constants';
|
|
15
|
+
import { TOGGLE_ATTR, TOOL_NAME } from './constants';
|
|
15
16
|
|
|
16
17
|
const COLLAPSE_EXPAND_ALL_SHORTCUT = 'CMD+ALT+T';
|
|
18
|
+
const COLLAPSE_EXPAND_CURRENT_SHORTCUT = 'CMD+SHIFT+[';
|
|
19
|
+
const COLLAPSE_EXPAND_SCOPED_SHORTCUT = 'CMD+ALT+SHIFT+T';
|
|
17
20
|
|
|
18
21
|
/**
|
|
19
|
-
* Manages the collapse/expand
|
|
22
|
+
* Manages the collapse/expand shortcuts for toggle blocks.
|
|
20
23
|
*/
|
|
21
24
|
export class ToggleShortcuts {
|
|
22
25
|
private readonly api: API;
|
|
@@ -29,8 +32,8 @@ export class ToggleShortcuts {
|
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
/**
|
|
32
|
-
* Register
|
|
33
|
-
* Pre-clears any stale
|
|
35
|
+
* Register all toggle shortcuts on the document.
|
|
36
|
+
* Pre-clears any stale registrations to handle cases where a previous editor
|
|
34
37
|
* instance was not fully destroyed (e.g. Storybook story switching).
|
|
35
38
|
*/
|
|
36
39
|
public register(): void {
|
|
@@ -39,6 +42,8 @@ export class ToggleShortcuts {
|
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
Shortcuts.remove(document, COLLAPSE_EXPAND_ALL_SHORTCUT);
|
|
45
|
+
Shortcuts.remove(document, COLLAPSE_EXPAND_CURRENT_SHORTCUT);
|
|
46
|
+
Shortcuts.remove(document, COLLAPSE_EXPAND_SCOPED_SHORTCUT);
|
|
42
47
|
|
|
43
48
|
Shortcuts.add({
|
|
44
49
|
name: COLLAPSE_EXPAND_ALL_SHORTCUT,
|
|
@@ -53,11 +58,37 @@ export class ToggleShortcuts {
|
|
|
53
58
|
},
|
|
54
59
|
});
|
|
55
60
|
|
|
61
|
+
Shortcuts.add({
|
|
62
|
+
name: COLLAPSE_EXPAND_CURRENT_SHORTCUT,
|
|
63
|
+
on: document,
|
|
64
|
+
handler: (event: KeyboardEvent) => {
|
|
65
|
+
if (!this.shouldHandle(event)) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
event.preventDefault();
|
|
70
|
+
this.toggleCurrent();
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
Shortcuts.add({
|
|
75
|
+
name: COLLAPSE_EXPAND_SCOPED_SHORTCUT,
|
|
76
|
+
on: document,
|
|
77
|
+
handler: (event: KeyboardEvent) => {
|
|
78
|
+
if (!this.shouldHandle(event)) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
event.preventDefault();
|
|
83
|
+
this.toggleScoped();
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
|
|
56
87
|
this.registered = true;
|
|
57
88
|
}
|
|
58
89
|
|
|
59
90
|
/**
|
|
60
|
-
* Unregister
|
|
91
|
+
* Unregister all shortcuts.
|
|
61
92
|
*/
|
|
62
93
|
public unregister(): void {
|
|
63
94
|
if (!this.registered) {
|
|
@@ -65,6 +96,8 @@ export class ToggleShortcuts {
|
|
|
65
96
|
}
|
|
66
97
|
|
|
67
98
|
Shortcuts.remove(document, COLLAPSE_EXPAND_ALL_SHORTCUT);
|
|
99
|
+
Shortcuts.remove(document, COLLAPSE_EXPAND_CURRENT_SHORTCUT);
|
|
100
|
+
Shortcuts.remove(document, COLLAPSE_EXPAND_SCOPED_SHORTCUT);
|
|
68
101
|
this.registered = false;
|
|
69
102
|
}
|
|
70
103
|
|
|
@@ -82,6 +115,169 @@ export class ToggleShortcuts {
|
|
|
82
115
|
* If any is collapsed, expand all. If all are expanded, collapse all.
|
|
83
116
|
*/
|
|
84
117
|
private toggleAll(): void {
|
|
118
|
+
const toggleBlocks = this.collectAllToggleBlocks();
|
|
119
|
+
|
|
120
|
+
if (toggleBlocks.length === 0) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const anyCollapsed = toggleBlocks.some((b) => !b.isOpen);
|
|
125
|
+
const method = anyCollapsed ? 'expand' : 'collapse';
|
|
126
|
+
|
|
127
|
+
for (const block of toggleBlocks) {
|
|
128
|
+
block.call(method);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Toggle the current block if it is a toggle, or its nearest toggle ancestor
|
|
134
|
+
* if the current block is a child inside a toggle.
|
|
135
|
+
* Does nothing if neither applies.
|
|
136
|
+
*/
|
|
137
|
+
private toggleCurrent(): void {
|
|
138
|
+
const currentIndex = this.api.blocks.getCurrentBlockIndex();
|
|
139
|
+
const currentBlock = this.api.blocks.getBlockByIndex(currentIndex);
|
|
140
|
+
|
|
141
|
+
if (currentBlock === undefined) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
const targetBlock = this.findToggleBlockForCurrent(currentBlock);
|
|
146
|
+
|
|
147
|
+
if (targetBlock === undefined) {
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const toggleWrapper = targetBlock.holder.querySelector(`[${TOGGLE_ATTR.toggleOpen}]`);
|
|
152
|
+
|
|
153
|
+
if (toggleWrapper === null) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const isOpen = toggleWrapper.getAttribute(TOGGLE_ATTR.toggleOpen) === 'true';
|
|
158
|
+
|
|
159
|
+
targetBlock.call(isOpen ? 'collapse' : 'expand');
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Toggle all descendant toggles of the root toggle ancestor for the current block.
|
|
164
|
+
* If the current block is not inside any toggle, falls back to page-wide toggleAll().
|
|
165
|
+
*/
|
|
166
|
+
private toggleScoped(): void {
|
|
167
|
+
const currentIndex = this.api.blocks.getCurrentBlockIndex();
|
|
168
|
+
const currentBlock = this.api.blocks.getBlockByIndex(currentIndex);
|
|
169
|
+
|
|
170
|
+
if (currentBlock === undefined) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
const rootToggle = this.findRootToggleAncestor(currentBlock);
|
|
175
|
+
|
|
176
|
+
if (rootToggle === undefined) {
|
|
177
|
+
this.toggleAll();
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
const descendants = this.collectDescendantToggleBlocks(rootToggle.id);
|
|
182
|
+
|
|
183
|
+
if (descendants.length === 0) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const anyCollapsed = descendants.some((b) => !b.isOpen);
|
|
188
|
+
const method = anyCollapsed ? 'expand' : 'collapse';
|
|
189
|
+
|
|
190
|
+
for (const block of descendants) {
|
|
191
|
+
block.call(method);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Returns the toggle block to act on for the current block:
|
|
197
|
+
* - If the current block itself is a toggle, return it.
|
|
198
|
+
* - If it has a parentId pointing to a toggle block, return the parent.
|
|
199
|
+
* - Otherwise return undefined.
|
|
200
|
+
*/
|
|
201
|
+
private findToggleBlockForCurrent(block: BlockAPI): BlockAPI | undefined {
|
|
202
|
+
if (this.isToggleBlock(block)) {
|
|
203
|
+
return block;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
if (block.parentId !== null) {
|
|
207
|
+
const parent = this.api.blocks.getById(block.parentId);
|
|
208
|
+
|
|
209
|
+
if (parent !== null && this.isToggleBlock(parent)) {
|
|
210
|
+
return parent;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
return undefined;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Walks up the parentId chain to find the root-level toggle ancestor of the
|
|
219
|
+
* given block. Returns the root toggle if found, or undefined if the block is
|
|
220
|
+
* not inside any toggle.
|
|
221
|
+
*/
|
|
222
|
+
private findRootToggleAncestor(block: BlockAPI): BlockAPI | undefined {
|
|
223
|
+
if (this.isToggleBlock(block) && block.parentId === null) {
|
|
224
|
+
return block;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
return this.walkToRootToggle(block.parentId, undefined);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
private walkToRootToggle(parentId: string | null, best: BlockAPI | undefined): BlockAPI | undefined {
|
|
231
|
+
if (parentId === null) {
|
|
232
|
+
return best;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
const parent = this.api.blocks.getById(parentId);
|
|
236
|
+
|
|
237
|
+
if (parent === null) {
|
|
238
|
+
return best;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
return this.walkToRootToggle(parent.parentId, this.isToggleBlock(parent) ? parent : best);
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
/**
|
|
245
|
+
* Recursively collects all descendant toggle blocks of the given parent id.
|
|
246
|
+
* Returns items with call/isOpen so they can be expanded or collapsed.
|
|
247
|
+
*/
|
|
248
|
+
private collectDescendantToggleBlocks(parentId: string): { call: (method: string) => void; isOpen: boolean }[] {
|
|
249
|
+
const children = this.api.blocks.getChildren(parentId);
|
|
250
|
+
const result: { call: (method: string) => void; isOpen: boolean }[] = [];
|
|
251
|
+
|
|
252
|
+
for (const child of children) {
|
|
253
|
+
const info = this.isToggleBlock(child) ? this.extractToggleBlockInfo(child) : null;
|
|
254
|
+
|
|
255
|
+
if (info !== null) {
|
|
256
|
+
result.push(info);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
result.push(...this.collectDescendantToggleBlocks(child.id));
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
return result;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
private extractToggleBlockInfo(child: BlockAPI): { call: (method: string) => void; isOpen: boolean } | null {
|
|
266
|
+
const toggleWrapper = child.holder.querySelector(`[${TOGGLE_ATTR.toggleOpen}]`);
|
|
267
|
+
|
|
268
|
+
if (toggleWrapper === null) {
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
const isOpen = toggleWrapper.getAttribute(TOGGLE_ATTR.toggleOpen) === 'true';
|
|
273
|
+
|
|
274
|
+
return { call: (method: string) => child.call(method), isOpen };
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* Collect all toggle-capable blocks across the entire document.
|
|
279
|
+
*/
|
|
280
|
+
private collectAllToggleBlocks(): { call: (method: string) => void; isOpen: boolean }[] {
|
|
85
281
|
const blockCount = this.api.blocks.getBlocksCount();
|
|
86
282
|
const toggleBlocks: { call: (method: string) => void; isOpen: boolean }[] = [];
|
|
87
283
|
|
|
@@ -103,15 +299,13 @@ export class ToggleShortcuts {
|
|
|
103
299
|
toggleBlocks.push({ call: (method: string) => block.call(method), isOpen });
|
|
104
300
|
}
|
|
105
301
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const anyCollapsed = toggleBlocks.some((b) => !b.isOpen);
|
|
111
|
-
const method = anyCollapsed ? 'expand' : 'collapse';
|
|
302
|
+
return toggleBlocks;
|
|
303
|
+
}
|
|
112
304
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
305
|
+
/**
|
|
306
|
+
* Returns true if the given block is a toggle block (by tool name).
|
|
307
|
+
*/
|
|
308
|
+
private isToggleBlock(block: BlockAPI): boolean {
|
|
309
|
+
return block.name === TOOL_NAME;
|
|
116
310
|
}
|
|
117
311
|
}
|
|
@@ -10,6 +10,8 @@ import type { BlockToolData } from '../../../types';
|
|
|
10
10
|
export interface ToggleItemData extends BlockToolData {
|
|
11
11
|
/** Toggle item text content (can include HTML) */
|
|
12
12
|
text: string;
|
|
13
|
+
/** Whether the toggle is open (expanded). Persisted on save so state is restored on reload. */
|
|
14
|
+
isOpen?: boolean;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
/**
|
|
@@ -16,6 +16,7 @@ import { StylesAPI } from '../components/modules/api/styles';
|
|
|
16
16
|
import { ToolbarAPI } from '../components/modules/api/toolbar';
|
|
17
17
|
import { TooltipAPI } from '../components/modules/api/tooltip';
|
|
18
18
|
import { UiAPI } from '../components/modules/api/ui';
|
|
19
|
+
import { WidthAPI } from '../components/modules/api/width';
|
|
19
20
|
/** ./toolbar */
|
|
20
21
|
import { BlockSettings } from '../components/modules/toolbar/blockSettings';
|
|
21
22
|
import { Toolbar } from '../components/modules/toolbar/index';
|
|
@@ -38,6 +39,7 @@ import { Tools } from '../components/modules/tools';
|
|
|
38
39
|
import { UI } from '../components/modules/ui';
|
|
39
40
|
import { ToolsAPI } from '../components/modules/api/tools';
|
|
40
41
|
import { I18n } from '../components/modules/i18n';
|
|
42
|
+
import { WidthManager } from '../components/modules/widthManager';
|
|
41
43
|
import { YjsManager } from '../components/modules/yjs';
|
|
42
44
|
|
|
43
45
|
export interface BlokModules {
|
|
@@ -60,6 +62,7 @@ export interface BlokModules {
|
|
|
60
62
|
ToolbarAPI: ToolbarAPI,
|
|
61
63
|
TooltipAPI: TooltipAPI,
|
|
62
64
|
UiAPI: UiAPI,
|
|
65
|
+
WidthAPI: WidthAPI,
|
|
63
66
|
|
|
64
67
|
// Toolbar Modules
|
|
65
68
|
BlockSettings: BlockSettings,
|
|
@@ -82,5 +85,6 @@ export interface BlokModules {
|
|
|
82
85
|
Saver: Saver,
|
|
83
86
|
Tools: Tools,
|
|
84
87
|
UI: UI,
|
|
88
|
+
WidthManager: WidthManager,
|
|
85
89
|
YjsManager: YjsManager,
|
|
86
90
|
}
|
package/types/api/block.d.ts
CHANGED
package/types/api/blocks.d.ts
CHANGED
|
@@ -182,6 +182,17 @@ export interface Blocks {
|
|
|
182
182
|
insertIndex: number,
|
|
183
183
|
): BlockAPI;
|
|
184
184
|
|
|
185
|
+
/**
|
|
186
|
+
* Insert a new paragraph block as a child of the given parent block, atomically.
|
|
187
|
+
* The block creation and parent assignment are grouped into a single undo entry,
|
|
188
|
+
* so a single CMD+Z removes the new block completely.
|
|
189
|
+
*
|
|
190
|
+
* @param parentId - id of the parent block
|
|
191
|
+
* @param insertIndex - flat block index where the new block should appear
|
|
192
|
+
* @returns BlockAPI for the newly created child block
|
|
193
|
+
*/
|
|
194
|
+
insertInsideParent(parentId: string, insertIndex: number): BlockAPI;
|
|
195
|
+
|
|
185
196
|
/**
|
|
186
197
|
* Execute a function within a transaction.
|
|
187
198
|
* All block operations (insert, delete, move) within fn are grouped
|
|
@@ -191,4 +202,22 @@ export interface Blocks {
|
|
|
191
202
|
* @param fn - The function containing block operations to group
|
|
192
203
|
*/
|
|
193
204
|
transact?(fn: () => void): void;
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Execute a function without recording any block operations in the undo history.
|
|
208
|
+
* Use this for auto-repair operations (e.g. ensuring empty cells always have a block)
|
|
209
|
+
* that should never appear as undoable entries in the history.
|
|
210
|
+
*
|
|
211
|
+
* @param fn - The function containing block operations to execute without undo capture
|
|
212
|
+
*/
|
|
213
|
+
transactWithoutCapture?(fn: () => void): void;
|
|
214
|
+
|
|
215
|
+
/**
|
|
216
|
+
* Notify BlockManager that a pointer drag interaction has started or ended.
|
|
217
|
+
* While active, DOM-mutation-triggered Yjs syncs are suppressed to prevent
|
|
218
|
+
* cross-cell browser DOM mutations from corrupting Yjs state.
|
|
219
|
+
*
|
|
220
|
+
* @param active - true when a drag starts, false when it ends
|
|
221
|
+
*/
|
|
222
|
+
setPointerDragActive?(active: boolean): void;
|
|
194
223
|
}
|
package/types/api/index.d.ts
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Describes the editor-level width mode API
|
|
3
|
+
*/
|
|
4
|
+
export interface Width {
|
|
5
|
+
/**
|
|
6
|
+
* Returns the current width mode
|
|
7
|
+
*/
|
|
8
|
+
get(): 'narrow' | 'full';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Sets the width mode
|
|
12
|
+
*/
|
|
13
|
+
set(mode: 'narrow' | 'full'): void;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Toggles between 'narrow' and 'full'
|
|
17
|
+
*/
|
|
18
|
+
toggle(): void;
|
|
19
|
+
}
|
|
@@ -152,5 +152,38 @@ export interface BlokConfig {
|
|
|
152
152
|
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/nonce
|
|
153
153
|
*/
|
|
154
154
|
nonce?: string;
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Custom font family for the entire editor UI (content area, toolbars, popovers).
|
|
158
|
+
* Accepts any valid CSS font-family value.
|
|
159
|
+
* @example 'Inter, sans-serif'
|
|
160
|
+
*/
|
|
161
|
+
fontFamily?: string;
|
|
155
162
|
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Initial width mode. Defaults to 'narrow'.
|
|
166
|
+
*/
|
|
167
|
+
defaultWidth?: 'narrow' | 'full';
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* CSS max-width value for narrow mode.
|
|
171
|
+
* Any valid CSS length (e.g. '650px', '800px', '60ch').
|
|
172
|
+
* Defaults to '650px'.
|
|
173
|
+
*/
|
|
174
|
+
narrowWidth?: string;
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* CSS max-width value for full width mode.
|
|
178
|
+
* Any valid CSS length, or 'none' for no constraint.
|
|
179
|
+
* Defaults to 'none'.
|
|
180
|
+
*/
|
|
181
|
+
fullWidth?: string;
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Called when the editor width mode changes.
|
|
185
|
+
* @param mode - the new mode ('narrow' or 'full')
|
|
186
|
+
* @param value - the resolved CSS max-width value
|
|
187
|
+
*/
|
|
188
|
+
onWidthChange?: (mode: 'narrow' | 'full', value: string) => void;
|
|
156
189
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
I18n,
|
|
31
31
|
Ui,
|
|
32
32
|
Tools,
|
|
33
|
+
Width,
|
|
33
34
|
} from './api';
|
|
34
35
|
|
|
35
36
|
import { OutputData } from './data-formats';
|
|
@@ -105,6 +106,7 @@ export {
|
|
|
105
106
|
I18n,
|
|
106
107
|
Ui,
|
|
107
108
|
Tools,
|
|
109
|
+
Width,
|
|
108
110
|
} from './api';
|
|
109
111
|
export {
|
|
110
112
|
BlockMutationType,
|
|
@@ -142,6 +144,7 @@ export interface API {
|
|
|
142
144
|
i18n: I18n;
|
|
143
145
|
readOnly: ReadOnly;
|
|
144
146
|
ui: Ui;
|
|
147
|
+
width: Width;
|
|
145
148
|
rectangleSelection: {
|
|
146
149
|
cancelActiveSelection: () => void;
|
|
147
150
|
isRectActivated: () => boolean;
|
|
@@ -176,6 +179,7 @@ export class Blok {
|
|
|
176
179
|
public inlineToolbar: InlineToolbar;
|
|
177
180
|
public tooltip: Tooltip;
|
|
178
181
|
public readOnly: ReadOnly;
|
|
182
|
+
public width: Width;
|
|
179
183
|
constructor(configuration?: BlokConfig|string);
|
|
180
184
|
|
|
181
185
|
/**
|
package/types/react.d.ts
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { BlokConfig } from './index';
|
|
2
|
+
import type { Blok } from './index';
|
|
3
|
+
import type React from 'react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for the useBlok hook.
|
|
7
|
+
* Accepts all BlokConfig properties except `holder`, which is managed by BlokContent.
|
|
8
|
+
*
|
|
9
|
+
* Reactive props (sync after mount without recreation):
|
|
10
|
+
* - `readOnly` — calls `editor.readOnly.set(value)`
|
|
11
|
+
* - `autofocus` — calls `editor.focus()` when changed to true
|
|
12
|
+
*
|
|
13
|
+
* All other config is consumed once at editor creation.
|
|
14
|
+
*/
|
|
15
|
+
export interface UseBlokConfig extends Omit<BlokConfig, 'holder'> {}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Props for the BlokContent component.
|
|
19
|
+
* Renders a `<div>` that becomes the Blok editor's DOM mount point.
|
|
20
|
+
* Passes through all standard HTML div attributes.
|
|
21
|
+
*/
|
|
22
|
+
export interface BlokContentProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
23
|
+
/** The Blok editor instance from useBlok. Null during SSR or before initialization. */
|
|
24
|
+
editor: Blok | null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* React hook that creates and manages a Blok editor instance.
|
|
29
|
+
*
|
|
30
|
+
* @param config - Editor configuration (all BlokConfig props except `holder`)
|
|
31
|
+
* @param deps - Optional dependency array. When any dep changes, the editor is destroyed and recreated.
|
|
32
|
+
* @returns The Blok editor instance, or null during SSR / before initialization.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```tsx
|
|
36
|
+
* const editor = useBlok({
|
|
37
|
+
* tools: defaultTools,
|
|
38
|
+
* data: savedData,
|
|
39
|
+
* readOnly: false,
|
|
40
|
+
* onChange: (api, event) => console.log(event),
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function useBlok(
|
|
45
|
+
config: UseBlokConfig,
|
|
46
|
+
deps?: React.DependencyList
|
|
47
|
+
): Blok | null;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Component that provides the DOM mount point for a Blok editor.
|
|
51
|
+
* Renders a `<div>` and adopts the editor's DOM tree into it.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```tsx
|
|
55
|
+
* <BlokContent editor={editor} className="my-editor" />
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare const BlokContent: React.ForwardRefExoticComponent<BlokContentProps & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -86,6 +86,13 @@ export interface PopoverParams {
|
|
|
86
86
|
* block content area rather than to the plus button.
|
|
87
87
|
*/
|
|
88
88
|
leftAlignElement?: HTMLElement;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* When true, the first item is focused when the popover opens (default behavior).
|
|
92
|
+
* When false, no item is pre-focused — focus only appears after keyboard navigation.
|
|
93
|
+
* Defaults to true. Has no effect when a search field is present (search receives focus instead).
|
|
94
|
+
*/
|
|
95
|
+
autoFocusFirstItem?: boolean;
|
|
89
96
|
}
|
|
90
97
|
|
|
91
98
|
|