@jackuait/blok 0.4.1-beta.1 → 0.4.1-beta.11

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 (402) hide show
  1. package/README.md +138 -17
  2. package/codemod/README.md +45 -7
  3. package/codemod/migrate-editorjs-to-blok.js +960 -92
  4. package/codemod/test.js +780 -77
  5. package/dist/blok.mjs +5 -2
  6. package/dist/chunks/blok-oNSQ3HA6.mjs +13217 -0
  7. package/dist/chunks/i18next-CugVlwWp.mjs +1292 -0
  8. package/dist/chunks/i18next-loader-BdNRw4n4.mjs +43 -0
  9. package/dist/{index-CEXLTV6f.mjs → chunks/index-DHgXmfki.mjs} +2 -2
  10. package/dist/chunks/inline-tool-convert-CRqgjRim.mjs +1989 -0
  11. package/dist/chunks/messages-0tDXLuyH.mjs +48 -0
  12. package/dist/chunks/messages-2_xedlYw.mjs +48 -0
  13. package/dist/chunks/messages-AHESHJm_.mjs +48 -0
  14. package/dist/chunks/messages-B5hdXZwA.mjs +48 -0
  15. package/dist/chunks/messages-B5jGUnOy.mjs +48 -0
  16. package/dist/chunks/messages-B5puUm7R.mjs +48 -0
  17. package/dist/chunks/messages-B66ZSDCJ.mjs +48 -0
  18. package/dist/chunks/messages-B9Oba7sq.mjs +48 -0
  19. package/dist/chunks/messages-BA0rcTCY.mjs +48 -0
  20. package/dist/chunks/messages-BBJgd5jG.mjs +48 -0
  21. package/dist/chunks/messages-BPqWKx5Z.mjs +48 -0
  22. package/dist/chunks/messages-Bdv-IkfG.mjs +48 -0
  23. package/dist/chunks/messages-BeUhMpsr.mjs +48 -0
  24. package/dist/chunks/messages-Bf6Y3_GI.mjs +48 -0
  25. package/dist/chunks/messages-BiExzWJv.mjs +48 -0
  26. package/dist/chunks/messages-BlpqL8vG.mjs +48 -0
  27. package/dist/chunks/messages-BmKCChWZ.mjs +48 -0
  28. package/dist/chunks/messages-Bn253WWC.mjs +48 -0
  29. package/dist/chunks/messages-BrJHUxQL.mjs +48 -0
  30. package/dist/chunks/messages-C5b7hr_E.mjs +48 -0
  31. package/dist/chunks/messages-C7I_AVH2.mjs +48 -0
  32. package/dist/chunks/messages-CJoBtXU6.mjs +48 -0
  33. package/dist/chunks/messages-CQj2JU2j.mjs +48 -0
  34. package/dist/chunks/messages-CUZ1x1QD.mjs +48 -0
  35. package/dist/chunks/messages-CUy1vn-b.mjs +48 -0
  36. package/dist/chunks/messages-CVeWVKsV.mjs +48 -0
  37. package/dist/chunks/messages-CXHd9SUK.mjs +48 -0
  38. package/dist/chunks/messages-CbMyJSzS.mjs +48 -0
  39. package/dist/chunks/messages-CbhuIWRJ.mjs +48 -0
  40. package/dist/chunks/messages-CeCjVKMW.mjs +48 -0
  41. package/dist/chunks/messages-Cj-t1bdy.mjs +48 -0
  42. package/dist/chunks/messages-CkFT2gle.mjs +48 -0
  43. package/dist/chunks/messages-Cm9aLHeX.mjs +48 -0
  44. package/dist/chunks/messages-CnvW8Slp.mjs +48 -0
  45. package/dist/chunks/messages-Cr-RJ7YB.mjs +48 -0
  46. package/dist/chunks/messages-CrsJ1TEJ.mjs +48 -0
  47. package/dist/chunks/messages-Cu08aLS3.mjs +48 -0
  48. package/dist/chunks/messages-CvaqJFN-.mjs +48 -0
  49. package/dist/chunks/messages-CyDU5lz9.mjs +48 -0
  50. package/dist/chunks/messages-CySyfkMU.mjs +48 -0
  51. package/dist/chunks/messages-Cyi2AMmz.mjs +48 -0
  52. package/dist/chunks/messages-D00OjS2n.mjs +48 -0
  53. package/dist/chunks/messages-DDLgIPDF.mjs +48 -0
  54. package/dist/chunks/messages-DMQIHGRj.mjs +48 -0
  55. package/dist/chunks/messages-DOlC_Tty.mjs +48 -0
  56. package/dist/chunks/messages-DV6shA9b.mjs +48 -0
  57. package/dist/chunks/messages-DY94ykcE.mjs +48 -0
  58. package/dist/chunks/messages-DbVquYKN.mjs +48 -0
  59. package/dist/chunks/messages-DcKOuncK.mjs +48 -0
  60. package/dist/chunks/messages-Dg92dXZ5.mjs +48 -0
  61. package/dist/chunks/messages-DnbbyJT3.mjs +48 -0
  62. package/dist/chunks/messages-DteYq0rv.mjs +48 -0
  63. package/dist/chunks/messages-GC2PhgV3.mjs +48 -0
  64. package/dist/chunks/messages-JGsXAReJ.mjs +48 -0
  65. package/dist/chunks/messages-JZUhXTuV.mjs +48 -0
  66. package/dist/chunks/messages-LvFKBBPa.mjs +48 -0
  67. package/dist/chunks/messages-NP1myMGI.mjs +48 -0
  68. package/dist/chunks/messages-Q4kc_ZtL.mjs +48 -0
  69. package/dist/chunks/messages-RvMHb2Ht.mjs +48 -0
  70. package/dist/chunks/messages-ftMcCEuO.mjs +48 -0
  71. package/dist/chunks/messages-o24dK6CU.mjs +48 -0
  72. package/dist/chunks/messages-pA5TvcAj.mjs +48 -0
  73. package/dist/chunks/messages-rRSHQDCX.mjs +48 -0
  74. package/dist/chunks/messages-srxrv8Yh.mjs +48 -0
  75. package/dist/chunks/messages-wdqp4610.mjs +48 -0
  76. package/dist/chunks/messages-zS1AXZ0y.mjs +48 -0
  77. package/dist/chunks/messages-zSzDzXej.mjs +48 -0
  78. package/dist/full.mjs +50 -0
  79. package/dist/locales.mjs +228 -0
  80. package/dist/messages-0tDXLuyH.mjs +48 -0
  81. package/dist/messages-2_xedlYw.mjs +48 -0
  82. package/dist/messages-AHESHJm_.mjs +48 -0
  83. package/dist/messages-B5hdXZwA.mjs +48 -0
  84. package/dist/messages-B5jGUnOy.mjs +48 -0
  85. package/dist/messages-B5puUm7R.mjs +48 -0
  86. package/dist/messages-B66ZSDCJ.mjs +48 -0
  87. package/dist/messages-B9Oba7sq.mjs +48 -0
  88. package/dist/messages-BA0rcTCY.mjs +48 -0
  89. package/dist/messages-BBJgd5jG.mjs +48 -0
  90. package/dist/messages-BPqWKx5Z.mjs +48 -0
  91. package/dist/messages-Bdv-IkfG.mjs +48 -0
  92. package/dist/messages-BeUhMpsr.mjs +48 -0
  93. package/dist/messages-Bf6Y3_GI.mjs +48 -0
  94. package/dist/messages-BiExzWJv.mjs +48 -0
  95. package/dist/messages-BlpqL8vG.mjs +48 -0
  96. package/dist/messages-BmKCChWZ.mjs +48 -0
  97. package/dist/messages-Bn253WWC.mjs +48 -0
  98. package/dist/messages-BrJHUxQL.mjs +48 -0
  99. package/dist/messages-C5b7hr_E.mjs +48 -0
  100. package/dist/messages-C7I_AVH2.mjs +48 -0
  101. package/dist/messages-CJoBtXU6.mjs +48 -0
  102. package/dist/messages-CQj2JU2j.mjs +48 -0
  103. package/dist/messages-CUZ1x1QD.mjs +48 -0
  104. package/dist/messages-CUy1vn-b.mjs +48 -0
  105. package/dist/messages-CVeWVKsV.mjs +48 -0
  106. package/dist/messages-CXHd9SUK.mjs +48 -0
  107. package/dist/messages-CbMyJSzS.mjs +48 -0
  108. package/dist/messages-CbhuIWRJ.mjs +48 -0
  109. package/dist/messages-CeCjVKMW.mjs +48 -0
  110. package/dist/messages-Cj-t1bdy.mjs +48 -0
  111. package/dist/messages-CkFT2gle.mjs +48 -0
  112. package/dist/messages-Cm9aLHeX.mjs +48 -0
  113. package/dist/messages-CnvW8Slp.mjs +48 -0
  114. package/dist/messages-Cr-RJ7YB.mjs +48 -0
  115. package/dist/messages-CrsJ1TEJ.mjs +48 -0
  116. package/dist/messages-Cu08aLS3.mjs +48 -0
  117. package/dist/messages-CvaqJFN-.mjs +48 -0
  118. package/dist/messages-CyDU5lz9.mjs +48 -0
  119. package/dist/messages-CySyfkMU.mjs +48 -0
  120. package/dist/messages-Cyi2AMmz.mjs +48 -0
  121. package/dist/messages-D00OjS2n.mjs +48 -0
  122. package/dist/messages-DDLgIPDF.mjs +48 -0
  123. package/dist/messages-DMQIHGRj.mjs +48 -0
  124. package/dist/messages-DOlC_Tty.mjs +48 -0
  125. package/dist/messages-DV6shA9b.mjs +48 -0
  126. package/dist/messages-DY94ykcE.mjs +48 -0
  127. package/dist/messages-DbVquYKN.mjs +48 -0
  128. package/dist/messages-DcKOuncK.mjs +48 -0
  129. package/dist/messages-Dg92dXZ5.mjs +48 -0
  130. package/dist/messages-DnbbyJT3.mjs +48 -0
  131. package/dist/messages-DteYq0rv.mjs +48 -0
  132. package/dist/messages-GC2PhgV3.mjs +48 -0
  133. package/dist/messages-JGsXAReJ.mjs +48 -0
  134. package/dist/messages-JZUhXTuV.mjs +48 -0
  135. package/dist/messages-LvFKBBPa.mjs +48 -0
  136. package/dist/messages-NP1myMGI.mjs +48 -0
  137. package/dist/messages-Q4kc_ZtL.mjs +48 -0
  138. package/dist/messages-RvMHb2Ht.mjs +48 -0
  139. package/dist/messages-ftMcCEuO.mjs +48 -0
  140. package/dist/messages-o24dK6CU.mjs +48 -0
  141. package/dist/messages-pA5TvcAj.mjs +48 -0
  142. package/dist/messages-rRSHQDCX.mjs +48 -0
  143. package/dist/messages-srxrv8Yh.mjs +48 -0
  144. package/dist/messages-wdqp4610.mjs +48 -0
  145. package/dist/messages-zS1AXZ0y.mjs +48 -0
  146. package/dist/messages-zSzDzXej.mjs +48 -0
  147. package/dist/tools.mjs +3117 -0
  148. package/dist/vendor.LICENSE.txt +26 -225
  149. package/package.json +63 -24
  150. package/src/blok.ts +267 -0
  151. package/src/components/__module.ts +139 -0
  152. package/src/components/block/api.ts +155 -0
  153. package/src/components/block/index.ts +1428 -0
  154. package/src/components/block-tunes/block-tune-delete.ts +51 -0
  155. package/src/components/blocks.ts +352 -0
  156. package/src/components/constants/data-attributes.ts +344 -0
  157. package/src/components/constants.ts +76 -0
  158. package/src/components/core.ts +392 -0
  159. package/src/components/dom.ts +773 -0
  160. package/src/components/domIterator.ts +189 -0
  161. package/src/components/errors/critical.ts +5 -0
  162. package/src/components/events/BlockChanged.ts +16 -0
  163. package/src/components/events/BlockHovered.ts +21 -0
  164. package/src/components/events/BlockSettingsClosed.ts +12 -0
  165. package/src/components/events/BlockSettingsOpened.ts +12 -0
  166. package/src/components/events/BlokMobileLayoutToggled.ts +15 -0
  167. package/src/components/events/FakeCursorAboutToBeToggled.ts +17 -0
  168. package/src/components/events/FakeCursorHaveBeenSet.ts +17 -0
  169. package/src/components/events/HistoryStateChanged.ts +19 -0
  170. package/src/components/events/RedactorDomChanged.ts +14 -0
  171. package/src/components/events/index.ts +46 -0
  172. package/src/components/flipper.ts +497 -0
  173. package/src/components/i18n/i18next-loader.ts +84 -0
  174. package/src/components/i18n/lightweight-i18n.ts +86 -0
  175. package/src/components/i18n/locales/TRANSLATION_GUIDELINES.md +113 -0
  176. package/src/components/i18n/locales/am/messages.json +45 -0
  177. package/src/components/i18n/locales/ar/messages.json +45 -0
  178. package/src/components/i18n/locales/az/messages.json +45 -0
  179. package/src/components/i18n/locales/bg/messages.json +45 -0
  180. package/src/components/i18n/locales/bn/messages.json +45 -0
  181. package/src/components/i18n/locales/bs/messages.json +45 -0
  182. package/src/components/i18n/locales/cs/messages.json +45 -0
  183. package/src/components/i18n/locales/da/messages.json +45 -0
  184. package/src/components/i18n/locales/de/messages.json +45 -0
  185. package/src/components/i18n/locales/dv/messages.json +45 -0
  186. package/src/components/i18n/locales/el/messages.json +45 -0
  187. package/src/components/i18n/locales/en/messages.json +45 -0
  188. package/src/components/i18n/locales/es/messages.json +45 -0
  189. package/src/components/i18n/locales/et/messages.json +45 -0
  190. package/src/components/i18n/locales/fa/messages.json +45 -0
  191. package/src/components/i18n/locales/fi/messages.json +45 -0
  192. package/src/components/i18n/locales/fil/messages.json +45 -0
  193. package/src/components/i18n/locales/fr/messages.json +45 -0
  194. package/src/components/i18n/locales/gu/messages.json +45 -0
  195. package/src/components/i18n/locales/he/messages.json +45 -0
  196. package/src/components/i18n/locales/hi/messages.json +45 -0
  197. package/src/components/i18n/locales/hr/messages.json +45 -0
  198. package/src/components/i18n/locales/hu/messages.json +45 -0
  199. package/src/components/i18n/locales/hy/messages.json +45 -0
  200. package/src/components/i18n/locales/id/messages.json +45 -0
  201. package/src/components/i18n/locales/index.ts +231 -0
  202. package/src/components/i18n/locales/it/messages.json +45 -0
  203. package/src/components/i18n/locales/ja/messages.json +45 -0
  204. package/src/components/i18n/locales/ka/messages.json +45 -0
  205. package/src/components/i18n/locales/km/messages.json +45 -0
  206. package/src/components/i18n/locales/kn/messages.json +45 -0
  207. package/src/components/i18n/locales/ko/messages.json +45 -0
  208. package/src/components/i18n/locales/ku/messages.json +45 -0
  209. package/src/components/i18n/locales/lo/messages.json +45 -0
  210. package/src/components/i18n/locales/lt/messages.json +45 -0
  211. package/src/components/i18n/locales/lv/messages.json +45 -0
  212. package/src/components/i18n/locales/mk/messages.json +45 -0
  213. package/src/components/i18n/locales/ml/messages.json +45 -0
  214. package/src/components/i18n/locales/mn/messages.json +45 -0
  215. package/src/components/i18n/locales/mr/messages.json +45 -0
  216. package/src/components/i18n/locales/ms/messages.json +45 -0
  217. package/src/components/i18n/locales/my/messages.json +45 -0
  218. package/src/components/i18n/locales/ne/messages.json +45 -0
  219. package/src/components/i18n/locales/nl/messages.json +45 -0
  220. package/src/components/i18n/locales/no/messages.json +45 -0
  221. package/src/components/i18n/locales/pa/messages.json +45 -0
  222. package/src/components/i18n/locales/pl/messages.json +45 -0
  223. package/src/components/i18n/locales/ps/messages.json +45 -0
  224. package/src/components/i18n/locales/pt/messages.json +45 -0
  225. package/src/components/i18n/locales/ro/messages.json +45 -0
  226. package/src/components/i18n/locales/ru/messages.json +45 -0
  227. package/src/components/i18n/locales/sd/messages.json +45 -0
  228. package/src/components/i18n/locales/si/messages.json +45 -0
  229. package/src/components/i18n/locales/sk/messages.json +45 -0
  230. package/src/components/i18n/locales/sl/messages.json +45 -0
  231. package/src/components/i18n/locales/sq/messages.json +45 -0
  232. package/src/components/i18n/locales/sr/messages.json +45 -0
  233. package/src/components/i18n/locales/sv/messages.json +45 -0
  234. package/src/components/i18n/locales/sw/messages.json +45 -0
  235. package/src/components/i18n/locales/ta/messages.json +45 -0
  236. package/src/components/i18n/locales/te/messages.json +45 -0
  237. package/src/components/i18n/locales/th/messages.json +45 -0
  238. package/src/components/i18n/locales/tr/messages.json +45 -0
  239. package/src/components/i18n/locales/ug/messages.json +45 -0
  240. package/src/components/i18n/locales/uk/messages.json +45 -0
  241. package/src/components/i18n/locales/ur/messages.json +45 -0
  242. package/src/components/i18n/locales/vi/messages.json +45 -0
  243. package/src/components/i18n/locales/yi/messages.json +45 -0
  244. package/src/components/i18n/locales/zh/messages.json +45 -0
  245. package/src/components/icons/index.ts +242 -0
  246. package/src/components/inline-tools/inline-tool-bold.ts +2213 -0
  247. package/src/components/inline-tools/inline-tool-convert.ts +141 -0
  248. package/src/components/inline-tools/inline-tool-italic.ts +500 -0
  249. package/src/components/inline-tools/inline-tool-link.ts +539 -0
  250. package/src/components/modules/api/blocks.ts +377 -0
  251. package/src/components/modules/api/caret.ts +125 -0
  252. package/src/components/modules/api/events.ts +51 -0
  253. package/src/components/modules/api/history.ts +73 -0
  254. package/src/components/modules/api/i18n.ts +35 -0
  255. package/src/components/modules/api/index.ts +39 -0
  256. package/src/components/modules/api/inlineToolbar.ts +33 -0
  257. package/src/components/modules/api/listeners.ts +56 -0
  258. package/src/components/modules/api/notifier.ts +46 -0
  259. package/src/components/modules/api/readonly.ts +39 -0
  260. package/src/components/modules/api/sanitizer.ts +30 -0
  261. package/src/components/modules/api/saver.ts +52 -0
  262. package/src/components/modules/api/selection.ts +48 -0
  263. package/src/components/modules/api/styles.ts +72 -0
  264. package/src/components/modules/api/toolbar.ts +79 -0
  265. package/src/components/modules/api/tools.ts +16 -0
  266. package/src/components/modules/api/tooltip.ts +67 -0
  267. package/src/components/modules/api/ui.ts +36 -0
  268. package/src/components/modules/blockEvents.ts +1591 -0
  269. package/src/components/modules/blockManager.ts +1356 -0
  270. package/src/components/modules/blockSelection.ts +708 -0
  271. package/src/components/modules/caret.ts +853 -0
  272. package/src/components/modules/crossBlockSelection.ts +329 -0
  273. package/src/components/modules/dragManager.ts +1204 -0
  274. package/src/components/modules/history.ts +1098 -0
  275. package/src/components/modules/i18n.ts +332 -0
  276. package/src/components/modules/index.ts +139 -0
  277. package/src/components/modules/modificationsObserver.ts +147 -0
  278. package/src/components/modules/paste.ts +1092 -0
  279. package/src/components/modules/readonly.ts +136 -0
  280. package/src/components/modules/rectangleSelection.ts +711 -0
  281. package/src/components/modules/renderer.ts +155 -0
  282. package/src/components/modules/saver.ts +283 -0
  283. package/src/components/modules/toolbar/blockSettings.ts +781 -0
  284. package/src/components/modules/toolbar/index.ts +1315 -0
  285. package/src/components/modules/toolbar/inline.ts +956 -0
  286. package/src/components/modules/tools.ts +625 -0
  287. package/src/components/modules/ui.ts +1283 -0
  288. package/src/components/polyfills.ts +113 -0
  289. package/src/components/selection.ts +1179 -0
  290. package/src/components/tools/base.ts +301 -0
  291. package/src/components/tools/block.ts +339 -0
  292. package/src/components/tools/collection.ts +67 -0
  293. package/src/components/tools/factory.ts +138 -0
  294. package/src/components/tools/inline.ts +71 -0
  295. package/src/components/tools/tune.ts +33 -0
  296. package/src/components/ui/toolbox.ts +601 -0
  297. package/src/components/utils/announcer.ts +205 -0
  298. package/src/components/utils/api.ts +20 -0
  299. package/src/components/utils/bem.ts +26 -0
  300. package/src/components/utils/blocks.ts +284 -0
  301. package/src/components/utils/caret.ts +1067 -0
  302. package/src/components/utils/data-model-transform.ts +382 -0
  303. package/src/components/utils/events.ts +117 -0
  304. package/src/components/utils/keyboard.ts +60 -0
  305. package/src/components/utils/listeners.ts +296 -0
  306. package/src/components/utils/mutations.ts +39 -0
  307. package/src/components/utils/notifier/draw.ts +190 -0
  308. package/src/components/utils/notifier/index.ts +66 -0
  309. package/src/components/utils/notifier/types.ts +1 -0
  310. package/src/components/utils/notifier.ts +77 -0
  311. package/src/components/utils/placeholder.ts +140 -0
  312. package/src/components/utils/popover/components/hint/hint.const.ts +10 -0
  313. package/src/components/utils/popover/components/hint/hint.ts +46 -0
  314. package/src/components/utils/popover/components/hint/index.ts +6 -0
  315. package/src/components/utils/popover/components/popover-header/index.ts +2 -0
  316. package/src/components/utils/popover/components/popover-header/popover-header.const.ts +8 -0
  317. package/src/components/utils/popover/components/popover-header/popover-header.ts +80 -0
  318. package/src/components/utils/popover/components/popover-header/popover-header.types.ts +14 -0
  319. package/src/components/utils/popover/components/popover-item/index.ts +13 -0
  320. package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.const.ts +50 -0
  321. package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.ts +680 -0
  322. package/src/components/utils/popover/components/popover-item/popover-item-html/popover-item-html.const.ts +14 -0
  323. package/src/components/utils/popover/components/popover-item/popover-item-html/popover-item-html.ts +136 -0
  324. package/src/components/utils/popover/components/popover-item/popover-item-separator/popover-item-separator.const.ts +20 -0
  325. package/src/components/utils/popover/components/popover-item/popover-item-separator/popover-item-separator.ts +117 -0
  326. package/src/components/utils/popover/components/popover-item/popover-item.ts +186 -0
  327. package/src/components/utils/popover/components/search-input/index.ts +2 -0
  328. package/src/components/utils/popover/components/search-input/search-input.const.ts +8 -0
  329. package/src/components/utils/popover/components/search-input/search-input.ts +178 -0
  330. package/src/components/utils/popover/components/search-input/search-input.types.ts +59 -0
  331. package/src/components/utils/popover/index.ts +13 -0
  332. package/src/components/utils/popover/popover-abstract.ts +457 -0
  333. package/src/components/utils/popover/popover-desktop.ts +676 -0
  334. package/src/components/utils/popover/popover-inline.ts +338 -0
  335. package/src/components/utils/popover/popover-mobile.ts +201 -0
  336. package/src/components/utils/popover/popover.const.ts +81 -0
  337. package/src/components/utils/popover/utils/popover-states-history.ts +72 -0
  338. package/src/components/utils/promise-queue.ts +43 -0
  339. package/src/components/utils/sanitizer.ts +537 -0
  340. package/src/components/utils/scroll-locker.ts +87 -0
  341. package/src/components/utils/shortcut.ts +231 -0
  342. package/src/components/utils/shortcuts.ts +113 -0
  343. package/src/components/utils/tools.ts +110 -0
  344. package/src/components/utils/tooltip.ts +591 -0
  345. package/src/components/utils/tw.ts +241 -0
  346. package/src/components/utils.ts +1081 -0
  347. package/src/env.d.ts +13 -0
  348. package/src/full.ts +69 -0
  349. package/src/locales.ts +51 -0
  350. package/src/stories/Block.stories.ts +498 -0
  351. package/src/stories/EditorModes.stories.ts +505 -0
  352. package/src/stories/Header.stories.ts +137 -0
  353. package/src/stories/InlineToolbar.stories.ts +498 -0
  354. package/src/stories/List.stories.ts +259 -0
  355. package/src/stories/Notifier.stories.ts +340 -0
  356. package/src/stories/Paragraph.stories.ts +112 -0
  357. package/src/stories/Placeholder.stories.ts +319 -0
  358. package/src/stories/Popover.stories.ts +844 -0
  359. package/src/stories/Selection.stories.ts +250 -0
  360. package/src/stories/StubBlock.stories.ts +156 -0
  361. package/src/stories/Toolbar.stories.ts +223 -0
  362. package/src/stories/Toolbox.stories.ts +166 -0
  363. package/src/stories/Tooltip.stories.ts +198 -0
  364. package/src/stories/helpers.ts +463 -0
  365. package/src/styles/main.css +123 -0
  366. package/src/tools/header/index.ts +646 -0
  367. package/src/tools/index.ts +45 -0
  368. package/src/tools/list/index.ts +1819 -0
  369. package/src/tools/paragraph/index.ts +412 -0
  370. package/src/tools/stub/index.ts +107 -0
  371. package/src/types-internal/blok-modules.d.ts +87 -0
  372. package/src/types-internal/html-janitor.d.ts +28 -0
  373. package/src/types-internal/module-config.d.ts +11 -0
  374. package/src/variants/all-locales.ts +155 -0
  375. package/src/variants/blok-maximum.ts +20 -0
  376. package/src/variants/blok-minimum.ts +243 -0
  377. package/types/api/blocks.d.ts +9 -1
  378. package/types/api/history.d.ts +7 -0
  379. package/types/api/i18n.d.ts +22 -3
  380. package/types/api/selection.d.ts +6 -0
  381. package/types/api/styles.d.ts +23 -10
  382. package/types/configs/blok-config.d.ts +29 -0
  383. package/types/configs/i18n-config.d.ts +52 -2
  384. package/types/configs/i18n-dictionary.d.ts +16 -90
  385. package/types/data-attributes.d.ts +170 -0
  386. package/types/data-formats/output-data.d.ts +15 -0
  387. package/types/full.d.ts +80 -0
  388. package/types/index.d.ts +29 -13
  389. package/types/locales.d.ts +59 -0
  390. package/types/tools/adapters/inline-tool-adapter.d.ts +10 -0
  391. package/types/tools/block-tool.d.ts +9 -0
  392. package/types/tools/header.d.ts +18 -0
  393. package/types/tools/index.d.ts +1 -0
  394. package/types/tools/list.d.ts +91 -0
  395. package/types/tools/paragraph.d.ts +71 -0
  396. package/types/tools/tool-settings.d.ts +92 -6
  397. package/types/tools/tool.d.ts +6 -0
  398. package/types/tools-entry.d.ts +49 -0
  399. package/types/utils/popover/popover-item.d.ts +18 -5
  400. package/types/utils/popover/popover.d.ts +7 -0
  401. package/dist/blok-C8XbyLHh.mjs +0 -25795
  402. package/dist/blok.umd.js +0 -181
@@ -0,0 +1,344 @@
1
+ /**
2
+ * Centralized data attributes used across the Blok editor.
3
+ * This is the single source of truth for all data-blok-* attributes.
4
+ *
5
+ * Exported as Blok.DATA_ATTR for users.
6
+ *
7
+ * Naming convention:
8
+ * - Remove 'data-blok-' prefix and convert to camelCase
9
+ * - Global attributes: hidden, disabled, focused
10
+ * - Component prefixed: popover, popoverItem, toolbar, etc.
11
+ */
12
+ export const DATA_ATTR = {
13
+ // ============================================
14
+ // Core Element Identifiers
15
+ // ============================================
16
+
17
+ /** Interface type identifier (blok, inline-toolbar, tooltip) */
18
+ interface: 'data-blok-interface',
19
+ /** Block element wrapper */
20
+ element: 'data-blok-element',
21
+ /** Block element content wrapper */
22
+ elementContent: 'data-blok-element-content',
23
+ /** Editor wrapper container */
24
+ editor: 'data-blok-editor',
25
+ /** Redactor zone */
26
+ redactor: 'data-blok-redactor',
27
+
28
+ // ============================================
29
+ // Block Identifiers
30
+ // ============================================
31
+
32
+ /** Block unique identifier */
33
+ id: 'data-blok-id',
34
+ /** Block component/tool type */
35
+ component: 'data-blok-component',
36
+ /** Tool type attribute */
37
+ tool: 'data-blok-tool',
38
+ /** Block nesting depth */
39
+ depth: 'data-blok-depth',
40
+
41
+ // ============================================
42
+ // Global States
43
+ // ============================================
44
+
45
+ /** Element is hidden from view */
46
+ hidden: 'data-blok-hidden',
47
+ /** Element is disabled and non-interactive */
48
+ disabled: 'data-blok-disabled',
49
+ /** Element is focused via keyboard navigation */
50
+ focused: 'data-blok-focused',
51
+ /** Block is selected */
52
+ selected: 'data-blok-selected',
53
+ /** Block is stretched */
54
+ stretched: 'data-blok-stretched',
55
+ /** Editor or element is empty */
56
+ empty: 'data-blok-empty',
57
+
58
+ // ============================================
59
+ // Editor Modes
60
+ // ============================================
61
+
62
+ /** Narrow mode state */
63
+ narrow: 'data-blok-narrow',
64
+ /** Right-to-left mode */
65
+ rtl: 'data-blok-rtl',
66
+
67
+ // ============================================
68
+ // Drag and Drop
69
+ // ============================================
70
+
71
+ /** Block is being dragged */
72
+ dragging: 'data-blok-dragging',
73
+ /** Multiple blocks being dragged */
74
+ draggingMulti: 'data-blok-dragging-multi',
75
+ /** Block is being duplicated (Alt+drag) */
76
+ duplicating: 'data-blok-duplicating',
77
+ /** Drag handle element */
78
+ dragHandle: 'data-blok-drag-handle',
79
+
80
+ // ============================================
81
+ // Toolbar
82
+ // ============================================
83
+
84
+ /** Toolbar element */
85
+ toolbar: 'data-blok-toolbar',
86
+ /** Settings toggler button */
87
+ settingsToggler: 'data-blok-settings-toggler',
88
+ /** Toolbox is open */
89
+ toolboxOpened: 'data-blok-toolbox-opened',
90
+ /** Block settings is open */
91
+ blockSettingsOpened: 'data-blok-block-settings-opened',
92
+ /** Element is opened (generic) */
93
+ opened: 'data-blok-opened',
94
+
95
+ // ============================================
96
+ // Popover Container
97
+ // ============================================
98
+
99
+ /** Root popover element */
100
+ popover: 'data-blok-popover',
101
+ /** Popover container wrapper */
102
+ popoverContainer: 'data-blok-popover-container',
103
+ /** Popover items list */
104
+ popoverItems: 'data-blok-popover-items',
105
+ /** Popover overlay element */
106
+ popoverOverlay: 'data-blok-popover-overlay',
107
+ /** Popover custom content area */
108
+ popoverCustomContent: 'data-blok-popover-custom-content',
109
+ /** Popover custom class */
110
+ popoverCustomClass: 'data-blok-popover-custom-class',
111
+ /** Inline popover variant */
112
+ popoverInline: 'data-blok-popover-inline',
113
+ /** Popover is open */
114
+ popoverOpened: 'data-blok-popover-opened',
115
+ /** Popover opens upward */
116
+ popoverOpenTop: 'data-blok-popover-open-top',
117
+ /** Popover opens leftward */
118
+ popoverOpenLeft: 'data-blok-popover-open-left',
119
+
120
+ // ============================================
121
+ // Popover Nesting
122
+ // ============================================
123
+
124
+ /** Nested popover indicator */
125
+ nested: 'data-blok-nested',
126
+ /** Nesting level value */
127
+ nestedLevel: 'data-blok-nested-level',
128
+
129
+ // ============================================
130
+ // Popover Header
131
+ // ============================================
132
+
133
+ /** Header container */
134
+ popoverHeader: 'data-blok-popover-header',
135
+ /** Header text element */
136
+ popoverHeaderText: 'data-blok-popover-header-text',
137
+ /** Back button in nested popover */
138
+ popoverHeaderBackButton: 'data-blok-popover-header-back-button',
139
+
140
+ // ============================================
141
+ // Popover Items
142
+ // ============================================
143
+
144
+ /** Item container */
145
+ popoverItem: 'data-blok-popover-item',
146
+ /** Item icon wrapper */
147
+ popoverItemIcon: 'data-blok-popover-item-icon',
148
+ /** Chevron icon for nested items */
149
+ popoverItemIconChevronRight: 'data-blok-popover-item-icon-chevron-right',
150
+ /** Item title text */
151
+ popoverItemTitle: 'data-blok-popover-item-title',
152
+ /** Item secondary title */
153
+ popoverItemSecondaryTitle: 'data-blok-popover-item-secondary-title',
154
+ /** Item is active/selected */
155
+ popoverItemActive: 'data-blok-popover-item-active',
156
+ /** Confirmation state */
157
+ popoverItemConfirmation: 'data-blok-popover-item-confirmation',
158
+ /** Disable hover styling */
159
+ popoverItemNoHover: 'data-blok-popover-item-no-hover',
160
+ /** Disable focus handling */
161
+ popoverItemNoFocus: 'data-blok-popover-item-no-focus',
162
+ /** Wobble animation */
163
+ popoverItemWobble: 'data-blok-popover-item-wobble',
164
+ /** Separator item */
165
+ popoverItemSeparator: 'data-blok-popover-item-separator',
166
+ /** Separator line element */
167
+ popoverItemSeparatorLine: 'data-blok-popover-item-separator-line',
168
+ /** HTML-based item */
169
+ popoverItemHtml: 'data-blok-popover-item-html',
170
+ /** Item has child menu */
171
+ hasChildren: 'data-blok-has-children',
172
+ /** Item name identifier */
173
+ itemName: 'data-blok-item-name',
174
+ /** No search results shown */
175
+ nothingFoundDisplayed: 'data-blok-nothing-found-displayed',
176
+
177
+ // ============================================
178
+ // Overlay / Selection
179
+ // ============================================
180
+
181
+ /** Selection overlay */
182
+ overlay: 'data-blok-overlay',
183
+ /** Overlay container */
184
+ overlayContainer: 'data-blok-overlay-container',
185
+ /** Selection rectangle */
186
+ overlayRectangle: 'data-blok-overlay-rectangle',
187
+ /** Overlay is hidden */
188
+ overlayHidden: 'data-blok-overlay-hidden',
189
+ /** Fake cursor indicator */
190
+ fakeCursor: 'data-blok-fake-cursor',
191
+ /** Fake background for selection */
192
+ fakeBackground: 'data-blok-fake-background',
193
+
194
+ // ============================================
195
+ // Scroll
196
+ // ============================================
197
+
198
+ /** Auto-scroll zone (top/bottom) */
199
+ scrollZone: 'data-blok-scroll-zone',
200
+ /** Scroll is locked */
201
+ scrollLocked: 'data-blok-scroll-locked',
202
+ /** Hard scroll lock */
203
+ scrollLockedHard: 'data-blok-scroll-locked-hard',
204
+
205
+ // ============================================
206
+ // Caret
207
+ // ============================================
208
+
209
+ /** Shadow caret element */
210
+ shadowCaret: 'data-blok-shadow-caret',
211
+
212
+ // ============================================
213
+ // Placeholders
214
+ // ============================================
215
+
216
+ /** Placeholder text */
217
+ placeholder: 'data-blok-placeholder',
218
+ /** Active placeholder text */
219
+ placeholderActive: 'data-blok-placeholder-active',
220
+
221
+ // ============================================
222
+ // Mutation Tracking
223
+ // ============================================
224
+
225
+ /** Element excluded from mutation tracking */
226
+ mutationFree: 'data-blok-mutation-free',
227
+
228
+ // ============================================
229
+ // Navigation
230
+ // ============================================
231
+
232
+ /** Block has navigation focus */
233
+ navigationFocused: 'data-blok-navigation-focused',
234
+ /** Flipper navigation target */
235
+ flipperNavigationTarget: 'data-blok-flipper-navigation-target',
236
+
237
+ // ============================================
238
+ // Inline Toolbar
239
+ // ============================================
240
+
241
+ /** Inline toolbar enabled on external element */
242
+ inlineToolbar: 'data-blok-inline-toolbar',
243
+
244
+ // ============================================
245
+ // Link Tool
246
+ // ============================================
247
+
248
+ /** Link tool is active */
249
+ linkToolActive: 'data-blok-link-tool-active',
250
+ /** Link tool unlink mode */
251
+ linkToolUnlink: 'data-blok-link-tool-unlink',
252
+ /** Link tool input is opened */
253
+ linkToolInputOpened: 'data-blok-link-tool-input-opened',
254
+
255
+ // ============================================
256
+ // Bold Tool
257
+ // ============================================
258
+
259
+ /** Bold collapsed length tracking */
260
+ boldCollapsedLength: 'data-blok-bold-collapsed-length',
261
+ /** Bold collapsed active state */
262
+ boldCollapsedActive: 'data-blok-bold-collapsed-active',
263
+ /** Bold previous length tracking */
264
+ boldPrevLength: 'data-blok-bold-prev-length',
265
+ /** Bold leading whitespace */
266
+ boldLeadingWs: 'data-blok-bold-leading-ws',
267
+ /** Bold marker */
268
+ boldMarker: 'data-blok-bold-marker',
269
+
270
+ // ============================================
271
+ // Tooltip
272
+ // ============================================
273
+
274
+ /** Tooltip is shown */
275
+ shown: 'data-blok-shown',
276
+ /** Tooltip placement */
277
+ placement: 'data-blok-placement',
278
+
279
+ // ============================================
280
+ // Notifier
281
+ // ============================================
282
+
283
+ /** Bounce in animation */
284
+ bounceIn: 'data-blok-bounce-in',
285
+
286
+ // ============================================
287
+ // Announcer (Accessibility)
288
+ // ============================================
289
+
290
+ /** Live region announcer */
291
+ announcer: 'data-blok-announcer',
292
+
293
+ // ============================================
294
+ // Stub Block
295
+ // ============================================
296
+
297
+ /** Stub block element */
298
+ stub: 'data-blok-stub',
299
+ /** Stub info section */
300
+ stubInfo: 'data-blok-stub-info',
301
+ /** Stub title */
302
+ stubTitle: 'data-blok-stub-title',
303
+ /** Stub subtitle */
304
+ stubSubtitle: 'data-blok-stub-subtitle',
305
+
306
+ // ============================================
307
+ // Testing
308
+ // ============================================
309
+
310
+ /** Test identifier (for E2E tests) */
311
+ testid: 'data-blok-testid',
312
+ /** Force hover state (for tests/storybook) */
313
+ forceHover: 'data-blok-force-hover',
314
+ } as const;
315
+
316
+ /**
317
+ * Type for DATA_ATTR keys
318
+ */
319
+ export type DataAttrKey = keyof typeof DATA_ATTR;
320
+
321
+ /**
322
+ * Type for DATA_ATTR values
323
+ */
324
+ export type DataAttrValue = (typeof DATA_ATTR)[DataAttrKey];
325
+
326
+ /**
327
+ * Helper function to create a CSS selector from an attribute
328
+ *
329
+ * @param attr - The data attribute name from DATA_ATTR
330
+ * @param value - Optional value for the attribute (defaults to presence selector)
331
+ * @returns CSS selector string
332
+ *
333
+ * @example
334
+ * createSelector(DATA_ATTR.element) // '[data-blok-element]'
335
+ * createSelector(DATA_ATTR.selected, true) // '[data-blok-selected="true"]'
336
+ * createSelector(DATA_ATTR.tool, 'paragraph') // '[data-blok-tool="paragraph"]'
337
+ */
338
+ export const createSelector = (attr: DataAttrValue, value?: string | boolean): string => {
339
+ if (value === undefined) {
340
+ return `[${attr}]`;
341
+ }
342
+
343
+ return `[${attr}="${value}"]`;
344
+ };
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Re-export DATA_ATTR from the single source of truth
3
+ */
4
+ export { DATA_ATTR, createSelector } from './constants/data-attributes';
5
+ export type { DataAttrKey, DataAttrValue } from './constants/data-attributes';
6
+
7
+ /**
8
+ * Debounce timeout for selection change event
9
+ * {@link modules/ui.ts}
10
+ */
11
+ export const selectionChangeDebounceTimeout = 180;
12
+
13
+ /**
14
+ * Timeout for batching of DOM changes used by the ModificationObserver
15
+ * {@link modules/modificationsObserver.ts}
16
+ */
17
+ export const modificationsObserverBatchTimeout = 400;
18
+
19
+ /**
20
+ * Value for the data-blok-interface attribute on blok wrapper elements
21
+ * Used as a single source of truth for blok identification
22
+ */
23
+ export const BLOK_INTERFACE_VALUE = 'blok';
24
+
25
+ /**
26
+ * Value for the data-blok-interface attribute on inline toolbar elements
27
+ * Used as a single source of truth for inline toolbar identification
28
+ */
29
+ export const INLINE_TOOLBAR_INTERFACE_VALUE = 'inline-toolbar';
30
+
31
+ /**
32
+ * Value for the data-blok-interface attribute on tooltip elements
33
+ * Used as a single source of truth for tooltip identification
34
+ */
35
+ export const TOOLTIP_INTERFACE_VALUE = 'tooltip';
36
+
37
+ /**
38
+ * CSS selector for the main blok wrapper element
39
+ * Used to identify the blok container in the DOM
40
+ */
41
+ export const BLOK_INTERFACE_SELECTOR = '[data-blok-interface=blok]';
42
+
43
+ /**
44
+ * CSS selector for tooltip elements
45
+ * Used to identify tooltip elements in the DOM
46
+ */
47
+ export const TOOLTIP_INTERFACE_SELECTOR = '[data-blok-interface="tooltip"]';
48
+
49
+ /**
50
+ * CSS selector for inline toolbar elements
51
+ * Used to identify inline toolbar elements in the DOM
52
+ */
53
+ export const INLINE_TOOLBAR_INTERFACE_SELECTOR = '[data-blok-interface=inline-toolbar]';
54
+
55
+ /**
56
+ * Platform-specific modifier key for keyboard shortcuts
57
+ * Returns 'Meta' on macOS (darwin) and 'Control' on other platforms
58
+ * Used in tests for keyboard shortcut interactions
59
+ */
60
+ export const MODIFIER_KEY = (() => {
61
+ // Check if we're in a Node.js environment
62
+ if (typeof process !== 'undefined' && process.platform) {
63
+ return process.platform === 'darwin' ? 'Meta' : 'Control';
64
+ }
65
+
66
+ // Browser environment: detect macOS using navigator
67
+ if (typeof navigator !== 'undefined') {
68
+ const userAgent = navigator.userAgent.toLowerCase();
69
+ const isMacOS = userAgent.includes('mac');
70
+
71
+ return isMacOS ? 'Meta' : 'Control';
72
+ }
73
+
74
+ // Fallback to Control if platform detection fails
75
+ return 'Control';
76
+ })();