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

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 (403) 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-BU6NwVkN.mjs +13239 -0
  7. package/dist/chunks/i18next-CugVlwWp.mjs +1292 -0
  8. package/dist/chunks/i18next-loader-D8GzSwio.mjs +43 -0
  9. package/dist/{index-CEXLTV6f.mjs → chunks/index-C5e_WLFg.mjs} +2 -2
  10. package/dist/chunks/inline-tool-convert-CLUxkCe_.mjs +1990 -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 +3126 -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 +142 -0
  248. package/src/components/inline-tools/inline-tool-italic.ts +500 -0
  249. package/src/components/inline-tools/inline-tool-link.ts +540 -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 +782 -0
  284. package/src/components/modules/toolbar/index.ts +1296 -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 +610 -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 +197 -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 +682 -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 +759 -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 +126 -0
  366. package/src/tools/header/index.ts +647 -0
  367. package/src/tools/index.ts +45 -0
  368. package/src/tools/list/index.ts +1826 -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/configs/sanitizer-config.d.ts +25 -1
  386. package/types/data-attributes.d.ts +170 -0
  387. package/types/data-formats/output-data.d.ts +15 -0
  388. package/types/full.d.ts +80 -0
  389. package/types/index.d.ts +30 -13
  390. package/types/locales.d.ts +59 -0
  391. package/types/tools/adapters/inline-tool-adapter.d.ts +10 -0
  392. package/types/tools/block-tool.d.ts +11 -2
  393. package/types/tools/header.d.ts +18 -0
  394. package/types/tools/index.d.ts +1 -0
  395. package/types/tools/list.d.ts +91 -0
  396. package/types/tools/paragraph.d.ts +71 -0
  397. package/types/tools/tool-settings.d.ts +99 -6
  398. package/types/tools/tool.d.ts +6 -0
  399. package/types/tools-entry.d.ts +49 -0
  400. package/types/utils/popover/popover-item.d.ts +24 -5
  401. package/types/utils/popover/popover.d.ts +13 -0
  402. package/dist/blok-C8XbyLHh.mjs +0 -25795
  403. package/dist/blok.umd.js +0 -181
@@ -11,6 +11,22 @@ export interface HeaderData extends BlockToolData {
11
11
  level: number;
12
12
  }
13
13
 
14
+ /**
15
+ * Level-specific overrides for customization
16
+ */
17
+ export interface HeaderLevelConfig {
18
+ /** Custom HTML tag to use (e.g., 'div', 'p', 'span') */
19
+ tag?: string;
20
+ /** Custom display name for this level */
21
+ name?: string;
22
+ /** Custom font size (e.g., '3em', '24px') */
23
+ size?: string;
24
+ /** Custom margin top (e.g., '20px', '1rem') */
25
+ marginTop?: string;
26
+ /** Custom margin bottom (e.g., '10px', '0.5rem') */
27
+ marginBottom?: string;
28
+ }
29
+
14
30
  /**
15
31
  * Header Tool's configuration
16
32
  */
@@ -21,6 +37,8 @@ export interface HeaderConfig {
21
37
  levels?: number[];
22
38
  /** Default level */
23
39
  defaultLevel?: number;
40
+ /** Level-specific overrides keyed by level number (1-6) */
41
+ levelOverrides?: Record<number, HeaderLevelConfig>;
24
42
  }
25
43
 
26
44
  /**
@@ -12,6 +12,7 @@ export * from './paste-events';
12
12
  export * from './hook-events';
13
13
  export * from './menu-config';
14
14
  export * from './header';
15
+ export * from './list';
15
16
 
16
17
  export type Tool = BlockTool | InlineTool | BlockTune;
17
18
  export type ToolConstructable = BlockToolConstructable | InlineToolConstructable | BlockTuneConstructable;
@@ -0,0 +1,91 @@
1
+ import { BlockTool, BlockToolConstructable, BlockToolConstructorOptions, BlockToolData } from './block-tool';
2
+ import { MenuConfig } from './menu-config';
3
+
4
+ /**
5
+ * List styles enum
6
+ */
7
+ export type ListStyle = 'unordered' | 'ordered' | 'checklist';
8
+
9
+ /**
10
+ * List Tool's input and output data format
11
+ */
12
+ export interface ListData extends BlockToolData {
13
+ /** Item text content (can include HTML) */
14
+ text: string;
15
+ /** List style: unordered, ordered, or checklist */
16
+ style: ListStyle;
17
+ /** Checked state for checklist items */
18
+ checked?: boolean;
19
+ /** Starting number for ordered lists (only applies to root items) */
20
+ start?: number;
21
+ /** Nesting depth level (0 = root, 1 = first indent, etc.) */
22
+ depth?: number;
23
+ }
24
+
25
+ /**
26
+ * List Tool's configuration
27
+ */
28
+ export interface ListConfig {
29
+ /** Default list style */
30
+ defaultStyle?: ListStyle;
31
+ /**
32
+ * Available list styles for the settings menu.
33
+ * When specified, only these styles will be available in the block settings dropdown.
34
+ */
35
+ styles?: ListStyle[];
36
+ /**
37
+ * List styles to show in the toolbox.
38
+ * When specified, only these list types will appear as separate entries in the toolbox.
39
+ * If not specified, all list types (unordered, ordered, checklist) will be shown.
40
+ */
41
+ toolboxStyles?: ListStyle[];
42
+ /**
43
+ * Custom color for list items.
44
+ * Accepts any valid CSS color value (hex, rgb, hsl, named colors, etc.)
45
+ */
46
+ itemColor?: string;
47
+ /**
48
+ * Custom font size for list items.
49
+ * Accepts any valid CSS font-size value (px, rem, em, etc.)
50
+ */
51
+ itemSize?: string;
52
+ }
53
+
54
+ /**
55
+ * List Tool for the Blok Editor
56
+ * Provides Ordered, Unordered, and Checklist Blocks
57
+ */
58
+ export interface List extends BlockTool {
59
+ /**
60
+ * Return Tool's view
61
+ */
62
+ render(): HTMLElement;
63
+
64
+ /**
65
+ * Returns list block tunes config
66
+ */
67
+ renderSettings(): MenuConfig;
68
+
69
+ /**
70
+ * Method that specified how to merge two List blocks.
71
+ * Called by Editor by backspace at the beginning of the Block
72
+ */
73
+ merge(data: ListData): void;
74
+
75
+ /**
76
+ * Validate List block data
77
+ */
78
+ validate(blockData: ListData): boolean;
79
+
80
+ /**
81
+ * Extract Tool's data from the view
82
+ */
83
+ save(): ListData;
84
+ }
85
+
86
+ /**
87
+ * List Tool constructor
88
+ */
89
+ export interface ListConstructable extends BlockToolConstructable {
90
+ new(config: BlockToolConstructorOptions<ListData, ListConfig>): List;
91
+ }
@@ -0,0 +1,71 @@
1
+ import { BlockTool, BlockToolConstructable, BlockToolConstructorOptions, BlockToolData } from './block-tool';
2
+
3
+ /**
4
+ * Paragraph Tool's input and output data format
5
+ */
6
+ export interface ParagraphData extends BlockToolData {
7
+ /** Paragraph's content. Can include HTML tags: <a><b><i> */
8
+ text: string;
9
+ }
10
+
11
+ /**
12
+ * Style overrides for paragraph customization
13
+ */
14
+ export interface ParagraphStyleConfig {
15
+ /** Custom font size (e.g., '16px', '1rem') */
16
+ size?: string;
17
+ /** Custom line height (e.g., '1.6', '24px') */
18
+ lineHeight?: string;
19
+ /** Custom margin top (e.g., '10px', '0.5rem') */
20
+ marginTop?: string;
21
+ /** Custom margin bottom (e.g., '10px', '0.5rem') */
22
+ marginBottom?: string;
23
+ }
24
+
25
+ /**
26
+ * Paragraph Tool's configuration
27
+ */
28
+ export interface ParagraphConfig {
29
+ /** Placeholder for the empty paragraph */
30
+ placeholder?: string;
31
+ /** Whether or not to keep blank paragraphs when saving editor data */
32
+ preserveBlank?: boolean;
33
+ /** Style overrides for paragraph customization */
34
+ styles?: ParagraphStyleConfig;
35
+ /** Custom icon SVG string for the toolbox */
36
+ icon?: string;
37
+ }
38
+
39
+ /**
40
+ * Paragraph Tool for the Blok Editor
41
+ * Provides Text Block
42
+ */
43
+ export interface Paragraph extends BlockTool {
44
+ /**
45
+ * Return Tool's view
46
+ */
47
+ render(): HTMLDivElement;
48
+
49
+ /**
50
+ * Method that specified how to merge two Paragraph blocks.
51
+ * Called by Editor by backspace at the beginning of the Block
52
+ */
53
+ merge(data: ParagraphData): void;
54
+
55
+ /**
56
+ * Validate Paragraph block data
57
+ */
58
+ validate(savedData: ParagraphData): boolean;
59
+
60
+ /**
61
+ * Extract Tool's data from the view
62
+ */
63
+ save(toolsContent: HTMLDivElement): ParagraphData;
64
+ }
65
+
66
+ /**
67
+ * Paragraph Tool constructor
68
+ */
69
+ export interface ParagraphConstructable extends BlockToolConstructable {
70
+ new(config: BlockToolConstructorOptions<ParagraphData, ParagraphConfig>): Paragraph;
71
+ }
@@ -1,6 +1,12 @@
1
1
  import { ToolConfig } from './tool-config';
2
2
  import { ToolConstructable, BlockToolData, MenuConfig, MenuConfigItem } from './index';
3
3
 
4
+ /**
5
+ * Permissive type for tool class - accepts any constructor.
6
+ * Runtime validation ensures the tool has required methods.
7
+ */
8
+ export type ToolClass = new (...args: any[]) => any;
9
+
4
10
  /**
5
11
  * Tool may specify its toolbox configuration
6
12
  * It may include several entries as well
@@ -12,10 +18,17 @@ export type ToolboxConfig = ToolboxConfigEntry | ToolboxConfigEntry[];
12
18
  */
13
19
  export interface ToolboxConfigEntry {
14
20
  /**
15
- * Tool title for Toolbox
21
+ * Tool title for Toolbox (human-readable fallback)
16
22
  */
17
23
  title?: string;
18
24
 
25
+ /**
26
+ * Translation key for the title (e.g., 'text', 'heading', 'bulletedList').
27
+ * Used to look up translations in the toolNames.* namespace.
28
+ * If provided, the translated value is used; otherwise falls back to title.
29
+ */
30
+ titleKey?: string;
31
+
19
32
  /**
20
33
  * HTML string with an icon for Toolbox
21
34
  */
@@ -24,7 +37,28 @@ export interface ToolboxConfigEntry {
24
37
  /**
25
38
  * May contain overrides for tool default data
26
39
  */
27
- data?: BlockToolData
40
+ data?: BlockToolData;
41
+
42
+ /**
43
+ * Unique name for the toolbox entry, used for data-blok-item-name attribute.
44
+ * If not provided, falls back to the tool name.
45
+ * Useful when a tool has multiple toolbox entries (e.g., list with ordered/unordered/checklist variants).
46
+ */
47
+ name?: string;
48
+
49
+ /**
50
+ * Additional search terms for the tool (e.g., ['h1', 'title', 'header']).
51
+ * Users can search by these aliases in addition to the displayed title.
52
+ * Terms are matched case-insensitively.
53
+ */
54
+ searchTerms?: string[];
55
+
56
+ /**
57
+ * Shortcut hint to display in the toolbox (e.g., '#', '##', '-', '1.', '[]').
58
+ * This is displayed as a secondary label next to the tool title.
59
+ * Unlike tool-level shortcuts, these are per-entry hints for tools with multiple variants.
60
+ */
61
+ shortcut?: string;
28
62
  }
29
63
 
30
64
  /**
@@ -35,9 +69,9 @@ export interface ToolboxConfigEntry {
35
69
  export interface ExternalToolSettings<Config extends object = any> {
36
70
 
37
71
  /**
38
- * Tool's class
72
+ * Tool's class - accepts any constructor, validated at runtime
39
73
  */
40
- class: ToolConstructable;
74
+ class: ToolConstructable | ToolClass;
41
75
 
42
76
  /**
43
77
  * User configuration object that will be passed to the Tool's constructor
@@ -66,6 +100,13 @@ export interface ExternalToolSettings<Config extends object = any> {
66
100
  * It will be hidden from Toolbox when false is specified.
67
101
  */
68
102
  toolbox?: ToolboxConfig | false;
103
+
104
+ /**
105
+ * Additional search terms for finding this tool in the toolbox.
106
+ * Merged with any searchTerms defined in the tool's toolbox config.
107
+ * Useful for adding locale-specific search terms.
108
+ */
109
+ searchTerms?: string[];
69
110
  }
70
111
 
71
112
  /**
@@ -74,6 +115,58 @@ export interface ExternalToolSettings<Config extends object = any> {
74
115
  export type InternalToolSettings<Config extends object = any> = Omit<ExternalToolSettings<Config>, 'class'> & Partial<Pick<ExternalToolSettings<Config>, 'class'>>;
75
116
 
76
117
  /**
77
- * Union of external and internal Tools settings
118
+ * Keys that Blok extracts from tool settings (not passed to tool constructor)
119
+ */
120
+ export type BlokToolSettingsKeys = 'class' | 'inlineToolbar' | 'tunes' | 'shortcut' | 'toolbox' | 'config';
121
+
122
+ /**
123
+ * Flat tool settings - tool-specific options at top level.
124
+ * Blok extracts known keys and passes the rest as `config` to the tool.
125
+ */
126
+ export interface FlatToolSettings<Config extends object = any> {
127
+ /**
128
+ * Tool's class
129
+ */
130
+ class: ToolConstructable | ToolClass;
131
+
132
+ /**
133
+ * Is need to show Inline Toolbar.
134
+ * Defaults to true for block tools.
135
+ */
136
+ inlineToolbar?: boolean | string[];
137
+
138
+ /**
139
+ * BlockTunes for Tool
140
+ */
141
+ tunes?: boolean | string[];
142
+
143
+ /**
144
+ * Define shortcut that will render Tool
145
+ */
146
+ shortcut?: string;
147
+
148
+ /**
149
+ * Tool's Toolbox settings
150
+ */
151
+ toolbox?: ToolboxConfig | false;
152
+
153
+ /**
154
+ * Legacy nested config - merged with top-level tool options
155
+ * @deprecated Use flat config instead
156
+ */
157
+ config?: ToolConfig<Config>;
158
+
159
+ /**
160
+ * Tool-specific options (placeholder, levels, etc.)
161
+ * These are passed to the tool constructor as `config`
162
+ */
163
+ [key: string]: unknown;
164
+ }
165
+
166
+ /**
167
+ * Union of all tool settings formats
78
168
  */
79
- export type ToolSettings<Config extends object = any> = InternalToolSettings<Config> | ExternalToolSettings<Config>;
169
+ export type ToolSettings<Config extends object = any> =
170
+ | InternalToolSettings<Config>
171
+ | ExternalToolSettings<Config>
172
+ | FlatToolSettings<Config>;
@@ -51,6 +51,12 @@ export interface BaseToolConstructable {
51
51
  */
52
52
  title?: string;
53
53
 
54
+ /**
55
+ * Translation key for the tool title (e.g., 'bold', 'italic', 'link').
56
+ * Used to look up translations in the toolNames.* namespace.
57
+ */
58
+ titleKey?: string;
59
+
54
60
  /**
55
61
  * Tool`s prepare method. Can be async
56
62
  * @param data
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Type definitions for @jackuait/blok/tools entry point
3
+ * Re-exports all built-in tools for easy importing
4
+ */
5
+
6
+ import { HeaderConstructable, HeaderData, HeaderConfig } from './tools/header';
7
+ import { ParagraphConstructable, ParagraphData, ParagraphConfig } from './tools/paragraph';
8
+ import { ListConstructable, ListData, ListConfig, ListStyle } from './tools/list';
9
+ import { InlineToolConstructable } from './tools/inline-tool';
10
+ import { BlockTuneConstructable } from './block-tunes';
11
+ import { ToolSettings } from './tools';
12
+
13
+ // Block tools
14
+ export const Paragraph: ParagraphConstructable;
15
+ export const Header: HeaderConstructable;
16
+ export const List: ListConstructable;
17
+
18
+ // Re-export data and config types for convenience
19
+ export { HeaderData, HeaderConfig } from './tools/header';
20
+ export { ParagraphData, ParagraphConfig } from './tools/paragraph';
21
+ export { ListData, ListConfig, ListStyle } from './tools/list';
22
+
23
+ // Inline tools
24
+ export const Bold: InlineToolConstructable;
25
+ export const Italic: InlineToolConstructable;
26
+ export const Link: InlineToolConstructable;
27
+ export const Convert: InlineToolConstructable;
28
+
29
+ // Block tunes
30
+ export const Delete: BlockTuneConstructable;
31
+
32
+ /**
33
+ * Default block tools configuration
34
+ */
35
+ export const defaultBlockTools: {
36
+ readonly paragraph: { readonly inlineToolbar: true; readonly config: { readonly preserveBlank: true } };
37
+ readonly header: { readonly inlineToolbar: true };
38
+ readonly list: { readonly inlineToolbar: true };
39
+ };
40
+
41
+ /**
42
+ * Default inline tools configuration
43
+ */
44
+ export const defaultInlineTools: {
45
+ readonly bold: {};
46
+ readonly italic: {};
47
+ readonly link: {};
48
+ readonly convertTo: {};
49
+ };
@@ -45,6 +45,12 @@ export interface PopoverItemChildren {
45
45
  * Useful for items like link tool that render custom content instead of a dropdown list.
46
46
  */
47
47
  hideChevron?: boolean;
48
+
49
+ /**
50
+ * Width of the nested popover. Defaults to '280px'.
51
+ * Use 'auto' to fit content width.
52
+ */
53
+ width?: string;
48
54
  }
49
55
 
50
56
  /**
@@ -134,11 +140,6 @@ export interface PopoverItemDefaultBaseParams {
134
140
  */
135
141
  title?: string;
136
142
 
137
- /**
138
- * @deprecated Use title instead
139
- */
140
- label?: string;
141
-
142
143
  /**
143
144
  * Item icon to be appeared near a title
144
145
  */
@@ -182,6 +183,24 @@ export interface PopoverItemDefaultBaseParams {
182
183
  */
183
184
  hint?: HintParams;
184
185
 
186
+ /**
187
+ * Custom data attributes to be added to the item element.
188
+ * Keys should be in camelCase (e.g., 'headerLevel' becomes 'data-header-level')
189
+ */
190
+ dataset?: Record<string, string>;
191
+
192
+ /**
193
+ * English title for multilingual search.
194
+ * Used to search against English terms even when UI is in another language.
195
+ */
196
+ englishTitle?: string;
197
+
198
+ /**
199
+ * Additional search terms for this item.
200
+ * Used to match alternative names or keywords.
201
+ */
202
+ searchTerms?: string[];
203
+
185
204
  /**
186
205
  * Popover item activation handler
187
206
  *
@@ -38,6 +38,13 @@ export interface PopoverParams {
38
38
  */
39
39
  flipper?: Flipper;
40
40
 
41
+ /**
42
+ * Allow keyboard navigation from contenteditable elements.
43
+ * When true, arrow keys will navigate the popover even when focus is in a contenteditable.
44
+ * False by default.
45
+ */
46
+ handleContentEditableNavigation?: boolean;
47
+
41
48
  /**
42
49
  * Popover texts overrides
43
50
  */
@@ -58,6 +65,12 @@ export interface PopoverParams {
58
65
  * Used to close nested popover and return focus to parent.
59
66
  */
60
67
  onNavigateBack?: () => void;
68
+
69
+ /**
70
+ * Width of the popover. Defaults to '280px'.
71
+ * Use 'auto' to fit content width.
72
+ */
73
+ width?: string;
61
74
  }
62
75
 
63
76