@jackuait/blok 0.10.0-beta.5 → 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 (471) hide show
  1. package/codemod/migrate-editorjs-to-blok.js +0 -2
  2. package/codemod/test.js +0 -6
  3. package/dist/blok.mjs +3 -3
  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-DH-WEcA8.mjs → blok-CiLRmoHI.mjs} +2030 -1996
  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-D6kmoKXy.mjs +20 -0
  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-Ccno9NZS.mjs → constants-DFS8l39Y.mjs} +525 -552
  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/default-DIfXCS2E.mjs +4 -0
  54. package/dist/chunks/defaultLocale-DFhS1600.mjs +201 -0
  55. package/dist/chunks/diagram-5BDNPKRD-CM7c3UTI.mjs +112 -0
  56. package/dist/chunks/diagram-G4DWMVQ6-Bhg4ps6b.mjs +546 -0
  57. package/dist/chunks/diagram-MMDJMWI5-C-UCVaxB.mjs +234 -0
  58. package/dist/chunks/diagram-TYMM5635-BOHSujSD.mjs +144 -0
  59. package/dist/chunks/dist-DHsXIYdd.mjs +59 -0
  60. package/dist/chunks/erDiagram-SMLLAGMA-CwKxXFMB.mjs +1712 -0
  61. package/dist/chunks/flowDiagram-DWJPFMVM-rQJKfyuO.mjs +4175 -0
  62. package/dist/chunks/ganttDiagram-T4ZO3ILL-DfaZirLX.mjs +3083 -0
  63. package/dist/chunks/gitGraph-7Q5UKJZL-BKG8cHGz.mjs +3 -0
  64. package/dist/chunks/gitGraphDiagram-UUTBAWPF-CRa-ymsI.mjs +792 -0
  65. package/dist/chunks/graphlib-CuDElSdG.mjs +223 -0
  66. package/dist/chunks/{i18next-G6FKbZqA.mjs → i18next-BBGW2sDE.mjs} +1 -1
  67. package/dist/chunks/{i18next-loader-CwNimni3.mjs → i18next-loader-CasQQb5s.mjs} +2 -2
  68. package/dist/chunks/info-OMHHGYJF-FKqYyUn9.mjs +3 -0
  69. package/dist/chunks/infoDiagram-42DDH7IO-CvyJU2nE.mjs +29 -0
  70. package/dist/chunks/init-JlKGZtuT.mjs +15 -0
  71. package/dist/chunks/ishikawaDiagram-UXIWVN3A-CIpbw1BK.mjs +719 -0
  72. package/dist/chunks/journeyDiagram-VCZTEJTY-H96UcUK9.mjs +885 -0
  73. package/dist/chunks/kanban-definition-6JOO6SKY-BYZT3srA.mjs +980 -0
  74. package/dist/chunks/katex-JyOgX6MW.mjs +22026 -0
  75. package/dist/chunks/{lightweight-i18n-DWCdzAw0.mjs → lightweight-i18n-Cvv8CWh4.mjs} +29 -18
  76. package/dist/chunks/line-B9xUUA7k.mjs +34 -0
  77. package/dist/chunks/linear-Dj-1yA_B.mjs +289 -0
  78. package/dist/chunks/mdast-util-math-CHYUxOHk.mjs +151 -0
  79. package/dist/chunks/mermaid-parser.core-D6OPAUtM.mjs +57 -0
  80. package/dist/chunks/mermaid.core-BPN9ZHKQ.mjs +989 -0
  81. package/dist/{messages-B-4fku2H2.mjs → chunks/messages--YKhFEDE.mjs} +30 -19
  82. package/dist/{messages-BCG_evLg.mjs → chunks/messages-0Uwu1AMJ2.mjs} +28 -17
  83. package/dist/{messages-CdlsTFB1.mjs → chunks/messages-1__0Ph4Q.mjs} +28 -17
  84. package/dist/chunks/{messages-wLSVQbsA2.mjs → messages-4sm9Pb0C.mjs} +28 -17
  85. package/dist/chunks/{messages-R2W_rGOo2.mjs → messages-4uxjtzKW.mjs} +28 -17
  86. package/dist/chunks/{messages-Dm4YVlrm.mjs → messages-B-SwLgkQ.mjs} +30 -19
  87. package/dist/{messages--S8_taOd2.mjs → chunks/messages-B1ylBxXQ.mjs} +28 -17
  88. package/dist/chunks/{messages-B7MIRzCa2.mjs → messages-B5m3dhKc.mjs} +28 -17
  89. package/dist/chunks/{messages-Dplnp19q.mjs → messages-B6n2zDtv.mjs} +29 -18
  90. package/dist/chunks/{messages-DD7BI6BK.mjs → messages-BC9w4zAT.mjs} +28 -17
  91. package/dist/chunks/{messages-BrFl5773.mjs → messages-BOj-7N3p.mjs} +28 -17
  92. package/dist/chunks/{messages-BbdNugdi.mjs → messages-BRYHTS18.mjs} +28 -17
  93. package/dist/chunks/{messages-JQKFJo7C.mjs → messages-BSBbVjor.mjs} +35 -24
  94. package/dist/{messages-CBzd_x7H.mjs → chunks/messages-BUUkmUGc.mjs} +28 -17
  95. package/dist/{messages-CjmSrt1D.mjs → chunks/messages-Bb3YEV2P.mjs} +33 -22
  96. package/dist/{messages-BvgXeMSL2.mjs → chunks/messages-Be_6YLzJ.mjs} +29 -18
  97. package/dist/{messages-pgPcitDH.mjs → chunks/messages-BevRhv5d.mjs} +28 -17
  98. package/dist/chunks/{messages-BW_7lfqG2.mjs → messages-Bhqr7Im2.mjs} +28 -17
  99. package/dist/chunks/{messages-LxumrNue2.mjs → messages-BpJFjSKa.mjs} +29 -18
  100. package/dist/{messages-xEI8gEDK.mjs → chunks/messages-BqYlq_Bn.mjs} +28 -17
  101. package/dist/{messages-CBdQ3XP9.mjs → chunks/messages-BtAwCUfD.mjs} +28 -17
  102. package/dist/{messages-D3cAcyzj.mjs → chunks/messages-Bthbp65G.mjs} +29 -18
  103. package/dist/{messages-CYX48nfg.mjs → chunks/messages-BvHMZ8Pi2.mjs} +28 -17
  104. package/dist/{messages-Dddxv8-f2.mjs → chunks/messages-Bw1BE9jW.mjs} +28 -17
  105. package/dist/chunks/{messages-d0Ky6QjR.mjs → messages-Bx6Wt285.mjs} +28 -17
  106. package/dist/chunks/{messages-BPog17132.mjs → messages-BzslJRYv.mjs} +29 -18
  107. package/dist/{messages-hTpeKUaW.mjs → chunks/messages-C02M0Tpw.mjs} +28 -17
  108. package/dist/chunks/{messages-C-b6tPad2.mjs → messages-C1u3E9qg.mjs} +28 -17
  109. package/dist/{messages-BJ7BuFZi.mjs → chunks/messages-C68WgSKk.mjs} +29 -18
  110. package/dist/chunks/{messages-Bpda_3PM2.mjs → messages-C8w8JCP0.mjs} +30 -19
  111. package/dist/chunks/{messages-CmrMwBv3.mjs → messages-CFOZdSk4.mjs} +28 -17
  112. package/dist/{messages-DVQNjdPk.mjs → chunks/messages-CGOY79lr.mjs} +28 -17
  113. package/dist/chunks/{messages-DAVsuDWh2.mjs → messages-CGaSMZPu.mjs} +28 -17
  114. package/dist/{messages-DtrSrdfE2.mjs → chunks/messages-CJJgQ0BH.mjs} +28 -17
  115. package/dist/{messages-CgzbJ8_l2.mjs → chunks/messages-CTD6rtQj2.mjs} +28 -17
  116. package/dist/chunks/{messages-p4byLfvR.mjs → messages-CZymJML9.mjs} +32 -21
  117. package/dist/{messages-CqkRG9mH.mjs → chunks/messages-CfeFJbiv.mjs} +32 -21
  118. package/dist/{messages-DjJQoYvP2.mjs → chunks/messages-Cgatzu_z.mjs} +30 -19
  119. package/dist/{messages-CM5fsPo02.mjs → chunks/messages-Ch2zBI602.mjs} +28 -17
  120. package/dist/chunks/{messages-CyNsByCY.mjs → messages-CiAHsUfO.mjs} +28 -17
  121. package/dist/{messages-BXI3qIos.mjs → chunks/messages-Cuzq-tNW.mjs} +28 -17
  122. package/dist/chunks/{messages-FHrCEJmY2.mjs → messages-Cw4qiMwb.mjs} +28 -17
  123. package/dist/chunks/{messages-xfjdrZmx.mjs → messages-Cyh-mz40.mjs} +28 -17
  124. package/dist/{messages-Bo_FUvVH.mjs → chunks/messages-D-I2QO8H.mjs} +28 -17
  125. package/dist/chunks/{messages-Ct7AMBS82.mjs → messages-D0D2gruy.mjs} +28 -17
  126. package/dist/chunks/{messages-CrMfiGu5.mjs → messages-D1BKxfLD.mjs} +29 -18
  127. package/dist/chunks/{messages-CmXADeab2.mjs → messages-D4eDs6R_.mjs} +28 -17
  128. package/dist/chunks/{messages-ClRHDxzh.mjs → messages-D9Xr-hES.mjs} +28 -17
  129. package/dist/{messages-tsHpMdDT2.mjs → chunks/messages-D9eJPHia.mjs} +30 -19
  130. package/dist/{messages-DUBHHfEt.mjs → chunks/messages-DBFWSzKY2.mjs} +28 -17
  131. package/dist/{messages-i4S6q64n2.mjs → chunks/messages-DC0wu2S7.mjs} +28 -17
  132. package/dist/chunks/{messages-BnznaKEP2.mjs → messages-DF9o19rG.mjs} +28 -17
  133. package/dist/{messages-DA-o8X3A.mjs → chunks/messages-DFS_n986.mjs} +51 -40
  134. package/dist/{messages-BGsDZTQp2.mjs → chunks/messages-DGS4H30T.mjs} +28 -17
  135. package/dist/chunks/{messages-Cdx4QMR1.mjs → messages-DKjddpzJ.mjs} +30 -19
  136. package/dist/chunks/{messages-B3s2vra72.mjs → messages-DMvTdUXC.mjs} +30 -19
  137. package/dist/{messages-Dcyrzdxa2.mjs → chunks/messages-DQUX-QYI2.mjs} +28 -17
  138. package/dist/chunks/{messages-BS1nOvZ-.mjs → messages-DUigq8FO2.mjs} +28 -17
  139. package/dist/{messages-BKjqW08U.mjs → chunks/messages-DY0FJdpH.mjs} +28 -17
  140. package/dist/{messages-BBvDbp62.mjs → chunks/messages-DfVXiqt-2.mjs} +28 -17
  141. package/dist/chunks/{messages-DHCVA7XQ.mjs → messages-DgZc9TJw.mjs} +28 -17
  142. package/dist/chunks/{messages-1Raf1IK82.mjs → messages-QD4BCUDP.mjs} +28 -17
  143. package/dist/{messages-JhoVMjfX2.mjs → chunks/messages-USmweex9.mjs} +28 -17
  144. package/dist/chunks/{messages-DBpXyvRe2.mjs → messages-a1JTi0Qm.mjs} +31 -20
  145. package/dist/chunks/{messages-D5IgUbBD2.mjs → messages-jcgCHPRn.mjs} +28 -17
  146. package/dist/chunks/{messages-Dfpi8pDY.mjs → messages-tnnqHpbd.mjs} +29 -18
  147. package/dist/{messages-DZEcrbmH.mjs → chunks/messages-vzWKPLJO.mjs} +28 -17
  148. package/dist/chunks/micromark-extension-math-Cz_ZZ_0Y.mjs +169 -0
  149. package/dist/chunks/micromark-factory-space-WwmyBO_J.mjs +36 -0
  150. package/dist/chunks/mindmap-definition-QFDTVHPH-BswFuNN6.mjs +1013 -0
  151. package/dist/chunks/{notifier-Butv4Dvo.mjs → notifier-B1zCi9G1.mjs} +1 -1
  152. package/dist/chunks/{objectSpread2-BY4mgzrQ.mjs → objectSpread2-CWwMYL_U.mjs} +1 -1
  153. package/dist/chunks/ordinal-D1_lEgAO.mjs +65 -0
  154. package/dist/chunks/packet-4T2RLAQJ-DTUW2U0C.mjs +3 -0
  155. package/dist/chunks/path-6nYPAvNb.mjs +85 -0
  156. package/dist/chunks/pie-ZZUOXDRM-D-umqvEM.mjs +3 -0
  157. package/dist/chunks/pieDiagram-DEJITSTG-1WJgvK1w.mjs +179 -0
  158. package/dist/chunks/quadrantDiagram-34T5L4WZ-B_YH8QGl.mjs +1960 -0
  159. package/dist/chunks/radar-PYXPWWZC-DkQelf08.mjs +3 -0
  160. package/dist/chunks/requirementDiagram-MS252O5E-DRl0YJRI.mjs +2224 -0
  161. package/dist/chunks/rough.esm-CSWJruu5.mjs +1353 -0
  162. package/dist/chunks/sankeyDiagram-XADWPNL6-B-8IrknH.mjs +909 -0
  163. package/dist/chunks/sequenceDiagram-FGHM5R23-DTLb8qmO.mjs +4181 -0
  164. package/dist/chunks/src-CRgEHLPW.mjs +2149 -0
  165. package/dist/chunks/stateDiagram-FHFEXIEX-B0JFjLFy.mjs +218 -0
  166. package/dist/chunks/stateDiagram-v2-QKLJ7IA2-Co9CUU_z.mjs +28 -0
  167. package/dist/chunks/timeline-definition-GMOUNBTQ-CS9KTh-Q.mjs +1084 -0
  168. package/dist/chunks/{tools-C2_IVsQY.mjs → tools-CSYsrnud.mjs} +2846 -3098
  169. package/dist/chunks/treeView-SZITEDCU-DOOoyNP9.mjs +3 -0
  170. package/dist/chunks/treemap-W4RFUUIX-CsOoUA-u.mjs +3 -0
  171. package/dist/chunks/vennDiagram-DHZGUBPP-0BNu5Wna.mjs +1876 -0
  172. package/dist/chunks/wardley-RL74JXVD-CCzZcmEk.mjs +3 -0
  173. package/dist/chunks/wardleyDiagram-NUSXRM2D-Ca9XByNH.mjs +594 -0
  174. package/dist/chunks/xychartDiagram-5P7HB3ND-C8AyKUAE.mjs +2017 -0
  175. package/dist/cli.mjs +1 -1
  176. package/dist/full.mjs +14 -14
  177. package/dist/locales.mjs +95 -84
  178. package/dist/markdown.mjs +3962 -0
  179. package/dist/{chunks/messages-6mikOS4D2.mjs → messages-5jvKxQNu2.mjs} +28 -17
  180. package/dist/{messages-BAcH6PtT2.mjs → messages-7QD-X6XT2.mjs} +28 -17
  181. package/dist/{messages-DbxbxUiK2.mjs → messages-96iaAUds2.mjs} +29 -18
  182. package/dist/{messages-CVcQD-9u.mjs → messages-B19o-Teb.mjs} +30 -19
  183. package/dist/{messages-Ccd587Yn.mjs → messages-B1ZUQagA.mjs} +28 -17
  184. package/dist/{messages-upqrRZQH2.mjs → messages-B7ieAJBd2.mjs} +28 -17
  185. package/dist/{chunks/messages-Csvm4mtA.mjs → messages-BECMxmfX.mjs} +28 -17
  186. package/dist/{chunks/messages-DA7Zk-Cy.mjs → messages-BIHc0KHY.mjs} +29 -18
  187. package/dist/{chunks/messages-BdnSVKOw.mjs → messages-BIoeoik5.mjs} +28 -17
  188. package/dist/{chunks/messages-DQ5AyNCU.mjs → messages-BJeGJksD.mjs} +28 -17
  189. package/dist/{messages-C5XPUD9T2.mjs → messages-BRZX964b2.mjs} +29 -18
  190. package/dist/{messages-Dkg99bfr2.mjs → messages-BTQPpoM42.mjs} +31 -20
  191. package/dist/{messages-fLi0P2dP.mjs → messages-BYNcD6uR.mjs} +28 -17
  192. package/dist/{messages-BvgTQLf72.mjs → messages-BYmmMDrN2.mjs} +28 -17
  193. package/dist/{chunks/messages-CgRvtOEY.mjs → messages-BbYq1pk-.mjs} +28 -17
  194. package/dist/{chunks/messages-DUDgFEEe2.mjs → messages-BiUGXvYr2.mjs} +28 -17
  195. package/dist/{chunks/messages-DJkIeapn.mjs → messages-BiiongNz2.mjs} +28 -17
  196. package/dist/{messages-BBq0M604.mjs → messages-Bm0Feca1.mjs} +32 -21
  197. package/dist/{messages-eTourT12.mjs → messages-BmAn22OX.mjs} +28 -17
  198. package/dist/{messages-C6Y4Jv2N.mjs → messages-Bq3F2Tp_.mjs} +28 -17
  199. package/dist/{messages-DIRha_gg2.mjs → messages-BsycN_JI2.mjs} +28 -17
  200. package/dist/{chunks/messages-CljStrYi.mjs → messages-BwHs4cm1.mjs} +32 -21
  201. package/dist/{chunks/messages-Cs9XBt4T.mjs → messages-CJTy6JZt.mjs} +28 -17
  202. package/dist/{messages-BokEflKa.mjs → messages-CR_L_UtK.mjs} +28 -17
  203. package/dist/{chunks/messages-ZJ0b1C3a.mjs → messages-CSUHBs4c2.mjs} +28 -17
  204. package/dist/{messages-BcFQFcJ92.mjs → messages-CWIXvnDf2.mjs} +28 -17
  205. package/dist/{messages-DnatBKPm.mjs → messages-CcF4y-E4.mjs} +28 -17
  206. package/dist/{messages-BywbKcPC.mjs → messages-Ce6KVEbT.mjs} +29 -18
  207. package/dist/{messages-DOTJ2NvJ.mjs → messages-Ci0KqX-J.mjs} +35 -24
  208. package/dist/{messages-BtxaN-xx.mjs → messages-CjbnogEC.mjs} +28 -17
  209. package/dist/{messages-BSe3QDnQ.mjs → messages-CmB406HW.mjs} +30 -19
  210. package/dist/{messages-BVKZK-3t.mjs → messages-CqXtJTpU.mjs} +28 -17
  211. package/dist/{chunks/messages-DJA6fb_P2.mjs → messages-D0aw5_0k2.mjs} +30 -19
  212. package/dist/{chunks/messages-DPykxECP2.mjs → messages-D8FQWulF2.mjs} +28 -17
  213. package/dist/{chunks/messages-CpzO7KRA.mjs → messages-DBiVgUs2.mjs} +29 -18
  214. package/dist/{chunks/messages-B0ffBqzr.mjs → messages-DIJlIqlQ2.mjs} +28 -17
  215. package/dist/{chunks/messages-BaPZuLjN.mjs → messages-DLX_iBDJ.mjs} +28 -17
  216. package/dist/{chunks/messages-CvfKofOP.mjs → messages-DLlc9QPw.mjs} +28 -17
  217. package/dist/{chunks/messages-Czny5pPT2.mjs → messages-DMr62KiO2.mjs} +28 -17
  218. package/dist/{chunks/messages-IDEUsFhQ2.mjs → messages-DPA-mMWC2.mjs} +29 -18
  219. package/dist/{messages-BCuTVHBV.mjs → messages-DTh9a8mR.mjs} +28 -17
  220. package/dist/{chunks/messages-DT7fRpCy.mjs → messages-DY4IqlhY.mjs} +28 -17
  221. package/dist/{chunks/messages-BgVEGd4c.mjs → messages-DYTTu0O12.mjs} +28 -17
  222. package/dist/{messages-Bk984gRE2.mjs → messages-DbySKTKt2.mjs} +30 -19
  223. package/dist/{chunks/messages-ID1PHnMv.mjs → messages-Ddnj2iTG2.mjs} +28 -17
  224. package/dist/{messages-BmNaAyKS.mjs → messages-DkLU_rWm.mjs} +28 -17
  225. package/dist/{messages-C6OJvnJg2.mjs → messages-Dl3Sv6Rq2.mjs} +29 -18
  226. package/dist/{chunks/messages-C1OqT_nL.mjs → messages-Dl5Y2-Ia.mjs} +51 -40
  227. package/dist/{chunks/messages-Cqc-6rfh2.mjs → messages-DnG0ef8t2.mjs} +30 -19
  228. package/dist/{chunks/messages-BkCjgGxc.mjs → messages-DnGJD4TL.mjs} +28 -17
  229. package/dist/{messages-Bio7KYsr2.mjs → messages-Dnp9N6RU2.mjs} +28 -17
  230. package/dist/{chunks/messages-Df87zXXG.mjs → messages-Dvn35ksS.mjs} +28 -17
  231. package/dist/{messages-CHJ5SOZI.mjs → messages-Dw__BcTj.mjs} +28 -17
  232. package/dist/{chunks/messages-DC7TX-YT.mjs → messages-Dy-Y_nEI.mjs} +28 -17
  233. package/dist/{messages-DV9e1DW7.mjs → messages-E_ZuzGDt.mjs} +28 -17
  234. package/dist/{messages-DD5pW0zJ.mjs → messages-F2xRoY1w.mjs} +28 -17
  235. package/dist/{chunks/messages-BgsPQXfP.mjs → messages-Smt4GBbj.mjs} +33 -22
  236. package/dist/{messages-DJT4Bt_02.mjs → messages-aMXpHt5X2.mjs} +28 -17
  237. package/dist/{chunks/messages-B2pW6jO_.mjs → messages-aWZH50vu2.mjs} +30 -19
  238. package/dist/{chunks/messages-u2yxkNTE2.mjs → messages-dv19AkyJ.mjs} +28 -17
  239. package/dist/{messages-DJKLtW7u.mjs → messages-hWwSRF-2.mjs} +28 -17
  240. package/dist/{messages-tK67CBqn.mjs → messages-j7o5rT9s.mjs} +28 -17
  241. package/dist/{messages-DqyqEw1_.mjs → messages-nUVjeh7K.mjs} +29 -18
  242. package/dist/{chunks/messages-DSjXen8E.mjs → messages-nlhESX9t.mjs} +28 -17
  243. package/dist/{messages-C30Vz-UZ2.mjs → messages-rk-A1Wa42.mjs} +30 -19
  244. package/dist/{chunks/messages-DR09nkcZ.mjs → messages-xh2eOLvs.mjs} +28 -17
  245. package/dist/{chunks/messages-C11byid72.mjs → messages-ynAe7ewZ.mjs} +28 -17
  246. package/dist/react.mjs +3 -3
  247. package/dist/tools.mjs +3 -3
  248. package/dist/vendor.LICENSE.txt +4609 -212
  249. package/package.json +21 -3
  250. package/src/components/blocks.ts +26 -1
  251. package/src/components/constants/data-attributes.ts +0 -2
  252. package/src/components/i18n/locales/am/messages.json +28 -17
  253. package/src/components/i18n/locales/ar/messages.json +28 -17
  254. package/src/components/i18n/locales/az/messages.json +28 -17
  255. package/src/components/i18n/locales/bg/messages.json +28 -17
  256. package/src/components/i18n/locales/bn/messages.json +28 -17
  257. package/src/components/i18n/locales/bs/messages.json +30 -19
  258. package/src/components/i18n/locales/cs/messages.json +32 -21
  259. package/src/components/i18n/locales/da/messages.json +35 -24
  260. package/src/components/i18n/locales/de/messages.json +33 -22
  261. package/src/components/i18n/locales/dv/messages.json +28 -17
  262. package/src/components/i18n/locales/el/messages.json +28 -17
  263. package/src/components/i18n/locales/en/messages.json +28 -17
  264. package/src/components/i18n/locales/es/messages.json +29 -18
  265. package/src/components/i18n/locales/et/messages.json +32 -21
  266. package/src/components/i18n/locales/fa/messages.json +28 -17
  267. package/src/components/i18n/locales/fi/messages.json +28 -17
  268. package/src/components/i18n/locales/fil/messages.json +51 -40
  269. package/src/components/i18n/locales/fr/messages.json +29 -18
  270. package/src/components/i18n/locales/gu/messages.json +28 -17
  271. package/src/components/i18n/locales/he/messages.json +28 -17
  272. package/src/components/i18n/locales/hi/messages.json +28 -17
  273. package/src/components/i18n/locales/hr/messages.json +30 -19
  274. package/src/components/i18n/locales/hu/messages.json +29 -18
  275. package/src/components/i18n/locales/hy/messages.json +28 -17
  276. package/src/components/i18n/locales/id/messages.json +28 -17
  277. package/src/components/i18n/locales/it/messages.json +29 -18
  278. package/src/components/i18n/locales/ja/messages.json +28 -17
  279. package/src/components/i18n/locales/ka/messages.json +28 -17
  280. package/src/components/i18n/locales/km/messages.json +28 -17
  281. package/src/components/i18n/locales/kn/messages.json +28 -17
  282. package/src/components/i18n/locales/ko/messages.json +28 -17
  283. package/src/components/i18n/locales/ku/messages.json +28 -17
  284. package/src/components/i18n/locales/lo/messages.json +28 -17
  285. package/src/components/i18n/locales/lt/messages.json +28 -17
  286. package/src/components/i18n/locales/lv/messages.json +28 -17
  287. package/src/components/i18n/locales/mk/messages.json +28 -17
  288. package/src/components/i18n/locales/ml/messages.json +28 -17
  289. package/src/components/i18n/locales/mn/messages.json +28 -17
  290. package/src/components/i18n/locales/mr/messages.json +28 -17
  291. package/src/components/i18n/locales/ms/messages.json +30 -19
  292. package/src/components/i18n/locales/my/messages.json +28 -17
  293. package/src/components/i18n/locales/ne/messages.json +28 -17
  294. package/src/components/i18n/locales/nl/messages.json +30 -19
  295. package/src/components/i18n/locales/no/messages.json +31 -20
  296. package/src/components/i18n/locales/pa/messages.json +28 -17
  297. package/src/components/i18n/locales/pl/messages.json +29 -18
  298. package/src/components/i18n/locales/ps/messages.json +28 -17
  299. package/src/components/i18n/locales/pt/messages.json +29 -18
  300. package/src/components/i18n/locales/ro/messages.json +29 -18
  301. package/src/components/i18n/locales/ru/messages.json +28 -17
  302. package/src/components/i18n/locales/sd/messages.json +28 -17
  303. package/src/components/i18n/locales/si/messages.json +28 -17
  304. package/src/components/i18n/locales/sk/messages.json +30 -19
  305. package/src/components/i18n/locales/sl/messages.json +30 -19
  306. package/src/components/i18n/locales/sq/messages.json +29 -18
  307. package/src/components/i18n/locales/sr/messages.json +28 -17
  308. package/src/components/i18n/locales/sv/messages.json +30 -19
  309. package/src/components/i18n/locales/sw/messages.json +28 -17
  310. package/src/components/i18n/locales/ta/messages.json +28 -17
  311. package/src/components/i18n/locales/te/messages.json +28 -17
  312. package/src/components/i18n/locales/th/messages.json +28 -17
  313. package/src/components/i18n/locales/tr/messages.json +28 -17
  314. package/src/components/i18n/locales/ug/messages.json +28 -17
  315. package/src/components/i18n/locales/uk/messages.json +28 -17
  316. package/src/components/i18n/locales/ur/messages.json +28 -17
  317. package/src/components/i18n/locales/vi/messages.json +28 -17
  318. package/src/components/i18n/locales/yi/messages.json +28 -17
  319. package/src/components/i18n/locales/zh/messages.json +28 -17
  320. package/src/components/icons/index.ts +59 -47
  321. package/src/components/inline-tools/inline-tool-code.ts +399 -0
  322. package/src/components/modules/api/blocks.ts +17 -0
  323. package/src/components/modules/api/tools.ts +0 -19
  324. package/src/components/modules/blockEvents/composers/blockSelectionKeys.ts +20 -3
  325. package/src/components/modules/blockEvents/composers/keyboardNavigation.ts +5 -5
  326. package/src/components/modules/blockManager/blockManager.ts +0 -11
  327. package/src/components/modules/blockManager/event-binder.ts +1 -12
  328. package/src/components/modules/paste/handlers/html-handler.ts +13 -10
  329. package/src/components/modules/paste/handlers/index.ts +1 -0
  330. package/src/components/modules/paste/index.ts +6 -0
  331. package/src/components/modules/themeManager.ts +1 -3
  332. package/src/components/modules/toolbar/blockSettings.ts +1 -0
  333. package/src/components/modules/toolbar/inline/index.ts +3 -0
  334. package/src/components/modules/ui.ts +0 -13
  335. package/src/components/modules/uiControllers/controllers/keyboard.ts +0 -29
  336. package/src/components/modules/uiControllers/controllers/selection.ts +2 -14
  337. package/src/components/ui/toolbox.ts +1 -0
  338. package/src/components/utils/popover/popover-position.ts +2 -4
  339. package/src/markdown/index.ts +63 -0
  340. package/src/markdown/markdown-handler.ts +110 -0
  341. package/src/markdown/mdast-to-blocks.ts +418 -0
  342. package/src/markdown/phrasing-to-html.ts +60 -0
  343. package/src/markdown/types.ts +42 -0
  344. package/src/stories/EditorModes.stories.ts +0 -60
  345. package/src/styles/main.css +39 -1140
  346. package/src/tools/callout/emoji-picker/index.ts +3 -2
  347. package/src/tools/callout/index.ts +24 -0
  348. package/src/tools/code/code-keyboard.ts +142 -0
  349. package/src/tools/code/constants.ts +96 -0
  350. package/src/tools/code/dom-builder.ts +181 -0
  351. package/src/tools/code/highlight-applier.ts +229 -0
  352. package/src/tools/code/index.ts +462 -0
  353. package/src/tools/code/katex-loader.ts +50 -0
  354. package/src/tools/code/language-picker.ts +241 -0
  355. package/src/tools/code/mermaid-loader.ts +45 -0
  356. package/src/tools/code/shiki-loader.ts +135 -0
  357. package/src/tools/divider/index.ts +9 -1
  358. package/src/tools/index.ts +4 -2
  359. package/src/tools/list/block-operations.ts +3 -1
  360. package/src/tools/list/depth-validator.ts +4 -7
  361. package/src/tools/list/dom-builder.ts +5 -3
  362. package/src/tools/list/index.ts +21 -3
  363. package/src/tools/list/list-helpers.ts +9 -2
  364. package/src/tools/list/list-keyboard.ts +56 -14
  365. package/src/tools/list/list-lifecycle.ts +3 -1
  366. package/src/tools/list/marker-calculator.ts +37 -0
  367. package/src/tools/list/ordered-marker-manager.ts +4 -2
  368. package/src/tools/table/core/table-commands.ts +16 -0
  369. package/src/tools/table/core/table-controller.ts +29 -0
  370. package/src/tools/table/core/table-events.ts +17 -0
  371. package/src/tools/table/index.ts +196 -13
  372. package/src/tools/table/table-cell-blocks.ts +9 -6
  373. package/src/tools/table/table-cell-clipboard.ts +7 -2
  374. package/src/tools/table/table-cell-placement-picker.ts +133 -0
  375. package/src/tools/table/table-cell-selection.ts +174 -19
  376. package/src/tools/table/table-core.ts +321 -113
  377. package/src/tools/table/table-map.ts +279 -0
  378. package/src/tools/table/table-model.ts +901 -1
  379. package/src/tools/table/table-operations.ts +78 -44
  380. package/src/tools/table/table-resize.ts +19 -17
  381. package/src/tools/table/table-row-col-drag.ts +24 -10
  382. package/src/tools/table/types.ts +24 -2
  383. package/types/api/tools.d.ts +0 -18
  384. package/types/data-attributes.d.ts +0 -1
  385. package/types/index.d.ts +0 -16
  386. package/types/markdown.d.ts +2 -0
  387. package/types/tools/code.d.ts +13 -0
  388. package/src/tools/database/database-backend-sync.ts +0 -101
  389. package/src/tools/database/database-board-view.ts +0 -301
  390. package/src/tools/database/database-card-drag.ts +0 -306
  391. package/src/tools/database/database-card-drawer.ts +0 -546
  392. package/src/tools/database/database-column-controls.ts +0 -46
  393. package/src/tools/database/database-column-drag.ts +0 -262
  394. package/src/tools/database/database-keyboard.ts +0 -35
  395. package/src/tools/database/database-list-row-drag.ts +0 -245
  396. package/src/tools/database/database-list-view.ts +0 -333
  397. package/src/tools/database/database-model.ts +0 -246
  398. package/src/tools/database/database-property-type-popover.ts +0 -108
  399. package/src/tools/database/database-tab-bar.ts +0 -532
  400. package/src/tools/database/database-view-popover.ts +0 -109
  401. package/src/tools/database/database-view-renderer.ts +0 -25
  402. package/src/tools/database/index.ts +0 -948
  403. package/src/tools/database/types.ts +0 -144
  404. package/types/tools/database.d.ts +0 -145
  405. /package/dist/chunks/{am-CHDDMHkd.mjs → am-rVzV1W41.mjs} +0 -0
  406. /package/dist/chunks/{ar-DoqfNqut.mjs → ar-C710lkoH.mjs} +0 -0
  407. /package/dist/chunks/{az-C34P9iEa.mjs → az-BOp1pgua.mjs} +0 -0
  408. /package/dist/chunks/{bg-jroXLY8Y.mjs → bg-CL9p09ZD.mjs} +0 -0
  409. /package/dist/chunks/{bn-BRI-WqxY.mjs → bn-CNmSeyAy.mjs} +0 -0
  410. /package/dist/chunks/{bs-CCGUpNHu.mjs → bs-BRzMGqzk.mjs} +0 -0
  411. /package/dist/chunks/{cs-D5qZOGuc.mjs → cs-BYPBLmnF.mjs} +0 -0
  412. /package/dist/chunks/{da-DrJ7W37K.mjs → da-CBC_LR1c.mjs} +0 -0
  413. /package/dist/chunks/{de-BW6-kp2c.mjs → de-DxRFMoAj.mjs} +0 -0
  414. /package/dist/chunks/{el-C-Vc_Otu.mjs → el-Bk6YbySf.mjs} +0 -0
  415. /package/dist/chunks/{es-B6fI5K9i.mjs → es-DpT3FCMR.mjs} +0 -0
  416. /package/dist/chunks/{et-BhVlZ-Yz.mjs → et-DE9Dr_g9.mjs} +0 -0
  417. /package/dist/chunks/{fa-D55Ijdqa.mjs → fa-Banj1QUE.mjs} +0 -0
  418. /package/dist/chunks/{fi-jNLjhKUQ.mjs → fi-DfN3M5ER.mjs} +0 -0
  419. /package/dist/chunks/{fil-DYd0T5aX.mjs → fil-DbCsRS1d.mjs} +0 -0
  420. /package/dist/chunks/{fr-yxy5xWw_.mjs → fr-D1clKhgt.mjs} +0 -0
  421. /package/dist/chunks/{gu-CcY_LJe7.mjs → gu-1CsZyRwT.mjs} +0 -0
  422. /package/dist/chunks/{he-DL9s7wNw.mjs → he-qQdnL6eK.mjs} +0 -0
  423. /package/dist/chunks/{hi-C8eGXgw5.mjs → hi-DxM0Nff1.mjs} +0 -0
  424. /package/dist/chunks/{hr-DLpybOhU.mjs → hr-Onldyi-u.mjs} +0 -0
  425. /package/dist/chunks/{hu-BkT0gT00.mjs → hu-CAn3pBuY.mjs} +0 -0
  426. /package/dist/chunks/{hy-CVFDCp2S.mjs → hy-D43q7NxE.mjs} +0 -0
  427. /package/dist/chunks/{id-0P4W9Az0.mjs → id-Xrw5Dd0Y.mjs} +0 -0
  428. /package/dist/chunks/{it-mLY6_uoW.mjs → it-CA9ZDMSc.mjs} +0 -0
  429. /package/dist/chunks/{ja-7RkeRNWG.mjs → ja-D0J6WRFh.mjs} +0 -0
  430. /package/dist/chunks/{ka-C7Lx-Qsh.mjs → ka-BZL7xDuY.mjs} +0 -0
  431. /package/dist/chunks/{km-Q8udaraH.mjs → km-BimgQZVU.mjs} +0 -0
  432. /package/dist/chunks/{kn-BiETM-iq.mjs → kn-C2n2cPHK.mjs} +0 -0
  433. /package/dist/chunks/{ko-tiB80pF1.mjs → ko-n4Cn93D3.mjs} +0 -0
  434. /package/dist/chunks/{ku-CY-OABkR.mjs → ku-BYZCgT44.mjs} +0 -0
  435. /package/dist/chunks/{lo-CTBhEnyk.mjs → lo-DVXiAE4N.mjs} +0 -0
  436. /package/dist/chunks/{lt-BHKHEtqK.mjs → lt-B9KlQFnY.mjs} +0 -0
  437. /package/dist/chunks/{lv-DWxgtfUg.mjs → lv-BINeOdyx.mjs} +0 -0
  438. /package/dist/chunks/{mk-BjookGdx.mjs → mk-_-QrPrLN.mjs} +0 -0
  439. /package/dist/chunks/{ml-L-NnZcp9.mjs → ml-KvJSC1KT.mjs} +0 -0
  440. /package/dist/chunks/{mn-OMWi7Hl_.mjs → mn-CjFjWnRG.mjs} +0 -0
  441. /package/dist/chunks/{mr-B6JPzITo.mjs → mr-DqAZ7FRX.mjs} +0 -0
  442. /package/dist/chunks/{ms-CG3S-sPB.mjs → ms-BZcV4UG_.mjs} +0 -0
  443. /package/dist/chunks/{my-BLAmGfhT.mjs → my-97SC9jYN.mjs} +0 -0
  444. /package/dist/chunks/{native-BPcABu9z.mjs → native-CzYG0YgY.mjs} +0 -0
  445. /package/dist/chunks/{ne-D1JHLfYw.mjs → ne-Bs-M2TyF.mjs} +0 -0
  446. /package/dist/chunks/{nl-Ca7Q8FnY.mjs → nl-2ZwQilo-.mjs} +0 -0
  447. /package/dist/chunks/{no-Coxcohcz.mjs → no-fOQTpFq1.mjs} +0 -0
  448. /package/dist/chunks/{pa-CCaXqpaI.mjs → pa-DLOqkMi0.mjs} +0 -0
  449. /package/dist/chunks/{pl-Cl_fAZ84.mjs → pl-FYs9QrXU.mjs} +0 -0
  450. /package/dist/chunks/{ps-WD5qGAWy.mjs → ps-CTXe6pSe.mjs} +0 -0
  451. /package/dist/chunks/{pt-C4zvLfvq.mjs → pt-B1X4x7d1.mjs} +0 -0
  452. /package/dist/chunks/{ro-DbefHcmM.mjs → ro-Bf7S2FaR.mjs} +0 -0
  453. /package/dist/chunks/{ru-uU1J14jd.mjs → ru-B8lqnu_j.mjs} +0 -0
  454. /package/dist/chunks/{sd-DKu368Ip.mjs → sd-CHRYJm2r.mjs} +0 -0
  455. /package/dist/chunks/{si-BsJCiPkZ.mjs → si-CI0Hs6vH.mjs} +0 -0
  456. /package/dist/chunks/{sk-CD-a3SN6.mjs → sk-Bdvq1Kb_.mjs} +0 -0
  457. /package/dist/chunks/{sl-CXhrPJe_.mjs → sl-B_qiFTV5.mjs} +0 -0
  458. /package/dist/chunks/{sq-CTctCoFQ.mjs → sq-E0j1hysP.mjs} +0 -0
  459. /package/dist/chunks/{sr-BZkhBwXj.mjs → sr-VPpVNTZw.mjs} +0 -0
  460. /package/dist/chunks/{sv-NmRZb_xi.mjs → sv-gKmDSR3d.mjs} +0 -0
  461. /package/dist/chunks/{sw-Be5ik3H6.mjs → sw-zeFLiO23.mjs} +0 -0
  462. /package/dist/chunks/{ta-DsXh6neL.mjs → ta-Ci-j89hR.mjs} +0 -0
  463. /package/dist/chunks/{te-CwpCbM8M.mjs → te-qyMI0M7a.mjs} +0 -0
  464. /package/dist/chunks/{th-CcZ15OLk.mjs → th-DPxHtpdb.mjs} +0 -0
  465. /package/dist/chunks/{tr-q3bTgvhW.mjs → tr-CRV6GS-G.mjs} +0 -0
  466. /package/dist/chunks/{tw-DmW6-pCY.mjs → tw-CqxBf-1Y.mjs} +0 -0
  467. /package/dist/chunks/{ug-919EhLsL.mjs → ug-DW0YFpo5.mjs} +0 -0
  468. /package/dist/chunks/{uk-aNMEzd0Y.mjs → uk-ssteuphK.mjs} +0 -0
  469. /package/dist/chunks/{ur-BwQI77sh.mjs → ur-qhY3-jY7.mjs} +0 -0
  470. /package/dist/chunks/{vi-Dxq806-F.mjs → vi-CHriMMC8.mjs} +0 -0
  471. /package/dist/chunks/{zh-BcHuy1Ti.mjs → zh-BJktawVN.mjs} +0 -0
@@ -0,0 +1,241 @@
1
+ import type { LanguageEntry } from './constants';
2
+ import { SEARCH_LANGUAGE_KEY } from './constants';
3
+
4
+ interface I18n {
5
+ t: (key: string) => string;
6
+ }
7
+
8
+ export interface LanguagePickerOptions {
9
+ languages: LanguageEntry[];
10
+ onSelect: (id: string) => void;
11
+ i18n: I18n;
12
+ activeLanguageId: string;
13
+ }
14
+
15
+ export class LanguagePicker {
16
+ private readonly _languages: LanguageEntry[];
17
+ private readonly _onSelect: (id: string) => void;
18
+ private readonly _i18n: I18n;
19
+ private _activeLanguageId: string;
20
+
21
+ private _element: HTMLElement;
22
+ private _searchInput: HTMLInputElement;
23
+ private _list: HTMLElement;
24
+ private _backdrop: HTMLElement | null = null;
25
+ private _anchorEl: HTMLElement | null = null;
26
+
27
+ constructor(options: LanguagePickerOptions) {
28
+ this._languages = options.languages;
29
+ this._onSelect = options.onSelect;
30
+ this._i18n = options.i18n;
31
+ this._activeLanguageId = options.activeLanguageId;
32
+ this._element = this.buildElement();
33
+
34
+ const searchInput = this._element.querySelector<HTMLInputElement>('[data-blok-testid="code-language-search"]');
35
+ const list = this._element.querySelector<HTMLElement>('[data-language-list]');
36
+
37
+ if (searchInput === null || list === null) {
38
+ throw new Error('LanguagePicker: failed to build required elements');
39
+ }
40
+
41
+ this._searchInput = searchInput;
42
+ this._list = list;
43
+ }
44
+
45
+ public getElement(): HTMLElement {
46
+ return this._element;
47
+ }
48
+
49
+ public open(anchor: HTMLElement): void {
50
+ this._anchorEl = anchor;
51
+ this._searchInput.value = '';
52
+ this.renderList(this._languages);
53
+
54
+ this._element.hidden = false;
55
+ this.showBackdrop();
56
+ this.position(anchor);
57
+ this._searchInput.focus();
58
+ }
59
+
60
+ public close(): void {
61
+ this._element.hidden = true;
62
+ this.removeBackdrop();
63
+ this._anchorEl?.focus();
64
+ }
65
+
66
+ public setActiveLanguage(id: string): void {
67
+ this._activeLanguageId = id;
68
+
69
+ const buttons = Array.from(this._list.querySelectorAll<HTMLButtonElement>('button[data-language-id]'));
70
+
71
+ for (const btn of buttons) {
72
+ const isActive = btn.getAttribute('data-language-id') === id;
73
+
74
+ this.applyActiveStyle(btn, isActive);
75
+ }
76
+ }
77
+
78
+ // ─── DOM Construction ─────────────────────────────────────
79
+
80
+ private buildElement(): HTMLElement {
81
+ const el = document.createElement('div');
82
+
83
+ el.setAttribute('data-blok-testid', 'code-language-picker');
84
+ el.className = [
85
+ 'fixed z-50 w-[240px] overflow-hidden rounded-lg',
86
+ 'border border-neutral-200/70 bg-white shadow-xl',
87
+ 'theme-dark:border-neutral-700/50 theme-dark:bg-neutral-900',
88
+ ].join(' ');
89
+ el.hidden = true;
90
+
91
+ // Search wrapper
92
+ const searchWrapper = document.createElement('div');
93
+
94
+ searchWrapper.className = 'px-2 pt-2 pb-1';
95
+
96
+ const input = document.createElement('input');
97
+
98
+ input.type = 'text';
99
+ input.placeholder = this._i18n.t(SEARCH_LANGUAGE_KEY);
100
+ input.setAttribute('data-blok-testid', 'code-language-search');
101
+ input.className = [
102
+ 'w-full text-xs rounded-md py-1.5 px-2.5 outline-hidden',
103
+ 'bg-neutral-100 text-neutral-800 placeholder:text-neutral-400',
104
+ 'theme-dark:bg-neutral-800 theme-dark:text-neutral-200 theme-dark:placeholder:text-neutral-500',
105
+ 'focus:ring-2 focus:ring-neutral-300/60 theme-dark:focus:ring-neutral-600/60',
106
+ 'transition-shadow duration-150',
107
+ ].join(' ');
108
+ input.addEventListener('input', () => this.handleSearchChange(input.value));
109
+
110
+ searchWrapper.appendChild(input);
111
+ el.appendChild(searchWrapper);
112
+
113
+ // Language list
114
+ const list = document.createElement('div');
115
+
116
+ list.setAttribute('data-language-list', '');
117
+ list.className = 'max-h-[300px] overflow-y-auto px-1 pb-1';
118
+ el.appendChild(list);
119
+
120
+ // Keyboard handler
121
+ el.addEventListener('keydown', (e: KeyboardEvent) => {
122
+ if (e.key === 'Escape') {
123
+ this.close();
124
+ }
125
+ });
126
+
127
+ return el;
128
+ }
129
+
130
+ // ─── Rendering ────────────────────────────────────────────
131
+
132
+ private renderList(languages: LanguageEntry[]): void {
133
+ this._list.innerHTML = '';
134
+
135
+ for (const lang of languages) {
136
+ const btn = document.createElement('button');
137
+
138
+ btn.type = 'button';
139
+ btn.setAttribute('data-language-id', lang.id);
140
+ btn.textContent = lang.name;
141
+ btn.className = [
142
+ 'w-full text-left text-xs px-2 py-1.5 rounded cursor-pointer',
143
+ 'bg-transparent border-0',
144
+ 'text-neutral-700 theme-dark:text-neutral-300',
145
+ 'can-hover:hover:bg-neutral-100 theme-dark:can-hover:hover:bg-neutral-800',
146
+ 'transition-colors',
147
+ ].join(' ');
148
+
149
+ this.applyActiveStyle(btn, lang.id === this._activeLanguageId);
150
+
151
+ btn.addEventListener('click', () => {
152
+ this._onSelect(lang.id);
153
+ this.close();
154
+ });
155
+
156
+ this._list.appendChild(btn);
157
+ }
158
+ }
159
+
160
+ private applyActiveStyle(btn: HTMLButtonElement, active: boolean): void {
161
+ const activeClasses = ['bg-neutral-100', 'theme-dark:bg-neutral-800', 'font-medium'];
162
+
163
+ if (active) {
164
+ btn.classList.add(...activeClasses);
165
+ btn.setAttribute('data-active', 'true');
166
+ } else {
167
+ btn.classList.remove(...activeClasses);
168
+ btn.removeAttribute('data-active');
169
+ }
170
+ }
171
+
172
+ private handleSearchChange(query: string): void {
173
+ const trimmed = query.trim().toLowerCase();
174
+
175
+ if (trimmed === '') {
176
+ this.renderList(this._languages);
177
+
178
+ return;
179
+ }
180
+
181
+ const filtered = this._languages.filter(
182
+ (lang) => lang.name.toLowerCase().includes(trimmed)
183
+ );
184
+
185
+ this.renderList(filtered);
186
+ }
187
+
188
+ // ─── Backdrop ──────────────────────────────────────────────
189
+
190
+ private showBackdrop(): void {
191
+ this.removeBackdrop();
192
+
193
+ const backdrop = document.createElement('div');
194
+
195
+ backdrop.setAttribute('data-blok-language-picker-backdrop', '');
196
+ backdrop.style.position = 'fixed';
197
+ backdrop.style.inset = '0';
198
+ backdrop.style.zIndex = '50';
199
+
200
+ backdrop.addEventListener('mousedown', (e: MouseEvent) => {
201
+ if (e.target === backdrop) {
202
+ this.close();
203
+ }
204
+ });
205
+
206
+ this._element.parentElement?.insertBefore(backdrop, this._element);
207
+ backdrop.appendChild(this._element);
208
+ this._backdrop = backdrop;
209
+ }
210
+
211
+ private removeBackdrop(): void {
212
+ if (this._backdrop === null) {
213
+ return;
214
+ }
215
+
216
+ this._backdrop.parentElement?.insertBefore(this._element, this._backdrop);
217
+ this._backdrop.remove();
218
+ this._backdrop = null;
219
+ }
220
+
221
+ // ─── Positioning ──────────────────────────────────────────
222
+
223
+ private position(anchor: HTMLElement): void {
224
+ const rect = anchor.getBoundingClientRect();
225
+ const pickerRect = this._element.getBoundingClientRect();
226
+ const viewportHeight = window.innerHeight;
227
+ const viewportWidth = window.innerWidth;
228
+
229
+ const top = rect.bottom + pickerRect.height > viewportHeight
230
+ ? rect.top - pickerRect.height - 4
231
+ : rect.bottom + 4;
232
+
233
+ const idealLeft = rect.left - 8;
234
+ const left = idealLeft + pickerRect.width > viewportWidth
235
+ ? rect.right - pickerRect.width
236
+ : Math.max(0, idealLeft);
237
+
238
+ this._element.style.top = `${top}px`;
239
+ this._element.style.left = `${left}px`;
240
+ }
241
+ }
@@ -0,0 +1,45 @@
1
+ import type mermaidType from 'mermaid';
2
+
3
+ const state = {
4
+ mermaidPromise: null as Promise<typeof mermaidType> | null,
5
+ initialized: false,
6
+ };
7
+
8
+ async function loadMermaid(): Promise<typeof mermaidType> {
9
+ if (!state.mermaidPromise) {
10
+ state.mermaidPromise = import('mermaid').then((mod) => mod.default);
11
+ }
12
+
13
+ const mermaid = await state.mermaidPromise;
14
+
15
+ if (!state.initialized) {
16
+ state.initialized = true;
17
+ mermaid.initialize({ startOnLoad: false, securityLevel: 'strict' });
18
+ }
19
+
20
+ return mermaid;
21
+ }
22
+
23
+ /**
24
+ * Render a Mermaid diagram string to SVG. Lazy-loads Mermaid on first call.
25
+ */
26
+ export async function renderMermaid(code: string): Promise<string> {
27
+ try {
28
+ const mermaid = await loadMermaid();
29
+
30
+ const parseResult = await mermaid.parse(code, { suppressErrors: true });
31
+
32
+ if (parseResult === false) {
33
+ return '<span class="text-red-500 text-sm">Invalid Mermaid syntax</span>';
34
+ }
35
+
36
+ const id = `mermaid-${crypto.randomUUID()}`;
37
+ const result = await mermaid.render(id, code);
38
+
39
+ return result.svg;
40
+ } catch (error) {
41
+ const message = error instanceof Error ? error.message : 'Unknown error';
42
+
43
+ return `<span class="text-red-500 text-sm">${message}</span>`;
44
+ }
45
+ }
@@ -0,0 +1,135 @@
1
+ import type { HighlightToken, DualThemeTokens, ThemeTokens } from './highlight-applier';
2
+ import { HIGHLIGHTABLE_LANGUAGES, SHIKI_LIGHT_THEME, SHIKI_DARK_THEME } from './constants';
3
+
4
+ const LANG_IMPORTS: Record<string, () => Promise<unknown>> = {
5
+ javascript: () => import('@shikijs/langs/javascript'),
6
+ typescript: () => import('@shikijs/langs/typescript'),
7
+ python: () => import('@shikijs/langs/python'),
8
+ java: () => import('@shikijs/langs/java'),
9
+ c: () => import('@shikijs/langs/c'),
10
+ cpp: () => import('@shikijs/langs/cpp'),
11
+ csharp: () => import('@shikijs/langs/csharp'),
12
+ go: () => import('@shikijs/langs/go'),
13
+ rust: () => import('@shikijs/langs/rust'),
14
+ ruby: () => import('@shikijs/langs/ruby'),
15
+ php: () => import('@shikijs/langs/php'),
16
+ swift: () => import('@shikijs/langs/swift'),
17
+ kotlin: () => import('@shikijs/langs/kotlin'),
18
+ sql: () => import('@shikijs/langs/sql'),
19
+ html: () => import('@shikijs/langs/html'),
20
+ css: () => import('@shikijs/langs/css'),
21
+ json: () => import('@shikijs/langs/json'),
22
+ yaml: () => import('@shikijs/langs/yaml'),
23
+ markdown: () => import('@shikijs/langs/markdown'),
24
+ bash: () => import('@shikijs/langs/shellscript'),
25
+ shell: () => import('@shikijs/langs/shellscript'),
26
+ dockerfile: () => import('@shikijs/langs/dockerfile'),
27
+ xml: () => import('@shikijs/langs/xml'),
28
+ graphql: () => import('@shikijs/langs/graphql'),
29
+ r: () => import('@shikijs/langs/r'),
30
+ scala: () => import('@shikijs/langs/scala'),
31
+ dart: () => import('@shikijs/langs/dart'),
32
+ lua: () => import('@shikijs/langs/lua'),
33
+ latex: () => import('@shikijs/langs/latex'),
34
+ mermaid: () => import('@shikijs/langs/mermaid'),
35
+ };
36
+
37
+ interface ShikiTokenResult {
38
+ tokens: Array<Array<{ content: string; color?: string; offset: number }>>;
39
+ fg: string;
40
+ }
41
+
42
+ interface ShikiHighlighter {
43
+ getLoadedLanguages(): string[];
44
+ loadLanguage(lang: unknown): Promise<void>;
45
+ codeToTokens(code: string, options: { lang: string; theme: string }): ShikiTokenResult;
46
+ dispose(): void;
47
+ }
48
+
49
+ const state = {
50
+ highlighterPromise: null as Promise<ShikiHighlighter> | null,
51
+ highlighter: null as ShikiHighlighter | null,
52
+ };
53
+
54
+ export function isHighlightable(lang: string): boolean {
55
+ return HIGHLIGHTABLE_LANGUAGES.has(lang);
56
+ }
57
+
58
+ async function ensureHighlighter(): Promise<ShikiHighlighter> {
59
+ if (!state.highlighterPromise) {
60
+ state.highlighterPromise = (async (): Promise<ShikiHighlighter> => {
61
+ const { createHighlighterCore } = await import('shiki/core');
62
+ const { createJavaScriptRegexEngine } = await import('shiki/engine/javascript');
63
+
64
+ const hl: ShikiHighlighter = await createHighlighterCore({
65
+ themes: [
66
+ import('@shikijs/themes/one-light'),
67
+ import('@shikijs/themes/vitesse-dark'),
68
+ ],
69
+ langs: [],
70
+ engine: createJavaScriptRegexEngine(),
71
+ }) as ShikiHighlighter;
72
+ state.highlighter = hl;
73
+ return hl;
74
+ })();
75
+ }
76
+ return state.highlighterPromise;
77
+ }
78
+
79
+ async function ensureLanguage(highlighter: ShikiHighlighter, lang: string): Promise<void> {
80
+ const loaded: string[] = highlighter.getLoadedLanguages();
81
+ if (loaded.includes(lang)) return;
82
+
83
+ const importer = LANG_IMPORTS[lang];
84
+ if (!importer) return;
85
+
86
+ await highlighter.loadLanguage(await importer());
87
+ }
88
+
89
+ function mapTokens(result: ShikiTokenResult): ThemeTokens {
90
+ return {
91
+ tokens: result.tokens.map((line) =>
92
+ line.map((token): HighlightToken => ({
93
+ content: token.content,
94
+ color: token.color ?? result.fg,
95
+ offset: token.offset,
96
+ }))
97
+ ),
98
+ fg: result.fg,
99
+ };
100
+ }
101
+
102
+ export async function tokenizeCode(code: string, lang: string): Promise<DualThemeTokens | null> {
103
+ if (!isHighlightable(lang)) return null;
104
+
105
+ try {
106
+ const highlighter = await ensureHighlighter();
107
+ await ensureLanguage(highlighter, lang);
108
+
109
+ const lightResult: ShikiTokenResult = highlighter.codeToTokens(code, {
110
+ lang,
111
+ theme: SHIKI_LIGHT_THEME,
112
+ });
113
+ const darkResult: ShikiTokenResult = highlighter.codeToTokens(code, {
114
+ lang,
115
+ theme: SHIKI_DARK_THEME,
116
+ });
117
+
118
+ return {
119
+ light: mapTokens(lightResult),
120
+ dark: mapTokens(darkResult),
121
+ };
122
+ } catch {
123
+ state.highlighterPromise = null;
124
+ state.highlighter = null;
125
+ return null;
126
+ }
127
+ }
128
+
129
+ export function disposeHighlighter(): void {
130
+ if (state.highlighter) {
131
+ state.highlighter.dispose();
132
+ state.highlighter = null;
133
+ }
134
+ state.highlighterPromise = null;
135
+ }
@@ -2,6 +2,7 @@ import type {
2
2
  BlockTool,
3
3
  BlockToolConstructorOptions,
4
4
  PasteConfig,
5
+ PasteEvent,
5
6
  SanitizerConfig,
6
7
  ToolboxConfig,
7
8
  } from '../../../types';
@@ -78,16 +79,23 @@ export class DividerTool implements BlockTool {
78
79
  }
79
80
 
80
81
  /**
81
- * Paste three-or-more hyphens to create a divider
82
+ * Paste three-or-more hyphens or an <hr> element to create a divider
82
83
  */
83
84
  public static get pasteConfig(): PasteConfig {
84
85
  return {
86
+ tags: ['HR'],
85
87
  patterns: {
86
88
  divider: /^-{3,}$/,
87
89
  },
88
90
  };
89
91
  }
90
92
 
93
+ /**
94
+ * Handle paste events — divider is contentless so no data extraction needed.
95
+ * Must exist for the tool registry to process pasteConfig (hasOnPasteHandler check).
96
+ */
97
+ public onPaste(_event: PasteEvent): void {}
98
+
91
99
  /**
92
100
  * Nothing to sanitize — no HTML content
93
101
  */
@@ -26,9 +26,9 @@ export { ListItem as List } from './list';
26
26
  export { Table } from './table';
27
27
  export { ToggleItem as Toggle } from './toggle';
28
28
  export { CalloutTool as Callout } from './callout';
29
- export { DatabaseTool as Database } from './database';
30
29
  export { DividerTool as Divider } from './divider';
31
30
  export { Quote } from './quote';
31
+ export { CodeTool as Code } from './code';
32
32
 
33
33
  // Inline tools
34
34
  export { BoldInlineTool as Bold } from '../components/inline-tools/inline-tool-bold';
@@ -38,6 +38,7 @@ export { ConvertInlineTool as Convert } from '../components/inline-tools/inline-
38
38
  export { MarkerInlineTool as Marker } from '../components/inline-tools/inline-tool-marker';
39
39
  export { UnderlineInlineTool as Underline } from '../components/inline-tools/inline-tool-underline';
40
40
  export { StrikethroughInlineTool as Strikethrough } from '../components/inline-tools/inline-tool-strikethrough';
41
+ export { CodeInlineTool as InlineCode } from '../components/inline-tools/inline-tool-code';
41
42
 
42
43
  // Default tools configuration for convenience
43
44
  // Note: inlineToolbar defaults to true, so it doesn't need to be specified
@@ -48,9 +49,9 @@ export const defaultBlockTools = {
48
49
  table: {},
49
50
  toggle: {},
50
51
  callout: {},
51
- database: {},
52
52
  divider: {},
53
53
  quote: {},
54
+ code: { inlineToolbar: false },
54
55
  } as const;
55
56
 
56
57
  export const defaultInlineTools = {
@@ -60,4 +61,5 @@ export const defaultInlineTools = {
60
61
  marker: {},
61
62
  underline: {},
62
63
  strikethrough: {},
64
+ inlineCode: {},
63
65
  } as const;
@@ -19,6 +19,7 @@ export interface RerenderContext {
19
19
  placeholder: string;
20
20
  itemColor: string | undefined;
21
21
  itemSize: string | undefined;
22
+ markerDepth?: number;
22
23
  element: HTMLElement | null;
23
24
  setupItemPlaceholder: (element: HTMLElement) => void;
24
25
  onCheckboxChange: (checked: boolean, content: HTMLElement | null) => void;
@@ -29,7 +30,7 @@ export interface RerenderContext {
29
30
  * Rerender the list item
30
31
  */
31
32
  export const rerenderListItem = (context: RerenderContext): HTMLElement | null => {
32
- const { data, readOnly, placeholder, itemColor, itemSize, element, setupItemPlaceholder, onCheckboxChange, keydownHandler } = context;
33
+ const { data, readOnly, placeholder, itemColor, itemSize, markerDepth, element, setupItemPlaceholder, onCheckboxChange, keydownHandler } = context;
33
34
 
34
35
  if (!element) return null;
35
36
 
@@ -42,6 +43,7 @@ export const rerenderListItem = (context: RerenderContext): HTMLElement | null =
42
43
  placeholder,
43
44
  itemColor,
44
45
  itemSize,
46
+ markerDepth,
45
47
  keydownHandler,
46
48
  });
47
49
 
@@ -34,24 +34,21 @@ export class ListDepthValidator {
34
34
  * Calculate the maximum allowed depth at a given block index.
35
35
  *
36
36
  * Rules:
37
- * 1. First item (index 0) must be at depth 0
37
+ * 1. First-in-group items (index 0 or previous block is not a list) are uncapped
38
38
  * 2. For other items: maxDepth = previousListItem.depth + 1
39
- * 3. If previous block is not a list item, maxDepth = 0
40
39
  *
41
40
  * @param blockIndex - The index of the block
42
- * @returns The maximum allowed depth (0 or more)
41
+ * @returns The maximum allowed depth (0 or more, or Infinity for first-in-group)
43
42
  */
44
43
  getMaxAllowedDepth(blockIndex: number): number {
45
- // First item must be at depth 0
46
44
  if (blockIndex === 0) {
47
- return 0;
45
+ return 1;
48
46
  }
49
47
 
50
48
  const previousBlock = this.blocks.getBlockByIndex(blockIndex - 1);
51
49
 
52
- // If previous block doesn't exist or isn't a list item, max depth is 0
53
50
  if (!previousBlock || previousBlock.name !== TOOL_NAME) {
54
- return 0;
51
+ return 1;
55
52
  }
56
53
 
57
54
  // Max depth is previous item's depth + 1
@@ -69,6 +69,8 @@ export interface DOMBuilderContext {
69
69
  itemSize?: string;
70
70
  /** Optional keydown event handler */
71
71
  keydownHandler?: ((event: KeyboardEvent) => void) | null;
72
+ /** Visual depth for marker display (overrides data.depth for marker only) */
73
+ markerDepth?: number;
72
74
  }
73
75
 
74
76
  /**
@@ -149,7 +151,7 @@ export const buildWrapper = (context: DOMBuilderContext): HTMLElement => {
149
151
  * @returns The list item element containing marker and content
150
152
  */
151
153
  export const buildStandardContent = (context: DOMBuilderContext): HTMLElement => {
152
- const { data, itemColor, itemSize, placeholder } = context;
154
+ const { data, itemColor, itemSize, placeholder, markerDepth } = context;
153
155
 
154
156
  const item = document.createElement('div');
155
157
  item.setAttribute('role', 'listitem');
@@ -170,8 +172,8 @@ export const buildStandardContent = (context: DOMBuilderContext): HTMLElement =>
170
172
  item.style.marginLeft = `${depth * indent}px`;
171
173
  }
172
174
 
173
- // Create marker element
174
- const marker = createMarker(data.style, depth);
175
+ // Create marker element (use visual depth for marker display when provided)
176
+ const marker = createMarker(data.style, markerDepth ?? depth);
175
177
  marker.setAttribute('data-list-marker', 'true');
176
178
  marker.setAttribute('data-blok-mutation-free', 'true');
177
179
  item.appendChild(marker);
@@ -124,12 +124,19 @@ export class ListItem implements BlockTool {
124
124
  }
125
125
 
126
126
  public render(): HTMLElement {
127
+ const blockIndex = this.blockId
128
+ ? this.api.blocks.getBlockIndex(this.blockId) ?? this.api.blocks.getCurrentBlockIndex()
129
+ : this.api.blocks.getCurrentBlockIndex();
130
+ const depth = this._data.depth ?? 0;
131
+ const markerDepth = this.markerCalculator.getVisualDepth(blockIndex, depth);
132
+
127
133
  this._element = renderListItem({
128
134
  data: this._data,
129
135
  readOnly: this.readOnly,
130
136
  placeholder: this.placeholder,
131
137
  itemColor: this.itemColor,
132
138
  itemSize: this.itemSize,
139
+ markerDepth,
133
140
  setupItemPlaceholder: this.setupItemPlaceholder.bind(this),
134
141
  onCheckboxChange: (checked, content) => {
135
142
  this._data.checked = checked;
@@ -226,13 +233,18 @@ export class ListItem implements BlockTool {
226
233
  return;
227
234
  }
228
235
 
236
+ const blockIndex = this.blockId
237
+ ? this.api.blocks.getBlockIndex(this.blockId) ?? this.api.blocks.getCurrentBlockIndex()
238
+ : this.api.blocks.getCurrentBlockIndex();
239
+ const visualDepth = this.markerCalculator.getVisualDepth(blockIndex, newDepth);
240
+
229
241
  if (style === 'ordered') {
230
242
  const siblingIndex = getSiblingIndex(this.blockId, newDepth, this._data.style, this.api.blocks, this.markerCalculator);
231
243
  const markerText = getOrderedMarkerText(siblingIndex, newDepth, this._data, this.blockId, this.api.blocks, this.markerCalculator);
232
244
 
233
245
  marker.textContent = markerText;
234
246
  } else {
235
- const bulletChar = getBulletCharacter(newDepth, this.markerCalculator);
247
+ const bulletChar = getBulletCharacter(visualDepth, this.markerCalculator);
236
248
 
237
249
  marker.textContent = bulletChar;
238
250
  }
@@ -295,7 +307,7 @@ export class ListItem implements BlockTool {
295
307
  getDepth: this.getDepth.bind(this),
296
308
  };
297
309
 
298
- await handleEnter(context);
310
+ await handleEnter(context, this.depthValidator);
299
311
  }
300
312
 
301
313
  private async handleBackspace(event: KeyboardEvent): Promise<void> {
@@ -337,7 +349,7 @@ export class ListItem implements BlockTool {
337
349
  getDepth: this.getDepth.bind(this),
338
350
  };
339
351
 
340
- await handleOutdent(context);
352
+ await handleOutdent(context, this.depthValidator);
341
353
  }
342
354
 
343
355
  private syncContentFromDOM(): void {
@@ -375,12 +387,18 @@ export class ListItem implements BlockTool {
375
387
  }
376
388
 
377
389
  private rerender(): void {
390
+ const blockIndex = this.blockId
391
+ ? this.api.blocks.getBlockIndex(this.blockId) ?? this.api.blocks.getCurrentBlockIndex()
392
+ : this.api.blocks.getCurrentBlockIndex();
393
+ const depth = this._data.depth ?? 0;
394
+
378
395
  const newElement = rerenderListItem({
379
396
  data: this._data,
380
397
  readOnly: this.readOnly,
381
398
  placeholder: this.placeholder,
382
399
  itemColor: this.itemColor,
383
400
  itemSize: this.itemSize,
401
+ markerDepth: this.markerCalculator.getVisualDepth(blockIndex, depth),
384
402
  element: this._element,
385
403
  setupItemPlaceholder: this.setupItemPlaceholder.bind(this),
386
404
  onCheckboxChange: (checked, content) => {
@@ -166,7 +166,13 @@ export const getOrderedMarkerText = (
166
166
  ): string => {
167
167
  const startValue = getListStartValue(index, depth, blockId, data, blocks, markerCalculator);
168
168
  const actualNumber = startValue + index;
169
- return markerCalculator.formatNumber(actualNumber, depth);
169
+
170
+ const blockIndex = blockId
171
+ ? blocks.getBlockIndex(blockId) ?? blocks.getCurrentBlockIndex()
172
+ : blocks.getCurrentBlockIndex();
173
+ const visualDepth = markerCalculator.getVisualDepth(blockIndex, depth);
174
+
175
+ return markerCalculator.formatNumber(actualNumber, visualDepth);
170
176
  }
171
177
 
172
178
  /**
@@ -216,7 +222,8 @@ export const updateBlockMarker = (
216
222
 
217
223
  const startValue = markerCalculator.getGroupStartValue(blockIndex, blockDepth, siblingIndex, blockStyle);
218
224
  const actualNumber = startValue + siblingIndex;
219
- const markerText = markerCalculator.formatNumber(actualNumber, blockDepth);
225
+ const visualDepth = markerCalculator.getVisualDepth(blockIndex, blockDepth);
226
+ const markerText = markerCalculator.formatNumber(actualNumber, visualDepth);
220
227
 
221
228
  marker.textContent = markerText;
222
229
  }