@jackuait/blok 0.6.0-beta.13 → 0.6.0-beta.14
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 +2 -2
- package/dist/chunks/{blok-DzeTRJ_i.mjs → blok-Cl30YOLl.mjs} +1398 -1132
- package/dist/chunks/{i18next-loader-CgW4H90H.mjs → i18next-loader-DbTDlMux.mjs} +1 -1
- package/dist/chunks/{index-BWKk7PIS.mjs → index-DJmaYswj.mjs} +1 -1
- package/dist/chunks/{inline-tool-convert-DrSwadw_.mjs → inline-tool-convert-MjSaP8r7.mjs} +161 -145
- package/dist/{messages-B1Aww8q7.mjs → chunks/messages-1mYyrppy.mjs} +1 -0
- package/dist/chunks/{messages-DnIhyAJk.mjs → messages-4gHfbcDp.mjs} +1 -0
- package/dist/{messages-CQwpzUFp.mjs → chunks/messages-6xYv-U8A.mjs} +1 -0
- package/dist/chunks/{messages-CMkNSDTo.mjs → messages-7jqF79FO.mjs} +1 -0
- package/dist/chunks/{messages-BSbjsyHY.mjs → messages-B3EUuA7o.mjs} +1 -0
- package/dist/{messages-LPVfA-8K.mjs → chunks/messages-B6srtRn7.mjs} +1 -0
- package/dist/chunks/{messages-DJDG55Vq.mjs → messages-B85OIs0E.mjs} +1 -0
- package/dist/{messages-_ErNTNhk.mjs → chunks/messages-BCYBBG_u.mjs} +1 -0
- package/dist/{messages-CZygwLwM.mjs → chunks/messages-BDLNPiaW.mjs} +1 -0
- package/dist/{messages-C2htQ_3F.mjs → chunks/messages-BKpNd1Zb.mjs} +1 -0
- package/dist/chunks/{messages-CnwibSvh.mjs → messages-BLFUid_o.mjs} +1 -0
- package/dist/{messages-CVw84KdI.mjs → chunks/messages-BNPTVKnc.mjs} +1 -0
- package/dist/{messages-BMv4xwIr.mjs → chunks/messages-BQPXSkri.mjs} +1 -0
- package/dist/{messages-Dz9L52ol.mjs → chunks/messages-BQu6VNDq.mjs} +1 -0
- package/dist/{messages-DprmQg6V.mjs → chunks/messages-BRodFKUo.mjs} +1 -0
- package/dist/{messages-CznZadDf.mjs → chunks/messages-BWIikA8H.mjs} +1 -0
- package/dist/{messages-CqWJcCbY.mjs → chunks/messages-BXQvMilx.mjs} +1 -0
- package/dist/chunks/{messages-Z9nEU2xK.mjs → messages-BZ92luiw.mjs} +1 -0
- package/dist/chunks/{messages-BC86qLvI.mjs → messages-Bg0Phlcj.mjs} +1 -0
- package/dist/chunks/{messages-DnXLrlHh.mjs → messages-Bh6RBIu5.mjs} +1 -0
- package/dist/chunks/{messages-DhLKYm2j.mjs → messages-BnFHdIpg.mjs} +1 -0
- package/dist/{messages-BU2nlrLK.mjs → chunks/messages-Bq82EVsw.mjs} +1 -0
- package/dist/chunks/{messages-Diu6jAaR.mjs → messages-BxbcTiHh.mjs} +1 -0
- package/dist/{messages-BoJc_p1r.mjs → chunks/messages-ByO6bSV2.mjs} +1 -0
- package/dist/chunks/{messages-BrPFGbM-.mjs → messages-ByUNPiQ4.mjs} +1 -0
- package/dist/chunks/{messages-BB5z9Uba.mjs → messages-Byw0EHyf.mjs} +1 -0
- package/dist/chunks/{messages-D1Hv8XGo.mjs → messages-C-aP90zq.mjs} +1 -0
- package/dist/chunks/{messages-DBRw-7Zc.mjs → messages-C2f44jci.mjs} +1 -0
- package/dist/chunks/{messages-CJdUsQ-c.mjs → messages-CKYoAmm9.mjs} +1 -0
- package/dist/chunks/{messages-CvGLfqmV.mjs → messages-CSQJrJ_N.mjs} +1 -0
- package/dist/chunks/{messages-1fC8IMyX.mjs → messages-CX_o4Cgc.mjs} +1 -0
- package/dist/chunks/{messages-BdeLo0N9.mjs → messages-C_tfXllT.mjs} +1 -0
- package/dist/chunks/{messages-DBn76jVV.mjs → messages-Cj6TZ_By.mjs} +1 -0
- package/dist/{messages-CLhcMlTc.mjs → chunks/messages-CjdYkfzj.mjs} +1 -0
- package/dist/{messages-7W4d0DwD.mjs → chunks/messages-CmvWFWR6.mjs} +1 -0
- package/dist/{messages-CzTufCHu.mjs → chunks/messages-CnV-kxh6.mjs} +1 -0
- package/dist/chunks/{messages-BMXCuEKO.mjs → messages-CpuDfpdi.mjs} +1 -0
- package/dist/chunks/{messages-DT4dP5uK.mjs → messages-Cspe1oXk.mjs} +1 -0
- package/dist/{messages-D-ZtY5v0.mjs → chunks/messages-D2_d-Jt4.mjs} +1 -0
- package/dist/{messages-BELRf6DU.mjs → chunks/messages-DADSbW8l.mjs} +1 -0
- package/dist/chunks/{messages-O5tQus_0.mjs → messages-DHSeTQ4S.mjs} +1 -0
- package/dist/{messages-BFG6Wlgy.mjs → chunks/messages-DKeO2RsW.mjs} +1 -0
- package/dist/chunks/{messages-9SihnaXQ.mjs → messages-DLdlX_dY.mjs} +1 -0
- package/dist/chunks/{messages-BL0tXcDf.mjs → messages-DVxlJ4DU.mjs} +1 -0
- package/dist/chunks/{messages-CY8_RyFE.mjs → messages-DWSxENRk.mjs} +1 -0
- package/dist/{messages-Q7AO_FLv.mjs → chunks/messages-D_bVNZ12.mjs} +1 -0
- package/dist/chunks/{messages-BYyy6Wqf.mjs → messages-DdzjVwmG.mjs} +1 -0
- package/dist/chunks/{messages-DLfR5bMd.mjs → messages-DhyBKTi0.mjs} +1 -0
- package/dist/chunks/{messages-DvFLX36Q.mjs → messages-DlC9jDXa.mjs} +1 -0
- package/dist/chunks/{messages-D5C3J9qr.mjs → messages-DmBGk8ed.mjs} +1 -0
- package/dist/chunks/{messages-R3hUSvr3.mjs → messages-Dm_VqpU6.mjs} +1 -0
- package/dist/chunks/{messages-w7v1GNaE.mjs → messages-Dn9hI_ER.mjs} +1 -0
- package/dist/{messages-uKX8WBaD.mjs → chunks/messages-Dssp4AXT.mjs} +1 -0
- package/dist/chunks/{messages-Xq8UmkVs.mjs → messages-DzCc0JgS.mjs} +1 -0
- package/dist/chunks/{messages-JELdtT6E.mjs → messages-N6THNxo0.mjs} +1 -0
- package/dist/chunks/{messages-DqM1LFg5.mjs → messages-OctOxF2l.mjs} +1 -0
- package/dist/chunks/{messages-_ncGrKHh.mjs → messages-QT3JA95K.mjs} +1 -0
- package/dist/{messages-C9eaarcK.mjs → chunks/messages-QqWK83BF.mjs} +1 -0
- package/dist/chunks/{messages-BogRq8lt.mjs → messages-RsGaDzbb.mjs} +1 -0
- package/dist/chunks/{messages-Dzwxv9v1.mjs → messages-c7YlI6Wm.mjs} +1 -0
- package/dist/{messages-D5iv1Kox.mjs → chunks/messages-lZ8aF-4r.mjs} +1 -0
- package/dist/chunks/{messages-7QoX8DkW.mjs → messages-uGDrchjb.mjs} +1 -0
- package/dist/chunks/{messages-CKI54h6O.mjs → messages-xc2yNvog.mjs} +1 -0
- package/dist/{messages-Bmu_S7GM.mjs → chunks/messages-y5Q-ymIx.mjs} +1 -0
- package/dist/{messages-BWF-zUpY.mjs → chunks/messages-yJnyedAd.mjs} +1 -0
- package/dist/{messages-kep5wtm4.mjs → chunks/messages-yQ_4upHh.mjs} +1 -0
- package/dist/chunks/{messages-C99mq906.mjs → messages-ysbWD56Q.mjs} +1 -0
- package/dist/full.mjs +2 -2
- package/dist/locales.mjs +68 -67
- package/dist/{chunks/messages-B1Aww8q7.mjs → messages-1mYyrppy.mjs} +1 -0
- package/dist/{messages-DnIhyAJk.mjs → messages-4gHfbcDp.mjs} +1 -0
- package/dist/{chunks/messages-CQwpzUFp.mjs → messages-6xYv-U8A.mjs} +1 -0
- package/dist/{messages-CMkNSDTo.mjs → messages-7jqF79FO.mjs} +1 -0
- package/dist/{messages-BSbjsyHY.mjs → messages-B3EUuA7o.mjs} +1 -0
- package/dist/{chunks/messages-LPVfA-8K.mjs → messages-B6srtRn7.mjs} +1 -0
- package/dist/{messages-DJDG55Vq.mjs → messages-B85OIs0E.mjs} +1 -0
- package/dist/{chunks/messages-_ErNTNhk.mjs → messages-BCYBBG_u.mjs} +1 -0
- package/dist/{chunks/messages-CZygwLwM.mjs → messages-BDLNPiaW.mjs} +1 -0
- package/dist/{chunks/messages-C2htQ_3F.mjs → messages-BKpNd1Zb.mjs} +1 -0
- package/dist/{messages-CnwibSvh.mjs → messages-BLFUid_o.mjs} +1 -0
- package/dist/{chunks/messages-CVw84KdI.mjs → messages-BNPTVKnc.mjs} +1 -0
- package/dist/{chunks/messages-BMv4xwIr.mjs → messages-BQPXSkri.mjs} +1 -0
- package/dist/{chunks/messages-Dz9L52ol.mjs → messages-BQu6VNDq.mjs} +1 -0
- package/dist/{chunks/messages-DprmQg6V.mjs → messages-BRodFKUo.mjs} +1 -0
- package/dist/{chunks/messages-CznZadDf.mjs → messages-BWIikA8H.mjs} +1 -0
- package/dist/{chunks/messages-CqWJcCbY.mjs → messages-BXQvMilx.mjs} +1 -0
- package/dist/{messages-Z9nEU2xK.mjs → messages-BZ92luiw.mjs} +1 -0
- package/dist/{messages-BC86qLvI.mjs → messages-Bg0Phlcj.mjs} +1 -0
- package/dist/{messages-DnXLrlHh.mjs → messages-Bh6RBIu5.mjs} +1 -0
- package/dist/{messages-DhLKYm2j.mjs → messages-BnFHdIpg.mjs} +1 -0
- package/dist/{chunks/messages-BU2nlrLK.mjs → messages-Bq82EVsw.mjs} +1 -0
- package/dist/{messages-Diu6jAaR.mjs → messages-BxbcTiHh.mjs} +1 -0
- package/dist/{chunks/messages-BoJc_p1r.mjs → messages-ByO6bSV2.mjs} +1 -0
- package/dist/{messages-BrPFGbM-.mjs → messages-ByUNPiQ4.mjs} +1 -0
- package/dist/{messages-BB5z9Uba.mjs → messages-Byw0EHyf.mjs} +1 -0
- package/dist/{messages-D1Hv8XGo.mjs → messages-C-aP90zq.mjs} +1 -0
- package/dist/{messages-DBRw-7Zc.mjs → messages-C2f44jci.mjs} +1 -0
- package/dist/{messages-CJdUsQ-c.mjs → messages-CKYoAmm9.mjs} +1 -0
- package/dist/{messages-CvGLfqmV.mjs → messages-CSQJrJ_N.mjs} +1 -0
- package/dist/{messages-1fC8IMyX.mjs → messages-CX_o4Cgc.mjs} +1 -0
- package/dist/{messages-BdeLo0N9.mjs → messages-C_tfXllT.mjs} +1 -0
- package/dist/{messages-DBn76jVV.mjs → messages-Cj6TZ_By.mjs} +1 -0
- package/dist/{chunks/messages-CLhcMlTc.mjs → messages-CjdYkfzj.mjs} +1 -0
- package/dist/{chunks/messages-7W4d0DwD.mjs → messages-CmvWFWR6.mjs} +1 -0
- package/dist/{chunks/messages-CzTufCHu.mjs → messages-CnV-kxh6.mjs} +1 -0
- package/dist/{messages-BMXCuEKO.mjs → messages-CpuDfpdi.mjs} +1 -0
- package/dist/{messages-DT4dP5uK.mjs → messages-Cspe1oXk.mjs} +1 -0
- package/dist/{chunks/messages-D-ZtY5v0.mjs → messages-D2_d-Jt4.mjs} +1 -0
- package/dist/{chunks/messages-BELRf6DU.mjs → messages-DADSbW8l.mjs} +1 -0
- package/dist/{messages-O5tQus_0.mjs → messages-DHSeTQ4S.mjs} +1 -0
- package/dist/{chunks/messages-BFG6Wlgy.mjs → messages-DKeO2RsW.mjs} +1 -0
- package/dist/{messages-9SihnaXQ.mjs → messages-DLdlX_dY.mjs} +1 -0
- package/dist/{messages-BL0tXcDf.mjs → messages-DVxlJ4DU.mjs} +1 -0
- package/dist/{messages-CY8_RyFE.mjs → messages-DWSxENRk.mjs} +1 -0
- package/dist/{chunks/messages-Q7AO_FLv.mjs → messages-D_bVNZ12.mjs} +1 -0
- package/dist/{messages-BYyy6Wqf.mjs → messages-DdzjVwmG.mjs} +1 -0
- package/dist/{messages-DLfR5bMd.mjs → messages-DhyBKTi0.mjs} +1 -0
- package/dist/{messages-DvFLX36Q.mjs → messages-DlC9jDXa.mjs} +1 -0
- package/dist/{messages-D5C3J9qr.mjs → messages-DmBGk8ed.mjs} +1 -0
- package/dist/{messages-R3hUSvr3.mjs → messages-Dm_VqpU6.mjs} +1 -0
- package/dist/{messages-w7v1GNaE.mjs → messages-Dn9hI_ER.mjs} +1 -0
- package/dist/{chunks/messages-uKX8WBaD.mjs → messages-Dssp4AXT.mjs} +1 -0
- package/dist/{messages-Xq8UmkVs.mjs → messages-DzCc0JgS.mjs} +1 -0
- package/dist/{messages-JELdtT6E.mjs → messages-N6THNxo0.mjs} +1 -0
- package/dist/{messages-DqM1LFg5.mjs → messages-OctOxF2l.mjs} +1 -0
- package/dist/{messages-_ncGrKHh.mjs → messages-QT3JA95K.mjs} +1 -0
- package/dist/{chunks/messages-C9eaarcK.mjs → messages-QqWK83BF.mjs} +1 -0
- package/dist/{messages-BogRq8lt.mjs → messages-RsGaDzbb.mjs} +1 -0
- package/dist/{messages-Dzwxv9v1.mjs → messages-c7YlI6Wm.mjs} +1 -0
- package/dist/{chunks/messages-D5iv1Kox.mjs → messages-lZ8aF-4r.mjs} +1 -0
- package/dist/{messages-7QoX8DkW.mjs → messages-uGDrchjb.mjs} +1 -0
- package/dist/{messages-CKI54h6O.mjs → messages-xc2yNvog.mjs} +1 -0
- package/dist/{chunks/messages-Bmu_S7GM.mjs → messages-y5Q-ymIx.mjs} +1 -0
- package/dist/{chunks/messages-BWF-zUpY.mjs → messages-yJnyedAd.mjs} +1 -0
- package/dist/{chunks/messages-kep5wtm4.mjs → messages-yQ_4upHh.mjs} +1 -0
- package/dist/{messages-C99mq906.mjs → messages-ysbWD56Q.mjs} +1 -0
- package/dist/tools.mjs +887 -701
- package/package.json +2 -1
- package/src/components/block/style-manager.ts +5 -1
- package/src/components/blocks.ts +109 -9
- package/src/components/i18n/locales/am/messages.json +1 -0
- package/src/components/i18n/locales/ar/messages.json +1 -0
- package/src/components/i18n/locales/az/messages.json +1 -0
- package/src/components/i18n/locales/bg/messages.json +1 -0
- package/src/components/i18n/locales/bn/messages.json +1 -0
- package/src/components/i18n/locales/bs/messages.json +1 -0
- package/src/components/i18n/locales/cs/messages.json +1 -0
- package/src/components/i18n/locales/da/messages.json +1 -0
- package/src/components/i18n/locales/de/messages.json +1 -0
- package/src/components/i18n/locales/dv/messages.json +1 -0
- package/src/components/i18n/locales/el/messages.json +1 -0
- package/src/components/i18n/locales/en/messages.json +1 -0
- package/src/components/i18n/locales/es/messages.json +1 -0
- package/src/components/i18n/locales/et/messages.json +1 -0
- package/src/components/i18n/locales/fa/messages.json +1 -0
- package/src/components/i18n/locales/fi/messages.json +1 -0
- package/src/components/i18n/locales/fil/messages.json +1 -0
- package/src/components/i18n/locales/fr/messages.json +1 -0
- package/src/components/i18n/locales/gu/messages.json +1 -0
- package/src/components/i18n/locales/he/messages.json +1 -0
- package/src/components/i18n/locales/hi/messages.json +1 -0
- package/src/components/i18n/locales/hr/messages.json +1 -0
- package/src/components/i18n/locales/hu/messages.json +1 -0
- package/src/components/i18n/locales/hy/messages.json +1 -0
- package/src/components/i18n/locales/id/messages.json +1 -0
- package/src/components/i18n/locales/it/messages.json +1 -0
- package/src/components/i18n/locales/ja/messages.json +1 -0
- package/src/components/i18n/locales/ka/messages.json +1 -0
- package/src/components/i18n/locales/km/messages.json +1 -0
- package/src/components/i18n/locales/kn/messages.json +1 -0
- package/src/components/i18n/locales/ko/messages.json +1 -0
- package/src/components/i18n/locales/ku/messages.json +1 -0
- package/src/components/i18n/locales/lo/messages.json +1 -0
- package/src/components/i18n/locales/lt/messages.json +1 -0
- package/src/components/i18n/locales/lv/messages.json +1 -0
- package/src/components/i18n/locales/mk/messages.json +1 -0
- package/src/components/i18n/locales/ml/messages.json +1 -0
- package/src/components/i18n/locales/mn/messages.json +1 -0
- package/src/components/i18n/locales/mr/messages.json +1 -0
- package/src/components/i18n/locales/ms/messages.json +1 -0
- package/src/components/i18n/locales/my/messages.json +1 -0
- package/src/components/i18n/locales/ne/messages.json +1 -0
- package/src/components/i18n/locales/nl/messages.json +1 -0
- package/src/components/i18n/locales/no/messages.json +1 -0
- package/src/components/i18n/locales/pa/messages.json +1 -0
- package/src/components/i18n/locales/pl/messages.json +1 -0
- package/src/components/i18n/locales/ps/messages.json +1 -0
- package/src/components/i18n/locales/pt/messages.json +1 -0
- package/src/components/i18n/locales/ro/messages.json +1 -0
- package/src/components/i18n/locales/ru/messages.json +1 -0
- package/src/components/i18n/locales/sd/messages.json +1 -0
- package/src/components/i18n/locales/si/messages.json +1 -0
- package/src/components/i18n/locales/sk/messages.json +1 -0
- package/src/components/i18n/locales/sl/messages.json +1 -0
- package/src/components/i18n/locales/sq/messages.json +1 -0
- package/src/components/i18n/locales/sr/messages.json +1 -0
- package/src/components/i18n/locales/sv/messages.json +1 -0
- package/src/components/i18n/locales/sw/messages.json +1 -0
- package/src/components/i18n/locales/ta/messages.json +1 -0
- package/src/components/i18n/locales/te/messages.json +1 -0
- package/src/components/i18n/locales/th/messages.json +1 -0
- package/src/components/i18n/locales/tr/messages.json +1 -0
- package/src/components/i18n/locales/ug/messages.json +1 -0
- package/src/components/i18n/locales/uk/messages.json +1 -0
- package/src/components/i18n/locales/ur/messages.json +1 -0
- package/src/components/i18n/locales/vi/messages.json +1 -0
- package/src/components/i18n/locales/yi/messages.json +1 -0
- package/src/components/i18n/locales/zh/messages.json +1 -0
- package/src/components/icons/index.ts +8 -0
- package/src/components/modules/blockEvents/composers/keyboardNavigation.ts +51 -10
- package/src/components/modules/blockEvents/index.ts +2 -5
- package/src/components/modules/blockManager/blockManager.ts +10 -0
- package/src/components/modules/blockManager/operations.ts +11 -0
- package/src/components/modules/blockManager/repository.ts +22 -0
- package/src/components/modules/blockManager/yjs-sync.ts +148 -31
- package/src/components/modules/crossBlockSelection.ts +11 -3
- package/src/components/modules/drag/preview/DragPreview.ts +8 -0
- package/src/components/modules/drag/target/DropTargetDetector.ts +100 -11
- package/src/components/modules/paste/handlers/base.ts +3 -4
- package/src/components/modules/paste/index.ts +1 -1
- package/src/components/modules/rectangleSelection.ts +5 -2
- package/src/components/modules/toolbar/blockSettings.ts +52 -44
- package/src/components/modules/toolbar/index.ts +27 -7
- package/src/components/modules/toolbar/inline/index.ts +1 -1
- package/src/components/modules/uiControllers/controllers/blockHover.ts +16 -2
- package/src/components/modules/uiControllers/handlers/touch.ts +83 -10
- package/src/components/modules/yjs/block-observer.ts +9 -3
- package/src/components/modules/yjs/document-store.ts +4 -2
- package/src/components/modules/yjs/types.ts +8 -6
- package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.ts +6 -4
- package/src/components/utils/popover/popover-desktop.ts +12 -0
- package/src/stories/Popover.stories.ts +0 -2
- package/src/styles/main.css +9 -1
- package/src/tools/list/caret-manager.ts +28 -10
- package/src/tools/table/index.ts +180 -37
- package/src/tools/table/table-add-controls.ts +51 -14
- package/src/tools/table/table-cell-blocks.ts +41 -2
- package/src/tools/table/table-cell-selection.ts +27 -1
- package/src/tools/table/table-operations.ts +12 -15
- package/src/tools/table/table-row-col-controls.ts +69 -6
- package/src/tools/table/table-scroll-haze.ts +152 -0
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "Escreva algo ou pressione / para selecionar",
|
|
30
30
|
"tools.table.title": "Tabela",
|
|
31
31
|
"tools.table.clearSelection": "Limpar",
|
|
32
|
+
"tools.table.copySelection": "Copiar",
|
|
32
33
|
"tools.table.headerColumn": "Coluna de cabeçalho",
|
|
33
34
|
"tools.table.insertColumnLeft": "Inserir coluna à esquerda",
|
|
34
35
|
"tools.table.insertColumnRight": "Inserir coluna à direita",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"tools.paragraph.placeholder": "Scrie ceva sau apasă / pentru a selecta",
|
|
45
45
|
"tools.table.title": "Tabel",
|
|
46
46
|
"tools.table.clearSelection": "Șterge",
|
|
47
|
+
"tools.table.copySelection": "Copiază",
|
|
47
48
|
"tools.table.headerColumn": "Coloană antet",
|
|
48
49
|
"tools.table.insertColumnLeft": "Inserează coloană la stânga",
|
|
49
50
|
"tools.table.insertColumnRight": "Inserează coloană la dreapta",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "Напишите что-нибудь или нажмите / для выбора блока",
|
|
30
30
|
"tools.table.title": "Таблица",
|
|
31
31
|
"tools.table.clearSelection": "Очистить",
|
|
32
|
+
"tools.table.copySelection": "Копировать",
|
|
32
33
|
"tools.table.headerColumn": "Колонка-заголовок",
|
|
33
34
|
"tools.table.insertColumnLeft": "Вставить столбец слева",
|
|
34
35
|
"tools.table.insertColumnRight": "Вставить столбец справа",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "ڪجھ لکو يا اوزار چونڊڻ لاءِ / دٻايو",
|
|
30
30
|
"tools.table.title": "ٽيبل",
|
|
31
31
|
"tools.table.clearSelection": "صاف ڪريو",
|
|
32
|
+
"tools.table.copySelection": "ڪاپي",
|
|
32
33
|
"tools.table.headerColumn": "هيڊر ڪالم",
|
|
33
34
|
"tools.table.insertColumnLeft": "کاٻي ڪالم شامل ڪريو",
|
|
34
35
|
"tools.table.insertColumnRight": "ساڄي ڪالم شامل ڪريو",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"tools.paragraph.placeholder": "යමක් ලියන්න හෝ තෝරා ගැනීමට / ඔබන්න",
|
|
45
45
|
"tools.table.title": "වගුව",
|
|
46
46
|
"tools.table.clearSelection": "හිස් කරන්න",
|
|
47
|
+
"tools.table.copySelection": "පිටපත් කරන්න",
|
|
47
48
|
"tools.table.headerColumn": "ශීර්ෂ තීරුව",
|
|
48
49
|
"tools.table.insertColumnLeft": "වමට තීරුව එක් කරන්න",
|
|
49
50
|
"tools.table.insertColumnRight": "දකුණට තීරුව එක් කරන්න",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"tools.paragraph.placeholder": "Napíšte niečo alebo stlačte / pre výber",
|
|
45
45
|
"tools.table.title": "Tabuľka",
|
|
46
46
|
"tools.table.clearSelection": "Vymazať",
|
|
47
|
+
"tools.table.copySelection": "Kopírovať",
|
|
47
48
|
"tools.table.headerColumn": "Stĺpec hlavičky",
|
|
48
49
|
"tools.table.insertColumnLeft": "Vložiť stĺpec vľavo",
|
|
49
50
|
"tools.table.insertColumnRight": "Vložiť stĺpec vpravo",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "Napišite nekaj ali pritisnite / za izbiro",
|
|
30
30
|
"tools.table.title": "Tabela",
|
|
31
31
|
"tools.table.clearSelection": "Počisti",
|
|
32
|
+
"tools.table.copySelection": "Kopiraj",
|
|
32
33
|
"tools.table.headerColumn": "Stolpec glave",
|
|
33
34
|
"tools.table.insertColumnLeft": "Vstavi stolpec levo",
|
|
34
35
|
"tools.table.insertColumnRight": "Vstavi stolpec desno",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "Shkruaj diçka ose shtyp / për të zgjedhur",
|
|
30
30
|
"tools.table.title": "Tabelë",
|
|
31
31
|
"tools.table.clearSelection": "Pastro",
|
|
32
|
+
"tools.table.copySelection": "Kopjo",
|
|
32
33
|
"tools.table.headerColumn": "Kolonë titull",
|
|
33
34
|
"tools.table.insertColumnLeft": "Shto kolonë majtas",
|
|
34
35
|
"tools.table.insertColumnRight": "Shto kolonë djathtas",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "Напишите нешто или притисните / за избор",
|
|
30
30
|
"tools.table.title": "Табела",
|
|
31
31
|
"tools.table.clearSelection": "Очисти",
|
|
32
|
+
"tools.table.copySelection": "Копирај",
|
|
32
33
|
"tools.table.headerColumn": "Колона заглавља",
|
|
33
34
|
"tools.table.insertColumnLeft": "Уметни колону лево",
|
|
34
35
|
"tools.table.insertColumnRight": "Уметни колону десно",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "Skriv något eller tryck / för att välja",
|
|
30
30
|
"tools.table.title": "Tabell",
|
|
31
31
|
"tools.table.clearSelection": "Rensa",
|
|
32
|
+
"tools.table.copySelection": "Kopiera",
|
|
32
33
|
"tools.table.headerColumn": "Rubrikkolumn",
|
|
33
34
|
"tools.table.insertColumnLeft": "Infoga kolumn till vänster",
|
|
34
35
|
"tools.table.insertColumnRight": "Infoga kolumn till höger",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "Andika kitu au bonyeza / kuchagua",
|
|
30
30
|
"tools.table.title": "Jedwali",
|
|
31
31
|
"tools.table.clearSelection": "Futa",
|
|
32
|
+
"tools.table.copySelection": "Nakili",
|
|
32
33
|
"tools.table.headerColumn": "Safu wima ya kichwa",
|
|
33
34
|
"tools.table.insertColumnLeft": "Ingiza safu wima kushoto",
|
|
34
35
|
"tools.table.insertColumnRight": "Ingiza safu wima kulia",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "ஏதாவது எழுதவும் அல்லது கருவி தேர்வு செய்ய / அழுத்தவும்",
|
|
30
30
|
"tools.table.title": "அட்டவணை",
|
|
31
31
|
"tools.table.clearSelection": "தெளி",
|
|
32
|
+
"tools.table.copySelection": "நகலெடு",
|
|
32
33
|
"tools.table.headerColumn": "தலைப்பு நெடுவரிசை",
|
|
33
34
|
"tools.table.insertColumnLeft": "இடதில் நெடுவரிசை சேர்",
|
|
34
35
|
"tools.table.insertColumnRight": "வலதில் நெடுவரிசை சேர்",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"tools.paragraph.placeholder": "ఏదైనా రాయండి లేదా సాధనం ఎంచుకోడానికి / నొక్కండి",
|
|
45
45
|
"tools.table.title": "పట్టిక",
|
|
46
46
|
"tools.table.clearSelection": "తుడుచు",
|
|
47
|
+
"tools.table.copySelection": "కాపీ చేయి",
|
|
47
48
|
"tools.table.headerColumn": "శీర్ష స్తంభం",
|
|
48
49
|
"tools.table.insertColumnLeft": "ఎడమవైపు స్తంభం చొప్పించు",
|
|
49
50
|
"tools.table.insertColumnRight": "కుడివైపు స్తంభం చొప్పించు",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"tools.paragraph.placeholder": "เขียนอะไรสักอย่าง หรือกด / เพื่อเลือกเครื่องมือ",
|
|
45
45
|
"tools.table.title": "ตาราง",
|
|
46
46
|
"tools.table.clearSelection": "ล้าง",
|
|
47
|
+
"tools.table.copySelection": "คัดลอก",
|
|
47
48
|
"tools.table.headerColumn": "คอลัมน์หัวข้อ",
|
|
48
49
|
"tools.table.insertColumnLeft": "แทรกคอลัมน์ทางซ้าย",
|
|
49
50
|
"tools.table.insertColumnRight": "แทรกคอลัมน์ทางขวา",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"tools.paragraph.placeholder": "Bir şeyler yazın veya seçmek için / tuşuna basın",
|
|
45
45
|
"tools.table.title": "Tablo",
|
|
46
46
|
"tools.table.clearSelection": "Temizle",
|
|
47
|
+
"tools.table.copySelection": "Kopyala",
|
|
47
48
|
"tools.table.headerColumn": "Başlık sütunu",
|
|
48
49
|
"tools.table.insertColumnLeft": "Sola sütun ekle",
|
|
49
50
|
"tools.table.insertColumnRight": "Sağa sütun ekle",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "بىر نەرسە يېزىڭ ياكى / نى بېسىپ قورال تاللاڭ",
|
|
30
30
|
"tools.table.title": "جەدۋەل",
|
|
31
31
|
"tools.table.clearSelection": "تازىلاش",
|
|
32
|
+
"tools.table.copySelection": "كۆچۈر",
|
|
32
33
|
"tools.table.headerColumn": "ماۋزۇ ئىستونى",
|
|
33
34
|
"tools.table.insertColumnLeft": "سولغا ئىستون قىستۇرۇش",
|
|
34
35
|
"tools.table.insertColumnRight": "ئوڭغا ئىستون قىستۇرۇش",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"tools.paragraph.placeholder": "Напишіть щось або натисніть / для вибору",
|
|
45
45
|
"tools.table.title": "Таблиця",
|
|
46
46
|
"tools.table.clearSelection": "Очистити",
|
|
47
|
+
"tools.table.copySelection": "Копіювати",
|
|
47
48
|
"tools.table.headerColumn": "Колонка-заголовок",
|
|
48
49
|
"tools.table.insertColumnLeft": "Вставити колонку зліва",
|
|
49
50
|
"tools.table.insertColumnRight": "Вставити колонку справа",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"tools.paragraph.placeholder": "کچھ لکھیں یا منتخب کرنے کیلئے / دبائیں",
|
|
45
45
|
"tools.table.title": "ٹیبل",
|
|
46
46
|
"tools.table.clearSelection": "صاف کریں",
|
|
47
|
+
"tools.table.copySelection": "کاپی",
|
|
47
48
|
"tools.table.headerColumn": "ہیڈر کالم",
|
|
48
49
|
"tools.table.insertColumnLeft": "بائیں کالم شامل کریں",
|
|
49
50
|
"tools.table.insertColumnRight": "دائیں کالم شامل کریں",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "Viết gì đó hoặc nhấn / để chọn công cụ",
|
|
30
30
|
"tools.table.title": "Bảng",
|
|
31
31
|
"tools.table.clearSelection": "Xóa",
|
|
32
|
+
"tools.table.copySelection": "Sao chép",
|
|
32
33
|
"tools.table.headerColumn": "Cột tiêu đề",
|
|
33
34
|
"tools.table.insertColumnLeft": "Chèn cột bên trái",
|
|
34
35
|
"tools.table.insertColumnRight": "Chèn cột bên phải",
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
"tools.paragraph.placeholder": "שרײַב עפּעס אָדער דריק / צו קלײַבן אַ געצײַג",
|
|
30
30
|
"tools.table.title": "טאַבעלע",
|
|
31
31
|
"tools.table.clearSelection": "אויסמעקן",
|
|
32
|
+
"tools.table.copySelection": "קאָפּירן",
|
|
32
33
|
"tools.table.headerColumn": "קעפּל שפּאַלט",
|
|
33
34
|
"tools.table.insertColumnLeft": "אַרײַנשטעלן שפּאַלט לינקס",
|
|
34
35
|
"tools.table.insertColumnRight": "אַרײַנשטעלן שפּאַלט רעכטס",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"a11y.atBottom": "内容块已在底部,无法下移",
|
|
45
45
|
"tools.table.title": "表格",
|
|
46
46
|
"tools.table.clearSelection": "清除",
|
|
47
|
+
"tools.table.copySelection": "复制",
|
|
47
48
|
"tools.table.headerColumn": "标题列",
|
|
48
49
|
"tools.table.insertColumnLeft": "在左侧插入列",
|
|
49
50
|
"tools.table.insertColumnRight": "在右侧插入列",
|
|
@@ -323,6 +323,14 @@ export const IconMoveRight = `
|
|
|
323
323
|
</svg>
|
|
324
324
|
`;
|
|
325
325
|
|
|
326
|
+
// Copy icon
|
|
327
|
+
export const IconCopy = `
|
|
328
|
+
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
329
|
+
<rect x="7" y="7" width="9" height="9" rx="1.5" stroke="currentColor" stroke-width="1.25"/>
|
|
330
|
+
<path d="M5 13h-.5A1.5 1.5 0 0 1 3 11.5v-7A1.5 1.5 0 0 1 4.5 3h7A1.5 1.5 0 0 1 13 4.5V5" stroke="currentColor" stroke-width="1.25"/>
|
|
331
|
+
</svg>
|
|
332
|
+
`;
|
|
333
|
+
|
|
326
334
|
// Trash/Delete icon
|
|
327
335
|
export const IconTrash = `
|
|
328
336
|
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
@@ -43,6 +43,33 @@ export class KeyboardNavigation extends BlockEventComposer {
|
|
|
43
43
|
return ui.isRtl ?? false;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Check if the current block is inside a table cell.
|
|
48
|
+
* Used to prevent closing the toolbar when the user navigates
|
|
49
|
+
* within a table — closing it makes the toolbar permanently
|
|
50
|
+
* disappear because the hover controller deduplicates by block id
|
|
51
|
+
* and all cells resolve to the same parent table block.
|
|
52
|
+
*/
|
|
53
|
+
private get isCurrentBlockInsideTableCell(): boolean {
|
|
54
|
+
const currentBlock = this.Blok.BlockManager.currentBlock;
|
|
55
|
+
|
|
56
|
+
return Boolean(currentBlock?.holder?.closest('[data-blok-table-cell-blocks]'));
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Fully close the toolbar if the current block is NOT inside a table cell.
|
|
61
|
+
* Used for destructive operations (Backspace, Delete, merge) where the
|
|
62
|
+
* toolbar should be dismissed — unlike arrow navigation where
|
|
63
|
+
* hideBlockActions() is preferred to allow reopening.
|
|
64
|
+
*/
|
|
65
|
+
private closeToolbarIfNotInTableCell(): void {
|
|
66
|
+
if (this.isCurrentBlockInsideTableCell) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
this.Blok.Toolbar.close();
|
|
71
|
+
}
|
|
72
|
+
|
|
46
73
|
/**
|
|
47
74
|
* Tab pressed inside a Block.
|
|
48
75
|
* @param event - keydown event
|
|
@@ -186,7 +213,8 @@ export class KeyboardNavigation extends BlockEventComposer {
|
|
|
186
213
|
* All the cases below have custom behaviour, so we don't need a native one
|
|
187
214
|
*/
|
|
188
215
|
event.preventDefault();
|
|
189
|
-
|
|
216
|
+
|
|
217
|
+
this.closeToolbarIfNotInTableCell();
|
|
190
218
|
|
|
191
219
|
const isFirstInputFocused = currentBlock.currentInput === currentBlock.firstInput;
|
|
192
220
|
|
|
@@ -273,7 +301,8 @@ export class KeyboardNavigation extends BlockEventComposer {
|
|
|
273
301
|
* All the cases below have custom behaviour, so we don't need a native one
|
|
274
302
|
*/
|
|
275
303
|
event.preventDefault();
|
|
276
|
-
|
|
304
|
+
|
|
305
|
+
this.closeToolbarIfNotInTableCell();
|
|
277
306
|
|
|
278
307
|
const isLastInputFocused = currentBlock.currentInput === currentBlock.lastInput;
|
|
279
308
|
|
|
@@ -316,7 +345,7 @@ export class KeyboardNavigation extends BlockEventComposer {
|
|
|
316
345
|
const newCurrentBlock = BlockManager.currentBlock;
|
|
317
346
|
|
|
318
347
|
newCurrentBlock && Caret.setToBlock(newCurrentBlock, Caret.positions.START);
|
|
319
|
-
this.
|
|
348
|
+
this.closeToolbarIfNotInTableCell();
|
|
320
349
|
|
|
321
350
|
return;
|
|
322
351
|
}
|
|
@@ -340,7 +369,7 @@ export class KeyboardNavigation extends BlockEventComposer {
|
|
|
340
369
|
* @param blockToMerge - what Block we want to merge
|
|
341
370
|
*/
|
|
342
371
|
private mergeBlocks(targetBlock: Block, blockToMerge: Block): void {
|
|
343
|
-
const { BlockManager
|
|
372
|
+
const { BlockManager } = this.Blok;
|
|
344
373
|
|
|
345
374
|
if (targetBlock.lastInput === undefined) {
|
|
346
375
|
return;
|
|
@@ -351,7 +380,7 @@ export class KeyboardNavigation extends BlockEventComposer {
|
|
|
351
380
|
BlockManager
|
|
352
381
|
.mergeBlocks(targetBlock, blockToMerge)
|
|
353
382
|
.then(() => {
|
|
354
|
-
|
|
383
|
+
this.closeToolbarIfNotInTableCell();
|
|
355
384
|
})
|
|
356
385
|
.catch(() => {
|
|
357
386
|
// Error handling for mergeBlocks
|
|
@@ -391,9 +420,10 @@ export class KeyboardNavigation extends BlockEventComposer {
|
|
|
391
420
|
/**
|
|
392
421
|
* Close Toolbar when user moves cursor, but keep toolbars open if the user
|
|
393
422
|
* is extending selection with the Shift key so inline interactions remain available.
|
|
423
|
+
* Skip closing when inside a table cell — the toolbar belongs to the parent
|
|
424
|
+
* table block and the hover controller won't re-emit BlockHovered for it.
|
|
394
425
|
*/
|
|
395
|
-
if (!event.shiftKey) {
|
|
396
|
-
this.Blok.Toolbar.close();
|
|
426
|
+
if (!event.shiftKey && !this.isCurrentBlockInsideTableCell) {
|
|
397
427
|
this.Blok.InlineToolbar.close();
|
|
398
428
|
}
|
|
399
429
|
|
|
@@ -477,6 +507,11 @@ export class KeyboardNavigation extends BlockEventComposer {
|
|
|
477
507
|
*/
|
|
478
508
|
event.preventDefault();
|
|
479
509
|
|
|
510
|
+
/**
|
|
511
|
+
* Reopen the toolbar at the new block position after navigation
|
|
512
|
+
*/
|
|
513
|
+
this.Blok.Toolbar.moveAndOpen(this.Blok.BlockManager.currentBlock);
|
|
514
|
+
|
|
480
515
|
return;
|
|
481
516
|
}
|
|
482
517
|
|
|
@@ -526,15 +561,16 @@ export class KeyboardNavigation extends BlockEventComposer {
|
|
|
526
561
|
return;
|
|
527
562
|
}
|
|
528
563
|
|
|
529
|
-
if (toolbarOpened) {
|
|
564
|
+
if (toolbarOpened && !this.isCurrentBlockInsideTableCell) {
|
|
530
565
|
this.Blok.UI.closeAllToolbars();
|
|
531
566
|
}
|
|
532
567
|
|
|
533
568
|
/**
|
|
534
569
|
* Close Toolbar when user moves cursor, but preserve it for Shift-based selection changes.
|
|
570
|
+
* Skip closing when inside a table cell — the toolbar belongs to the parent
|
|
571
|
+
* table block and the hover controller won't re-emit BlockHovered for it.
|
|
535
572
|
*/
|
|
536
|
-
if (!event.shiftKey) {
|
|
537
|
-
this.Blok.Toolbar.close();
|
|
573
|
+
if (!event.shiftKey && !this.isCurrentBlockInsideTableCell) {
|
|
538
574
|
this.Blok.InlineToolbar.close();
|
|
539
575
|
}
|
|
540
576
|
|
|
@@ -605,6 +641,11 @@ export class KeyboardNavigation extends BlockEventComposer {
|
|
|
605
641
|
*/
|
|
606
642
|
event.preventDefault();
|
|
607
643
|
|
|
644
|
+
/**
|
|
645
|
+
* Reopen the toolbar at the new block position after navigation
|
|
646
|
+
*/
|
|
647
|
+
this.Blok.Toolbar.moveAndOpen(this.Blok.BlockManager.currentBlock);
|
|
648
|
+
|
|
608
649
|
return;
|
|
609
650
|
}
|
|
610
651
|
|
|
@@ -228,16 +228,13 @@ export class BlockEvents extends Module {
|
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
/**
|
|
231
|
-
* When user
|
|
232
|
-
*
|
|
233
|
-
* - clear block highlighting
|
|
231
|
+
* When user types something, clear block highlighting.
|
|
232
|
+
* The toolbar stays visible — it should persist during typing.
|
|
234
233
|
*/
|
|
235
234
|
if (!isPrintableKeyEvent(event)) {
|
|
236
235
|
return;
|
|
237
236
|
}
|
|
238
237
|
|
|
239
|
-
this.Blok.Toolbar.close();
|
|
240
|
-
|
|
241
238
|
/**
|
|
242
239
|
* Allow to use shortcuts with selected blocks
|
|
243
240
|
* @type {boolean}
|
|
@@ -724,6 +724,16 @@ export class BlockManager extends Module {
|
|
|
724
724
|
return this.repository.getBlockById(id);
|
|
725
725
|
}
|
|
726
726
|
|
|
727
|
+
/**
|
|
728
|
+
* Walks up the parentId chain and returns the top-level (root) block.
|
|
729
|
+
* If the block has no parent, returns it as-is.
|
|
730
|
+
* @param block - the block to resolve
|
|
731
|
+
* @returns {Block} the root ancestor block
|
|
732
|
+
*/
|
|
733
|
+
public resolveToRootBlock(block: Block): Block {
|
|
734
|
+
return this.repository.resolveToRootBlock(block);
|
|
735
|
+
}
|
|
736
|
+
|
|
727
737
|
/**
|
|
728
738
|
* Returns the depth (nesting level) of a block in the hierarchy.
|
|
729
739
|
* @param block - the block to get depth for
|
|
@@ -497,6 +497,17 @@ export class BlockOperations {
|
|
|
497
497
|
return;
|
|
498
498
|
}
|
|
499
499
|
|
|
500
|
+
// Check if the move would place a restricted tool inside a table cell
|
|
501
|
+
const movingBlock = this.repository.getBlockByIndex(fromIndex);
|
|
502
|
+
const neighborBlock = this.repository.getBlockByIndex(toIndex);
|
|
503
|
+
|
|
504
|
+
if (movingBlock !== undefined && neighborBlock !== undefined &&
|
|
505
|
+
isInsideTableCell(neighborBlock) && isRestrictedInTableCell(movingBlock.name)) {
|
|
506
|
+
log(`Warning during 'move' call: '${movingBlock.name}' is restricted in table cells.`, 'warn');
|
|
507
|
+
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
510
|
+
|
|
500
511
|
// Suppress stopCapturing to keep DOM + Yjs move as single undo entry
|
|
501
512
|
this.suppressStopCapturing = true;
|
|
502
513
|
try {
|
|
@@ -201,6 +201,28 @@ export class BlockRepository {
|
|
|
201
201
|
return previousBlocks.find((block) => !!block.inputs.length);
|
|
202
202
|
}
|
|
203
203
|
|
|
204
|
+
/**
|
|
205
|
+
* Walks up the parentId chain and returns the top-level (root) block.
|
|
206
|
+
* If the block has no parent, returns it as-is.
|
|
207
|
+
* Used by selection modules to treat hierarchical blocks (e.g. table cells)
|
|
208
|
+
* as a single unit rather than selecting child blocks individually.
|
|
209
|
+
* @param block - the block to resolve
|
|
210
|
+
* @returns {Block} the root ancestor block
|
|
211
|
+
*/
|
|
212
|
+
public resolveToRootBlock(block: Block): Block {
|
|
213
|
+
if (block.parentId === null) {
|
|
214
|
+
return block;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
const parent = this.getBlockById(block.parentId);
|
|
218
|
+
|
|
219
|
+
if (parent === undefined) {
|
|
220
|
+
return block;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return this.resolveToRootBlock(parent);
|
|
224
|
+
}
|
|
225
|
+
|
|
204
226
|
/**
|
|
205
227
|
* Get block at a specific index from the blocks store nodes array
|
|
206
228
|
* @param index - the index
|