@jackuait/blok 0.10.0-beta.6 → 0.10.0-beta.7

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.
Files changed (409) hide show
  1. package/codemod/migrate-editorjs-to-blok.js +0 -2
  2. package/codemod/test.js +0 -6
  3. package/dist/blok.mjs +2 -2
  4. package/dist/chunks/_basePickBy-BHRNO12X.mjs +410 -0
  5. package/dist/chunks/_baseUniq-DtFPDBML.mjs +1045 -0
  6. package/dist/chunks/_getTag-ozrhqxk_.mjs +26 -0
  7. package/dist/chunks/arc-BEqJP9HX.mjs +80 -0
  8. package/dist/chunks/architecture-YZFGNWBL-Bcu-90pi.mjs +3 -0
  9. package/dist/chunks/architectureDiagram-Q4EWVU46-BMno5LCn.mjs +4066 -0
  10. package/dist/chunks/array-Cyf-61SV.mjs +6 -0
  11. package/dist/chunks/blockDiagram-DXYQGD6D-DlP_cPth.mjs +3259 -0
  12. package/dist/chunks/{blok-BdlR_lX6.mjs → blok-CiLRmoHI.mjs} +850 -855
  13. package/dist/chunks/c4Diagram-AHTNJAMY-BbVV8EXj.mjs +2956 -0
  14. package/dist/chunks/channel-DPcniO2B.mjs +5 -0
  15. package/dist/chunks/chunk-2KRD3SAO-CazES4VS.mjs +20 -0
  16. package/dist/chunks/chunk-336JU56O-heO72r_k.mjs +49 -0
  17. package/dist/chunks/chunk-426QAEUC-CmCcml1z.mjs +13 -0
  18. package/dist/chunks/chunk-4BX2VUAB-B10DxOza.mjs +19 -0
  19. package/dist/chunks/chunk-4TB4RGXK-B0snhZOU.mjs +3250 -0
  20. package/dist/chunks/chunk-55IACEB6-CGkn5ABd.mjs +8 -0
  21. package/dist/chunks/chunk-5FUZZQ4R-USdumo_u.mjs +3786 -0
  22. package/dist/chunks/chunk-5PVQY5BW-CxUGVzQL.mjs +1692 -0
  23. package/dist/chunks/chunk-67CJDMHE-Bvw55oRa.mjs +20 -0
  24. package/dist/chunks/chunk-7N4EOEYR-Bs2qDy88.mjs +29 -0
  25. package/dist/chunks/chunk-AA7GKIK3-Bss0LgrN.mjs +24 -0
  26. package/dist/chunks/chunk-BSJP7CBP-CpUW7gi5.mjs +83 -0
  27. package/dist/chunks/chunk-CIAEETIT-DlRbLLf3.mjs +20 -0
  28. package/dist/chunks/{chunk-Byubey_H.mjs → chunk-D6kmoKXy.mjs} +5 -5
  29. package/dist/chunks/chunk-EDXVE4YY-DEcX4XWm.mjs +26 -0
  30. package/dist/chunks/chunk-ENJZ2VHE-B4THRZkR.mjs +566 -0
  31. package/dist/chunks/chunk-FMBD7UC4-CF6BKEiV.mjs +5 -0
  32. package/dist/chunks/chunk-FOC6F5B3--xuza7Yn.mjs +20 -0
  33. package/dist/chunks/chunk-ICPOFSXX-BMja8cuy.mjs +3290 -0
  34. package/dist/chunks/chunk-K5T4RW27-CHEqGHFS.mjs +16370 -0
  35. package/dist/chunks/chunk-KGLVRYIC-DHYYpR8v.mjs +20 -0
  36. package/dist/chunks/chunk-LIHQZDEY-AvbOvyLE.mjs +55 -0
  37. package/dist/chunks/chunk-ORNJ4GCN-38fbR5OS.mjs +25 -0
  38. package/dist/chunks/chunk-OYMX7WX6-BiqlATPA.mjs +2038 -0
  39. package/dist/chunks/chunk-QZHKN3VN-DitZIvj8.mjs +12 -0
  40. package/dist/chunks/chunk-U2HBQHQK-DJytnHmZ.mjs +1875 -0
  41. package/dist/chunks/chunk-X2U36JSP-DlOifw1K.mjs +68 -0
  42. package/dist/chunks/chunk-XPW4576I-s4fsi4XO.mjs +1146 -0
  43. package/dist/chunks/chunk-YZCP3GAM-Ch258bXC.mjs +60 -0
  44. package/dist/chunks/chunk-ZZ45TVLE-DWziaKxP.mjs +33 -0
  45. package/dist/chunks/classDiagram-6PBFFD2Q-BOkAe08u.mjs +30 -0
  46. package/dist/chunks/classDiagram-v2-HSJHXN6E-DeKatSvh.mjs +30 -0
  47. package/dist/chunks/clone-CJCz7VRp.mjs +8 -0
  48. package/dist/chunks/{constants-Cp8O0UfP.mjs → constants-DFS8l39Y.mjs} +49 -50
  49. package/dist/chunks/cose-bilkent-S5V4N54A-CzLGVqvr.mjs +2246 -0
  50. package/dist/chunks/cytoscape.esm-D0iglm-M.mjs +18108 -0
  51. package/dist/chunks/dagre-KV5264BT-XbHSjleO.mjs +298 -0
  52. package/dist/chunks/dagre-XY8CZ1sg.mjs +1536 -0
  53. package/dist/chunks/defaultLocale-DFhS1600.mjs +201 -0
  54. package/dist/chunks/diagram-5BDNPKRD-CM7c3UTI.mjs +112 -0
  55. package/dist/chunks/diagram-G4DWMVQ6-Bhg4ps6b.mjs +546 -0
  56. package/dist/chunks/diagram-MMDJMWI5-C-UCVaxB.mjs +234 -0
  57. package/dist/chunks/diagram-TYMM5635-BOHSujSD.mjs +144 -0
  58. package/dist/chunks/dist-DHsXIYdd.mjs +59 -0
  59. package/dist/chunks/erDiagram-SMLLAGMA-CwKxXFMB.mjs +1712 -0
  60. package/dist/chunks/flowDiagram-DWJPFMVM-rQJKfyuO.mjs +4175 -0
  61. package/dist/chunks/ganttDiagram-T4ZO3ILL-DfaZirLX.mjs +3083 -0
  62. package/dist/chunks/gitGraph-7Q5UKJZL-BKG8cHGz.mjs +3 -0
  63. package/dist/chunks/gitGraphDiagram-UUTBAWPF-CRa-ymsI.mjs +792 -0
  64. package/dist/chunks/graphlib-CuDElSdG.mjs +223 -0
  65. package/dist/chunks/{i18next-loader-oDO9ZKUV.mjs → i18next-loader-CasQQb5s.mjs} +2 -2
  66. package/dist/chunks/info-OMHHGYJF-FKqYyUn9.mjs +3 -0
  67. package/dist/chunks/infoDiagram-42DDH7IO-CvyJU2nE.mjs +29 -0
  68. package/dist/chunks/init-JlKGZtuT.mjs +15 -0
  69. package/dist/chunks/ishikawaDiagram-UXIWVN3A-CIpbw1BK.mjs +719 -0
  70. package/dist/chunks/journeyDiagram-VCZTEJTY-H96UcUK9.mjs +885 -0
  71. package/dist/chunks/kanban-definition-6JOO6SKY-BYZT3srA.mjs +980 -0
  72. package/dist/chunks/{katex-NjLaA6AJ.mjs → katex-JyOgX6MW.mjs} +1 -1
  73. package/dist/chunks/{lightweight-i18n-DTySD6f6.mjs → lightweight-i18n-Cvv8CWh4.mjs} +13 -0
  74. package/dist/chunks/line-B9xUUA7k.mjs +34 -0
  75. package/dist/chunks/linear-Dj-1yA_B.mjs +289 -0
  76. package/dist/chunks/mermaid-parser.core-D6OPAUtM.mjs +57 -0
  77. package/dist/chunks/mermaid.core-BPN9ZHKQ.mjs +989 -0
  78. package/dist/{messages-B4lhNMKm2.mjs → chunks/messages--YKhFEDE.mjs} +28 -3
  79. package/dist/chunks/{messages-CF_PfacZ.mjs → messages-0Uwu1AMJ2.mjs} +26 -1
  80. package/dist/{messages-Bug6Du35.mjs → chunks/messages-1__0Ph4Q.mjs} +26 -1
  81. package/dist/chunks/{messages-CnQydQJd2.mjs → messages-4sm9Pb0C.mjs} +26 -1
  82. package/dist/chunks/{messages-BDXl53cy2.mjs → messages-4uxjtzKW.mjs} +26 -1
  83. package/dist/{messages-DQN1y6E9.mjs → chunks/messages-B-SwLgkQ.mjs} +28 -3
  84. package/dist/chunks/{messages-BlcRm2I3.mjs → messages-B1ylBxXQ.mjs} +26 -1
  85. package/dist/{messages-12_eyAo-.mjs → chunks/messages-B5m3dhKc.mjs} +26 -1
  86. package/dist/chunks/{messages-D8-N0FmU.mjs → messages-B6n2zDtv.mjs} +27 -2
  87. package/dist/chunks/{messages-BMq9k_lI.mjs → messages-BC9w4zAT.mjs} +26 -1
  88. package/dist/{messages-CsiGzUSP2.mjs → chunks/messages-BOj-7N3p.mjs} +26 -1
  89. package/dist/chunks/{messages-CvlMT1e62.mjs → messages-BRYHTS18.mjs} +26 -1
  90. package/dist/{messages-hrSlVSHp.mjs → chunks/messages-BSBbVjor.mjs} +33 -8
  91. package/dist/{messages-uCsQjz7M.mjs → chunks/messages-BUUkmUGc.mjs} +26 -1
  92. package/dist/chunks/{messages-DopbvJlg.mjs → messages-Bb3YEV2P.mjs} +31 -6
  93. package/dist/{messages-KqWQKmIu2.mjs → chunks/messages-Be_6YLzJ.mjs} +27 -2
  94. package/dist/chunks/{messages-BXn9Vzbx2.mjs → messages-BevRhv5d.mjs} +26 -1
  95. package/dist/chunks/{messages-DQ5ng0_t2.mjs → messages-Bhqr7Im2.mjs} +26 -1
  96. package/dist/{messages-B3Yhiycb2.mjs → chunks/messages-BpJFjSKa.mjs} +27 -2
  97. package/dist/chunks/{messages-BaoJwsEZ.mjs → messages-BqYlq_Bn.mjs} +26 -1
  98. package/dist/chunks/{messages-vN4T4r67.mjs → messages-BtAwCUfD.mjs} +26 -1
  99. package/dist/{messages-Cb3wXGnc.mjs → chunks/messages-Bthbp65G.mjs} +27 -2
  100. package/dist/{messages-x353UCBI.mjs → chunks/messages-BvHMZ8Pi2.mjs} +26 -1
  101. package/dist/{messages-BOE2mzCj2.mjs → chunks/messages-Bw1BE9jW.mjs} +26 -1
  102. package/dist/chunks/{messages-C5aCWL7B.mjs → messages-Bx6Wt285.mjs} +26 -1
  103. package/dist/{messages-C8f1I5EQ2.mjs → chunks/messages-BzslJRYv.mjs} +27 -2
  104. package/dist/chunks/{messages-CZ5Sbf8U.mjs → messages-C02M0Tpw.mjs} +26 -1
  105. package/dist/chunks/{messages-DN-194c32.mjs → messages-C1u3E9qg.mjs} +26 -1
  106. package/dist/chunks/{messages-DdmWzF5M.mjs → messages-C68WgSKk.mjs} +27 -2
  107. package/dist/chunks/{messages-Dgng6KN8.mjs → messages-C8w8JCP0.mjs} +28 -3
  108. package/dist/chunks/{messages-B5fKJXd6.mjs → messages-CFOZdSk4.mjs} +26 -1
  109. package/dist/chunks/{messages-5ArOv8cj.mjs → messages-CGOY79lr.mjs} +26 -1
  110. package/dist/{messages-mipkPgwQ2.mjs → chunks/messages-CGaSMZPu.mjs} +26 -1
  111. package/dist/{messages-Dq_v7slw2.mjs → chunks/messages-CJJgQ0BH.mjs} +26 -1
  112. package/dist/chunks/{messages-DUGEqDEG.mjs → messages-CTD6rtQj2.mjs} +26 -1
  113. package/dist/{messages-DIKCwGog.mjs → chunks/messages-CZymJML9.mjs} +30 -5
  114. package/dist/chunks/{messages-CcyIKgGU.mjs → messages-CfeFJbiv.mjs} +30 -5
  115. package/dist/chunks/{messages-BXSXk3oS2.mjs → messages-Cgatzu_z.mjs} +28 -3
  116. package/dist/{messages-CBPiFbEf2.mjs → chunks/messages-Ch2zBI602.mjs} +26 -1
  117. package/dist/chunks/{messages-yszqJukE.mjs → messages-CiAHsUfO.mjs} +26 -1
  118. package/dist/chunks/{messages-bmwto4UV.mjs → messages-Cuzq-tNW.mjs} +26 -1
  119. package/dist/{messages-JK9Okzsy2.mjs → chunks/messages-Cw4qiMwb.mjs} +26 -1
  120. package/dist/chunks/{messages-DSO2U-ul.mjs → messages-Cyh-mz40.mjs} +26 -1
  121. package/dist/{messages-DbZsJAff.mjs → chunks/messages-D-I2QO8H.mjs} +26 -1
  122. package/dist/chunks/{messages-BhcYsC_M2.mjs → messages-D0D2gruy.mjs} +26 -1
  123. package/dist/{messages-X80Nh0ib.mjs → chunks/messages-D1BKxfLD.mjs} +27 -2
  124. package/dist/chunks/{messages-CjVPwkVy.mjs → messages-D4eDs6R_.mjs} +26 -1
  125. package/dist/{messages-C5Uufygq.mjs → chunks/messages-D9Xr-hES.mjs} +26 -1
  126. package/dist/{messages-DkvQ-6HC2.mjs → chunks/messages-D9eJPHia.mjs} +28 -3
  127. package/dist/chunks/{messages-DRv4g-IA.mjs → messages-DBFWSzKY2.mjs} +26 -1
  128. package/dist/chunks/{messages-SSDr5fGF2.mjs → messages-DC0wu2S7.mjs} +26 -1
  129. package/dist/{messages-Bdk4ocMI.mjs → chunks/messages-DF9o19rG.mjs} +26 -1
  130. package/dist/chunks/{messages-DVKifYlq.mjs → messages-DFS_n986.mjs} +49 -24
  131. package/dist/{messages-CvvbLyTy2.mjs → chunks/messages-DGS4H30T.mjs} +26 -1
  132. package/dist/{messages-PvMdmlxI.mjs → chunks/messages-DKjddpzJ.mjs} +28 -3
  133. package/dist/chunks/{messages-DGD6BiGd.mjs → messages-DMvTdUXC.mjs} +28 -3
  134. package/dist/{messages-CD8K1g_t2.mjs → chunks/messages-DQUX-QYI2.mjs} +26 -1
  135. package/dist/chunks/{messages-CqgEz7C5.mjs → messages-DUigq8FO2.mjs} +26 -1
  136. package/dist/chunks/{messages-ByAqzAhB.mjs → messages-DY0FJdpH.mjs} +26 -1
  137. package/dist/{messages-DACg1XAu.mjs → chunks/messages-DfVXiqt-2.mjs} +26 -1
  138. package/dist/{messages-BYQ769S5.mjs → chunks/messages-DgZc9TJw.mjs} +26 -1
  139. package/dist/{messages-Dj79y02X.mjs → chunks/messages-QD4BCUDP.mjs} +26 -1
  140. package/dist/{messages-BeI2HORe2.mjs → chunks/messages-USmweex9.mjs} +26 -1
  141. package/dist/{messages-CEEzfqMO2.mjs → chunks/messages-a1JTi0Qm.mjs} +29 -4
  142. package/dist/chunks/{messages-Dz3UhEco2.mjs → messages-jcgCHPRn.mjs} +26 -1
  143. package/dist/{messages--cUQf9JX.mjs → chunks/messages-tnnqHpbd.mjs} +27 -2
  144. package/dist/chunks/{messages-DZwCufSb.mjs → messages-vzWKPLJO.mjs} +26 -1
  145. package/dist/chunks/{micromark-extension-math-CCEGWpdz.mjs → micromark-extension-math-Cz_ZZ_0Y.mjs} +1 -1
  146. package/dist/chunks/mindmap-definition-QFDTVHPH-BswFuNN6.mjs +1013 -0
  147. package/dist/chunks/ordinal-D1_lEgAO.mjs +65 -0
  148. package/dist/chunks/packet-4T2RLAQJ-DTUW2U0C.mjs +3 -0
  149. package/dist/chunks/path-6nYPAvNb.mjs +85 -0
  150. package/dist/chunks/pie-ZZUOXDRM-D-umqvEM.mjs +3 -0
  151. package/dist/chunks/pieDiagram-DEJITSTG-1WJgvK1w.mjs +179 -0
  152. package/dist/chunks/quadrantDiagram-34T5L4WZ-B_YH8QGl.mjs +1960 -0
  153. package/dist/chunks/radar-PYXPWWZC-DkQelf08.mjs +3 -0
  154. package/dist/chunks/requirementDiagram-MS252O5E-DRl0YJRI.mjs +2224 -0
  155. package/dist/chunks/rough.esm-CSWJruu5.mjs +1353 -0
  156. package/dist/chunks/sankeyDiagram-XADWPNL6-B-8IrknH.mjs +909 -0
  157. package/dist/chunks/sequenceDiagram-FGHM5R23-DTLb8qmO.mjs +4181 -0
  158. package/dist/chunks/src-CRgEHLPW.mjs +2149 -0
  159. package/dist/chunks/stateDiagram-FHFEXIEX-B0JFjLFy.mjs +218 -0
  160. package/dist/chunks/stateDiagram-v2-QKLJ7IA2-Co9CUU_z.mjs +28 -0
  161. package/dist/chunks/timeline-definition-GMOUNBTQ-CS9KTh-Q.mjs +1084 -0
  162. package/dist/chunks/{tools-DGOsJbHH.mjs → tools-CSYsrnud.mjs} +2116 -1268
  163. package/dist/chunks/treeView-SZITEDCU-DOOoyNP9.mjs +3 -0
  164. package/dist/chunks/treemap-W4RFUUIX-CsOoUA-u.mjs +3 -0
  165. package/dist/chunks/vennDiagram-DHZGUBPP-0BNu5Wna.mjs +1876 -0
  166. package/dist/chunks/wardley-RL74JXVD-CCzZcmEk.mjs +3 -0
  167. package/dist/chunks/wardleyDiagram-NUSXRM2D-Ca9XByNH.mjs +594 -0
  168. package/dist/chunks/xychartDiagram-5P7HB3ND-C8AyKUAE.mjs +2017 -0
  169. package/dist/cli.mjs +1 -1
  170. package/dist/full.mjs +3 -3
  171. package/dist/locales.mjs +80 -67
  172. package/dist/markdown.mjs +2 -2
  173. package/dist/{chunks/messages-9l49jauY.mjs → messages-5jvKxQNu2.mjs} +26 -1
  174. package/dist/{messages-CkySRhtd2.mjs → messages-7QD-X6XT2.mjs} +26 -1
  175. package/dist/{chunks/messages-Btr121zI2.mjs → messages-96iaAUds2.mjs} +27 -2
  176. package/dist/{chunks/messages-BAP2OAQk.mjs → messages-B19o-Teb.mjs} +28 -3
  177. package/dist/{messages-DJU4YLij.mjs → messages-B1ZUQagA.mjs} +26 -1
  178. package/dist/{messages-Dg2CDXZi2.mjs → messages-B7ieAJBd2.mjs} +26 -1
  179. package/dist/{messages-CByBLxWk.mjs → messages-BECMxmfX.mjs} +26 -1
  180. package/dist/{messages-CwCEcbWG.mjs → messages-BIHc0KHY.mjs} +27 -2
  181. package/dist/{messages-D8WvwU42.mjs → messages-BIoeoik5.mjs} +26 -1
  182. package/dist/{messages-D38h5XlF.mjs → messages-BJeGJksD.mjs} +26 -1
  183. package/dist/{messages-Cd23UgLV2.mjs → messages-BRZX964b2.mjs} +27 -2
  184. package/dist/{chunks/messages-B9N__q552.mjs → messages-BTQPpoM42.mjs} +29 -4
  185. package/dist/{messages-CUzBNjnc.mjs → messages-BYNcD6uR.mjs} +26 -1
  186. package/dist/{messages-DjWfVYHS2.mjs → messages-BYmmMDrN2.mjs} +26 -1
  187. package/dist/{chunks/messages-DkTxBa1V.mjs → messages-BbYq1pk-.mjs} +26 -1
  188. package/dist/{chunks/messages-BHhbHLoq.mjs → messages-BiUGXvYr2.mjs} +26 -1
  189. package/dist/{messages-So3SHdIc2.mjs → messages-BiiongNz2.mjs} +26 -1
  190. package/dist/{chunks/messages-BxBID_0B.mjs → messages-Bm0Feca1.mjs} +30 -5
  191. package/dist/{messages-C2veeQpU.mjs → messages-BmAn22OX.mjs} +26 -1
  192. package/dist/{messages-KbYSpNrE.mjs → messages-Bq3F2Tp_.mjs} +26 -1
  193. package/dist/{chunks/messages-Dux1S0-D2.mjs → messages-BsycN_JI2.mjs} +26 -1
  194. package/dist/{messages-DRU_IgoW.mjs → messages-BwHs4cm1.mjs} +30 -5
  195. package/dist/{messages-Cv-DKlZd.mjs → messages-CJTy6JZt.mjs} +26 -1
  196. package/dist/{chunks/messages-D7n_wJK7.mjs → messages-CR_L_UtK.mjs} +26 -1
  197. package/dist/{messages-DnhEzmXJ2.mjs → messages-CSUHBs4c2.mjs} +26 -1
  198. package/dist/{messages-C_HmWyXc2.mjs → messages-CWIXvnDf2.mjs} +26 -1
  199. package/dist/{messages-KSxF8eib.mjs → messages-CcF4y-E4.mjs} +26 -1
  200. package/dist/{chunks/messages-CL3mCbi6.mjs → messages-Ce6KVEbT.mjs} +27 -2
  201. package/dist/{chunks/messages-C-jA6Rf7.mjs → messages-Ci0KqX-J.mjs} +33 -8
  202. package/dist/{chunks/messages-DMyRdafk2.mjs → messages-CjbnogEC.mjs} +26 -1
  203. package/dist/{chunks/messages-BlO_37l_.mjs → messages-CmB406HW.mjs} +28 -3
  204. package/dist/{messages-Cho2VTAX.mjs → messages-CqXtJTpU.mjs} +26 -1
  205. package/dist/{messages-CWEL1WDy2.mjs → messages-D0aw5_0k2.mjs} +28 -3
  206. package/dist/{messages-CgEDVri-2.mjs → messages-D8FQWulF2.mjs} +26 -1
  207. package/dist/{chunks/messages-B5aAzExz.mjs → messages-DBiVgUs2.mjs} +27 -2
  208. package/dist/{chunks/messages-DYizZHT2.mjs → messages-DIJlIqlQ2.mjs} +26 -1
  209. package/dist/{messages-BPL7riv-.mjs → messages-DLX_iBDJ.mjs} +26 -1
  210. package/dist/{messages-vptt-pVF.mjs → messages-DLlc9QPw.mjs} +26 -1
  211. package/dist/{chunks/messages-876bKyUj2.mjs → messages-DMr62KiO2.mjs} +26 -1
  212. package/dist/{chunks/messages-CgedvWCf.mjs → messages-DPA-mMWC2.mjs} +27 -2
  213. package/dist/{messages-vcoib5Ga.mjs → messages-DTh9a8mR.mjs} +26 -1
  214. package/dist/{chunks/messages-DgEGJECT.mjs → messages-DY4IqlhY.mjs} +26 -1
  215. package/dist/{chunks/messages-CdzF0Hvl.mjs → messages-DYTTu0O12.mjs} +26 -1
  216. package/dist/{messages-rbox5gSb2.mjs → messages-DbySKTKt2.mjs} +28 -3
  217. package/dist/{chunks/messages-BGCQCeWd.mjs → messages-Ddnj2iTG2.mjs} +26 -1
  218. package/dist/{chunks/messages-CNEJxD8q2.mjs → messages-DkLU_rWm.mjs} +26 -1
  219. package/dist/{chunks/messages-FYl9woii2.mjs → messages-Dl3Sv6Rq2.mjs} +27 -2
  220. package/dist/{messages-Clsh86WQ.mjs → messages-Dl5Y2-Ia.mjs} +49 -24
  221. package/dist/{chunks/messages-CKRJDX0K2.mjs → messages-DnG0ef8t2.mjs} +28 -3
  222. package/dist/{chunks/messages-CyxDkx8a.mjs → messages-DnGJD4TL.mjs} +26 -1
  223. package/dist/{chunks/messages-DnJHflSh.mjs → messages-Dnp9N6RU2.mjs} +26 -1
  224. package/dist/{chunks/messages-Jps5Tc77.mjs → messages-Dvn35ksS.mjs} +26 -1
  225. package/dist/{messages-ChTWmxS8.mjs → messages-Dw__BcTj.mjs} +26 -1
  226. package/dist/{messages-D7juvhHp.mjs → messages-Dy-Y_nEI.mjs} +26 -1
  227. package/dist/{messages-CNNcKuGH.mjs → messages-E_ZuzGDt.mjs} +26 -1
  228. package/dist/{chunks/messages-DJO0ERQT.mjs → messages-F2xRoY1w.mjs} +26 -1
  229. package/dist/{messages-DqJTZbwt.mjs → messages-Smt4GBbj.mjs} +31 -6
  230. package/dist/{chunks/messages-D8dKkyII2.mjs → messages-aMXpHt5X2.mjs} +26 -1
  231. package/dist/{chunks/messages-DWD0ry9x.mjs → messages-aWZH50vu2.mjs} +28 -3
  232. package/dist/{chunks/messages-BbfLRqLh2.mjs → messages-dv19AkyJ.mjs} +26 -1
  233. package/dist/{chunks/messages-Dw2rmKMi2.mjs → messages-hWwSRF-2.mjs} +26 -1
  234. package/dist/{messages-En8LDjUB.mjs → messages-j7o5rT9s.mjs} +26 -1
  235. package/dist/{chunks/messages-NJsvFwJj.mjs → messages-nUVjeh7K.mjs} +27 -2
  236. package/dist/{messages-Cg1CF4pw.mjs → messages-nlhESX9t.mjs} +26 -1
  237. package/dist/{messages-CSl0Wla62.mjs → messages-rk-A1Wa42.mjs} +28 -3
  238. package/dist/{messages-nOe1gJYu.mjs → messages-xh2eOLvs.mjs} +26 -1
  239. package/dist/{messages-B_sKqaeK.mjs → messages-ynAe7ewZ.mjs} +26 -1
  240. package/dist/react.mjs +2 -2
  241. package/dist/tools.mjs +2 -2
  242. package/dist/vendor.LICENSE.txt +3254 -297
  243. package/package.json +7 -2
  244. package/src/components/constants/data-attributes.ts +0 -2
  245. package/src/components/i18n/locales/am/messages.json +26 -1
  246. package/src/components/i18n/locales/ar/messages.json +26 -1
  247. package/src/components/i18n/locales/az/messages.json +26 -1
  248. package/src/components/i18n/locales/bg/messages.json +26 -1
  249. package/src/components/i18n/locales/bn/messages.json +26 -1
  250. package/src/components/i18n/locales/bs/messages.json +28 -3
  251. package/src/components/i18n/locales/cs/messages.json +30 -5
  252. package/src/components/i18n/locales/da/messages.json +33 -8
  253. package/src/components/i18n/locales/de/messages.json +31 -6
  254. package/src/components/i18n/locales/dv/messages.json +26 -1
  255. package/src/components/i18n/locales/el/messages.json +26 -1
  256. package/src/components/i18n/locales/en/messages.json +13 -0
  257. package/src/components/i18n/locales/es/messages.json +27 -2
  258. package/src/components/i18n/locales/et/messages.json +30 -5
  259. package/src/components/i18n/locales/fa/messages.json +26 -1
  260. package/src/components/i18n/locales/fi/messages.json +26 -1
  261. package/src/components/i18n/locales/fil/messages.json +49 -24
  262. package/src/components/i18n/locales/fr/messages.json +27 -2
  263. package/src/components/i18n/locales/gu/messages.json +26 -1
  264. package/src/components/i18n/locales/he/messages.json +26 -1
  265. package/src/components/i18n/locales/hi/messages.json +26 -1
  266. package/src/components/i18n/locales/hr/messages.json +28 -3
  267. package/src/components/i18n/locales/hu/messages.json +27 -2
  268. package/src/components/i18n/locales/hy/messages.json +26 -1
  269. package/src/components/i18n/locales/id/messages.json +26 -1
  270. package/src/components/i18n/locales/it/messages.json +27 -2
  271. package/src/components/i18n/locales/ja/messages.json +26 -1
  272. package/src/components/i18n/locales/ka/messages.json +26 -1
  273. package/src/components/i18n/locales/km/messages.json +26 -1
  274. package/src/components/i18n/locales/kn/messages.json +26 -1
  275. package/src/components/i18n/locales/ko/messages.json +26 -1
  276. package/src/components/i18n/locales/ku/messages.json +26 -1
  277. package/src/components/i18n/locales/lo/messages.json +26 -1
  278. package/src/components/i18n/locales/lt/messages.json +26 -1
  279. package/src/components/i18n/locales/lv/messages.json +26 -1
  280. package/src/components/i18n/locales/mk/messages.json +26 -1
  281. package/src/components/i18n/locales/ml/messages.json +26 -1
  282. package/src/components/i18n/locales/mn/messages.json +26 -1
  283. package/src/components/i18n/locales/mr/messages.json +26 -1
  284. package/src/components/i18n/locales/ms/messages.json +28 -3
  285. package/src/components/i18n/locales/my/messages.json +26 -1
  286. package/src/components/i18n/locales/ne/messages.json +26 -1
  287. package/src/components/i18n/locales/nl/messages.json +28 -3
  288. package/src/components/i18n/locales/no/messages.json +29 -4
  289. package/src/components/i18n/locales/pa/messages.json +26 -1
  290. package/src/components/i18n/locales/pl/messages.json +27 -2
  291. package/src/components/i18n/locales/ps/messages.json +26 -1
  292. package/src/components/i18n/locales/pt/messages.json +27 -2
  293. package/src/components/i18n/locales/ro/messages.json +27 -2
  294. package/src/components/i18n/locales/ru/messages.json +26 -1
  295. package/src/components/i18n/locales/sd/messages.json +26 -1
  296. package/src/components/i18n/locales/si/messages.json +26 -1
  297. package/src/components/i18n/locales/sk/messages.json +28 -3
  298. package/src/components/i18n/locales/sl/messages.json +28 -3
  299. package/src/components/i18n/locales/sq/messages.json +27 -2
  300. package/src/components/i18n/locales/sr/messages.json +26 -1
  301. package/src/components/i18n/locales/sv/messages.json +28 -3
  302. package/src/components/i18n/locales/sw/messages.json +26 -1
  303. package/src/components/i18n/locales/ta/messages.json +26 -1
  304. package/src/components/i18n/locales/te/messages.json +26 -1
  305. package/src/components/i18n/locales/th/messages.json +26 -1
  306. package/src/components/i18n/locales/tr/messages.json +26 -1
  307. package/src/components/i18n/locales/ug/messages.json +26 -1
  308. package/src/components/i18n/locales/uk/messages.json +26 -1
  309. package/src/components/i18n/locales/ur/messages.json +26 -1
  310. package/src/components/i18n/locales/vi/messages.json +26 -1
  311. package/src/components/i18n/locales/yi/messages.json +26 -1
  312. package/src/components/i18n/locales/zh/messages.json +26 -1
  313. package/src/components/icons/index.ts +38 -0
  314. package/src/components/modules/ui.ts +0 -13
  315. package/src/stories/EditorModes.stories.ts +0 -60
  316. package/src/styles/main.css +39 -1
  317. package/src/tools/callout/emoji-picker/index.ts +3 -2
  318. package/src/tools/code/code-keyboard.ts +16 -9
  319. package/src/tools/code/constants.ts +26 -3
  320. package/src/tools/code/dom-builder.ts +40 -5
  321. package/src/tools/code/highlight-applier.ts +229 -0
  322. package/src/tools/code/index.ts +141 -1
  323. package/src/tools/code/mermaid-loader.ts +45 -0
  324. package/src/tools/code/shiki-loader.ts +135 -0
  325. package/src/tools/table/core/table-commands.ts +16 -0
  326. package/src/tools/table/core/table-controller.ts +29 -0
  327. package/src/tools/table/core/table-events.ts +17 -0
  328. package/src/tools/table/index.ts +194 -11
  329. package/src/tools/table/table-cell-blocks.ts +9 -6
  330. package/src/tools/table/table-cell-clipboard.ts +6 -1
  331. package/src/tools/table/table-cell-placement-picker.ts +133 -0
  332. package/src/tools/table/table-cell-selection.ts +174 -19
  333. package/src/tools/table/table-core.ts +321 -113
  334. package/src/tools/table/table-map.ts +279 -0
  335. package/src/tools/table/table-model.ts +901 -1
  336. package/src/tools/table/table-operations.ts +78 -44
  337. package/src/tools/table/table-resize.ts +19 -17
  338. package/src/tools/table/table-row-col-drag.ts +24 -10
  339. package/src/tools/table/types.ts +24 -2
  340. package/types/data-attributes.d.ts +0 -1
  341. package/types/tools/code.d.ts +2 -0
  342. /package/dist/chunks/{am-CS-JjQ0N.mjs → am-rVzV1W41.mjs} +0 -0
  343. /package/dist/chunks/{ar-Dt4XzR5U.mjs → ar-C710lkoH.mjs} +0 -0
  344. /package/dist/chunks/{az-CaDTXby8.mjs → az-BOp1pgua.mjs} +0 -0
  345. /package/dist/chunks/{bg-D1pLog-R.mjs → bg-CL9p09ZD.mjs} +0 -0
  346. /package/dist/chunks/{bn-Db_ae60m.mjs → bn-CNmSeyAy.mjs} +0 -0
  347. /package/dist/chunks/{bs-DJTg1R9e.mjs → bs-BRzMGqzk.mjs} +0 -0
  348. /package/dist/chunks/{cs-_Gc21gSL.mjs → cs-BYPBLmnF.mjs} +0 -0
  349. /package/dist/chunks/{da-xDB8uhCd.mjs → da-CBC_LR1c.mjs} +0 -0
  350. /package/dist/chunks/{de-B6gVjh1Z.mjs → de-DxRFMoAj.mjs} +0 -0
  351. /package/dist/chunks/{el-ClbRSnOs.mjs → el-Bk6YbySf.mjs} +0 -0
  352. /package/dist/chunks/{es-CuY9rnLK.mjs → es-DpT3FCMR.mjs} +0 -0
  353. /package/dist/chunks/{et-BLu5lDVc.mjs → et-DE9Dr_g9.mjs} +0 -0
  354. /package/dist/chunks/{fa-P3gnrZH8.mjs → fa-Banj1QUE.mjs} +0 -0
  355. /package/dist/chunks/{fi-B8PVHLjq.mjs → fi-DfN3M5ER.mjs} +0 -0
  356. /package/dist/chunks/{fil-B9JII5iF.mjs → fil-DbCsRS1d.mjs} +0 -0
  357. /package/dist/chunks/{fr-BWLDZdcc.mjs → fr-D1clKhgt.mjs} +0 -0
  358. /package/dist/chunks/{gu-BH3R_s4c.mjs → gu-1CsZyRwT.mjs} +0 -0
  359. /package/dist/chunks/{he-CCmeCVR_.mjs → he-qQdnL6eK.mjs} +0 -0
  360. /package/dist/chunks/{hi-BBav00DN.mjs → hi-DxM0Nff1.mjs} +0 -0
  361. /package/dist/chunks/{hr-B5ZX0r9G.mjs → hr-Onldyi-u.mjs} +0 -0
  362. /package/dist/chunks/{hu-1jgDa3YU.mjs → hu-CAn3pBuY.mjs} +0 -0
  363. /package/dist/chunks/{hy-LX4Kp2PE.mjs → hy-D43q7NxE.mjs} +0 -0
  364. /package/dist/chunks/{i18next-KNC_XV5x.mjs → i18next-BBGW2sDE.mjs} +0 -0
  365. /package/dist/chunks/{id-CcG40D1H.mjs → id-Xrw5Dd0Y.mjs} +0 -0
  366. /package/dist/chunks/{it-Cb8_K72W.mjs → it-CA9ZDMSc.mjs} +0 -0
  367. /package/dist/chunks/{ja-ipCH91mv.mjs → ja-D0J6WRFh.mjs} +0 -0
  368. /package/dist/chunks/{ka-BRvREIgq.mjs → ka-BZL7xDuY.mjs} +0 -0
  369. /package/dist/chunks/{km-BJwVw7Fg.mjs → km-BimgQZVU.mjs} +0 -0
  370. /package/dist/chunks/{kn-BPgUazCC.mjs → kn-C2n2cPHK.mjs} +0 -0
  371. /package/dist/chunks/{ko-CQLzxe7k.mjs → ko-n4Cn93D3.mjs} +0 -0
  372. /package/dist/chunks/{ku-BHhHu8Iz.mjs → ku-BYZCgT44.mjs} +0 -0
  373. /package/dist/chunks/{lo-DsTgYblY.mjs → lo-DVXiAE4N.mjs} +0 -0
  374. /package/dist/chunks/{lt-CDzHJm71.mjs → lt-B9KlQFnY.mjs} +0 -0
  375. /package/dist/chunks/{lv-MLLIAnIX.mjs → lv-BINeOdyx.mjs} +0 -0
  376. /package/dist/chunks/{mdast-util-math-yS0EygZV.mjs → mdast-util-math-CHYUxOHk.mjs} +0 -0
  377. /package/dist/chunks/{mk-DQdmUquZ.mjs → mk-_-QrPrLN.mjs} +0 -0
  378. /package/dist/chunks/{ml-DqehZnra.mjs → ml-KvJSC1KT.mjs} +0 -0
  379. /package/dist/chunks/{mn-4cFkKFjW.mjs → mn-CjFjWnRG.mjs} +0 -0
  380. /package/dist/chunks/{mr-DWiztOP4.mjs → mr-DqAZ7FRX.mjs} +0 -0
  381. /package/dist/chunks/{ms-BSz-iSnc.mjs → ms-BZcV4UG_.mjs} +0 -0
  382. /package/dist/chunks/{my-DbtbM1MW.mjs → my-97SC9jYN.mjs} +0 -0
  383. /package/dist/chunks/{ne-CqALWw_f.mjs → ne-Bs-M2TyF.mjs} +0 -0
  384. /package/dist/chunks/{nl-D_ra6RvH.mjs → nl-2ZwQilo-.mjs} +0 -0
  385. /package/dist/chunks/{no-Cg_kz_jl.mjs → no-fOQTpFq1.mjs} +0 -0
  386. /package/dist/chunks/{notifier-BOwxj_Ok.mjs → notifier-B1zCi9G1.mjs} +0 -0
  387. /package/dist/chunks/{pa-NLAsNqwY.mjs → pa-DLOqkMi0.mjs} +0 -0
  388. /package/dist/chunks/{pl-NHKp4YDg.mjs → pl-FYs9QrXU.mjs} +0 -0
  389. /package/dist/chunks/{ps-D1zEqNeg.mjs → ps-CTXe6pSe.mjs} +0 -0
  390. /package/dist/chunks/{pt-DBtqbUEB.mjs → pt-B1X4x7d1.mjs} +0 -0
  391. /package/dist/chunks/{ro-lqr63ai5.mjs → ro-Bf7S2FaR.mjs} +0 -0
  392. /package/dist/chunks/{ru-BycNnDyN.mjs → ru-B8lqnu_j.mjs} +0 -0
  393. /package/dist/chunks/{sd-DpHpIN9Z.mjs → sd-CHRYJm2r.mjs} +0 -0
  394. /package/dist/chunks/{si-BwiwaC7N.mjs → si-CI0Hs6vH.mjs} +0 -0
  395. /package/dist/chunks/{sk-CqRHT2Gp.mjs → sk-Bdvq1Kb_.mjs} +0 -0
  396. /package/dist/chunks/{sl-DA348uQ_.mjs → sl-B_qiFTV5.mjs} +0 -0
  397. /package/dist/chunks/{sq-D7JNgve1.mjs → sq-E0j1hysP.mjs} +0 -0
  398. /package/dist/chunks/{sr-D8RK6Kwp.mjs → sr-VPpVNTZw.mjs} +0 -0
  399. /package/dist/chunks/{sv-dwgT67ZG.mjs → sv-gKmDSR3d.mjs} +0 -0
  400. /package/dist/chunks/{sw-ZRRJnkem.mjs → sw-zeFLiO23.mjs} +0 -0
  401. /package/dist/chunks/{ta-5x4L5Krl.mjs → ta-Ci-j89hR.mjs} +0 -0
  402. /package/dist/chunks/{te-BZpEimwA.mjs → te-qyMI0M7a.mjs} +0 -0
  403. /package/dist/chunks/{th-Bhr-33kv.mjs → th-DPxHtpdb.mjs} +0 -0
  404. /package/dist/chunks/{tr-6tSNKGNB.mjs → tr-CRV6GS-G.mjs} +0 -0
  405. /package/dist/chunks/{ug-_e-jvr2b.mjs → ug-DW0YFpo5.mjs} +0 -0
  406. /package/dist/chunks/{uk-DooSc2Ja.mjs → uk-ssteuphK.mjs} +0 -0
  407. /package/dist/chunks/{ur-rb-krkIO.mjs → ur-qhY3-jY7.mjs} +0 -0
  408. /package/dist/chunks/{vi-CQkLn2AQ.mjs → vi-CHriMMC8.mjs} +0 -0
  409. /package/dist/chunks/{zh-CXQ40Q2_.mjs → zh-BJktawVN.mjs} +0 -0
@@ -2,7 +2,7 @@ import type { API } from '../../../types';
2
2
 
3
3
  import type { TableCellBlocks } from './table-cell-blocks';
4
4
  import { CELL_BLOCKS_ATTR } from './table-cell-blocks';
5
- import { BORDER_WIDTH, ROW_ATTR, CELL_ATTR } from './table-core';
5
+ import { BORDER_WIDTH, ROW_ATTR, CELL_ATTR, CELL_COL_ATTR } from './table-core';
6
6
  import type { TableGrid } from './table-core';
7
7
  import type { LegacyCellContent, TableData } from './types';
8
8
  import { isCellWithBlocks } from './types';
@@ -10,37 +10,51 @@ import { isCellWithBlocks } from './types';
10
10
  // ─── Pure DOM helpers ───────────────────────────────────────────────
11
11
 
12
12
  export const readPixelWidths = (gridEl: HTMLElement): number[] => {
13
- const firstRow = gridEl.querySelector(`[${ROW_ATTR}]`);
13
+ const colgroup = gridEl.querySelector('colgroup');
14
14
 
15
- if (!firstRow) {
15
+ if (!colgroup) {
16
16
  return [];
17
17
  }
18
18
 
19
- const cells = firstRow.querySelectorAll(`[${CELL_ATTR}]`);
19
+ const cols = colgroup.querySelectorAll('col');
20
+ const firstCol = cols[0] as HTMLElement | undefined;
20
21
 
21
- return Array.from(cells).map(cell =>
22
- (cell as HTMLElement).getBoundingClientRect().width
22
+ // When columns use percentage widths, parseFloat would return the percentage
23
+ // number (e.g. 50 from "50%") which is not a pixel value. In that case,
24
+ // read actual rendered widths from the first row's cells.
25
+ if (firstCol && firstCol.style.width.endsWith('%')) {
26
+ const firstRow = gridEl.querySelector(`[${ROW_ATTR}]`);
27
+
28
+ if (firstRow) {
29
+ return Array.from(firstRow.querySelectorAll(`[${CELL_ATTR}]`)).map(
30
+ cell => Math.round(cell.getBoundingClientRect().width)
31
+ );
32
+ }
33
+ }
34
+
35
+ return Array.from(cols).map(col =>
36
+ parseFloat((col as HTMLElement).style.width) || 0
23
37
  );
24
38
  };
25
39
 
26
40
  export const applyPixelWidths = (gridEl: HTMLElement, widths: number[]): void => {
27
41
  const totalWidth = widths.reduce((sum, w) => sum + w, 0);
28
- const gridStyle: HTMLElement = gridEl;
42
+ const grid: HTMLElement = gridEl;
29
43
 
30
- gridStyle.style.width = `${totalWidth + BORDER_WIDTH}px`;
44
+ grid.style.width = `${totalWidth + BORDER_WIDTH}px`;
31
45
 
32
- const rowEls = gridEl.querySelectorAll(`[${ROW_ATTR}]`);
46
+ const colgroup = gridEl.querySelector('colgroup');
33
47
 
34
- rowEls.forEach(row => {
35
- const cells = row.querySelectorAll(`[${CELL_ATTR}]`);
48
+ if (!colgroup) {
49
+ return;
50
+ }
36
51
 
37
- cells.forEach((node, i) => {
38
- if (i < widths.length) {
39
- const cellEl = node as HTMLElement;
52
+ const cols = Array.from(colgroup.querySelectorAll('col')) as HTMLElement[];
40
53
 
41
- cellEl.style.width = `${widths[i]}px`;
42
- }
43
- });
54
+ widths.forEach((w, i) => {
55
+ if (i < cols.length) {
56
+ cols[i].style.width = `${w}px`;
57
+ }
44
58
  });
45
59
  };
46
60
 
@@ -92,8 +106,7 @@ export const isColumnEmpty = (gridEl: HTMLElement, colIndex: number): boolean =>
92
106
  const rows = gridEl.querySelectorAll(`[${ROW_ATTR}]`);
93
107
 
94
108
  return Array.from(rows).every(row => {
95
- const cells = row.querySelectorAll(`[${CELL_ATTR}]`);
96
- const cell = cells[colIndex] as HTMLElement | undefined;
109
+ const cell = row.querySelector<HTMLElement>(`[${CELL_COL_ATTR}="${colIndex}"]`);
97
110
 
98
111
  return !cell || isCellEmpty(cell);
99
112
  });
@@ -102,16 +115,15 @@ export const isColumnEmpty = (gridEl: HTMLElement, colIndex: number): boolean =>
102
115
  // ─── Percent-mode width redistribution ──────────────────────────────
103
116
 
104
117
  export const redistributePercentWidths = (gridEl: HTMLElement): void => {
105
- const rows = gridEl.querySelectorAll(`[${ROW_ATTR}]`);
106
- const firstRow = rows[0];
118
+ const colgroup = gridEl.querySelector('colgroup');
107
119
 
108
- if (!firstRow) {
120
+ if (!colgroup) {
109
121
  return;
110
122
  }
111
123
 
112
- const firstRowCells = firstRow.querySelectorAll(`[${CELL_ATTR}]`);
113
- const currentTotal = Array.from(firstRowCells).reduce(
114
- (sum, cell) => sum + (parseFloat((cell as HTMLElement).style.width) || 0),
124
+ const cols = colgroup.querySelectorAll('col');
125
+ const currentTotal = Array.from(cols).reduce(
126
+ (sum, col) => sum + (parseFloat((col as HTMLElement).style.width) || 0),
115
127
  0,
116
128
  );
117
129
 
@@ -121,15 +133,11 @@ export const redistributePercentWidths = (gridEl: HTMLElement): void => {
121
133
 
122
134
  const scale = 100 / currentTotal;
123
135
 
124
- rows.forEach(row => {
125
- const cells = row.querySelectorAll(`[${CELL_ATTR}]`);
126
-
127
- cells.forEach(cell => {
128
- const el = cell as HTMLElement;
129
- const oldWidth = parseFloat(el.style.width) || 0;
136
+ cols.forEach(col => {
137
+ const el = col as HTMLElement;
138
+ const oldWidth = parseFloat(el.style.width) || 0;
130
139
 
131
- el.style.width = `${Math.round(oldWidth * scale * 100) / 100}%`;
132
- });
140
+ el.style.width = `${Math.round(oldWidth * scale * 100) / 100}%`;
133
141
  });
134
142
  };
135
143
 
@@ -221,10 +229,10 @@ export const getBlockIdsInColumn = (element: HTMLElement | null, cellBlocks: Tab
221
229
  const cellsInColumn: Element[] = [];
222
230
 
223
231
  rows.forEach(row => {
224
- const cells = row.querySelectorAll(`[${CELL_ATTR}]`);
232
+ const cell = row.querySelector(`[${CELL_COL_ATTR}="${colIndex}"]`);
225
233
 
226
- if (colIndex < cells.length) {
227
- cellsInColumn.push(cells[colIndex]);
234
+ if (cell) {
235
+ cellsInColumn.push(cell);
228
236
  }
229
237
  });
230
238
 
@@ -258,10 +266,8 @@ export const mountCellBlocksReadOnly = (
258
266
  return;
259
267
  }
260
268
 
261
- const cells = row.querySelectorAll(`[${CELL_ATTR}]`);
262
-
263
269
  rowData.forEach((cellContent, colIndex) => {
264
- const cell = cells[colIndex] as HTMLElement | undefined;
270
+ const cell = row.querySelector<HTMLElement>(`[${CELL_COL_ATTR}="${colIndex}"]`);
265
271
 
266
272
  if (!cell) {
267
273
  return;
@@ -408,15 +414,13 @@ export const applyCellColors = (gridEl: HTMLElement, content: LegacyCellContent[
408
414
  return;
409
415
  }
410
416
 
411
- const cells = rows[r].querySelectorAll(`[${CELL_ATTR}]`);
412
-
413
417
  rowContent.forEach((cellContent, c) => {
414
- if (c >= cells.length) {
418
+ const el = rows[r].querySelector<HTMLElement>(`[${CELL_COL_ATTR}="${c}"]`);
419
+
420
+ if (!el) {
415
421
  return;
416
422
  }
417
423
 
418
- const el = cells[c] as HTMLElement;
419
-
420
424
  if (isCellWithBlocks(cellContent) && cellContent.color) {
421
425
  el.style.backgroundColor = cellContent.color;
422
426
  } else {
@@ -432,6 +436,36 @@ export const applyCellColors = (gridEl: HTMLElement, content: LegacyCellContent[
432
436
  });
433
437
  };
434
438
 
439
+ export const applyCellPlacements = (gridEl: HTMLElement, content: LegacyCellContent[][]): void => {
440
+ const rows = gridEl.querySelectorAll(`[${ROW_ATTR}]`);
441
+
442
+ content.forEach((rowContent, r) => {
443
+ if (r >= rows.length) {
444
+ return;
445
+ }
446
+
447
+ rowContent.forEach((cellContent, c) => {
448
+ const el = rows[r].querySelector<HTMLElement>(`[${CELL_COL_ATTR}="${c}"]`);
449
+
450
+ if (!el) {
451
+ return;
452
+ }
453
+
454
+ const blocksContainer = el.querySelector<HTMLElement>(`[${CELL_BLOCKS_ATTR}]`);
455
+
456
+ if (!blocksContainer) {
457
+ return;
458
+ }
459
+
460
+ if (isCellWithBlocks(cellContent) && cellContent.placement && cellContent.placement !== 'top-left') {
461
+ blocksContainer.setAttribute('data-blok-cell-placement', cellContent.placement);
462
+ } else {
463
+ blocksContainer.removeAttribute('data-blok-cell-placement');
464
+ }
465
+ });
466
+ });
467
+ };
468
+
435
469
  export const updateHeadingColumnStyles = (gridEl: HTMLElement | null, withHeadingColumn: boolean): void => {
436
470
  if (!gridEl) {
437
471
  return;
@@ -1,8 +1,6 @@
1
1
  import { BORDER_WIDTH } from './table-core';
2
2
 
3
3
  const RESIZE_ATTR = 'data-blok-table-resize';
4
- const CELL_ATTR = 'data-blok-table-cell';
5
- const ROW_ATTR = 'data-blok-table-row';
6
4
  const MIN_COL_WIDTH = 50;
7
5
  const HANDLE_HIT_WIDTH = 16;
8
6
 
@@ -23,7 +21,7 @@ export class TableResize {
23
21
  private dragStartX = 0;
24
22
  private dragColIndex = -1;
25
23
  private startColWidth = 0;
26
- private dragRowCells: HTMLElement[][] | null = null;
24
+ private dragColElements: HTMLElement[] | null = null;
27
25
  private handles: HTMLElement[] = [];
28
26
  private needsInitialApply: boolean;
29
27
 
@@ -74,7 +72,7 @@ export class TableResize {
74
72
  this.gridEl.removeEventListener('pointerdown', this.boundPointerDown);
75
73
  document.removeEventListener('pointermove', this.boundPointerMove);
76
74
  document.removeEventListener('pointerup', this.boundPointerUp);
77
- this.dragRowCells = null;
75
+ this.dragColElements = null;
78
76
 
79
77
  this.handles.forEach(handle => handle.remove());
80
78
  this.handles = [];
@@ -170,7 +168,7 @@ export class TableResize {
170
168
  this.isDragging = true;
171
169
  this.dragStartX = e.clientX;
172
170
  this.startColWidth = this.colWidths[this.dragColIndex];
173
- this.dragRowCells = this.resolveRowCells();
171
+ this.dragColElements = this.resolveColElements();
174
172
 
175
173
  this.onDragStart?.();
176
174
  this.gridEl.style.userSelect = 'none';
@@ -195,7 +193,7 @@ export class TableResize {
195
193
  const newWidth = Math.max(MIN_COL_WIDTH, rawWidth);
196
194
 
197
195
  this.colWidths[this.dragColIndex] = newWidth;
198
- this.applyWidths(this.dragRowCells ?? undefined);
196
+ this.applyWidths(this.dragColElements ?? undefined);
199
197
  this.updateHandlePositions();
200
198
  this.onDrag?.();
201
199
  }
@@ -216,28 +214,32 @@ export class TableResize {
216
214
 
217
215
  document.removeEventListener('pointermove', this.boundPointerMove);
218
216
  document.removeEventListener('pointerup', this.boundPointerUp);
219
- this.dragRowCells = null;
217
+ this.dragColElements = null;
220
218
 
221
219
  this.onChange([...this.colWidths]);
222
220
  }
223
221
 
224
- private resolveRowCells(): HTMLElement[][] {
225
- const rows = this.gridEl.querySelectorAll<HTMLElement>(`[${ROW_ATTR}]`);
222
+ private resolveColElements(): HTMLElement[] {
223
+ const colgroup = this.gridEl.querySelector('colgroup');
226
224
 
227
- return Array.from(rows, row => Array.from(row.querySelectorAll<HTMLElement>(`[${CELL_ATTR}]`)));
225
+ if (!colgroup) {
226
+ return [];
227
+ }
228
+
229
+ return Array.from(colgroup.querySelectorAll<HTMLElement>('col'));
228
230
  }
229
231
 
230
- private applyWidths(rowCells: HTMLElement[][] = this.resolveRowCells()): void {
232
+ private applyWidths(cols: HTMLElement[] = this.resolveColElements()): void {
231
233
  const totalWidth = this.colWidths.reduce((sum, w) => sum + w, 0);
232
234
 
233
235
  this.gridEl.style.width = `${totalWidth + BORDER_WIDTH}px`;
234
236
 
235
- rowCells.forEach(cells => {
236
- cells.forEach((cellEl, i) => {
237
- if (i < this.colWidths.length) {
238
- cellEl.style.setProperty('width', `${this.colWidths[i]}px`);
239
- }
240
- });
237
+ cols.forEach((colEl, i) => {
238
+ if (i < this.colWidths.length) {
239
+ const el: HTMLElement = colEl;
240
+
241
+ el.style.width = `${this.colWidths[i]}px`;
242
+ }
241
243
  });
242
244
  }
243
245
  }
@@ -1,4 +1,4 @@
1
- import { BORDER_WIDTH, CELL_ATTR, ROW_ATTR } from './table-core';
1
+ import { BORDER_WIDTH, CELL_ATTR, CELL_COL_ATTR, ROW_ATTR } from './table-core';
2
2
  import type { RowColAction } from './table-row-col-controls';
3
3
 
4
4
  const DRAG_THRESHOLD = 10;
@@ -10,6 +10,23 @@ const GHOST_ATTR = 'data-blok-table-drag-ghost';
10
10
  * plus the right edge of the last column.
11
11
  */
12
12
  export const getCumulativeColEdges = (grid: HTMLElement): number[] => {
13
+ const colgroup = grid.querySelector('colgroup');
14
+
15
+ if (colgroup) {
16
+ const cols = Array.from(colgroup.querySelectorAll('col'));
17
+
18
+ return cols.reduce<number[]>(
19
+ (edges, col) => {
20
+ const last = edges[edges.length - 1];
21
+ const width = (col as HTMLElement).offsetWidth || parseFloat((col as HTMLElement).style.width) || 0;
22
+
23
+ return [...edges, last + width];
24
+ },
25
+ [0]
26
+ );
27
+ }
28
+
29
+ // Fallback for grids without colgroup
13
30
  const firstRow = grid.querySelector(`[${ROW_ATTR}]`);
14
31
 
15
32
  if (!firstRow) {
@@ -211,14 +228,12 @@ export class TableRowColDrag {
211
228
  const dragBg = this.getDragSourceBg();
212
229
 
213
230
  rows.forEach(row => {
214
- const cells = row.querySelectorAll(`[${CELL_ATTR}]`);
231
+ const cellEl = row.querySelector<HTMLElement>(`[${CELL_COL_ATTR}="${this.dragFromIndex}"]`);
215
232
 
216
- if (this.dragFromIndex >= cells.length) {
233
+ if (!cellEl) {
217
234
  return;
218
235
  }
219
236
 
220
- const cellEl = cells[this.dragFromIndex] as HTMLElement;
221
-
222
237
  cellEl.style.backgroundColor = dragBg;
223
238
  cellEl.style.opacity = '0.7';
224
239
  this.dragOverlayCells.push(cellEl);
@@ -418,8 +433,8 @@ export class TableRowColDrag {
418
433
  return null;
419
434
  }
420
435
 
421
- const firstCell = firstRow.querySelectorAll(`[${CELL_ATTR}]`)[this.dragFromIndex] as HTMLElement | undefined;
422
- const lastCell = lastRow.querySelectorAll(`[${CELL_ATTR}]`)[this.dragFromIndex] as HTMLElement | undefined;
436
+ const firstCell = firstRow.querySelector<HTMLElement>(`[${CELL_COL_ATTR}="${this.dragFromIndex}"]`);
437
+ const lastCell = lastRow.querySelector<HTMLElement>(`[${CELL_COL_ATTR}="${this.dragFromIndex}"]`);
423
438
 
424
439
  if (!firstCell || !lastCell) {
425
440
  return null;
@@ -469,13 +484,12 @@ export class TableRowColDrag {
469
484
  ghostStyle.flexDirection = 'column';
470
485
 
471
486
  rows.forEach(row => {
472
- const cells = row.querySelectorAll(`[${CELL_ATTR}]`);
487
+ const cellEl = row.querySelector<HTMLElement>(`[${CELL_COL_ATTR}="${this.dragFromIndex}"]`);
473
488
 
474
- if (this.dragFromIndex >= cells.length) {
489
+ if (!cellEl) {
475
490
  return;
476
491
  }
477
492
 
478
- const cellEl = cells[this.dragFromIndex] as HTMLElement;
479
493
  const clone = cellEl.cloneNode(true) as HTMLElement;
480
494
 
481
495
  clone.style.width = `${cellEl.offsetWidth}px`;
@@ -1,10 +1,32 @@
1
1
  import type { BlockToolData } from '../../../types';
2
2
 
3
+ /**
4
+ * Content placement within a cell.
5
+ * Describes vertical (top/middle/bottom) and horizontal (left/center/right) alignment.
6
+ */
7
+ export type CellPlacement =
8
+ | 'top-left' | 'top-center' | 'top-right'
9
+ | 'middle-left' | 'middle-center' | 'middle-right'
10
+ | 'bottom-left' | 'bottom-center' | 'bottom-right';
11
+
3
12
  /**
4
13
  * Cell content always contains block IDs.
5
14
  * Every cell in the table is represented as an array of block references.
6
15
  */
7
- export type CellContent = { blocks: string[]; color?: string; textColor?: string; text?: string };
16
+ export type CellContent = {
17
+ blocks: string[];
18
+ color?: string;
19
+ textColor?: string;
20
+ text?: string;
21
+ /** Content placement within the cell (vertical + horizontal alignment). */
22
+ placement?: CellPlacement;
23
+ /** Number of columns this cell spans (default 1 when omitted). Only set on origin cells. */
24
+ colspan?: number;
25
+ /** Number of rows this cell spans (default 1 when omitted). Only set on origin cells. */
26
+ rowspan?: number;
27
+ /** If set, this cell is covered by a merge whose origin is at [row, col]. */
28
+ mergedInto?: [number, number];
29
+ };
8
30
 
9
31
  /**
10
32
  * Legacy cell content type for migration from string-based cells.
@@ -73,5 +95,5 @@ export interface ClipboardBlockData {
73
95
  export interface TableCellsClipboard {
74
96
  rows: number;
75
97
  cols: number;
76
- cells: Array<Array<{ blocks: ClipboardBlockData[]; color?: string; textColor?: string }>>;
98
+ cells: Array<Array<{ blocks: ClipboardBlockData[]; color?: string; textColor?: string; placement?: CellPlacement }>>;
77
99
  }
@@ -27,7 +27,6 @@ export const DATA_ATTR: {
27
27
  readonly empty: 'data-blok-empty';
28
28
 
29
29
  // Editor Modes
30
- readonly narrow: 'data-blok-narrow';
31
30
  readonly rtl: 'data-blok-rtl';
32
31
 
33
32
  // Drag and Drop
@@ -8,4 +8,6 @@ export interface CodeData extends BlockToolData {
8
8
  code: string;
9
9
  /** Language identifier, e.g. "javascript", "plain text" */
10
10
  language: string;
11
+ /** Whether to show line numbers in the gutter */
12
+ lineNumbers?: boolean;
11
13
  }