@jackuait/blok 0.6.0-beta.9 → 0.7.0-beta.1
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-Bn6Q_o8h.mjs → blok-ob9Fwr1L.mjs} +3414 -2975
- package/dist/chunks/i18next-B47TKgbU.mjs +1303 -0
- package/dist/chunks/{i18next-loader-DjR4d8M7.mjs → i18next-loader-Bu3vFvye.mjs} +2 -2
- package/dist/chunks/{index-oe38cp86.mjs → index-CZmRzRIX.mjs} +12 -12
- package/dist/chunks/{inline-tool-convert-SRTkyaZn.mjs → inline-tool-convert-CvFW2iie.mjs} +1579 -961
- package/dist/chunks/{messages-BogRq8lt.mjs → messages-0AbcLMLm.mjs} +6 -0
- package/dist/chunks/{messages-DJDG55Vq.mjs → messages-0E0AkrNu.mjs} +6 -0
- package/dist/{messages-DnXLrlHh.mjs → chunks/messages-4v4MuVEc.mjs} +6 -0
- package/dist/chunks/{messages-DnIhyAJk.mjs → messages-62v-CLC-.mjs} +6 -0
- package/dist/chunks/{messages-Dzwxv9v1.mjs → messages-8DeO60Oo.mjs} +6 -0
- package/dist/chunks/{messages-B1Aww8q7.mjs → messages-8IPXkrDl.mjs} +6 -0
- package/dist/{messages-uKX8WBaD.mjs → chunks/messages-96kNZDll.mjs} +6 -0
- package/dist/chunks/{messages-BL0tXcDf.mjs → messages-B1FZ8lxU.mjs} +6 -0
- package/dist/{messages-DBn76jVV.mjs → chunks/messages-B217znr-.mjs} +8 -2
- package/dist/{messages-DT4dP5uK.mjs → chunks/messages-B8WNljW3.mjs} +6 -0
- package/dist/chunks/{messages-BdeLo0N9.mjs → messages-BC8IN4Bf.mjs} +6 -0
- package/dist/{messages-CZygwLwM.mjs → chunks/messages-BI43k_BD.mjs} +6 -0
- package/dist/{messages-CzTufCHu.mjs → chunks/messages-BJ6zrz2j.mjs} +6 -0
- package/dist/{messages-BoJc_p1r.mjs → chunks/messages-BUl_Rcnj.mjs} +6 -0
- package/dist/chunks/{messages-CnwibSvh.mjs → messages-BZlmVRwn.mjs} +6 -0
- package/dist/{messages-C2htQ_3F.mjs → chunks/messages-BcpCubnC.mjs} +6 -0
- package/dist/{messages-D5C3J9qr.mjs → chunks/messages-Bm-E4iRC.mjs} +6 -0
- package/dist/chunks/{messages-BELRf6DU.mjs → messages-C4jL-90N.mjs} +6 -0
- package/dist/chunks/{messages-1fC8IMyX.mjs → messages-CDBLbUOQ.mjs} +6 -0
- package/dist/chunks/{messages-7QoX8DkW.mjs → messages-CH4hrauY.mjs} +6 -0
- package/dist/{messages-Dz9L52ol.mjs → chunks/messages-CRJ_mchV.mjs} +6 -0
- package/dist/chunks/{messages-JELdtT6E.mjs → messages-CW4c4cRk.mjs} +6 -0
- package/dist/chunks/{messages-CKI54h6O.mjs → messages-C_4otP7U.mjs} +6 -0
- package/dist/{messages-R3hUSvr3.mjs → chunks/messages-CfiyT2Wi.mjs} +6 -0
- package/dist/{messages-CJdUsQ-c.mjs → chunks/messages-CgTq3QhU.mjs} +6 -0
- package/dist/chunks/{messages-D1Hv8XGo.mjs → messages-Chb7k3Rg.mjs} +6 -0
- package/dist/{messages-Q7AO_FLv.mjs → chunks/messages-Cjjo7yHR.mjs} +6 -0
- package/dist/{messages-C99mq906.mjs → chunks/messages-Cl6ayUaq.mjs} +6 -0
- package/dist/chunks/{messages-Diu6jAaR.mjs → messages-CmR9ftc_.mjs} +6 -0
- package/dist/chunks/{messages-LPVfA-8K.mjs → messages-Cr49Nt3U.mjs} +6 -0
- package/dist/chunks/{messages-DqM1LFg5.mjs → messages-Cr94GzbX.mjs} +6 -0
- package/dist/{messages-BWF-zUpY.mjs → chunks/messages-CrCYPCk3.mjs} +6 -0
- package/dist/{messages-D-ZtY5v0.mjs → chunks/messages-Cs8zmZ3L.mjs} +6 -0
- package/dist/{messages-DprmQg6V.mjs → chunks/messages-CzK0LEhb.mjs} +6 -0
- package/dist/chunks/{messages-BSbjsyHY.mjs → messages-D00x4S8o.mjs} +6 -0
- package/dist/chunks/{messages-Xq8UmkVs.mjs → messages-D1mn7Zd5.mjs} +6 -0
- package/dist/chunks/{messages-BC86qLvI.mjs → messages-D2NOpHn9.mjs} +6 -0
- package/dist/{messages-kep5wtm4.mjs → chunks/messages-D4qqwVgQ.mjs} +6 -0
- package/dist/chunks/{messages-7W4d0DwD.mjs → messages-D5S1Dnpm.mjs} +6 -0
- package/dist/{messages-CY8_RyFE.mjs → chunks/messages-D7u2bmP2.mjs} +6 -0
- package/dist/chunks/{messages-BFG6Wlgy.mjs → messages-D85FqxgY.mjs} +6 -0
- package/dist/{messages-DLfR5bMd.mjs → chunks/messages-D9ndgBnU.mjs} +6 -0
- package/dist/{messages-CVw84KdI.mjs → chunks/messages-DDTQgImT.mjs} +6 -0
- package/dist/{messages-_ErNTNhk.mjs → chunks/messages-DH_jBeED.mjs} +6 -0
- package/dist/chunks/{messages-CMkNSDTo.mjs → messages-DRXWF0PV.mjs} +6 -0
- package/dist/chunks/{messages-BYyy6Wqf.mjs → messages-DVQvl8Qj.mjs} +6 -0
- package/dist/chunks/{messages-CznZadDf.mjs → messages-DXktiao_.mjs} +6 -0
- package/dist/chunks/{messages-DhLKYm2j.mjs → messages-DdK-nFGm.mjs} +6 -0
- package/dist/chunks/{messages-BMXCuEKO.mjs → messages-DlJbPF2T.mjs} +6 -0
- package/dist/chunks/{messages-CvGLfqmV.mjs → messages-DnVlmiNT.mjs} +6 -0
- package/dist/{messages-Z9nEU2xK.mjs → chunks/messages-DviiFSv2.mjs} +6 -0
- package/dist/chunks/{messages-BB5z9Uba.mjs → messages-DzqM3Fel.mjs} +6 -0
- package/dist/{messages-w7v1GNaE.mjs → chunks/messages-Dzzn6XoD.mjs} +6 -0
- package/dist/{messages-CqWJcCbY.mjs → chunks/messages-GSByFygY.mjs} +6 -0
- package/dist/chunks/{messages-_ncGrKHh.mjs → messages-L_kl2Qvh.mjs} +6 -0
- package/dist/chunks/{messages-BrPFGbM-.mjs → messages-Phkd7XmE.mjs} +6 -0
- package/dist/{messages-BU2nlrLK.mjs → chunks/messages-RonBBCnh.mjs} +6 -0
- package/dist/{messages-Bmu_S7GM.mjs → chunks/messages-VDriF5Qy.mjs} +6 -0
- package/dist/{messages-CLhcMlTc.mjs → chunks/messages-ZjUAIWb1.mjs} +6 -0
- package/dist/{messages-9SihnaXQ.mjs → chunks/messages-b1EdvUm0.mjs} +6 -0
- package/dist/{messages-DvFLX36Q.mjs → chunks/messages-begYOTgC.mjs} +6 -0
- package/dist/{messages-BMv4xwIr.mjs → chunks/messages-jrncnb-H.mjs} +6 -0
- package/dist/{messages-D5iv1Kox.mjs → chunks/messages-nefz1S71.mjs} +6 -0
- package/dist/{messages-CQwpzUFp.mjs → chunks/messages-ucTVgS5G.mjs} +6 -0
- package/dist/chunks/{messages-DBRw-7Zc.mjs → messages-v3GipbFl.mjs} +6 -0
- package/dist/{messages-C9eaarcK.mjs → chunks/messages-wmi-iFkH.mjs} +6 -0
- package/dist/chunks/{messages-O5tQus_0.mjs → messages-yHcs38yI.mjs} +6 -0
- package/dist/full.mjs +30 -27
- package/dist/locales.mjs +90 -84
- package/dist/{messages-BogRq8lt.mjs → messages-0AbcLMLm.mjs} +6 -0
- package/dist/{messages-DJDG55Vq.mjs → messages-0E0AkrNu.mjs} +6 -0
- package/dist/{chunks/messages-DnXLrlHh.mjs → messages-4v4MuVEc.mjs} +6 -0
- package/dist/{messages-DnIhyAJk.mjs → messages-62v-CLC-.mjs} +6 -0
- package/dist/{messages-Dzwxv9v1.mjs → messages-8DeO60Oo.mjs} +6 -0
- package/dist/{messages-B1Aww8q7.mjs → messages-8IPXkrDl.mjs} +6 -0
- package/dist/{chunks/messages-uKX8WBaD.mjs → messages-96kNZDll.mjs} +6 -0
- package/dist/{messages-BL0tXcDf.mjs → messages-B1FZ8lxU.mjs} +6 -0
- package/dist/{chunks/messages-DBn76jVV.mjs → messages-B217znr-.mjs} +8 -2
- package/dist/{chunks/messages-DT4dP5uK.mjs → messages-B8WNljW3.mjs} +6 -0
- package/dist/{messages-BdeLo0N9.mjs → messages-BC8IN4Bf.mjs} +6 -0
- package/dist/{chunks/messages-CZygwLwM.mjs → messages-BI43k_BD.mjs} +6 -0
- package/dist/{chunks/messages-CzTufCHu.mjs → messages-BJ6zrz2j.mjs} +6 -0
- package/dist/{chunks/messages-BoJc_p1r.mjs → messages-BUl_Rcnj.mjs} +6 -0
- package/dist/{messages-CnwibSvh.mjs → messages-BZlmVRwn.mjs} +6 -0
- package/dist/{chunks/messages-C2htQ_3F.mjs → messages-BcpCubnC.mjs} +6 -0
- package/dist/{chunks/messages-D5C3J9qr.mjs → messages-Bm-E4iRC.mjs} +6 -0
- package/dist/{messages-BELRf6DU.mjs → messages-C4jL-90N.mjs} +6 -0
- package/dist/{messages-1fC8IMyX.mjs → messages-CDBLbUOQ.mjs} +6 -0
- package/dist/{messages-7QoX8DkW.mjs → messages-CH4hrauY.mjs} +6 -0
- package/dist/{chunks/messages-Dz9L52ol.mjs → messages-CRJ_mchV.mjs} +6 -0
- package/dist/{messages-JELdtT6E.mjs → messages-CW4c4cRk.mjs} +6 -0
- package/dist/{messages-CKI54h6O.mjs → messages-C_4otP7U.mjs} +6 -0
- package/dist/{chunks/messages-R3hUSvr3.mjs → messages-CfiyT2Wi.mjs} +6 -0
- package/dist/{chunks/messages-CJdUsQ-c.mjs → messages-CgTq3QhU.mjs} +6 -0
- package/dist/{messages-D1Hv8XGo.mjs → messages-Chb7k3Rg.mjs} +6 -0
- package/dist/{chunks/messages-Q7AO_FLv.mjs → messages-Cjjo7yHR.mjs} +6 -0
- package/dist/{chunks/messages-C99mq906.mjs → messages-Cl6ayUaq.mjs} +6 -0
- package/dist/{messages-Diu6jAaR.mjs → messages-CmR9ftc_.mjs} +6 -0
- package/dist/{messages-LPVfA-8K.mjs → messages-Cr49Nt3U.mjs} +6 -0
- package/dist/{messages-DqM1LFg5.mjs → messages-Cr94GzbX.mjs} +6 -0
- package/dist/{chunks/messages-BWF-zUpY.mjs → messages-CrCYPCk3.mjs} +6 -0
- package/dist/{chunks/messages-D-ZtY5v0.mjs → messages-Cs8zmZ3L.mjs} +6 -0
- package/dist/{chunks/messages-DprmQg6V.mjs → messages-CzK0LEhb.mjs} +6 -0
- package/dist/{messages-BSbjsyHY.mjs → messages-D00x4S8o.mjs} +6 -0
- package/dist/{messages-Xq8UmkVs.mjs → messages-D1mn7Zd5.mjs} +6 -0
- package/dist/{messages-BC86qLvI.mjs → messages-D2NOpHn9.mjs} +6 -0
- package/dist/{chunks/messages-kep5wtm4.mjs → messages-D4qqwVgQ.mjs} +6 -0
- package/dist/{messages-7W4d0DwD.mjs → messages-D5S1Dnpm.mjs} +6 -0
- package/dist/{chunks/messages-CY8_RyFE.mjs → messages-D7u2bmP2.mjs} +6 -0
- package/dist/{messages-BFG6Wlgy.mjs → messages-D85FqxgY.mjs} +6 -0
- package/dist/{chunks/messages-DLfR5bMd.mjs → messages-D9ndgBnU.mjs} +6 -0
- package/dist/{chunks/messages-CVw84KdI.mjs → messages-DDTQgImT.mjs} +6 -0
- package/dist/{chunks/messages-_ErNTNhk.mjs → messages-DH_jBeED.mjs} +6 -0
- package/dist/{messages-CMkNSDTo.mjs → messages-DRXWF0PV.mjs} +6 -0
- package/dist/{messages-BYyy6Wqf.mjs → messages-DVQvl8Qj.mjs} +6 -0
- package/dist/{messages-CznZadDf.mjs → messages-DXktiao_.mjs} +6 -0
- package/dist/{messages-DhLKYm2j.mjs → messages-DdK-nFGm.mjs} +6 -0
- package/dist/{messages-BMXCuEKO.mjs → messages-DlJbPF2T.mjs} +6 -0
- package/dist/{messages-CvGLfqmV.mjs → messages-DnVlmiNT.mjs} +6 -0
- package/dist/{chunks/messages-Z9nEU2xK.mjs → messages-DviiFSv2.mjs} +6 -0
- package/dist/{messages-BB5z9Uba.mjs → messages-DzqM3Fel.mjs} +6 -0
- package/dist/{chunks/messages-w7v1GNaE.mjs → messages-Dzzn6XoD.mjs} +6 -0
- package/dist/{chunks/messages-CqWJcCbY.mjs → messages-GSByFygY.mjs} +6 -0
- package/dist/{messages-_ncGrKHh.mjs → messages-L_kl2Qvh.mjs} +6 -0
- package/dist/{messages-BrPFGbM-.mjs → messages-Phkd7XmE.mjs} +6 -0
- package/dist/{chunks/messages-BU2nlrLK.mjs → messages-RonBBCnh.mjs} +6 -0
- package/dist/{chunks/messages-Bmu_S7GM.mjs → messages-VDriF5Qy.mjs} +6 -0
- package/dist/{chunks/messages-CLhcMlTc.mjs → messages-ZjUAIWb1.mjs} +6 -0
- package/dist/{chunks/messages-9SihnaXQ.mjs → messages-b1EdvUm0.mjs} +6 -0
- package/dist/{chunks/messages-DvFLX36Q.mjs → messages-begYOTgC.mjs} +6 -0
- package/dist/{chunks/messages-BMv4xwIr.mjs → messages-jrncnb-H.mjs} +6 -0
- package/dist/{chunks/messages-D5iv1Kox.mjs → messages-nefz1S71.mjs} +6 -0
- package/dist/{chunks/messages-CQwpzUFp.mjs → messages-ucTVgS5G.mjs} +6 -0
- package/dist/{messages-DBRw-7Zc.mjs → messages-v3GipbFl.mjs} +6 -0
- package/dist/{chunks/messages-C9eaarcK.mjs → messages-wmi-iFkH.mjs} +6 -0
- package/dist/{messages-O5tQus_0.mjs → messages-yHcs38yI.mjs} +6 -0
- package/dist/tools.mjs +3537 -1710
- package/dist/vendor.LICENSE.txt +109 -109
- package/package.json +43 -57
- package/src/blok.ts +12 -0
- package/src/components/__module.ts +21 -0
- package/src/components/block/api.ts +17 -0
- package/src/components/block/style-manager.ts +6 -2
- package/src/components/block/tool-renderer.ts +33 -30
- package/src/components/blocks.ts +132 -15
- package/src/components/constants/data-attributes.ts +7 -0
- package/src/components/i18n/locales/am/messages.json +6 -0
- package/src/components/i18n/locales/ar/messages.json +6 -0
- package/src/components/i18n/locales/az/messages.json +6 -0
- package/src/components/i18n/locales/bg/messages.json +6 -0
- package/src/components/i18n/locales/bn/messages.json +6 -0
- package/src/components/i18n/locales/bs/messages.json +6 -0
- package/src/components/i18n/locales/cs/messages.json +6 -0
- package/src/components/i18n/locales/da/messages.json +6 -0
- package/src/components/i18n/locales/de/messages.json +6 -0
- package/src/components/i18n/locales/dv/messages.json +6 -0
- package/src/components/i18n/locales/el/messages.json +6 -0
- package/src/components/i18n/locales/en/messages.json +6 -0
- package/src/components/i18n/locales/es/messages.json +6 -0
- package/src/components/i18n/locales/et/messages.json +6 -0
- package/src/components/i18n/locales/fa/messages.json +6 -0
- package/src/components/i18n/locales/fi/messages.json +6 -0
- package/src/components/i18n/locales/fil/messages.json +6 -0
- package/src/components/i18n/locales/fr/messages.json +6 -0
- package/src/components/i18n/locales/gu/messages.json +6 -0
- package/src/components/i18n/locales/he/messages.json +6 -0
- package/src/components/i18n/locales/hi/messages.json +6 -0
- package/src/components/i18n/locales/hr/messages.json +6 -0
- package/src/components/i18n/locales/hu/messages.json +6 -0
- package/src/components/i18n/locales/hy/messages.json +6 -0
- package/src/components/i18n/locales/id/messages.json +6 -0
- package/src/components/i18n/locales/it/messages.json +6 -0
- package/src/components/i18n/locales/ja/messages.json +6 -0
- package/src/components/i18n/locales/ka/messages.json +6 -0
- package/src/components/i18n/locales/km/messages.json +6 -0
- package/src/components/i18n/locales/kn/messages.json +6 -0
- package/src/components/i18n/locales/ko/messages.json +6 -0
- package/src/components/i18n/locales/ku/messages.json +6 -0
- package/src/components/i18n/locales/lo/messages.json +6 -0
- package/src/components/i18n/locales/lt/messages.json +6 -0
- package/src/components/i18n/locales/lv/messages.json +6 -0
- package/src/components/i18n/locales/mk/messages.json +6 -0
- package/src/components/i18n/locales/ml/messages.json +6 -0
- package/src/components/i18n/locales/mn/messages.json +6 -0
- package/src/components/i18n/locales/mr/messages.json +6 -0
- package/src/components/i18n/locales/ms/messages.json +6 -0
- package/src/components/i18n/locales/my/messages.json +6 -0
- package/src/components/i18n/locales/ne/messages.json +6 -0
- package/src/components/i18n/locales/nl/messages.json +6 -0
- package/src/components/i18n/locales/no/messages.json +6 -0
- package/src/components/i18n/locales/pa/messages.json +6 -0
- package/src/components/i18n/locales/pl/messages.json +6 -0
- package/src/components/i18n/locales/ps/messages.json +6 -0
- package/src/components/i18n/locales/pt/messages.json +6 -0
- package/src/components/i18n/locales/ro/messages.json +6 -0
- package/src/components/i18n/locales/ru/messages.json +6 -0
- package/src/components/i18n/locales/sd/messages.json +6 -0
- package/src/components/i18n/locales/si/messages.json +6 -0
- package/src/components/i18n/locales/sk/messages.json +6 -0
- package/src/components/i18n/locales/sl/messages.json +6 -0
- package/src/components/i18n/locales/sq/messages.json +6 -0
- package/src/components/i18n/locales/sr/messages.json +6 -0
- package/src/components/i18n/locales/sv/messages.json +6 -0
- package/src/components/i18n/locales/sw/messages.json +6 -0
- package/src/components/i18n/locales/ta/messages.json +6 -0
- package/src/components/i18n/locales/te/messages.json +6 -0
- package/src/components/i18n/locales/th/messages.json +6 -0
- package/src/components/i18n/locales/tr/messages.json +6 -0
- package/src/components/i18n/locales/ug/messages.json +6 -0
- package/src/components/i18n/locales/uk/messages.json +6 -0
- package/src/components/i18n/locales/ur/messages.json +6 -0
- package/src/components/i18n/locales/vi/messages.json +6 -0
- package/src/components/i18n/locales/yi/messages.json +6 -0
- package/src/components/i18n/locales/zh/messages.json +6 -0
- package/src/components/icons/index.ts +61 -7
- package/src/components/inline-tools/inline-tool-link.ts +1 -1
- package/src/components/inline-tools/inline-tool-marker.ts +737 -0
- package/src/components/inline-tools/utils/formatting-range-utils.ts +6 -3
- package/src/components/inline-tools/utils/marker-dom-utils.ts +17 -0
- package/src/components/modules/api/blocks.ts +34 -9
- package/src/components/modules/blockEvents/composers/keyboardNavigation.ts +75 -29
- package/src/components/modules/blockEvents/composers/markdownShortcuts.ts +54 -2
- package/src/components/modules/blockEvents/constants.ts +12 -0
- package/src/components/modules/blockEvents/index.ts +13 -5
- package/src/components/modules/blockManager/blockManager.ts +81 -2
- package/src/components/modules/blockManager/hierarchy.ts +20 -2
- package/src/components/modules/blockManager/operations.ts +70 -35
- package/src/components/modules/blockManager/repository.ts +22 -0
- package/src/components/modules/blockManager/types.ts +3 -1
- package/src/components/modules/blockManager/yjs-sync.ts +173 -39
- package/src/components/modules/blockSelection.ts +3 -0
- package/src/components/modules/crossBlockSelection.ts +11 -3
- package/src/components/modules/drag/preview/DragPreview.ts +10 -2
- package/src/components/modules/drag/target/DropTargetDetector.ts +100 -11
- package/src/components/modules/drag/utils/drag.constants.ts +1 -1
- package/src/components/modules/normalizeInlineImages.ts +263 -0
- package/src/components/modules/paste/google-docs-preprocessor.ts +197 -0
- package/src/components/modules/paste/handlers/base.ts +43 -2
- package/src/components/modules/paste/handlers/html-handler.ts +1 -1
- package/src/components/modules/paste/handlers/index.ts +1 -0
- package/src/components/modules/paste/handlers/table-cells-handler.ts +104 -0
- package/src/components/modules/paste/index.ts +20 -3
- package/src/components/modules/readonly.ts +8 -2
- package/src/components/modules/rectangleSelection.ts +5 -2
- package/src/components/modules/renderer.ts +35 -0
- package/src/components/modules/saver.ts +52 -2
- package/src/components/modules/toolbar/blockSettings.ts +52 -44
- package/src/components/modules/toolbar/index.ts +124 -17
- package/src/components/modules/toolbar/inline/index.ts +4 -4
- package/src/components/modules/toolbar/plus-button.ts +3 -3
- package/src/components/modules/toolbar/settings-toggler.ts +3 -3
- package/src/components/modules/toolbar/styles.ts +7 -7
- package/src/components/modules/ui.ts +6 -6
- 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 +10 -7
- package/src/components/modules/yjs/types.ts +8 -6
- package/src/components/modules/yjs/undo-history.ts +90 -11
- package/src/components/selection/fake-background/shadows.ts +1 -1
- package/src/components/shared/color-picker.ts +211 -0
- package/src/components/shared/color-presets.ts +25 -0
- package/src/components/ui/toolbox.ts +27 -11
- package/src/components/utils/color-mapping.ts +241 -0
- package/src/components/utils/notifier/draw.ts +9 -9
- package/src/components/utils/placeholder.ts +24 -8
- package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.const.ts +3 -3
- package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.ts +15 -12
- package/src/components/utils/popover/components/search-input/search-input.const.ts +2 -2
- package/src/components/utils/popover/popover-abstract.ts +30 -5
- package/src/components/utils/popover/popover-desktop.ts +26 -3
- package/src/components/utils/popover/popover-inline.ts +14 -1
- package/src/components/utils/popover/popover-mobile.ts +4 -4
- package/src/components/utils/popover/popover.const.ts +3 -3
- package/src/components/utils/sanitizer.ts +24 -3
- package/src/components/utils/tw.ts +17 -5
- package/src/full.ts +4 -0
- package/src/stories/Header.stories.ts +106 -0
- package/src/stories/MarkerColors.stories.ts +730 -0
- package/src/stories/Placeholder.stories.ts +7 -2
- package/src/stories/Popover.stories.ts +1 -3
- package/src/stories/Table.stories.ts +1662 -0
- package/src/stories/helpers.ts +2 -0
- package/src/styles/main.css +217 -39
- package/src/tools/header/index.ts +204 -26
- package/src/tools/index.ts +5 -1
- package/src/tools/list/caret-manager.ts +28 -10
- package/src/tools/list/constants.ts +2 -2
- package/src/tools/list/dom-builder.ts +3 -3
- package/src/tools/list/static-configs.ts +0 -1
- package/src/tools/paragraph/index.ts +9 -5
- package/src/tools/table/core/table-commands.ts +99 -0
- package/src/tools/table/core/table-controller.ts +231 -0
- package/src/tools/table/core/table-events.ts +102 -0
- package/src/tools/table/index.ts +1070 -174
- package/src/tools/table/ownership/table-event-broker.ts +74 -0
- package/src/tools/table/ownership/table-ownership-registry.ts +126 -0
- package/src/tools/table/table-add-controls.ts +85 -15
- package/src/tools/table/table-cell-blocks.ts +336 -38
- package/src/tools/table/table-cell-clipboard.ts +415 -0
- package/src/tools/table/table-cell-color-picker.ts +34 -0
- package/src/tools/table/table-cell-selection.ts +264 -15
- package/src/tools/table/table-core.ts +3 -42
- package/src/tools/table/table-heading-toggle.ts +2 -2
- package/src/tools/table/table-model.ts +623 -0
- package/src/tools/table/table-operations.ts +59 -78
- package/src/tools/table/table-resize.ts +15 -11
- package/src/tools/table/table-restrictions.ts +69 -3
- package/src/tools/table/table-row-col-action-handler.ts +22 -7
- package/src/tools/table/table-row-col-controls.ts +129 -12
- package/src/tools/table/table-row-col-drag.ts +14 -0
- package/src/tools/table/table-scroll-haze.ts +152 -0
- package/src/tools/table/types.ts +22 -1
- package/src/tools/table/view/table-cell-blocks-adapter.ts +47 -0
- package/src/tools/toggle/block-operations.ts +110 -0
- package/src/tools/toggle/constants.ts +49 -0
- package/src/tools/toggle/dom-builder.ts +125 -0
- package/src/tools/toggle/index.ts +280 -0
- package/src/tools/toggle/toggle-keyboard.ts +139 -0
- package/src/tools/toggle/toggle-lifecycle.ts +80 -0
- package/src/tools/toggle/toggle-shortcuts.ts +107 -0
- package/src/tools/toggle/types.ts +21 -0
- package/src/variants/blok-minimum.ts +13 -0
- package/types/api/block.d.ts +13 -0
- package/types/api/blocks.d.ts +16 -0
- package/types/full.d.ts +2 -0
- package/types/tools/table.d.ts +2 -0
- package/types/tools-entry.d.ts +2 -1
- package/dist/chunks/i18next-CugVlwWp.mjs +0 -1292
- package/src/tools/table/data-normalizer.ts +0 -32
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { TableOwnershipRegistry } from './table-ownership-registry';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Block lifecycle event data routed through the broker.
|
|
5
|
+
* Keeps the shape generic — the broker doesn't interpret event content,
|
|
6
|
+
* it just routes based on block ownership.
|
|
7
|
+
*/
|
|
8
|
+
export interface BlockLifecycleEvent {
|
|
9
|
+
readonly type: string;
|
|
10
|
+
readonly [key: string]: unknown;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Handler callback for routed block lifecycle events.
|
|
15
|
+
*/
|
|
16
|
+
export type BlockEventHandler = (blockId: string, event: BlockLifecycleEvent) => void;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Ownership-based event broker for table block lifecycle events.
|
|
20
|
+
*
|
|
21
|
+
* Instead of every table instance listening to global `'block changed'` events
|
|
22
|
+
* and using heuristics to determine if a block belongs to it, the broker:
|
|
23
|
+
*
|
|
24
|
+
* 1. Receives a single global event (one listener)
|
|
25
|
+
* 2. Resolves the owning table via the ownership registry (O(1) lookup)
|
|
26
|
+
* 3. Routes the event to the correct table subscriber
|
|
27
|
+
*
|
|
28
|
+
* This eliminates adjacency heuristics and cross-table interference.
|
|
29
|
+
*/
|
|
30
|
+
export class TableEventBroker {
|
|
31
|
+
private readonly registry: TableOwnershipRegistry;
|
|
32
|
+
private readonly subscribers = new Map<string, BlockEventHandler>();
|
|
33
|
+
|
|
34
|
+
constructor(registry: TableOwnershipRegistry) {
|
|
35
|
+
this.registry = registry;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Subscribe a table to receive block lifecycle events for its owned blocks.
|
|
40
|
+
*/
|
|
41
|
+
subscribe(tableId: string, handler: BlockEventHandler): void {
|
|
42
|
+
this.subscribers.set(tableId, handler);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Unsubscribe a table from block lifecycle events.
|
|
47
|
+
*/
|
|
48
|
+
unsubscribe(tableId: string): void {
|
|
49
|
+
this.subscribers.delete(tableId);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Route a block lifecycle event to the owning table's handler.
|
|
54
|
+
*
|
|
55
|
+
* If the block is not owned by any table, or no subscriber exists
|
|
56
|
+
* for the owning table, the event is silently dropped — no heuristic
|
|
57
|
+
* claim is attempted.
|
|
58
|
+
*/
|
|
59
|
+
routeBlockEvent(blockId: string, event: BlockLifecycleEvent): void {
|
|
60
|
+
const owner = this.registry.getOwner(blockId);
|
|
61
|
+
|
|
62
|
+
if (owner === null) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const handler = this.subscribers.get(owner.tableId);
|
|
67
|
+
|
|
68
|
+
if (handler === undefined) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
handler(blockId, event);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import type { TableModel } from '../table-model';
|
|
2
|
+
import type { CellContent } from '../types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Ownership entry for a block within a table cell.
|
|
6
|
+
*/
|
|
7
|
+
export interface BlockOwnership {
|
|
8
|
+
readonly tableId: string;
|
|
9
|
+
readonly row: number;
|
|
10
|
+
readonly col: number;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Deterministic block-to-table-cell ownership registry.
|
|
15
|
+
*
|
|
16
|
+
* Provides O(1) lookup: given a block ID, determine which table and cell
|
|
17
|
+
* owns it. This replaces adjacency heuristics in `TableCellBlocks` with
|
|
18
|
+
* a single source of truth for block ownership.
|
|
19
|
+
*
|
|
20
|
+
* The registry is global — all table instances share one registry so that
|
|
21
|
+
* multi-table ownership conflicts are detected immediately.
|
|
22
|
+
*/
|
|
23
|
+
export class TableOwnershipRegistry {
|
|
24
|
+
/** blockId → ownership info */
|
|
25
|
+
private readonly owners = new Map<string, BlockOwnership>();
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Set or update ownership for a block.
|
|
29
|
+
* A block can only be owned by one table cell at a time.
|
|
30
|
+
*/
|
|
31
|
+
setOwner(blockId: string, ownership: BlockOwnership): void {
|
|
32
|
+
this.owners.set(blockId, ownership);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Get the ownership info for a block.
|
|
37
|
+
* Returns null if the block is not tracked.
|
|
38
|
+
*/
|
|
39
|
+
getOwner(blockId: string): BlockOwnership | null {
|
|
40
|
+
return this.owners.get(blockId) ?? null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Remove ownership tracking for a block.
|
|
45
|
+
*/
|
|
46
|
+
removeOwner(blockId: string): void {
|
|
47
|
+
this.owners.delete(blockId);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Check if a block is owned by a specific table.
|
|
52
|
+
*/
|
|
53
|
+
isOwnedByTable(blockId: string, tableId: string): boolean {
|
|
54
|
+
const owner = this.owners.get(blockId);
|
|
55
|
+
|
|
56
|
+
return owner !== null && owner !== undefined && owner.tableId === tableId;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Get all block IDs owned by a specific table.
|
|
61
|
+
*/
|
|
62
|
+
getBlocksForTable(tableId: string): string[] {
|
|
63
|
+
const result: string[] = [];
|
|
64
|
+
|
|
65
|
+
for (const [blockId, ownership] of this.owners) {
|
|
66
|
+
if (ownership.tableId === tableId) {
|
|
67
|
+
result.push(blockId);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Reconcile the registry with a model snapshot for a specific table.
|
|
76
|
+
*
|
|
77
|
+
* After this call, the registry will exactly match the model's block-cell
|
|
78
|
+
* mapping for the given table. Stale entries for the table are removed,
|
|
79
|
+
* and entries for other tables are left untouched.
|
|
80
|
+
*/
|
|
81
|
+
reconcileWithModel(tableId: string, model: TableModel): void {
|
|
82
|
+
// Remove all existing entries for this table
|
|
83
|
+
const toRemove: string[] = [];
|
|
84
|
+
|
|
85
|
+
for (const [blockId, ownership] of this.owners) {
|
|
86
|
+
if (ownership.tableId === tableId) {
|
|
87
|
+
toRemove.push(blockId);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
for (const blockId of toRemove) {
|
|
92
|
+
this.owners.delete(blockId);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// Re-populate from model snapshot
|
|
96
|
+
const snapshot = model.snapshot();
|
|
97
|
+
|
|
98
|
+
snapshot.content.forEach((row, r) => {
|
|
99
|
+
row.forEach((cell, c) => {
|
|
100
|
+
const cellContent = cell as CellContent;
|
|
101
|
+
|
|
102
|
+
for (const blockId of cellContent.blocks) {
|
|
103
|
+
this.owners.set(blockId, { tableId, row: r, col: c });
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Remove all blocks owned by a specific table.
|
|
111
|
+
* Used when a table is destroyed.
|
|
112
|
+
*/
|
|
113
|
+
removeTable(tableId: string): void {
|
|
114
|
+
const toRemove: string[] = [];
|
|
115
|
+
|
|
116
|
+
for (const [blockId, ownership] of this.owners) {
|
|
117
|
+
if (ownership.tableId === tableId) {
|
|
118
|
+
toRemove.push(blockId);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
for (const blockId of toRemove) {
|
|
123
|
+
this.owners.delete(blockId);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -75,6 +75,7 @@ export class TableAddControls {
|
|
|
75
75
|
private colHideTimeout: ReturnType<typeof setTimeout> | null = null;
|
|
76
76
|
private rowVisible = false;
|
|
77
77
|
private colVisible = false;
|
|
78
|
+
private interactive = true;
|
|
78
79
|
private dragState: DragState | null = null;
|
|
79
80
|
|
|
80
81
|
private boundMouseMove: (e: MouseEvent) => void;
|
|
@@ -89,6 +90,7 @@ export class TableAddControls {
|
|
|
89
90
|
private onDragEnd: () => void;
|
|
90
91
|
private boundPointerMove: (e: PointerEvent) => void;
|
|
91
92
|
private boundPointerUp: (e: PointerEvent) => void;
|
|
93
|
+
private boundPointerCancel: (e: PointerEvent) => void;
|
|
92
94
|
private boundRowPointerDown: (e: PointerEvent) => void;
|
|
93
95
|
private boundColPointerDown: (e: PointerEvent) => void;
|
|
94
96
|
private getNewColumnWidth: (() => number) | undefined;
|
|
@@ -111,6 +113,7 @@ export class TableAddControls {
|
|
|
111
113
|
this.boundMouseLeave = this.handleMouseLeave.bind(this);
|
|
112
114
|
this.boundPointerMove = this.handlePointerMove.bind(this);
|
|
113
115
|
this.boundPointerUp = this.handlePointerUp.bind(this);
|
|
116
|
+
this.boundPointerCancel = this.handlePointerCancel.bind(this);
|
|
114
117
|
this.boundRowPointerDown = (e: PointerEvent): void => this.handlePointerDown('row', e);
|
|
115
118
|
this.boundColPointerDown = (e: PointerEvent): void => this.handlePointerDown('col', e);
|
|
116
119
|
|
|
@@ -118,7 +121,7 @@ export class TableAddControls {
|
|
|
118
121
|
this.addColBtn = this.createAddColumnButton();
|
|
119
122
|
|
|
120
123
|
this.wrapper.appendChild(this.addRowBtn);
|
|
121
|
-
this.
|
|
124
|
+
this.wrapper.appendChild(this.addColBtn);
|
|
122
125
|
this.syncRowButtonWidth();
|
|
123
126
|
|
|
124
127
|
this.wrapper.addEventListener('mousemove', this.boundMouseMove);
|
|
@@ -130,17 +133,51 @@ export class TableAddControls {
|
|
|
130
133
|
}
|
|
131
134
|
|
|
132
135
|
/**
|
|
133
|
-
* Match the add-row button width to the grid
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
136
|
+
* Match the add-row button width and horizontal position to the grid.
|
|
137
|
+
*
|
|
138
|
+
* Pixel mode (colWidths set): clamp to the scroll container's visible
|
|
139
|
+
* width so the button never overflows the table boundary.
|
|
140
|
+
*
|
|
141
|
+
* Percent mode (no colWidths): clear `width` and use `left`/`right`
|
|
142
|
+
* constraints so the browser auto-sizes the button to the wrapper's
|
|
143
|
+
* content area, avoiding the wrapper's right padding.
|
|
137
144
|
*/
|
|
138
145
|
public syncRowButtonWidth(): void {
|
|
139
146
|
const gridWidth = this.grid.style.width;
|
|
140
147
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
148
|
+
if (gridWidth && gridWidth.endsWith('px')) {
|
|
149
|
+
const numericWidth = parseFloat(gridWidth);
|
|
150
|
+
const scrollContainer = this.grid.parentElement;
|
|
151
|
+
const isInsideScrollContainer = scrollContainer !== null && scrollContainer !== this.wrapper;
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* When a scroll container exists and the grid overflows it,
|
|
155
|
+
* clamp to the visible width so the button stays within bounds.
|
|
156
|
+
* Guard clientWidth > 0 for pre-layout / jsdom environments.
|
|
157
|
+
*/
|
|
158
|
+
const visibleWidth = isInsideScrollContainer && scrollContainer.clientWidth > 0
|
|
159
|
+
? Math.min(numericWidth, scrollContainer.clientWidth)
|
|
160
|
+
: numericWidth;
|
|
161
|
+
|
|
162
|
+
this.addRowBtn.style.width = `${visibleWidth}px`;
|
|
163
|
+
this.addRowBtn.style.right = '';
|
|
164
|
+
this.addRowBtn.style.left = '0px';
|
|
165
|
+
this.addRowBtn.style.transform = '';
|
|
166
|
+
|
|
167
|
+
this.addColBtn.style.left = `${visibleWidth}px`;
|
|
168
|
+
this.addColBtn.style.right = '';
|
|
169
|
+
} else {
|
|
170
|
+
this.addRowBtn.style.width = '';
|
|
171
|
+
this.addRowBtn.style.left = '0px';
|
|
172
|
+
this.addRowBtn.style.transform = '';
|
|
173
|
+
|
|
174
|
+
const paddingRight = parseFloat(getComputedStyle(this.wrapper).paddingRight) || 0;
|
|
175
|
+
|
|
176
|
+
this.addRowBtn.style.right = `${paddingRight}px`;
|
|
177
|
+
|
|
178
|
+
this.addColBtn.style.left = '';
|
|
179
|
+
this.addColBtn.style.right = '-36px';
|
|
180
|
+
}
|
|
144
181
|
}
|
|
145
182
|
|
|
146
183
|
/**
|
|
@@ -159,6 +196,8 @@ export class TableAddControls {
|
|
|
159
196
|
* Disables pointer events and hover effects during cell selection.
|
|
160
197
|
*/
|
|
161
198
|
public setInteractive(interactive: boolean): void {
|
|
199
|
+
this.interactive = interactive;
|
|
200
|
+
|
|
162
201
|
if (!interactive) {
|
|
163
202
|
this.addRowBtn.style.pointerEvents = 'none';
|
|
164
203
|
this.addColBtn.style.pointerEvents = 'none';
|
|
@@ -181,6 +220,7 @@ export class TableAddControls {
|
|
|
181
220
|
|
|
182
221
|
target.removeEventListener('pointermove', this.boundPointerMove);
|
|
183
222
|
target.removeEventListener('pointerup', this.boundPointerUp);
|
|
223
|
+
target.removeEventListener('pointercancel', this.boundPointerCancel);
|
|
184
224
|
document.body.style.cursor = '';
|
|
185
225
|
this.dragState = null;
|
|
186
226
|
}
|
|
@@ -212,6 +252,7 @@ export class TableAddControls {
|
|
|
212
252
|
|
|
213
253
|
target.addEventListener('pointermove', this.boundPointerMove);
|
|
214
254
|
target.addEventListener('pointerup', this.boundPointerUp);
|
|
255
|
+
target.addEventListener('pointercancel', this.boundPointerCancel);
|
|
215
256
|
}
|
|
216
257
|
|
|
217
258
|
private handlePointerMove(e: PointerEvent): void {
|
|
@@ -264,6 +305,7 @@ export class TableAddControls {
|
|
|
264
305
|
target.releasePointerCapture(pointerId);
|
|
265
306
|
target.removeEventListener('pointermove', this.boundPointerMove);
|
|
266
307
|
target.removeEventListener('pointerup', this.boundPointerUp);
|
|
308
|
+
target.removeEventListener('pointercancel', this.boundPointerCancel);
|
|
267
309
|
|
|
268
310
|
document.body.style.cursor = '';
|
|
269
311
|
this.dragState = null;
|
|
@@ -279,6 +321,31 @@ export class TableAddControls {
|
|
|
279
321
|
this.onDragEnd();
|
|
280
322
|
}
|
|
281
323
|
|
|
324
|
+
/**
|
|
325
|
+
* Handle pointercancel — browser aborted the pointer (touch gesture, system dialog, etc.).
|
|
326
|
+
* Cleans up drag state without triggering click or commit actions.
|
|
327
|
+
*/
|
|
328
|
+
private handlePointerCancel(_e: PointerEvent): void {
|
|
329
|
+
if (!this.dragState) {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
const { axis, didDrag } = this.dragState;
|
|
334
|
+
|
|
335
|
+
const target = axis === 'row' ? this.addRowBtn : this.addColBtn;
|
|
336
|
+
|
|
337
|
+
target.removeEventListener('pointermove', this.boundPointerMove);
|
|
338
|
+
target.removeEventListener('pointerup', this.boundPointerUp);
|
|
339
|
+
target.removeEventListener('pointercancel', this.boundPointerCancel);
|
|
340
|
+
|
|
341
|
+
document.body.style.cursor = '';
|
|
342
|
+
this.dragState = null;
|
|
343
|
+
|
|
344
|
+
if (didDrag) {
|
|
345
|
+
this.onDragEnd();
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
|
|
282
349
|
private measureUnitSize(axis: 'row' | 'col'): number {
|
|
283
350
|
if (axis === 'row') {
|
|
284
351
|
const rows = this.grid.querySelectorAll('[data-blok-table-row]');
|
|
@@ -305,8 +372,14 @@ export class TableAddControls {
|
|
|
305
372
|
|
|
306
373
|
private handleMouseMove(e: MouseEvent): void {
|
|
307
374
|
const gridRect = this.grid.getBoundingClientRect();
|
|
375
|
+
const scrollContainer = this.grid.parentElement;
|
|
376
|
+
const isInsideScrollContainer = scrollContainer !== null && scrollContainer !== this.wrapper;
|
|
377
|
+
const visibleRight = isInsideScrollContainer
|
|
378
|
+
? Math.min(gridRect.right, scrollContainer.getBoundingClientRect().right)
|
|
379
|
+
: gridRect.right;
|
|
380
|
+
|
|
308
381
|
const distFromBottom = Math.abs(e.clientY - gridRect.bottom);
|
|
309
|
-
const distFromRight = Math.abs(e.clientX -
|
|
382
|
+
const distFromRight = Math.abs(e.clientX - visibleRight);
|
|
310
383
|
|
|
311
384
|
if (distFromBottom <= PROXIMITY_PX) {
|
|
312
385
|
this.showRow();
|
|
@@ -331,7 +404,7 @@ export class TableAddControls {
|
|
|
331
404
|
|
|
332
405
|
if (!this.rowVisible) {
|
|
333
406
|
this.addRowBtn.style.opacity = '1';
|
|
334
|
-
this.addRowBtn.style.pointerEvents = '';
|
|
407
|
+
this.addRowBtn.style.pointerEvents = this.interactive ? '' : 'none';
|
|
335
408
|
this.rowVisible = true;
|
|
336
409
|
}
|
|
337
410
|
}
|
|
@@ -341,7 +414,7 @@ export class TableAddControls {
|
|
|
341
414
|
|
|
342
415
|
if (!this.colVisible) {
|
|
343
416
|
this.addColBtn.style.opacity = '1';
|
|
344
|
-
this.addColBtn.style.pointerEvents = '';
|
|
417
|
+
this.addColBtn.style.pointerEvents = this.interactive ? '' : 'none';
|
|
345
418
|
this.colVisible = true;
|
|
346
419
|
}
|
|
347
420
|
}
|
|
@@ -397,11 +470,8 @@ export class TableAddControls {
|
|
|
397
470
|
btn.style.position = 'absolute';
|
|
398
471
|
btn.style.left = '0';
|
|
399
472
|
btn.style.bottom = '-36px';
|
|
400
|
-
btn.style.
|
|
401
|
-
btn.style.width = '100%';
|
|
473
|
+
btn.style.zIndex = '1';
|
|
402
474
|
btn.style.height = '32px';
|
|
403
|
-
btn.style.padding = '4px 8px 0';
|
|
404
|
-
btn.style.marginLeft = '-8px';
|
|
405
475
|
|
|
406
476
|
const visual = document.createElement('div');
|
|
407
477
|
|