@jackuait/blok 0.13.2 → 0.14.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.cjs +1 -1
- package/dist/blok.iife.js +30 -30
- package/dist/blok.mjs +2 -2
- package/dist/chunks/blok-DbYIZS7_.cjs +17 -0
- package/dist/chunks/{blok-Du6vYONn.mjs → blok-DuYqYpF7.mjs} +2738 -2322
- package/dist/chunks/{constants-DUuYY64n.mjs → constants-DMVxzgHf.mjs} +390 -299
- package/dist/chunks/constants-DPty7Dc7.cjs +457 -0
- package/dist/chunks/{i18next-loader-GIrBCFrC.mjs → i18next-loader-BEWWek8j.mjs} +1 -1
- package/dist/chunks/{i18next-loader-DC1uN-wc.cjs → i18next-loader-BRLYf-CW.cjs} +1 -1
- package/dist/chunks/{lightweight-i18n-DF9Pupws.mjs → lightweight-i18n-GbzxWVgl.mjs} +9 -0
- package/dist/chunks/lightweight-i18n-lNYVKCfj.cjs +1 -0
- package/dist/chunks/messages-085GG-gT.cjs +1 -0
- package/dist/{messages-3j4yi-DF.mjs → chunks/messages-46QopBh4.mjs} +9 -0
- package/dist/chunks/messages-5kQujjf1.cjs +1 -0
- package/dist/chunks/{messages-CTWXEx_o.mjs → messages-6r3Lrqpf.mjs} +9 -0
- package/dist/chunks/messages-8vjbwhvK.cjs +1 -0
- package/dist/chunks/messages-ACbZDExx.cjs +1 -0
- package/dist/chunks/messages-B05XREvI.cjs +1 -0
- package/dist/chunks/{messages-CQg2_vmm.mjs → messages-B0y97-C9.mjs} +9 -0
- package/dist/chunks/{messages-ZHNvKiIX.mjs → messages-B26pkAIj.mjs} +9 -0
- package/dist/chunks/messages-B2J7kDKI.cjs +1 -0
- package/dist/chunks/messages-B3jMjjFG.cjs +1 -0
- package/dist/chunks/messages-B4_c-uS0.cjs +1 -0
- package/dist/chunks/messages-B6zoVYEd.cjs +1 -0
- package/dist/chunks/{messages-DI9Ifrgt.mjs → messages-B73uch0z.mjs} +9 -0
- package/dist/chunks/{messages-AgmrT2Id.mjs → messages-B74xK8Ux.mjs} +9 -0
- package/dist/chunks/messages-B7efcz_S2.cjs +1 -0
- package/dist/chunks/{messages-sqdfYuVj2.mjs → messages-B9u3UJRu2.mjs} +9 -0
- package/dist/chunks/messages-BB9huoLU.cjs +1 -0
- package/dist/{messages-Cx7sqvx02.mjs → chunks/messages-BEzCtzW3.mjs} +9 -0
- package/dist/chunks/messages-BGQdk2zV2.cjs +1 -0
- package/dist/chunks/messages-BGmUrVtN2.cjs +1 -0
- package/dist/chunks/messages-BH-3FR4b2.cjs +1 -0
- package/dist/chunks/{messages-BZ4d5yNH.mjs → messages-BHqAQF6C.mjs} +9 -0
- package/dist/{messages-DzkZ434Z.mjs → chunks/messages-BI_-Ub99.mjs} +9 -0
- package/dist/chunks/messages-BNa6_BYq2.cjs +1 -0
- package/dist/chunks/{messages-BvupGuDw2.mjs → messages-BOMNOs8T2.mjs} +9 -0
- package/dist/chunks/{messages-fSeXd6-z.mjs → messages-BPYPnKHy.mjs} +9 -0
- package/dist/{messages-B3PWaMcw.mjs → chunks/messages-BQmUOeft.mjs} +9 -0
- package/dist/chunks/messages-BRfutnCs.cjs +1 -0
- package/dist/chunks/messages-BT_0dgL1.cjs +1 -0
- package/dist/chunks/{messages-BWGqOZ9J.mjs → messages-BWSXW4jk.mjs} +9 -0
- package/dist/chunks/messages-BWpKvkND2.cjs +1 -0
- package/dist/chunks/messages-BY6gCAsA2.cjs +1 -0
- package/dist/{messages-BDwU9rYR2.mjs → chunks/messages-BbfZo0kw2.mjs} +9 -0
- package/dist/{messages-gQ5PFa2t2.mjs → chunks/messages-BfqzgRP72.mjs} +9 -0
- package/dist/chunks/messages-Bk2Xs7_v.cjs +1 -0
- package/dist/{messages-CmN2OfuB.mjs → chunks/messages-BmkavfpK.mjs} +9 -0
- package/dist/chunks/{messages-B1k4DgVe.mjs → messages-BmzMikmq.mjs} +9 -0
- package/dist/chunks/messages-BniEGAW32.cjs +1 -0
- package/dist/chunks/{messages-BP77P9ER.mjs → messages-BplwYBhA.mjs} +9 -0
- package/dist/chunks/{messages-B1xgsCNQ.cjs → messages-BqJ-xe8R.cjs} +1 -1
- package/dist/chunks/messages-Bry43U_U.cjs +1 -0
- package/dist/{messages-DFfhoDWZ2.mjs → chunks/messages-BuzGjYKw.mjs} +9 -0
- package/dist/chunks/messages-ByT63R7v2.cjs +1 -0
- package/dist/{messages-C_gdsU952.mjs → chunks/messages-C0S7KViA2.mjs} +9 -0
- package/dist/chunks/{messages-DzY53I67.mjs → messages-C0Tt7Odx.mjs} +9 -0
- package/dist/{messages-B8Tq9Txy.mjs → chunks/messages-C3A1iLjY.mjs} +9 -0
- package/dist/chunks/{messages-B6You-RA.mjs → messages-C3gh1rpr.mjs} +9 -0
- package/dist/chunks/{messages-CXxz5HYQ.mjs → messages-C7JE4SUS.mjs} +9 -0
- package/dist/chunks/messages-C9IWDnCh2.cjs +1 -0
- package/dist/chunks/messages-CBc3S61g2.cjs +1 -0
- package/dist/chunks/{messages-DefZ3ihx.mjs → messages-CHpkDOiI.mjs} +9 -0
- package/dist/{messages-BcD7xtJA.mjs → chunks/messages-CImQCp-z2.mjs} +9 -0
- package/dist/chunks/messages-CJ--z80t2.cjs +1 -0
- package/dist/chunks/messages-CNH8YFuv.cjs +1 -0
- package/dist/chunks/{messages-bjSJwsXK2.mjs → messages-CQ2KWTbV2.mjs} +9 -0
- package/dist/{messages-C8RMjnBe.mjs → chunks/messages-CWAukiLC.mjs} +9 -0
- package/dist/{messages-B3oFjWq3.mjs → chunks/messages-C_BUhMkZ.mjs} +9 -0
- package/dist/chunks/{messages-BvuEffoe.mjs → messages-CcBT1o1B.mjs} +9 -0
- package/dist/chunks/messages-CdqejEof.cjs +1 -0
- package/dist/chunks/messages-Chdejshy2.cjs +1 -0
- package/dist/{messages-D-rvoUSJ.mjs → chunks/messages-CijMg_B_.mjs} +9 -0
- package/dist/{messages-JKXCsFKZ.mjs → chunks/messages-Ciz80Z2u2.mjs} +9 -0
- package/dist/{messages-Dq2WEsEu.mjs → chunks/messages-CjuGKMoT.mjs} +9 -0
- package/dist/chunks/{messages-BxKobpJ22.mjs → messages-ClOfUECP2.mjs} +9 -0
- package/dist/chunks/messages-CrF-Q_ML.cjs +1 -0
- package/dist/chunks/messages-Cww_rBCM.cjs +1 -0
- package/dist/chunks/messages-CxPVYl2H2.cjs +1 -0
- package/dist/chunks/{messages-BA2sVGrR2.mjs → messages-Cyiqo_dk2.mjs} +9 -0
- package/dist/{messages-D788KtGe.mjs → chunks/messages-D-u_SWhb.mjs} +9 -0
- package/dist/chunks/messages-D0H-D5FQ2.cjs +1 -0
- package/dist/chunks/messages-D195RH3A.cjs +1 -0
- package/dist/chunks/{messages-Dd4nzvLj2.mjs → messages-D5-DG-_u2.mjs} +9 -0
- package/dist/chunks/messages-D6kDQgDP2.cjs +1 -0
- package/dist/{messages-CAGQtm7T.mjs → chunks/messages-D8-hiQgf.mjs} +9 -0
- package/dist/{messages-ftPYsH6d2.mjs → chunks/messages-D8nb9CKr2.mjs} +9 -0
- package/dist/{messages-DPqFBtJR.mjs → chunks/messages-DAd5yWtH2.mjs} +9 -0
- package/dist/chunks/messages-DAdsFLpE.cjs +1 -0
- package/dist/chunks/messages-DCUsbiUQ.cjs +1 -0
- package/dist/{messages-AycxTjmw.mjs → chunks/messages-DCVZaAT9.mjs} +9 -0
- package/dist/chunks/messages-DHXttezt2.cjs +1 -0
- package/dist/chunks/messages-DIgxCixa.cjs +1 -0
- package/dist/chunks/messages-DJ0Wr-Bt2.cjs +1 -0
- package/dist/chunks/messages-DJBdlmxR.cjs +1 -0
- package/dist/chunks/{messages-5AxgjKgf2.mjs → messages-DJm-uLwr2.mjs} +9 -0
- package/dist/chunks/{messages-BVarbXYD2.mjs → messages-DKF4qWhw2.mjs} +9 -0
- package/dist/chunks/messages-DLAWSVlE.cjs +1 -0
- package/dist/{messages-Bj03XD-02.mjs → chunks/messages-DLI8m6z_2.mjs} +9 -0
- package/dist/{messages-CTzO11jz.mjs → chunks/messages-DNiWBVQr.mjs} +9 -0
- package/dist/chunks/messages-DNsgR3ZH.cjs +1 -0
- package/dist/{messages-CgaGkQi32.mjs → chunks/messages-DPI5-TrO2.mjs} +9 -0
- package/dist/chunks/{messages-CyCl8la6.mjs → messages-DQ1z_srP.mjs} +9 -0
- package/dist/chunks/{messages-C4bHKGnB2.mjs → messages-DSxYO-_j2.mjs} +9 -0
- package/dist/chunks/messages-DTrrEqf02.cjs +1 -0
- package/dist/chunks/{messages-D7YPlNAK.mjs → messages-DYLfoakZ.mjs} +9 -0
- package/dist/chunks/messages-DZCWq8nI2.cjs +1 -0
- package/dist/{messages-PQVh93mt.mjs → chunks/messages-D_JT9POv.mjs} +9 -0
- package/dist/chunks/{messages-Uc3Uc2862.mjs → messages-DaTniq4w2.mjs} +9 -0
- package/dist/{messages-DiL61awK.mjs → chunks/messages-De2tXe0o.mjs} +9 -0
- package/dist/chunks/{messages-l5xHQb_m.mjs → messages-DiwyN3uU.mjs} +9 -0
- package/dist/chunks/messages-DkQGwmom.cjs +1 -0
- package/dist/chunks/{messages-B6t1xShv.mjs → messages-Dl-C7Pdf.mjs} +9 -0
- package/dist/chunks/{messages-bSVgJ1cu.mjs → messages-DlDyYt5x.mjs} +9 -0
- package/dist/chunks/messages-Dmhwr_Ow2.cjs +1 -0
- package/dist/chunks/messages-DrQQ1Hky.cjs +1 -0
- package/dist/chunks/messages-DtQ_pCWn.cjs +1 -0
- package/dist/{messages-uy3FE24_2.mjs → chunks/messages-Du-inLpi2.mjs} +9 -0
- package/dist/{messages-DqXJJPx9.mjs → chunks/messages-Duu9LiF32.mjs} +9 -0
- package/dist/chunks/messages-DxCc14pu2.cjs +1 -0
- package/dist/chunks/{messages-DNqFlfOd.mjs → messages-Dz3cVqxu.mjs} +9 -0
- package/dist/chunks/messages-EJkYSgsP.cjs +1 -0
- package/dist/chunks/messages-F3QeKduK.cjs +1 -0
- package/dist/chunks/messages-HfCZ1oPV.cjs +1 -0
- package/dist/chunks/{messages-BVZONUH9.mjs → messages-Ji3WDjrp.mjs} +9 -0
- package/dist/chunks/messages-MTnjMh07.cjs +1 -0
- package/dist/{messages-DL7JAwpC.mjs → chunks/messages-NU3n_1t9.mjs} +9 -0
- package/dist/chunks/messages-NpCBoXqi.cjs +1 -0
- package/dist/chunks/messages-PMZIH3mH.cjs +1 -0
- package/dist/{messages-7fwJIrld2.mjs → chunks/messages-TFu4tdzc2.mjs} +9 -0
- package/dist/{messages-BSHFypGE2.mjs → chunks/messages-Ti4ZdnqM2.mjs} +9 -0
- package/dist/chunks/messages-UOTfsDv3.cjs +1 -0
- package/dist/chunks/messages-WDBEGpNu.cjs +1 -0
- package/dist/chunks/messages-Zg6PFQ87.cjs +1 -0
- package/dist/chunks/messages-bdVhFVzt2.cjs +1 -0
- package/dist/chunks/messages-dnnjc_oR2.cjs +1 -0
- package/dist/{messages-BmWP4vpV2.mjs → chunks/messages-fI_5bRwV2.mjs} +9 -0
- package/dist/{messages-CIjSE2_O2.mjs → chunks/messages-g80Luov_2.mjs} +9 -0
- package/dist/chunks/messages-hlzAtKI5.cjs +1 -0
- package/dist/chunks/messages-kuh4lSUE2.cjs +1 -0
- package/dist/chunks/messages-m20Eebmt2.cjs +1 -0
- package/dist/chunks/messages-o1__8Rul.cjs +1 -0
- package/dist/chunks/messages-pBYvH88_.cjs +1 -0
- package/dist/chunks/{messages-CMRjQYxi2.mjs → messages-u1hpTCvK2.mjs} +9 -0
- package/dist/chunks/{messages-BoCUgrkI.mjs → messages-vq5ZvFTF.mjs} +9 -0
- package/dist/chunks/tools-BuCT1-J0.cjs +116 -0
- package/dist/chunks/{tools-Tt-NXbRZ.mjs → tools-BwY9bTlg.mjs} +1599 -1460
- package/dist/full.cjs +1 -1
- package/dist/full.mjs +13 -13
- package/dist/locales.mjs +76 -67
- package/dist/{chunks/messages-DHdoaaFq2.mjs → messages-2hSOMnir2.mjs} +9 -0
- package/dist/{chunks/messages-DlcI-0Sy.mjs → messages-3VCxXECx.mjs} +9 -0
- package/dist/{messages-CxX23Jsk2.mjs → messages-8xGEIh_m2.mjs} +9 -0
- package/dist/{chunks/messages-DmErSGPk2.mjs → messages-B-QcHnuI2.mjs} +9 -0
- package/dist/{messages-BKCuCTFM.mjs → messages-B8zoeMf9.mjs} +9 -0
- package/dist/{chunks/messages-BmdkDNYv.mjs → messages-B9CF0GcE.mjs} +9 -0
- package/dist/{messages-1ufJbdRv2.mjs → messages-B9W0pRCr2.mjs} +9 -0
- package/dist/{messages-DQik3_xv2.mjs → messages-BFM2ljkf2.mjs} +9 -0
- package/dist/{chunks/messages-BNxTGhHu.mjs → messages-BLm4FSbz2.mjs} +9 -0
- package/dist/{chunks/messages-GHsufIGi2.mjs → messages-BLpeYPKv2.mjs} +9 -0
- package/dist/{messages-D_WzyzUt.mjs → messages-BM73sjxy.mjs} +9 -0
- package/dist/{messages-CX8egsiA2.mjs → messages-BOpqKi6Y2.mjs} +9 -0
- package/dist/{chunks/messages-eyGOcbhV.mjs → messages-BUGdUeTK.mjs} +9 -0
- package/dist/{chunks/messages-DhZwMl9x2.mjs → messages-BZm7MzSJ2.mjs} +9 -0
- package/dist/{messages-C31VIrlL.mjs → messages-BtBhP1sv.mjs} +9 -0
- package/dist/{messages-D1Fjr4OK2.mjs → messages-BthFu3bN2.mjs} +9 -0
- package/dist/{chunks/messages-COMdnGQV2.mjs → messages-BurjwjCQ2.mjs} +9 -0
- package/dist/{messages-DTkd9ND8.mjs → messages-ByIHkus-.mjs} +9 -0
- package/dist/{messages-C9GFRcVj.mjs → messages-ByVKFMH3.mjs} +9 -0
- package/dist/{chunks/messages-B5CFhyI8.mjs → messages-C6FDRqcf.mjs} +9 -0
- package/dist/{chunks/messages-OSIAf0Wk2.mjs → messages-C9dJ_N542.mjs} +9 -0
- package/dist/{messages-CRR1VRO6.mjs → messages-CCw8aJgW.mjs} +9 -0
- package/dist/{chunks/messages-AtUsRyWK2.mjs → messages-CO3NEwf22.mjs} +9 -0
- package/dist/{chunks/messages-CcboYTP8.mjs → messages-CPB2xkpC.mjs} +9 -0
- package/dist/{messages-CITYhXUz.mjs → messages-CPDsEORY.mjs} +9 -0
- package/dist/{chunks/messages-B2zrJyAc2.mjs → messages-CYyPOGy7.mjs} +9 -0
- package/dist/{chunks/messages-C03LZxma.mjs → messages-CZAODRjY.mjs} +9 -0
- package/dist/{messages-Duk7VVeY.mjs → messages-C_rns7Ku.mjs} +9 -0
- package/dist/{chunks/messages-CdWXgq_r.mjs → messages-CaUUIQvU.mjs} +9 -0
- package/dist/{messages-Cp0fjsey.mjs → messages-Cc-A7Vip.mjs} +9 -0
- package/dist/{chunks/messages-B7KbtBAE.mjs → messages-Ccf81JsG.mjs} +9 -0
- package/dist/{chunks/messages-rEsI_fAk.mjs → messages-CerTDuSC.mjs} +9 -0
- package/dist/{messages-BkTBwYet.mjs → messages-CgmDwRRE.mjs} +9 -0
- package/dist/{chunks/messages-DsyO86r3.mjs → messages-Cn3PWtLp.mjs} +9 -0
- package/dist/{chunks/messages-CWTFEPbA2.mjs → messages-Cu1rTEkB.mjs} +9 -0
- package/dist/{messages-oIa8wahx.mjs → messages-CxEHfUNH.mjs} +9 -0
- package/dist/{messages-C_mN4lx0.mjs → messages-D1B41i8X.mjs} +9 -0
- package/dist/{messages-NVepzgE3.mjs → messages-D6954zcl.mjs} +9 -0
- package/dist/{messages-C2TRJroV2.mjs → messages-DBwWssfL2.mjs} +9 -0
- package/dist/{messages-Cdgz3urh.mjs → messages-DFHRMYke.mjs} +9 -0
- package/dist/{messages-DXCyNanc2.mjs → messages-DJVrq0Xa2.mjs} +9 -0
- package/dist/{chunks/messages-OYoN_rp1.mjs → messages-DMJz28kt.mjs} +9 -0
- package/dist/{chunks/messages-B_U10evN2.mjs → messages-DOnOpXFJ2.mjs} +9 -0
- package/dist/{messages-5USazVPA2.mjs → messages-DR1Tf-Kj2.mjs} +9 -0
- package/dist/{chunks/messages-C4sIqArW2.mjs → messages-DSUXwuzH2.mjs} +9 -0
- package/dist/{chunks/messages-DGHTTk1S2.mjs → messages-DTNO7tw1.mjs} +9 -0
- package/dist/{messages-Ddz6eH0-2.mjs → messages-DWBtyom42.mjs} +9 -0
- package/dist/{messages-DKsyrVp5.mjs → messages-DZQALZIU.mjs} +9 -0
- package/dist/{chunks/messages-V8K7-1l2.mjs → messages-D_i86vbQ.mjs} +9 -0
- package/dist/{chunks/messages-BmiN0JGP2.mjs → messages-Da1VKvvf2.mjs} +9 -0
- package/dist/{messages-D5qgCWmB2.mjs → messages-Ddimgqvp2.mjs} +9 -0
- package/dist/{chunks/messages-MPF8o3EP.mjs → messages-DdmXBLUC.mjs} +9 -0
- package/dist/{messages-D4U4wkYM.mjs → messages-Devcsnrv.mjs} +9 -0
- package/dist/{chunks/messages-DiGsu5XN.mjs → messages-DhS-j4Hp.mjs} +9 -0
- package/dist/{messages-BGzpwNrz.mjs → messages-DrRVvVPI.mjs} +9 -0
- package/dist/{chunks/messages-Z9mDYT3w.mjs → messages-Ds4gQbVR2.mjs} +9 -0
- package/dist/{chunks/messages-vQ5kblO8.mjs → messages-DxkB7LL6.mjs} +9 -0
- package/dist/{chunks/messages-LTkIIrSe2.mjs → messages-GgHHrLBU2.mjs} +9 -0
- package/dist/{messages-CntTlSE22.mjs → messages-IycPaZe22.mjs} +9 -0
- package/dist/{messages-BtDz-sw92.mjs → messages-ST8f_nDx2.mjs} +9 -0
- package/dist/{messages-CgVEHCQ-.mjs → messages-SV8lf6F0.mjs} +9 -0
- package/dist/{messages-Bt4TLGth.mjs → messages-lVrQmsky.mjs} +9 -0
- package/dist/{messages-rpO1POP02.mjs → messages-lcoIGSX82.mjs} +9 -0
- package/dist/{chunks/messages-BuYnNUtU2.mjs → messages-mqRVfUUq.mjs} +9 -0
- package/dist/{chunks/messages-C24IC_eR.mjs → messages-qWFvoPY1.mjs} +9 -0
- package/dist/{messages-CacRpQpm.mjs → messages-yte1QPX5.mjs} +9 -0
- package/dist/{messages-DNlrcG5Z.mjs → messages-zyiti_A8.mjs} +9 -0
- package/dist/react.cjs +1 -1
- package/dist/react.mjs +1 -1
- package/dist/tools.cjs +1 -1
- package/dist/tools.mjs +3 -3
- package/package.json +1 -1
- package/src/components/blocks.ts +30 -7
- package/src/components/i18n/locales/am/messages.json +9 -0
- package/src/components/i18n/locales/ar/messages.json +9 -0
- package/src/components/i18n/locales/az/messages.json +9 -0
- package/src/components/i18n/locales/bg/messages.json +9 -0
- package/src/components/i18n/locales/bn/messages.json +9 -0
- package/src/components/i18n/locales/bs/messages.json +9 -0
- package/src/components/i18n/locales/cs/messages.json +9 -0
- package/src/components/i18n/locales/da/messages.json +9 -0
- package/src/components/i18n/locales/de/messages.json +9 -0
- package/src/components/i18n/locales/dv/messages.json +9 -0
- package/src/components/i18n/locales/el/messages.json +9 -0
- package/src/components/i18n/locales/en/messages.json +9 -0
- package/src/components/i18n/locales/es/messages.json +9 -0
- package/src/components/i18n/locales/et/messages.json +9 -0
- package/src/components/i18n/locales/fa/messages.json +9 -0
- package/src/components/i18n/locales/fi/messages.json +9 -0
- package/src/components/i18n/locales/fil/messages.json +9 -0
- package/src/components/i18n/locales/fr/messages.json +9 -0
- package/src/components/i18n/locales/gu/messages.json +9 -0
- package/src/components/i18n/locales/he/messages.json +9 -0
- package/src/components/i18n/locales/hi/messages.json +9 -0
- package/src/components/i18n/locales/hr/messages.json +9 -0
- package/src/components/i18n/locales/hu/messages.json +9 -0
- package/src/components/i18n/locales/hy/messages.json +9 -0
- package/src/components/i18n/locales/id/messages.json +9 -0
- package/src/components/i18n/locales/it/messages.json +9 -0
- package/src/components/i18n/locales/ja/messages.json +9 -0
- package/src/components/i18n/locales/ka/messages.json +9 -0
- package/src/components/i18n/locales/km/messages.json +9 -0
- package/src/components/i18n/locales/kn/messages.json +9 -0
- package/src/components/i18n/locales/ko/messages.json +9 -0
- package/src/components/i18n/locales/ku/messages.json +9 -0
- package/src/components/i18n/locales/lo/messages.json +9 -0
- package/src/components/i18n/locales/lt/messages.json +9 -0
- package/src/components/i18n/locales/lv/messages.json +9 -0
- package/src/components/i18n/locales/mk/messages.json +9 -0
- package/src/components/i18n/locales/ml/messages.json +9 -0
- package/src/components/i18n/locales/mn/messages.json +9 -0
- package/src/components/i18n/locales/mr/messages.json +9 -0
- package/src/components/i18n/locales/ms/messages.json +9 -0
- package/src/components/i18n/locales/my/messages.json +9 -0
- package/src/components/i18n/locales/ne/messages.json +9 -0
- package/src/components/i18n/locales/nl/messages.json +9 -0
- package/src/components/i18n/locales/no/messages.json +9 -0
- package/src/components/i18n/locales/pa/messages.json +9 -0
- package/src/components/i18n/locales/pl/messages.json +9 -0
- package/src/components/i18n/locales/ps/messages.json +9 -0
- package/src/components/i18n/locales/pt/messages.json +9 -0
- package/src/components/i18n/locales/ro/messages.json +9 -0
- package/src/components/i18n/locales/ru/messages.json +9 -0
- package/src/components/i18n/locales/sd/messages.json +9 -0
- package/src/components/i18n/locales/si/messages.json +9 -0
- package/src/components/i18n/locales/sk/messages.json +9 -0
- package/src/components/i18n/locales/sl/messages.json +9 -0
- package/src/components/i18n/locales/sq/messages.json +9 -0
- package/src/components/i18n/locales/sr/messages.json +9 -0
- package/src/components/i18n/locales/sv/messages.json +9 -0
- package/src/components/i18n/locales/sw/messages.json +9 -0
- package/src/components/i18n/locales/ta/messages.json +9 -0
- package/src/components/i18n/locales/te/messages.json +9 -0
- package/src/components/i18n/locales/th/messages.json +9 -0
- package/src/components/i18n/locales/tr/messages.json +9 -0
- package/src/components/i18n/locales/ug/messages.json +9 -0
- package/src/components/i18n/locales/uk/messages.json +9 -0
- package/src/components/i18n/locales/ur/messages.json +9 -0
- package/src/components/i18n/locales/vi/messages.json +9 -0
- package/src/components/i18n/locales/yi/messages.json +9 -0
- package/src/components/i18n/locales/zh/messages.json +9 -0
- package/src/components/icons/index.ts +24 -0
- package/src/components/modules/blockEvents/composers/keyboardNavigation.ts +67 -6
- package/src/components/modules/blockManager/hierarchy.ts +150 -8
- package/src/components/modules/blockManager/operations.ts +207 -8
- package/src/components/modules/blockManager/yjs-sync.ts +36 -1
- package/src/components/modules/caret.ts +205 -31
- package/src/components/modules/drag/DragController.ts +219 -2
- package/src/components/modules/drag/a11y/DragA11y.ts +9 -1
- package/src/components/modules/drag/state/DragStateMachine.ts +1 -1
- package/src/components/modules/drag/target/DropTargetDetector.ts +513 -3
- package/src/components/modules/drag/utils/drag.constants.ts +9 -0
- package/src/components/modules/toolbar/blockSettings.ts +75 -5
- package/src/components/modules/toolbar/index.ts +12 -1
- package/src/components/modules/tools.ts +57 -1
- package/src/components/modules/uiControllers/controllers/blockHover.ts +24 -2
- package/src/components/modules/uiControllers/controllers/selection.ts +50 -0
- package/src/components/utils/blocks.ts +21 -7
- package/src/styles/colors.css +3 -0
- package/src/styles/columns.css +105 -0
- package/src/styles/main.css +48 -3
- package/src/styles/popover-animation.css +8 -0
- package/src/tools/column/index.ts +189 -0
- package/src/tools/column/types.ts +26 -0
- package/src/tools/column-drop.ts +273 -0
- package/src/tools/column-list/index.ts +142 -0
- package/src/tools/column-list/types.ts +17 -0
- package/src/tools/columns/index.ts +21 -0
- package/src/tools/columns-shared.ts +343 -0
- package/src/tools/divider/index.ts +1 -0
- package/src/tools/index.ts +5 -0
- package/src/tools/nested-blocks.ts +23 -2
- package/src/tools/table/table-restrictions.ts +1 -1
- package/types/tools/column-list.d.ts +15 -0
- package/types/tools/column.d.ts +13 -0
- package/types/tools/tool.d.ts +12 -0
- package/types/tools-entry.d.ts +15 -0
- package/dist/chunks/blok-Xu27QC2G.cjs +0 -17
- package/dist/chunks/constants-DDTVRO2H.cjs +0 -457
- package/dist/chunks/lightweight-i18n-Bbl1cNYK.cjs +0 -1
- package/dist/chunks/messages-1qYt6EhZ2.cjs +0 -1
- package/dist/chunks/messages-2fxvN3Nb.cjs +0 -1
- package/dist/chunks/messages-B1Vs2HmR.cjs +0 -1
- package/dist/chunks/messages-B780gS332.cjs +0 -1
- package/dist/chunks/messages-B7T5Notn.cjs +0 -1
- package/dist/chunks/messages-BE9aZQ1Q.cjs +0 -1
- package/dist/chunks/messages-BIQpTYfm.cjs +0 -1
- package/dist/chunks/messages-BIRvUJ0t.cjs +0 -1
- package/dist/chunks/messages-BIodfkjv.cjs +0 -1
- package/dist/chunks/messages-BL-zBcuM.cjs +0 -1
- package/dist/chunks/messages-BQr0zpmu2.cjs +0 -1
- package/dist/chunks/messages-BTHi6rVW2.cjs +0 -1
- package/dist/chunks/messages-BZOAdcmO2.cjs +0 -1
- package/dist/chunks/messages-BbsGeVs_2.cjs +0 -1
- package/dist/chunks/messages-Bc1NYJVS.cjs +0 -1
- package/dist/chunks/messages-BdORNG8X.cjs +0 -1
- package/dist/chunks/messages-Bg2kheTv.cjs +0 -1
- package/dist/chunks/messages-Bj1eQtQw.cjs +0 -1
- package/dist/chunks/messages-BkJJCHNK.cjs +0 -1
- package/dist/chunks/messages-BkdGQfIX.cjs +0 -1
- package/dist/chunks/messages-BkgsB-cj2.cjs +0 -1
- package/dist/chunks/messages-Bn0vGFEP.cjs +0 -1
- package/dist/chunks/messages-BoIUXwWe.cjs +0 -1
- package/dist/chunks/messages-BpDEh8rW.cjs +0 -1
- package/dist/chunks/messages-BwknPZJ8.cjs +0 -1
- package/dist/chunks/messages-ByicRCge2.cjs +0 -1
- package/dist/chunks/messages-C2oBmyTn.cjs +0 -1
- package/dist/chunks/messages-C9wBMmxr2.cjs +0 -1
- package/dist/chunks/messages-CDK5-8vW.cjs +0 -1
- package/dist/chunks/messages-CKHbPcfh.cjs +0 -1
- package/dist/chunks/messages-CNFfwTfw.cjs +0 -1
- package/dist/chunks/messages-CNiuofck2.cjs +0 -1
- package/dist/chunks/messages-CWszAGkF.cjs +0 -1
- package/dist/chunks/messages-CWzQNagc2.cjs +0 -1
- package/dist/chunks/messages-CYf1gv722.cjs +0 -1
- package/dist/chunks/messages-CfcCwbQo.cjs +0 -1
- package/dist/chunks/messages-CkvqOnAR.cjs +0 -1
- package/dist/chunks/messages-Cnrug7nz2.cjs +0 -1
- package/dist/chunks/messages-Cr51zCHy.cjs +0 -1
- package/dist/chunks/messages-CsLvvl2F2.cjs +0 -1
- package/dist/chunks/messages-CuO-Rx4g.cjs +0 -1
- package/dist/chunks/messages-Cv4I3k1W2.cjs +0 -1
- package/dist/chunks/messages-CwHRv6g8.cjs +0 -1
- package/dist/chunks/messages-CzXnHfGb2.cjs +0 -1
- package/dist/chunks/messages-D2QxLx1a.cjs +0 -1
- package/dist/chunks/messages-D4LUPpX_.cjs +0 -1
- package/dist/chunks/messages-DJFL-bxd2.cjs +0 -1
- package/dist/chunks/messages-DLEeNpMi2.cjs +0 -1
- package/dist/chunks/messages-DTNU_cq0.cjs +0 -1
- package/dist/chunks/messages-DVKsYqpJ.cjs +0 -1
- package/dist/chunks/messages-DXlfz-nC.cjs +0 -1
- package/dist/chunks/messages-DbA_Zja3.cjs +0 -1
- package/dist/chunks/messages-Dc2TTEx_2.cjs +0 -1
- package/dist/chunks/messages-DeDMMmRC.cjs +0 -1
- package/dist/chunks/messages-DlQNXqzr.cjs +0 -1
- package/dist/chunks/messages-DqMqZLcn.cjs +0 -1
- package/dist/chunks/messages-DqqDuEE22.cjs +0 -1
- package/dist/chunks/messages-DzppdmWe.cjs +0 -1
- package/dist/chunks/messages-HzLF-BQL2.cjs +0 -1
- package/dist/chunks/messages-Jb9n97oP2.cjs +0 -1
- package/dist/chunks/messages-K_vSdSoF2.cjs +0 -1
- package/dist/chunks/messages-Nh7wrRdm.cjs +0 -1
- package/dist/chunks/messages-QHS-Ydg_.cjs +0 -1
- package/dist/chunks/messages-SpiG5vT-2.cjs +0 -1
- package/dist/chunks/messages-XFaJzdhP2.cjs +0 -1
- package/dist/chunks/messages-y03BGg692.cjs +0 -1
- package/dist/chunks/tools-DOuVjow8.cjs +0 -116
|
@@ -4,6 +4,7 @@ import { DATA_ATTR } from '../../constants';
|
|
|
4
4
|
import { announce } from '../../utils/announcer';
|
|
5
5
|
import { hide as hideTooltip } from '../../utils/tooltip';
|
|
6
6
|
|
|
7
|
+
import { addColumnToList, wrapInNewColumnList } from '../../../tools/column-drop';
|
|
7
8
|
import { DragA11y } from './a11y/DragA11y';
|
|
8
9
|
import { DragOperations } from './operations/DragOperations';
|
|
9
10
|
import { DragPreview } from './preview/DragPreview';
|
|
@@ -362,6 +363,7 @@ export class DragController extends Module {
|
|
|
362
363
|
if (currentState.type === 'dragging' && currentState.targetBlock) {
|
|
363
364
|
currentState.targetBlock.holder.removeAttribute('data-drop-indicator');
|
|
364
365
|
currentState.targetBlock.holder.style.removeProperty('--drop-indicator-depth');
|
|
366
|
+
this.clearContentIndicatorOffsets(currentState.targetBlock);
|
|
365
367
|
}
|
|
366
368
|
|
|
367
369
|
// Find element under cursor (temporarily hide preview)
|
|
@@ -390,7 +392,7 @@ export class DragController extends Module {
|
|
|
390
392
|
}
|
|
391
393
|
|
|
392
394
|
// Update state with new target
|
|
393
|
-
this.stateMachine.updateTarget(dropTarget.block, dropTarget.edge);
|
|
395
|
+
this.stateMachine.updateTarget(dropTarget.block, dropTarget.edge, dropTarget.parentId);
|
|
394
396
|
// Spring-load closed toggles: auto-expand after 500ms hover
|
|
395
397
|
this.springLoader.update(dropTarget.block);
|
|
396
398
|
|
|
@@ -398,12 +400,135 @@ export class DragController extends Module {
|
|
|
398
400
|
dropTarget.block.holder.setAttribute('data-drop-indicator', dropTarget.edge);
|
|
399
401
|
dropTarget.block.holder.style.setProperty('--drop-indicator-depth', String(dropTarget.depth));
|
|
400
402
|
|
|
403
|
+
// Confine the indicator to the visible content box. The holder spans the
|
|
404
|
+
// full editor width (gutters included), so without these offsets the
|
|
405
|
+
// top/bottom reorder line stretches across the whole screen and the side
|
|
406
|
+
// bars land out in the margins. Applies to every edge.
|
|
407
|
+
this.applyContentIndicatorOffsets(dropTarget.block);
|
|
408
|
+
|
|
409
|
+
// For a column side-drop, stretch the vertical indicator bar to the full
|
|
410
|
+
// height of the column row, not just the single target block.
|
|
411
|
+
this.applySideIndicatorHeight(dropTarget.block, dropTarget.edge);
|
|
412
|
+
|
|
413
|
+
// ...and center it on the gutter between the columns, so the line clearly
|
|
414
|
+
// marks an insertion BETWEEN them rather than at one column's edge.
|
|
415
|
+
this.centerSideIndicatorInGutter(dropTarget.block, dropTarget.edge);
|
|
416
|
+
|
|
401
417
|
// Announce drop position change to screen readers
|
|
402
418
|
if (this.a11y) {
|
|
403
419
|
this.a11y.announceDropPosition(dropTarget.block, dropTarget.edge);
|
|
404
420
|
}
|
|
405
421
|
}
|
|
406
422
|
|
|
423
|
+
/**
|
|
424
|
+
* Sets the `--drop-indicator-side-left/right` custom properties on a block's
|
|
425
|
+
* holder so the drop indicator (top/bottom line and left/right side bars) is
|
|
426
|
+
* confined to the visible content box instead of the full-width holder. Falls
|
|
427
|
+
* back to no offset when the standard content wrapper is absent.
|
|
428
|
+
*
|
|
429
|
+
* @param block - The drop target block
|
|
430
|
+
*/
|
|
431
|
+
private applyContentIndicatorOffsets(block: Block): void {
|
|
432
|
+
const content = block.holder.querySelector('[data-blok-element-content]');
|
|
433
|
+
|
|
434
|
+
if (!(content instanceof HTMLElement)) {
|
|
435
|
+
return;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
const holderRect = block.holder.getBoundingClientRect();
|
|
439
|
+
const contentRect = content.getBoundingClientRect();
|
|
440
|
+
|
|
441
|
+
block.holder.style.setProperty('--drop-indicator-side-left', `${contentRect.left - holderRect.left}px`);
|
|
442
|
+
block.holder.style.setProperty('--drop-indicator-side-right', `${holderRect.right - contentRect.right}px`);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
* For a left/right (column) drop whose target sits inside a column_list,
|
|
447
|
+
* stretch the vertical indicator bar to the full height of the column row by
|
|
448
|
+
* setting `--drop-indicator-side-top/bottom` to the row container's top/bottom
|
|
449
|
+
* offset relative to the block holder (negative, so the bar grows past the
|
|
450
|
+
* single block). No-op for top/bottom edges or targets outside a column.
|
|
451
|
+
*
|
|
452
|
+
* @param block - The drop target block
|
|
453
|
+
* @param edge - The resolved drop edge
|
|
454
|
+
*/
|
|
455
|
+
private applySideIndicatorHeight(block: Block, edge: 'top' | 'bottom' | 'left' | 'right'): void {
|
|
456
|
+
if (edge !== 'left' && edge !== 'right') {
|
|
457
|
+
return;
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
const columns = block.holder.closest('[data-blok-columns]');
|
|
461
|
+
|
|
462
|
+
if (!(columns instanceof HTMLElement)) {
|
|
463
|
+
return;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
const holderRect = block.holder.getBoundingClientRect();
|
|
467
|
+
const columnsRect = columns.getBoundingClientRect();
|
|
468
|
+
|
|
469
|
+
block.holder.style.setProperty('--drop-indicator-side-top', `${columnsRect.top - holderRect.top}px`);
|
|
470
|
+
block.holder.style.setProperty('--drop-indicator-side-bottom', `${holderRect.bottom - columnsRect.bottom}px`);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Centers a column side-drop indicator on the gutter (the resize separator)
|
|
475
|
+
* between the two columns it divides, instead of sitting on the target column's
|
|
476
|
+
* content edge. The indicator marks an insertion BETWEEN columns, so the bar
|
|
477
|
+
* belongs in the gutter — overrides `--drop-indicator-side-left/right` to the
|
|
478
|
+
* separator's horizontal center. No-op when the edge isn't horizontal or there
|
|
479
|
+
* is no adjacent separator (an outer edge of the first/last column).
|
|
480
|
+
*
|
|
481
|
+
* @param block - The drop target block
|
|
482
|
+
* @param edge - The resolved drop edge
|
|
483
|
+
*/
|
|
484
|
+
private centerSideIndicatorInGutter(block: Block, edge: 'top' | 'bottom' | 'left' | 'right'): void {
|
|
485
|
+
if (edge !== 'left' && edge !== 'right') {
|
|
486
|
+
return;
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
const columnWrapper = block.holder.closest('[data-blok-column]');
|
|
490
|
+
const columnHolder = columnWrapper instanceof HTMLElement
|
|
491
|
+
? columnWrapper.closest('[data-blok-element]')
|
|
492
|
+
: null;
|
|
493
|
+
|
|
494
|
+
if (!(columnHolder instanceof HTMLElement)) {
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
const separator = edge === 'left'
|
|
499
|
+
? columnHolder.previousElementSibling
|
|
500
|
+
: columnHolder.nextElementSibling;
|
|
501
|
+
|
|
502
|
+
if (!(separator instanceof HTMLElement) || !separator.hasAttribute('data-blok-column-resizer')) {
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
const holderRect = block.holder.getBoundingClientRect();
|
|
507
|
+
const separatorRect = separator.getBoundingClientRect();
|
|
508
|
+
const separatorCenter = separatorRect.left + separatorRect.width / 2;
|
|
509
|
+
// The bar is 3px wide; offset by half so its center lands on the separator.
|
|
510
|
+
const halfBar = 1.5;
|
|
511
|
+
|
|
512
|
+
if (edge === 'left') {
|
|
513
|
+
block.holder.style.setProperty('--drop-indicator-side-left', `${separatorCenter - holderRect.left - halfBar}px`);
|
|
514
|
+
} else {
|
|
515
|
+
block.holder.style.setProperty('--drop-indicator-side-right', `${holderRect.right - separatorCenter - halfBar}px`);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* Removes the side-drop offset custom properties set by
|
|
521
|
+
* {@link applyContentIndicatorOffsets} and {@link applySideIndicatorHeight}.
|
|
522
|
+
*
|
|
523
|
+
* @param block - The block to clear
|
|
524
|
+
*/
|
|
525
|
+
private clearContentIndicatorOffsets(block: Block): void {
|
|
526
|
+
block.holder.style.removeProperty('--drop-indicator-side-left');
|
|
527
|
+
block.holder.style.removeProperty('--drop-indicator-side-right');
|
|
528
|
+
block.holder.style.removeProperty('--drop-indicator-side-top');
|
|
529
|
+
block.holder.style.removeProperty('--drop-indicator-side-bottom');
|
|
530
|
+
}
|
|
531
|
+
|
|
407
532
|
private onMouseUp(e: MouseEvent): void {
|
|
408
533
|
const state = this.stateMachine.getState();
|
|
409
534
|
const sourceBlock = this.stateMachine.getSourceBlock();
|
|
@@ -414,7 +539,11 @@ export class DragController extends Module {
|
|
|
414
539
|
return;
|
|
415
540
|
}
|
|
416
541
|
|
|
417
|
-
const { targetBlock, targetEdge } = state as {
|
|
542
|
+
const { targetBlock, targetEdge, targetParentId } = state as {
|
|
543
|
+
targetBlock: Block | null;
|
|
544
|
+
targetEdge: 'top' | 'bottom' | 'left' | 'right' | null;
|
|
545
|
+
targetParentId: string | null;
|
|
546
|
+
};
|
|
418
547
|
|
|
419
548
|
if (!targetBlock || !targetEdge) {
|
|
420
549
|
this.cleanup();
|
|
@@ -428,6 +557,14 @@ export class DragController extends Module {
|
|
|
428
557
|
return;
|
|
429
558
|
}
|
|
430
559
|
|
|
560
|
+
// Horizontal drops route to the column-drop helper (wired by integration),
|
|
561
|
+
// never to moveBlocks — its signature stays 'top' | 'bottom'.
|
|
562
|
+
if (targetEdge === 'left' || targetEdge === 'right') {
|
|
563
|
+
this.handleColumnDrop(sourceBlock, sourceBlocks, targetBlock, targetEdge, targetParentId);
|
|
564
|
+
this.cleanup(false, e.altKey);
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
|
|
431
568
|
if (e.altKey) {
|
|
432
569
|
void this.handleDuplicate(sourceBlocks, targetBlock, targetEdge);
|
|
433
570
|
} else {
|
|
@@ -437,6 +574,85 @@ export class DragController extends Module {
|
|
|
437
574
|
this.cleanup(false, e.altKey);
|
|
438
575
|
}
|
|
439
576
|
|
|
577
|
+
/**
|
|
578
|
+
* Handles a horizontal (side) drop near a block's left/right edge.
|
|
579
|
+
*
|
|
580
|
+
* @param sourceBlock - The primary block being dragged
|
|
581
|
+
* @param sourceBlocks - All blocks being dragged
|
|
582
|
+
* @param targetBlock - The block whose side was targeted
|
|
583
|
+
* @param edge - Which side of the target the drop occurred on
|
|
584
|
+
* @param targetParentId - The enclosing column id, or null if the target is at root
|
|
585
|
+
*/
|
|
586
|
+
private handleColumnDrop(
|
|
587
|
+
sourceBlock: Block,
|
|
588
|
+
sourceBlocks: Block[],
|
|
589
|
+
targetBlock: Block,
|
|
590
|
+
edge: 'left' | 'right',
|
|
591
|
+
targetParentId: string | null
|
|
592
|
+
): void {
|
|
593
|
+
const api = this.Blok.API.methods;
|
|
594
|
+
|
|
595
|
+
// Sources are the dragged blocks in document order; never the target.
|
|
596
|
+
const dragged = (sourceBlocks.length > 0 ? sourceBlocks : [sourceBlock])
|
|
597
|
+
.filter(block => block.id !== targetBlock.id);
|
|
598
|
+
const draggedIds = new Set(dragged.map(block => block.id));
|
|
599
|
+
|
|
600
|
+
// Drop only the TOP-LEVEL dragged blocks into the new/added column. A
|
|
601
|
+
// container's descendants are included in sourceBlocks (e.g. a callout
|
|
602
|
+
// carries its child paragraph), but they must ride along with their parent —
|
|
603
|
+
// reparenting them directly into the column would steal them out of their
|
|
604
|
+
// container, stranding the grandchild under the column instead of the
|
|
605
|
+
// callout. Mirrors the previewBlocks filter and handleDropImpl's
|
|
606
|
+
// parentIsBeingMoved skip.
|
|
607
|
+
const sourceIds = dragged
|
|
608
|
+
.filter(block => block.parentId === null || !draggedIds.has(block.parentId))
|
|
609
|
+
.map(block => block.id);
|
|
610
|
+
|
|
611
|
+
if (sourceIds.length === 0) {
|
|
612
|
+
return;
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
// Snapshot the sources' current parent columns before the move. When a source
|
|
616
|
+
// is the LAST block of its column, moving it into the new column empties that
|
|
617
|
+
// source column — and unlike the vertical-drop path (handleDropImpl re-renders
|
|
618
|
+
// affected parents), this side-drop reparents via raw setBlockParent and never
|
|
619
|
+
// touches the emptied source. Re-seed those columns afterwards so they never
|
|
620
|
+
// become dead, uninteractable empty boxes.
|
|
621
|
+
const sourceParentIds = new Set(
|
|
622
|
+
sourceIds
|
|
623
|
+
.map(id => this.Blok.BlockManager.getBlockById(id)?.parentId)
|
|
624
|
+
.filter((parentId): parentId is string => parentId !== null && parentId !== undefined)
|
|
625
|
+
);
|
|
626
|
+
|
|
627
|
+
// targetParentId is the enclosing column when the target already lives in a
|
|
628
|
+
// column_list (→ add a sibling column), or null for a top-level target
|
|
629
|
+
// (→ wrap target + sources into a brand new column_list).
|
|
630
|
+
if (targetParentId !== null) {
|
|
631
|
+
addColumnToList(api, targetParentId, sourceIds, edge);
|
|
632
|
+
} else {
|
|
633
|
+
wrapInNewColumnList(api, targetBlock.id, sourceIds, edge);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
this.reseedEmptiedColumns(sourceParentIds);
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
/**
|
|
640
|
+
* Re-seed any column among `columnIds` that a move left childless. A column is
|
|
641
|
+
* pure layout that always hosts at least one block; an empty one is a dead box
|
|
642
|
+
* the user can't click into. Firing the column's rendered() hook re-runs its
|
|
643
|
+
* empty-column seed, inserting a fresh empty paragraph — the same recovery the
|
|
644
|
+
* vertical-drop path gets for free when it re-renders affected parents.
|
|
645
|
+
*/
|
|
646
|
+
private reseedEmptiedColumns(columnIds: Set<string>): void {
|
|
647
|
+
for (const columnId of columnIds) {
|
|
648
|
+
const column = this.Blok.BlockManager.getBlockById(columnId);
|
|
649
|
+
|
|
650
|
+
if (column !== undefined && column.name === 'column' && column.contentIds.length === 0) {
|
|
651
|
+
column.call('rendered');
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
|
|
440
656
|
private handleDrop(
|
|
441
657
|
sourceBlock: Block,
|
|
442
658
|
sourceBlocks: Block[],
|
|
@@ -821,6 +1037,7 @@ export class DragController extends Module {
|
|
|
821
1037
|
if ((state.type === 'dragging' || state.type === 'dropped') && state.targetBlock) {
|
|
822
1038
|
state.targetBlock.holder.removeAttribute('data-drop-indicator');
|
|
823
1039
|
state.targetBlock.holder.style.removeProperty('--drop-indicator-depth');
|
|
1040
|
+
this.clearContentIndicatorOffsets(state.targetBlock);
|
|
824
1041
|
}
|
|
825
1042
|
|
|
826
1043
|
this.springLoader.cancel();
|
|
@@ -43,7 +43,15 @@ export class DragA11y {
|
|
|
43
43
|
* @param targetBlock - Current drop target block
|
|
44
44
|
* @param targetEdge - Edge of target ('top' or 'bottom')
|
|
45
45
|
*/
|
|
46
|
-
announceDropPosition(targetBlock: Block, targetEdge: 'top' | 'bottom'): void {
|
|
46
|
+
announceDropPosition(targetBlock: Block, targetEdge: 'top' | 'bottom' | 'left' | 'right'): void {
|
|
47
|
+
// Horizontal (column-creating) drops do not reorder by index, so the
|
|
48
|
+
// position announcement does not apply. A dedicated phrasing needs new
|
|
49
|
+
// i18n keys across all 68 locales; that string round is deferred together
|
|
50
|
+
// with the rest of the columns a11y work, so skip the announcement here.
|
|
51
|
+
if (targetEdge === 'left' || targetEdge === 'right') {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
47
55
|
const targetIndex = this.blockManager.getBlockIndex(targetBlock);
|
|
48
56
|
const dropIndex = targetEdge === 'top' ? targetIndex : targetIndex + 1;
|
|
49
57
|
|