@jackuait/blok 0.6.0-beta.8 → 0.6.0

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 (320) hide show
  1. package/dist/blok.mjs +2 -2
  2. package/dist/chunks/{blok-bzxy6Olq.mjs → blok-BAh1rvUC.mjs} +3410 -2927
  3. package/dist/chunks/i18next-B47TKgbU.mjs +1303 -0
  4. package/dist/chunks/{i18next-loader-CzL6YHyQ.mjs → i18next-loader-CHtGO6IK.mjs} +2 -2
  5. package/dist/chunks/{index-DSSrx_Co.mjs → index-DBWWKrDe.mjs} +12 -12
  6. package/dist/chunks/{inline-tool-convert-D4SXxjDd.mjs → inline-tool-convert-DduRc0fF.mjs} +1467 -951
  7. package/dist/chunks/{messages-BogRq8lt.mjs → messages-0AbcLMLm.mjs} +6 -0
  8. package/dist/chunks/{messages-DJDG55Vq.mjs → messages-0E0AkrNu.mjs} +6 -0
  9. package/dist/{messages-DnXLrlHh.mjs → chunks/messages-4v4MuVEc.mjs} +6 -0
  10. package/dist/chunks/{messages-DnIhyAJk.mjs → messages-62v-CLC-.mjs} +6 -0
  11. package/dist/chunks/{messages-Dzwxv9v1.mjs → messages-8DeO60Oo.mjs} +6 -0
  12. package/dist/chunks/{messages-B1Aww8q7.mjs → messages-8IPXkrDl.mjs} +6 -0
  13. package/dist/{messages-uKX8WBaD.mjs → chunks/messages-96kNZDll.mjs} +6 -0
  14. package/dist/chunks/{messages-BL0tXcDf.mjs → messages-B1FZ8lxU.mjs} +6 -0
  15. package/dist/{messages-DBn76jVV.mjs → chunks/messages-B217znr-.mjs} +8 -2
  16. package/dist/{messages-DT4dP5uK.mjs → chunks/messages-B8WNljW3.mjs} +6 -0
  17. package/dist/chunks/{messages-BdeLo0N9.mjs → messages-BC8IN4Bf.mjs} +6 -0
  18. package/dist/{messages-CZygwLwM.mjs → chunks/messages-BI43k_BD.mjs} +6 -0
  19. package/dist/{messages-CzTufCHu.mjs → chunks/messages-BJ6zrz2j.mjs} +6 -0
  20. package/dist/{messages-BoJc_p1r.mjs → chunks/messages-BUl_Rcnj.mjs} +6 -0
  21. package/dist/chunks/{messages-CnwibSvh.mjs → messages-BZlmVRwn.mjs} +6 -0
  22. package/dist/{messages-C2htQ_3F.mjs → chunks/messages-BcpCubnC.mjs} +6 -0
  23. package/dist/{messages-D5C3J9qr.mjs → chunks/messages-Bm-E4iRC.mjs} +6 -0
  24. package/dist/chunks/{messages-BELRf6DU.mjs → messages-C4jL-90N.mjs} +6 -0
  25. package/dist/chunks/{messages-1fC8IMyX.mjs → messages-CDBLbUOQ.mjs} +6 -0
  26. package/dist/chunks/{messages-7QoX8DkW.mjs → messages-CH4hrauY.mjs} +6 -0
  27. package/dist/{messages-Dz9L52ol.mjs → chunks/messages-CRJ_mchV.mjs} +6 -0
  28. package/dist/chunks/{messages-JELdtT6E.mjs → messages-CW4c4cRk.mjs} +6 -0
  29. package/dist/chunks/{messages-CKI54h6O.mjs → messages-C_4otP7U.mjs} +6 -0
  30. package/dist/{messages-R3hUSvr3.mjs → chunks/messages-CfiyT2Wi.mjs} +6 -0
  31. package/dist/{messages-CJdUsQ-c.mjs → chunks/messages-CgTq3QhU.mjs} +6 -0
  32. package/dist/chunks/{messages-D1Hv8XGo.mjs → messages-Chb7k3Rg.mjs} +6 -0
  33. package/dist/{messages-Q7AO_FLv.mjs → chunks/messages-Cjjo7yHR.mjs} +6 -0
  34. package/dist/{messages-C99mq906.mjs → chunks/messages-Cl6ayUaq.mjs} +6 -0
  35. package/dist/chunks/{messages-Diu6jAaR.mjs → messages-CmR9ftc_.mjs} +6 -0
  36. package/dist/chunks/{messages-LPVfA-8K.mjs → messages-Cr49Nt3U.mjs} +6 -0
  37. package/dist/chunks/{messages-DqM1LFg5.mjs → messages-Cr94GzbX.mjs} +6 -0
  38. package/dist/{messages-BWF-zUpY.mjs → chunks/messages-CrCYPCk3.mjs} +6 -0
  39. package/dist/{messages-D-ZtY5v0.mjs → chunks/messages-Cs8zmZ3L.mjs} +6 -0
  40. package/dist/{messages-DprmQg6V.mjs → chunks/messages-CzK0LEhb.mjs} +6 -0
  41. package/dist/chunks/{messages-BSbjsyHY.mjs → messages-D00x4S8o.mjs} +6 -0
  42. package/dist/chunks/{messages-Xq8UmkVs.mjs → messages-D1mn7Zd5.mjs} +6 -0
  43. package/dist/chunks/{messages-BC86qLvI.mjs → messages-D2NOpHn9.mjs} +6 -0
  44. package/dist/{messages-kep5wtm4.mjs → chunks/messages-D4qqwVgQ.mjs} +6 -0
  45. package/dist/chunks/{messages-7W4d0DwD.mjs → messages-D5S1Dnpm.mjs} +6 -0
  46. package/dist/{messages-CY8_RyFE.mjs → chunks/messages-D7u2bmP2.mjs} +6 -0
  47. package/dist/chunks/{messages-BFG6Wlgy.mjs → messages-D85FqxgY.mjs} +6 -0
  48. package/dist/{messages-DLfR5bMd.mjs → chunks/messages-D9ndgBnU.mjs} +6 -0
  49. package/dist/{messages-CVw84KdI.mjs → chunks/messages-DDTQgImT.mjs} +6 -0
  50. package/dist/{messages-_ErNTNhk.mjs → chunks/messages-DH_jBeED.mjs} +6 -0
  51. package/dist/chunks/{messages-CMkNSDTo.mjs → messages-DRXWF0PV.mjs} +6 -0
  52. package/dist/chunks/{messages-BYyy6Wqf.mjs → messages-DVQvl8Qj.mjs} +6 -0
  53. package/dist/chunks/{messages-CznZadDf.mjs → messages-DXktiao_.mjs} +6 -0
  54. package/dist/chunks/{messages-DhLKYm2j.mjs → messages-DdK-nFGm.mjs} +6 -0
  55. package/dist/chunks/{messages-BMXCuEKO.mjs → messages-DlJbPF2T.mjs} +6 -0
  56. package/dist/chunks/{messages-CvGLfqmV.mjs → messages-DnVlmiNT.mjs} +6 -0
  57. package/dist/{messages-Z9nEU2xK.mjs → chunks/messages-DviiFSv2.mjs} +6 -0
  58. package/dist/chunks/{messages-BB5z9Uba.mjs → messages-DzqM3Fel.mjs} +6 -0
  59. package/dist/{messages-w7v1GNaE.mjs → chunks/messages-Dzzn6XoD.mjs} +6 -0
  60. package/dist/{messages-CqWJcCbY.mjs → chunks/messages-GSByFygY.mjs} +6 -0
  61. package/dist/chunks/{messages-_ncGrKHh.mjs → messages-L_kl2Qvh.mjs} +6 -0
  62. package/dist/chunks/{messages-BrPFGbM-.mjs → messages-Phkd7XmE.mjs} +6 -0
  63. package/dist/{messages-BU2nlrLK.mjs → chunks/messages-RonBBCnh.mjs} +6 -0
  64. package/dist/{messages-Bmu_S7GM.mjs → chunks/messages-VDriF5Qy.mjs} +6 -0
  65. package/dist/{messages-CLhcMlTc.mjs → chunks/messages-ZjUAIWb1.mjs} +6 -0
  66. package/dist/{messages-9SihnaXQ.mjs → chunks/messages-b1EdvUm0.mjs} +6 -0
  67. package/dist/{messages-DvFLX36Q.mjs → chunks/messages-begYOTgC.mjs} +6 -0
  68. package/dist/{messages-BMv4xwIr.mjs → chunks/messages-jrncnb-H.mjs} +6 -0
  69. package/dist/{messages-D5iv1Kox.mjs → chunks/messages-nefz1S71.mjs} +6 -0
  70. package/dist/{messages-CQwpzUFp.mjs → chunks/messages-ucTVgS5G.mjs} +6 -0
  71. package/dist/chunks/{messages-DBRw-7Zc.mjs → messages-v3GipbFl.mjs} +6 -0
  72. package/dist/{messages-C9eaarcK.mjs → chunks/messages-wmi-iFkH.mjs} +6 -0
  73. package/dist/chunks/{messages-O5tQus_0.mjs → messages-yHcs38yI.mjs} +6 -0
  74. package/dist/full.mjs +2 -2
  75. package/dist/locales.mjs +90 -84
  76. package/dist/{messages-BogRq8lt.mjs → messages-0AbcLMLm.mjs} +6 -0
  77. package/dist/{messages-DJDG55Vq.mjs → messages-0E0AkrNu.mjs} +6 -0
  78. package/dist/{chunks/messages-DnXLrlHh.mjs → messages-4v4MuVEc.mjs} +6 -0
  79. package/dist/{messages-DnIhyAJk.mjs → messages-62v-CLC-.mjs} +6 -0
  80. package/dist/{messages-Dzwxv9v1.mjs → messages-8DeO60Oo.mjs} +6 -0
  81. package/dist/{messages-B1Aww8q7.mjs → messages-8IPXkrDl.mjs} +6 -0
  82. package/dist/{chunks/messages-uKX8WBaD.mjs → messages-96kNZDll.mjs} +6 -0
  83. package/dist/{messages-BL0tXcDf.mjs → messages-B1FZ8lxU.mjs} +6 -0
  84. package/dist/{chunks/messages-DBn76jVV.mjs → messages-B217znr-.mjs} +8 -2
  85. package/dist/{chunks/messages-DT4dP5uK.mjs → messages-B8WNljW3.mjs} +6 -0
  86. package/dist/{messages-BdeLo0N9.mjs → messages-BC8IN4Bf.mjs} +6 -0
  87. package/dist/{chunks/messages-CZygwLwM.mjs → messages-BI43k_BD.mjs} +6 -0
  88. package/dist/{chunks/messages-CzTufCHu.mjs → messages-BJ6zrz2j.mjs} +6 -0
  89. package/dist/{chunks/messages-BoJc_p1r.mjs → messages-BUl_Rcnj.mjs} +6 -0
  90. package/dist/{messages-CnwibSvh.mjs → messages-BZlmVRwn.mjs} +6 -0
  91. package/dist/{chunks/messages-C2htQ_3F.mjs → messages-BcpCubnC.mjs} +6 -0
  92. package/dist/{chunks/messages-D5C3J9qr.mjs → messages-Bm-E4iRC.mjs} +6 -0
  93. package/dist/{messages-BELRf6DU.mjs → messages-C4jL-90N.mjs} +6 -0
  94. package/dist/{messages-1fC8IMyX.mjs → messages-CDBLbUOQ.mjs} +6 -0
  95. package/dist/{messages-7QoX8DkW.mjs → messages-CH4hrauY.mjs} +6 -0
  96. package/dist/{chunks/messages-Dz9L52ol.mjs → messages-CRJ_mchV.mjs} +6 -0
  97. package/dist/{messages-JELdtT6E.mjs → messages-CW4c4cRk.mjs} +6 -0
  98. package/dist/{messages-CKI54h6O.mjs → messages-C_4otP7U.mjs} +6 -0
  99. package/dist/{chunks/messages-R3hUSvr3.mjs → messages-CfiyT2Wi.mjs} +6 -0
  100. package/dist/{chunks/messages-CJdUsQ-c.mjs → messages-CgTq3QhU.mjs} +6 -0
  101. package/dist/{messages-D1Hv8XGo.mjs → messages-Chb7k3Rg.mjs} +6 -0
  102. package/dist/{chunks/messages-Q7AO_FLv.mjs → messages-Cjjo7yHR.mjs} +6 -0
  103. package/dist/{chunks/messages-C99mq906.mjs → messages-Cl6ayUaq.mjs} +6 -0
  104. package/dist/{messages-Diu6jAaR.mjs → messages-CmR9ftc_.mjs} +6 -0
  105. package/dist/{messages-LPVfA-8K.mjs → messages-Cr49Nt3U.mjs} +6 -0
  106. package/dist/{messages-DqM1LFg5.mjs → messages-Cr94GzbX.mjs} +6 -0
  107. package/dist/{chunks/messages-BWF-zUpY.mjs → messages-CrCYPCk3.mjs} +6 -0
  108. package/dist/{chunks/messages-D-ZtY5v0.mjs → messages-Cs8zmZ3L.mjs} +6 -0
  109. package/dist/{chunks/messages-DprmQg6V.mjs → messages-CzK0LEhb.mjs} +6 -0
  110. package/dist/{messages-BSbjsyHY.mjs → messages-D00x4S8o.mjs} +6 -0
  111. package/dist/{messages-Xq8UmkVs.mjs → messages-D1mn7Zd5.mjs} +6 -0
  112. package/dist/{messages-BC86qLvI.mjs → messages-D2NOpHn9.mjs} +6 -0
  113. package/dist/{chunks/messages-kep5wtm4.mjs → messages-D4qqwVgQ.mjs} +6 -0
  114. package/dist/{messages-7W4d0DwD.mjs → messages-D5S1Dnpm.mjs} +6 -0
  115. package/dist/{chunks/messages-CY8_RyFE.mjs → messages-D7u2bmP2.mjs} +6 -0
  116. package/dist/{messages-BFG6Wlgy.mjs → messages-D85FqxgY.mjs} +6 -0
  117. package/dist/{chunks/messages-DLfR5bMd.mjs → messages-D9ndgBnU.mjs} +6 -0
  118. package/dist/{chunks/messages-CVw84KdI.mjs → messages-DDTQgImT.mjs} +6 -0
  119. package/dist/{chunks/messages-_ErNTNhk.mjs → messages-DH_jBeED.mjs} +6 -0
  120. package/dist/{messages-CMkNSDTo.mjs → messages-DRXWF0PV.mjs} +6 -0
  121. package/dist/{messages-BYyy6Wqf.mjs → messages-DVQvl8Qj.mjs} +6 -0
  122. package/dist/{messages-CznZadDf.mjs → messages-DXktiao_.mjs} +6 -0
  123. package/dist/{messages-DhLKYm2j.mjs → messages-DdK-nFGm.mjs} +6 -0
  124. package/dist/{messages-BMXCuEKO.mjs → messages-DlJbPF2T.mjs} +6 -0
  125. package/dist/{messages-CvGLfqmV.mjs → messages-DnVlmiNT.mjs} +6 -0
  126. package/dist/{chunks/messages-Z9nEU2xK.mjs → messages-DviiFSv2.mjs} +6 -0
  127. package/dist/{messages-BB5z9Uba.mjs → messages-DzqM3Fel.mjs} +6 -0
  128. package/dist/{chunks/messages-w7v1GNaE.mjs → messages-Dzzn6XoD.mjs} +6 -0
  129. package/dist/{chunks/messages-CqWJcCbY.mjs → messages-GSByFygY.mjs} +6 -0
  130. package/dist/{messages-_ncGrKHh.mjs → messages-L_kl2Qvh.mjs} +6 -0
  131. package/dist/{messages-BrPFGbM-.mjs → messages-Phkd7XmE.mjs} +6 -0
  132. package/dist/{chunks/messages-BU2nlrLK.mjs → messages-RonBBCnh.mjs} +6 -0
  133. package/dist/{chunks/messages-Bmu_S7GM.mjs → messages-VDriF5Qy.mjs} +6 -0
  134. package/dist/{chunks/messages-CLhcMlTc.mjs → messages-ZjUAIWb1.mjs} +6 -0
  135. package/dist/{chunks/messages-9SihnaXQ.mjs → messages-b1EdvUm0.mjs} +6 -0
  136. package/dist/{chunks/messages-DvFLX36Q.mjs → messages-begYOTgC.mjs} +6 -0
  137. package/dist/{chunks/messages-BMv4xwIr.mjs → messages-jrncnb-H.mjs} +6 -0
  138. package/dist/{chunks/messages-D5iv1Kox.mjs → messages-nefz1S71.mjs} +6 -0
  139. package/dist/{chunks/messages-CQwpzUFp.mjs → messages-ucTVgS5G.mjs} +6 -0
  140. package/dist/{messages-DBRw-7Zc.mjs → messages-v3GipbFl.mjs} +6 -0
  141. package/dist/{chunks/messages-C9eaarcK.mjs → messages-wmi-iFkH.mjs} +6 -0
  142. package/dist/{messages-O5tQus_0.mjs → messages-yHcs38yI.mjs} +6 -0
  143. package/dist/tools.mjs +3194 -1690
  144. package/dist/vendor.LICENSE.txt +109 -109
  145. package/package.json +43 -57
  146. package/src/blok.ts +12 -0
  147. package/src/components/__module.ts +21 -0
  148. package/src/components/block/api.ts +17 -0
  149. package/src/components/block/style-manager.ts +6 -2
  150. package/src/components/block/tool-renderer.ts +33 -30
  151. package/src/components/blocks.ts +132 -15
  152. package/src/components/i18n/locales/am/messages.json +6 -0
  153. package/src/components/i18n/locales/ar/messages.json +6 -0
  154. package/src/components/i18n/locales/az/messages.json +6 -0
  155. package/src/components/i18n/locales/bg/messages.json +6 -0
  156. package/src/components/i18n/locales/bn/messages.json +6 -0
  157. package/src/components/i18n/locales/bs/messages.json +6 -0
  158. package/src/components/i18n/locales/cs/messages.json +6 -0
  159. package/src/components/i18n/locales/da/messages.json +6 -0
  160. package/src/components/i18n/locales/de/messages.json +6 -0
  161. package/src/components/i18n/locales/dv/messages.json +6 -0
  162. package/src/components/i18n/locales/el/messages.json +6 -0
  163. package/src/components/i18n/locales/en/messages.json +6 -0
  164. package/src/components/i18n/locales/es/messages.json +6 -0
  165. package/src/components/i18n/locales/et/messages.json +6 -0
  166. package/src/components/i18n/locales/fa/messages.json +6 -0
  167. package/src/components/i18n/locales/fi/messages.json +6 -0
  168. package/src/components/i18n/locales/fil/messages.json +6 -0
  169. package/src/components/i18n/locales/fr/messages.json +6 -0
  170. package/src/components/i18n/locales/gu/messages.json +6 -0
  171. package/src/components/i18n/locales/he/messages.json +6 -0
  172. package/src/components/i18n/locales/hi/messages.json +6 -0
  173. package/src/components/i18n/locales/hr/messages.json +6 -0
  174. package/src/components/i18n/locales/hu/messages.json +6 -0
  175. package/src/components/i18n/locales/hy/messages.json +6 -0
  176. package/src/components/i18n/locales/id/messages.json +6 -0
  177. package/src/components/i18n/locales/it/messages.json +6 -0
  178. package/src/components/i18n/locales/ja/messages.json +6 -0
  179. package/src/components/i18n/locales/ka/messages.json +6 -0
  180. package/src/components/i18n/locales/km/messages.json +6 -0
  181. package/src/components/i18n/locales/kn/messages.json +6 -0
  182. package/src/components/i18n/locales/ko/messages.json +6 -0
  183. package/src/components/i18n/locales/ku/messages.json +6 -0
  184. package/src/components/i18n/locales/lo/messages.json +6 -0
  185. package/src/components/i18n/locales/lt/messages.json +6 -0
  186. package/src/components/i18n/locales/lv/messages.json +6 -0
  187. package/src/components/i18n/locales/mk/messages.json +6 -0
  188. package/src/components/i18n/locales/ml/messages.json +6 -0
  189. package/src/components/i18n/locales/mn/messages.json +6 -0
  190. package/src/components/i18n/locales/mr/messages.json +6 -0
  191. package/src/components/i18n/locales/ms/messages.json +6 -0
  192. package/src/components/i18n/locales/my/messages.json +6 -0
  193. package/src/components/i18n/locales/ne/messages.json +6 -0
  194. package/src/components/i18n/locales/nl/messages.json +6 -0
  195. package/src/components/i18n/locales/no/messages.json +6 -0
  196. package/src/components/i18n/locales/pa/messages.json +6 -0
  197. package/src/components/i18n/locales/pl/messages.json +6 -0
  198. package/src/components/i18n/locales/ps/messages.json +6 -0
  199. package/src/components/i18n/locales/pt/messages.json +6 -0
  200. package/src/components/i18n/locales/ro/messages.json +6 -0
  201. package/src/components/i18n/locales/ru/messages.json +6 -0
  202. package/src/components/i18n/locales/sd/messages.json +6 -0
  203. package/src/components/i18n/locales/si/messages.json +6 -0
  204. package/src/components/i18n/locales/sk/messages.json +6 -0
  205. package/src/components/i18n/locales/sl/messages.json +6 -0
  206. package/src/components/i18n/locales/sq/messages.json +6 -0
  207. package/src/components/i18n/locales/sr/messages.json +6 -0
  208. package/src/components/i18n/locales/sv/messages.json +6 -0
  209. package/src/components/i18n/locales/sw/messages.json +6 -0
  210. package/src/components/i18n/locales/ta/messages.json +6 -0
  211. package/src/components/i18n/locales/te/messages.json +6 -0
  212. package/src/components/i18n/locales/th/messages.json +6 -0
  213. package/src/components/i18n/locales/tr/messages.json +6 -0
  214. package/src/components/i18n/locales/ug/messages.json +6 -0
  215. package/src/components/i18n/locales/uk/messages.json +6 -0
  216. package/src/components/i18n/locales/ur/messages.json +6 -0
  217. package/src/components/i18n/locales/vi/messages.json +6 -0
  218. package/src/components/i18n/locales/yi/messages.json +6 -0
  219. package/src/components/i18n/locales/zh/messages.json +6 -0
  220. package/src/components/icons/index.ts +17 -0
  221. package/src/components/inline-tools/inline-tool-link.ts +1 -1
  222. package/src/components/inline-tools/inline-tool-marker.ts +737 -0
  223. package/src/components/inline-tools/utils/formatting-range-utils.ts +6 -3
  224. package/src/components/inline-tools/utils/marker-dom-utils.ts +17 -0
  225. package/src/components/modules/api/blocks.ts +34 -9
  226. package/src/components/modules/blockEvents/composers/keyboardNavigation.ts +75 -29
  227. package/src/components/modules/blockEvents/index.ts +13 -5
  228. package/src/components/modules/blockManager/blockManager.ts +81 -2
  229. package/src/components/modules/blockManager/hierarchy.ts +20 -2
  230. package/src/components/modules/blockManager/operations.ts +70 -35
  231. package/src/components/modules/blockManager/repository.ts +22 -0
  232. package/src/components/modules/blockManager/types.ts +3 -1
  233. package/src/components/modules/blockManager/yjs-sync.ts +173 -39
  234. package/src/components/modules/blockSelection.ts +3 -0
  235. package/src/components/modules/crossBlockSelection.ts +11 -3
  236. package/src/components/modules/drag/preview/DragPreview.ts +10 -2
  237. package/src/components/modules/drag/target/DropTargetDetector.ts +100 -11
  238. package/src/components/modules/drag/utils/drag.constants.ts +1 -1
  239. package/src/components/modules/normalizeInlineImages.ts +263 -0
  240. package/src/components/modules/paste/google-docs-preprocessor.ts +197 -0
  241. package/src/components/modules/paste/handlers/base.ts +43 -2
  242. package/src/components/modules/paste/handlers/html-handler.ts +1 -1
  243. package/src/components/modules/paste/handlers/index.ts +1 -0
  244. package/src/components/modules/paste/handlers/table-cells-handler.ts +104 -0
  245. package/src/components/modules/paste/index.ts +20 -3
  246. package/src/components/modules/readonly.ts +8 -2
  247. package/src/components/modules/rectangleSelection.ts +5 -2
  248. package/src/components/modules/renderer.ts +35 -0
  249. package/src/components/modules/saver.ts +52 -2
  250. package/src/components/modules/toolbar/blockSettings.ts +52 -44
  251. package/src/components/modules/toolbar/index.ts +124 -17
  252. package/src/components/modules/toolbar/inline/index.ts +4 -4
  253. package/src/components/modules/toolbar/plus-button.ts +3 -3
  254. package/src/components/modules/toolbar/settings-toggler.ts +3 -3
  255. package/src/components/modules/toolbar/styles.ts +7 -7
  256. package/src/components/modules/ui.ts +6 -6
  257. package/src/components/modules/uiControllers/controllers/blockHover.ts +16 -2
  258. package/src/components/modules/uiControllers/handlers/touch.ts +83 -10
  259. package/src/components/modules/yjs/block-observer.ts +9 -3
  260. package/src/components/modules/yjs/document-store.ts +10 -7
  261. package/src/components/modules/yjs/types.ts +8 -6
  262. package/src/components/modules/yjs/undo-history.ts +90 -11
  263. package/src/components/selection/fake-background/shadows.ts +1 -1
  264. package/src/components/shared/color-picker.ts +211 -0
  265. package/src/components/shared/color-presets.ts +25 -0
  266. package/src/components/ui/toolbox.ts +19 -11
  267. package/src/components/utils/color-mapping.ts +241 -0
  268. package/src/components/utils/notifier/draw.ts +9 -9
  269. package/src/components/utils/placeholder.ts +24 -8
  270. package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.const.ts +2 -2
  271. package/src/components/utils/popover/components/popover-item/popover-item-default/popover-item-default.ts +14 -12
  272. package/src/components/utils/popover/components/search-input/search-input.const.ts +2 -2
  273. package/src/components/utils/popover/popover-abstract.ts +27 -3
  274. package/src/components/utils/popover/popover-desktop.ts +26 -3
  275. package/src/components/utils/popover/popover-inline.ts +14 -1
  276. package/src/components/utils/popover/popover-mobile.ts +4 -4
  277. package/src/components/utils/popover/popover.const.ts +2 -2
  278. package/src/components/utils/sanitizer.ts +24 -3
  279. package/src/components/utils/tw.ts +17 -5
  280. package/src/stories/Header.stories.ts +106 -0
  281. package/src/stories/MarkerColors.stories.ts +730 -0
  282. package/src/stories/Popover.stories.ts +1 -3
  283. package/src/stories/Table.stories.ts +1662 -0
  284. package/src/styles/main.css +207 -37
  285. package/src/tools/header/index.ts +1 -1
  286. package/src/tools/index.ts +3 -1
  287. package/src/tools/list/caret-manager.ts +28 -10
  288. package/src/tools/list/constants.ts +2 -2
  289. package/src/tools/list/dom-builder.ts +3 -3
  290. package/src/tools/list/static-configs.ts +0 -1
  291. package/src/tools/paragraph/index.ts +15 -7
  292. package/src/tools/table/core/table-commands.ts +99 -0
  293. package/src/tools/table/core/table-controller.ts +231 -0
  294. package/src/tools/table/core/table-events.ts +102 -0
  295. package/src/tools/table/index.ts +1070 -174
  296. package/src/tools/table/ownership/table-event-broker.ts +74 -0
  297. package/src/tools/table/ownership/table-ownership-registry.ts +126 -0
  298. package/src/tools/table/table-add-controls.ts +85 -15
  299. package/src/tools/table/table-cell-blocks.ts +336 -38
  300. package/src/tools/table/table-cell-clipboard.ts +415 -0
  301. package/src/tools/table/table-cell-color-picker.ts +34 -0
  302. package/src/tools/table/table-cell-selection.ts +264 -15
  303. package/src/tools/table/table-core.ts +3 -42
  304. package/src/tools/table/table-heading-toggle.ts +2 -2
  305. package/src/tools/table/table-model.ts +623 -0
  306. package/src/tools/table/table-operations.ts +59 -78
  307. package/src/tools/table/table-resize.ts +15 -11
  308. package/src/tools/table/table-restrictions.ts +69 -3
  309. package/src/tools/table/table-row-col-action-handler.ts +22 -7
  310. package/src/tools/table/table-row-col-controls.ts +129 -12
  311. package/src/tools/table/table-row-col-drag.ts +14 -0
  312. package/src/tools/table/table-scroll-haze.ts +152 -0
  313. package/src/tools/table/types.ts +22 -1
  314. package/src/tools/table/view/table-cell-blocks-adapter.ts +47 -0
  315. package/src/variants/blok-minimum.ts +13 -0
  316. package/types/api/block.d.ts +13 -0
  317. package/types/api/blocks.d.ts +16 -0
  318. package/types/tools/table.d.ts +2 -0
  319. package/dist/chunks/i18next-CugVlwWp.mjs +0 -1292
  320. package/src/tools/table/data-normalizer.ts +0 -32
@@ -125,14 +125,10 @@ export class Blocks {
125
125
  const block = this.blocks.splice(fromIndex, 1)[0];
126
126
 
127
127
  if (!skipDOM) {
128
- // manipulate DOM
129
- const prevIndex = toIndex - 1;
130
- const previousBlockIndex = Math.max(0, prevIndex);
131
- const previousBlock = this.blocks[previousBlockIndex];
132
-
133
- const position = toIndex > 0 ? 'afterend' : 'beforebegin';
128
+ const previousBlockIndex = Math.max(0, toIndex - 1);
129
+ const position: InsertPosition = toIndex > 0 ? 'afterend' : 'beforebegin';
134
130
 
135
- this.insertToDOM(block, position, previousBlock);
131
+ this.moveHolderInDOM(block, this.blocks[previousBlockIndex].holder, position);
136
132
  }
137
133
 
138
134
  // move in array
@@ -151,7 +147,7 @@ export class Blocks {
151
147
  * @param {Block} block — Block to insert
152
148
  * @param {boolean} replace — it true, replace block on given index
153
149
  */
154
- public insert(index: number, block: Block, replace = false): void {
150
+ public insert(index: number, block: Block, replace = false, appendToWorkingArea = false): void {
155
151
  if (!this.length) {
156
152
  this.push(block);
157
153
 
@@ -165,17 +161,34 @@ export class Blocks {
165
161
 
166
162
  /**
167
163
  * Call REMOVED lifecycle hook first, then destroy to unsubscribe from
168
- * mutation events, then remove DOM element. This prevents spurious
169
- * 'block-changed' events from being fired when the DOM element is removed.
164
+ * mutation events. Use replaceWith() to swap DOM elements in-place,
165
+ * preserving the replaced block's exact DOM position. This prevents
166
+ * the new block from being misplaced when the previous block in the
167
+ * array is nested inside another element (e.g., a table cell).
170
168
  */
171
169
  blockToReplace.call(BlockToolAPI.REMOVED);
172
170
  blockToReplace.destroy();
173
- blockToReplace.holder.remove();
171
+ blockToReplace.holder.replaceWith(block.holder);
172
+
173
+ this.blocks.splice(insertIndex, 1, block);
174
+ block.call(BlockToolAPI.RENDERED);
175
+
176
+ return;
174
177
  }
175
178
 
176
- const deleteCount = replace ? 1 : 0;
179
+ this.blocks.splice(insertIndex, 0, block);
180
+
181
+ /**
182
+ * When appendToWorkingArea is true, always append to the working area
183
+ * as a direct child. This prevents blocks from being placed inside
184
+ * nested containers (e.g., table cells) when the previous block in
185
+ * the flat array happens to be nested.
186
+ */
187
+ if (appendToWorkingArea) {
188
+ this.insertToDOM(block);
177
189
 
178
- this.blocks.splice(insertIndex, deleteCount, block);
190
+ return;
191
+ }
179
192
 
180
193
  if (insertIndex > 0) {
181
194
  const previousBlock = this.blocks[insertIndex - 1];
@@ -320,6 +333,60 @@ export class Blocks {
320
333
  return this.blocks.indexOf(block);
321
334
  }
322
335
 
336
+ /**
337
+ * Add a block to the internal array at the given index WITHOUT inserting
338
+ * its holder into the DOM. Use {@link activateBlock} later to place it
339
+ * into the DOM and fire the RENDERED lifecycle hook.
340
+ *
341
+ * This is used during batch-add (undo of hierarchical blocks) so that all
342
+ * blocks exist in the array before any lifecycle hooks run.
343
+ */
344
+ public addToArray(index: number, block: Block): void {
345
+ const insertIndex = index > this.length ? this.length : index;
346
+
347
+ this.blocks.splice(insertIndex, 0, block);
348
+ }
349
+
350
+ /**
351
+ * Activate a block that was previously added via {@link addToArray}.
352
+ *
353
+ * If the block's holder already has a parent element (e.g. a parent tool's
354
+ * `rendered()` moved it into a cell container), only the RENDERED
355
+ * lifecycle hook is called. Otherwise the holder is positioned in the
356
+ * working area relative to the adjacent block in the array.
357
+ */
358
+ public activateBlock(block: Block): void {
359
+ if (block.holder.parentElement !== null) {
360
+ block.call(BlockToolAPI.RENDERED);
361
+
362
+ return;
363
+ }
364
+
365
+ const index = this.blocks.indexOf(block);
366
+
367
+ if (index > 0) {
368
+ const previousBlock = this.blocks[index - 1];
369
+
370
+ this.insertToDOM(block, 'afterend', previousBlock);
371
+
372
+ return;
373
+ }
374
+
375
+ // At index 0: find the first subsequent block whose holder is already
376
+ // in the DOM and insert before it, matching the insert() method logic.
377
+ const nextMounted = this.blocks.slice(index + 1).find(
378
+ (b) => b.holder.parentElement !== null
379
+ );
380
+
381
+ if (nextMounted) {
382
+ this.insertToDOM(block, 'beforebegin', nextMounted);
383
+
384
+ return;
385
+ }
386
+
387
+ this.insertToDOM(block);
388
+ }
389
+
323
390
  /**
324
391
  * Insert new Block into DOM
325
392
  * @param {Block} block - Block to insert
@@ -327,12 +394,62 @@ export class Blocks {
327
394
  * @param {Block} target — Block related to position
328
395
  */
329
396
  private insertToDOM(block: Block, position?: InsertPosition, target?: Block): void {
330
- if (position && target !== undefined) {
331
- target.holder.insertAdjacentElement(position, block.holder);
397
+ if (!position || target === undefined) {
398
+ this.workingArea.appendChild(block.holder);
399
+ block.call(BlockToolAPI.RENDERED);
400
+
401
+ return;
402
+ }
403
+
404
+ const referenceNode = this.findWorkingAreaChild(target.holder);
405
+
406
+ if (referenceNode !== null) {
407
+ referenceNode.insertAdjacentElement(position, block.holder);
332
408
  } else {
333
409
  this.workingArea.appendChild(block.holder);
334
410
  }
335
411
 
336
412
  block.call(BlockToolAPI.RENDERED);
337
413
  }
414
+
415
+ /**
416
+ * Walk from an element up to find the ancestor that is a direct child of workingArea.
417
+ * If the element itself is a direct child, returns the element.
418
+ * Returns null if the element is not inside workingArea.
419
+ *
420
+ * @param element - Starting element to walk up from
421
+ * @returns Direct child of workingArea, or null
422
+ */
423
+ /**
424
+ * Move a block's holder in the DOM relative to a reference element.
425
+ * If the reference is nested inside a container (e.g. a table cell),
426
+ * walks up to find the workingArea-level ancestor and inserts relative to that.
427
+ *
428
+ * @param block - Block whose holder to move
429
+ * @param referenceHolder - The reference element to position relative to
430
+ * @param position - Where to insert relative to the reference
431
+ */
432
+ private moveHolderInDOM(block: Block, referenceHolder: Element, position: InsertPosition): void {
433
+ const referenceNode = this.findWorkingAreaChild(referenceHolder);
434
+
435
+ if (referenceNode !== null) {
436
+ referenceNode.insertAdjacentElement(position, block.holder);
437
+ } else {
438
+ this.workingArea.appendChild(block.holder);
439
+ }
440
+
441
+ block.call(BlockToolAPI.RENDERED);
442
+ }
443
+
444
+ private findWorkingAreaChild(element: Element): Element | null {
445
+ if (element.parentElement === this.workingArea) {
446
+ return element;
447
+ }
448
+
449
+ if (element.parentElement === null) {
450
+ return null;
451
+ }
452
+
453
+ return this.findWorkingAreaChild(element.parentElement);
454
+ }
338
455
  }
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "አገናኝ",
13
13
  "toolNames.bold": "ደማቅ",
14
14
  "toolNames.italic": "ሰያፍ",
15
+ "toolNames.marker": "ቀለም",
15
16
  "toolNames.bulletedList": "ነጥብ ያለው ዝርዝር",
16
17
  "toolNames.numberedList": "ቁጥር ያለው ዝርዝር",
17
18
  "toolNames.todoList": "የሚደረግ ዝርዝር",
18
19
  "tools.link.addLink": "አገናኝ ጨምር",
19
20
  "tools.link.invalidLink": "ልክ ያልሆነ አገናኝ",
21
+ "tools.marker.textColor": "ጽሑፍ",
22
+ "tools.marker.background": "ዳራ",
23
+ "tools.marker.default": "ነባሪ",
20
24
  "tools.stub.error": "ስህተት",
21
25
  "tools.stub.blockCannotBeDisplayed": "ይህ ብሎክ ሊታይ አይችልም",
22
26
  "tools.header.heading1": "ርዕስ 1",
@@ -44,6 +48,8 @@
44
48
  "a11y.atBottom": "ብሎክ ከታች ነው፣ ወደ ታች መሄድ አይችልም",
45
49
  "tools.table.title": "ሰንጠረዥ",
46
50
  "tools.table.clearSelection": "አጽዳ",
51
+ "tools.table.copySelection": "ቅዳ",
52
+ "tools.table.cellColor": "ቀለም",
47
53
  "tools.table.headerColumn": "የራስጌ አምድ",
48
54
  "tools.table.insertColumnLeft": "ከግራ አምድ አስገባ",
49
55
  "tools.table.insertColumnRight": "ከቀኝ አምድ አስገባ",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "رابط",
13
13
  "toolNames.bold": "عريض",
14
14
  "toolNames.italic": "مائل",
15
+ "toolNames.marker": "لون",
15
16
  "toolNames.bulletedList": "قائمة نقطية",
16
17
  "toolNames.numberedList": "قائمة مرقمة",
17
18
  "toolNames.todoList": "قائمة مهام",
18
19
  "tools.link.addLink": "إضافة رابط",
19
20
  "tools.link.invalidLink": "رابط غير صالح",
21
+ "tools.marker.textColor": "نص",
22
+ "tools.marker.background": "خلفية",
23
+ "tools.marker.default": "افتراضي",
20
24
  "tools.stub.error": "خطأ",
21
25
  "tools.stub.blockCannotBeDisplayed": "تعذّر عرض هذه الكتلة",
22
26
  "tools.header.heading1": "عنوان 1",
@@ -29,6 +33,8 @@
29
33
  "tools.paragraph.placeholder": "اكتب شيئاً أو اضغط / لاختيار أداة",
30
34
  "tools.table.title": "جدول",
31
35
  "tools.table.clearSelection": "مسح",
36
+ "tools.table.copySelection": "نسخ",
37
+ "tools.table.cellColor": "لون",
32
38
  "tools.table.headerColumn": "عمود رأس",
33
39
  "tools.table.insertColumnLeft": "إدراج عمود يساراً",
34
40
  "tools.table.insertColumnRight": "إدراج عمود يميناً",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Keçid",
13
13
  "toolNames.bold": "Qalın",
14
14
  "toolNames.italic": "Kursiv",
15
+ "toolNames.marker": "Rəng",
15
16
  "toolNames.bulletedList": "Nöqtəli siyahı",
16
17
  "toolNames.numberedList": "Nömrəli siyahı",
17
18
  "toolNames.todoList": "Ediləcəklər siyahısı",
18
19
  "tools.link.addLink": "Keçid əlavə et",
19
20
  "tools.link.invalidLink": "Yanlış keçid",
21
+ "tools.marker.textColor": "Mətn",
22
+ "tools.marker.background": "Arxa fon",
23
+ "tools.marker.default": "Standart",
20
24
  "tools.stub.error": "Xəta",
21
25
  "tools.stub.blockCannotBeDisplayed": "Bu blok göstərilə bilmir",
22
26
  "tools.header.heading1": "Başlıq 1",
@@ -29,6 +33,8 @@
29
33
  "tools.paragraph.placeholder": "Nəsə yazın və ya alət seçmək üçün / basın",
30
34
  "tools.table.title": "Cədvəl",
31
35
  "tools.table.clearSelection": "Təmizlə",
36
+ "tools.table.copySelection": "Kopyala",
37
+ "tools.table.cellColor": "Rəng",
32
38
  "tools.table.headerColumn": "Başlıq sütunu",
33
39
  "tools.table.insertColumnLeft": "Soldan sütun əlavə et",
34
40
  "tools.table.insertColumnRight": "Sağdan sütun əlavə et",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Връзка",
13
13
  "toolNames.bold": "Удебелен",
14
14
  "toolNames.italic": "Курсив",
15
+ "toolNames.marker": "Цвят",
15
16
  "toolNames.bulletedList": "Списък с точки",
16
17
  "toolNames.numberedList": "Номериран списък",
17
18
  "toolNames.todoList": "Списък със задачи",
18
19
  "tools.link.addLink": "Добавяне на връзка",
19
20
  "tools.link.invalidLink": "Невалидна връзка",
21
+ "tools.marker.textColor": "Текст",
22
+ "tools.marker.background": "Фон",
23
+ "tools.marker.default": "По подразбиране",
20
24
  "tools.stub.error": "Грешка",
21
25
  "tools.stub.blockCannotBeDisplayed": "Този блок не може да бъде показан",
22
26
  "tools.header.heading1": "Заглавие 1",
@@ -29,6 +33,8 @@
29
33
  "tools.paragraph.placeholder": "Напишете нещо или натиснете / за избор",
30
34
  "tools.table.title": "Таблица",
31
35
  "tools.table.clearSelection": "Изчисти",
36
+ "tools.table.copySelection": "Копирай",
37
+ "tools.table.cellColor": "Цвят",
32
38
  "tools.table.headerColumn": "Колона със заглавие",
33
39
  "tools.table.insertColumnLeft": "Вмъкни колона вляво",
34
40
  "tools.table.insertColumnRight": "Вмъкни колона вдясно",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "সংযোগ",
13
13
  "toolNames.bold": "গাঢ়",
14
14
  "toolNames.italic": "বাঁকা",
15
+ "toolNames.marker": "রঙ",
15
16
  "toolNames.bulletedList": "বুলেট তালিকা",
16
17
  "toolNames.numberedList": "সংখ্যাযুক্ত তালিকা",
17
18
  "toolNames.todoList": "কাজের তালিকা",
18
19
  "tools.link.addLink": "সংযোগ যোগ করুন",
19
20
  "tools.link.invalidLink": "ভুল সংযোগ",
21
+ "tools.marker.textColor": "লেখা",
22
+ "tools.marker.background": "পটভূমি",
23
+ "tools.marker.default": "ডিফল্ট",
20
24
  "tools.stub.error": "ত্রুটি",
21
25
  "tools.stub.blockCannotBeDisplayed": "এই ব্লকটি প্রদর্শন করা যাচ্ছে না",
22
26
  "tools.header.heading1": "শিরোনাম 1",
@@ -44,6 +48,8 @@
44
48
  "a11y.atBottom": "ব্লক সবার নিচে আছে, আর নিচে সরানো যাবে না",
45
49
  "tools.table.title": "টেবিল",
46
50
  "tools.table.clearSelection": "সাফ করুন",
51
+ "tools.table.copySelection": "কপি",
52
+ "tools.table.cellColor": "রঙ",
47
53
  "tools.table.headerColumn": "শিরোনাম কলাম",
48
54
  "tools.table.insertColumnLeft": "বামে কলাম ঢোকান",
49
55
  "tools.table.insertColumnRight": "ডানে কলাম ঢোকান",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Link",
13
13
  "toolNames.bold": "Podebljano",
14
14
  "toolNames.italic": "Kurziv",
15
+ "toolNames.marker": "Boja",
15
16
  "toolNames.bulletedList": "Lista s tačkama",
16
17
  "toolNames.numberedList": "Numerirana lista",
17
18
  "toolNames.todoList": "Lista zadataka",
18
19
  "tools.link.addLink": "Dodaj link",
19
20
  "tools.link.invalidLink": "Nevažeći link",
21
+ "tools.marker.textColor": "Tekst",
22
+ "tools.marker.background": "Pozadina",
23
+ "tools.marker.default": "Podrazumijevano",
20
24
  "tools.stub.error": "Greška",
21
25
  "tools.stub.blockCannotBeDisplayed": "Ovaj blok se ne može prikazati",
22
26
  "tools.header.heading1": "Naslov 1",
@@ -44,6 +48,8 @@
44
48
  "a11y.atBottom": "Blok je na dnu, ne može se pomjeriti dolje",
45
49
  "tools.table.title": "Tabela",
46
50
  "tools.table.clearSelection": "Očisti",
51
+ "tools.table.copySelection": "Kopiraj",
52
+ "tools.table.cellColor": "Boja",
47
53
  "tools.table.headerColumn": "Kolona zaglavlja",
48
54
  "tools.table.insertColumnLeft": "Umetni kolonu lijevo",
49
55
  "tools.table.insertColumnRight": "Umetni kolonu desno",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Odkaz",
13
13
  "toolNames.bold": "Tučné",
14
14
  "toolNames.italic": "Kurzíva",
15
+ "toolNames.marker": "Barva",
15
16
  "toolNames.bulletedList": "Odrážkový seznam",
16
17
  "toolNames.numberedList": "Číslovaný seznam",
17
18
  "toolNames.todoList": "Seznam úkolů",
18
19
  "tools.link.addLink": "Přidat odkaz",
19
20
  "tools.link.invalidLink": "Neplatný odkaz",
21
+ "tools.marker.textColor": "Text",
22
+ "tools.marker.background": "Pozadí",
23
+ "tools.marker.default": "Výchozí",
20
24
  "tools.stub.error": "Chyba",
21
25
  "tools.stub.blockCannotBeDisplayed": "Tento blok nelze zobrazit",
22
26
  "tools.header.heading1": "Nadpis 1",
@@ -29,6 +33,8 @@
29
33
  "tools.paragraph.placeholder": "Napište něco nebo stiskněte / pro výběr",
30
34
  "tools.table.title": "Tabulka",
31
35
  "tools.table.clearSelection": "Vymazat",
36
+ "tools.table.copySelection": "Kopírovat",
37
+ "tools.table.cellColor": "Barva",
32
38
  "tools.table.headerColumn": "Sloupec záhlaví",
33
39
  "tools.table.insertColumnLeft": "Vložit sloupec vlevo",
34
40
  "tools.table.insertColumnRight": "Vložit sloupec vpravo",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Link",
13
13
  "toolNames.bold": "Fed",
14
14
  "toolNames.italic": "Kursiv",
15
+ "toolNames.marker": "Farve",
15
16
  "toolNames.bulletedList": "Punktliste",
16
17
  "toolNames.numberedList": "Nummereret liste",
17
18
  "toolNames.todoList": "Opgaveliste",
18
19
  "tools.link.addLink": "Tilføj et link",
19
20
  "tools.link.invalidLink": "Ugyldigt link",
21
+ "tools.marker.textColor": "Tekst",
22
+ "tools.marker.background": "Baggrund",
23
+ "tools.marker.default": "Standard",
20
24
  "tools.stub.error": "Fejl",
21
25
  "tools.stub.blockCannotBeDisplayed": "Denne blok kan ikke vises",
22
26
  "tools.header.heading1": "Overskrift 1",
@@ -29,6 +33,8 @@
29
33
  "tools.paragraph.placeholder": "Skriv noget eller tryk / for at vælge",
30
34
  "tools.table.title": "Tabel",
31
35
  "tools.table.clearSelection": "Ryd",
36
+ "tools.table.copySelection": "Kopiér",
37
+ "tools.table.cellColor": "Farve",
32
38
  "tools.table.headerColumn": "Overskriftskolonne",
33
39
  "tools.table.insertColumnLeft": "Indsæt kolonne til venstre",
34
40
  "tools.table.insertColumnRight": "Indsæt kolonne til højre",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Link",
13
13
  "toolNames.bold": "Fett",
14
14
  "toolNames.italic": "Kursiv",
15
+ "toolNames.marker": "Farbe",
15
16
  "toolNames.bulletedList": "Aufzählung",
16
17
  "toolNames.numberedList": "Nummerierte Liste",
17
18
  "toolNames.todoList": "Aufgabenliste",
18
19
  "tools.link.addLink": "Link hinzufügen",
19
20
  "tools.link.invalidLink": "Ungültiger Link",
21
+ "tools.marker.textColor": "Text",
22
+ "tools.marker.background": "Hintergrund",
23
+ "tools.marker.default": "Standard",
20
24
  "tools.stub.error": "Fehler",
21
25
  "tools.stub.blockCannotBeDisplayed": "Block kann nicht angezeigt werden",
22
26
  "tools.header.heading1": "Überschrift 1",
@@ -29,6 +33,8 @@
29
33
  "tools.paragraph.placeholder": "Schreiben Sie etwas oder drücken Sie / zur Auswahl",
30
34
  "tools.table.title": "Tabelle",
31
35
  "tools.table.clearSelection": "Löschen",
36
+ "tools.table.copySelection": "Kopieren",
37
+ "tools.table.cellColor": "Farbe",
32
38
  "tools.table.headerColumn": "Kopfspalte",
33
39
  "tools.table.insertColumnLeft": "Spalte links einfügen",
34
40
  "tools.table.insertColumnRight": "Spalte rechts einfügen",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "ލިންކް",
13
13
  "toolNames.bold": "ބޯލްޑް",
14
14
  "toolNames.italic": "އިޓެލިކް",
15
+ "toolNames.marker": "ކުލަ",
15
16
  "toolNames.bulletedList": "ބުލެޓް ލިސްޓް",
16
17
  "toolNames.numberedList": "ނަންބަރު ލިސްޓް",
17
18
  "toolNames.todoList": "ޓޫޑޫ ލިސްޓް",
18
19
  "tools.link.addLink": "ލިންކް އިތުރުކުރޭ",
19
20
  "tools.link.invalidLink": "ރަނގަޅު ނޫން ލިންކެއް",
21
+ "tools.marker.textColor": "ލިޔުން",
22
+ "tools.marker.background": "ބެކްގްރައުންޑް",
23
+ "tools.marker.default": "ޑީފޯލްޓް",
20
24
  "tools.stub.error": "މައްސަލައެއް",
21
25
  "tools.stub.blockCannotBeDisplayed": "މި ބްލޮކް ދައްކާނެ ގޮތެއް ނެތް",
22
26
  "tools.header.heading1": "ސުރުޚީ 1",
@@ -44,6 +48,8 @@
44
48
  "a11y.atBottom": "ބްލޮކް އެންމެ ތިރީގައި، ތިރިއަށް ނުދެވޭނެ",
45
49
  "tools.table.title": "ޓޭބަލް",
46
50
  "tools.table.clearSelection": "ސާފުކުރޭ",
51
+ "tools.table.copySelection": "ކޮޕީކުރޭ",
52
+ "tools.table.cellColor": "ކުލަ",
47
53
  "tools.table.headerColumn": "ހެޑަރ ކޮލަމް",
48
54
  "tools.table.insertColumnLeft": "ކަނާތުން ކޮލަމް އިތުރުކުރޭ",
49
55
  "tools.table.insertColumnRight": "ވާތުން ކޮލަމް އިތުރުކުރޭ",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Σύνδεσμος",
13
13
  "toolNames.bold": "Έντονα",
14
14
  "toolNames.italic": "Πλάγια",
15
+ "toolNames.marker": "Χρώμα",
15
16
  "toolNames.bulletedList": "Λίστα με κουκκίδες",
16
17
  "toolNames.numberedList": "Αριθμημένη λίστα",
17
18
  "toolNames.todoList": "Λίστα εργασιών",
18
19
  "tools.link.addLink": "Προσθήκη συνδέσμου",
19
20
  "tools.link.invalidLink": "Μη έγκυρος σύνδεσμος",
21
+ "tools.marker.textColor": "Κείμενο",
22
+ "tools.marker.background": "Φόντο",
23
+ "tools.marker.default": "Προεπιλογή",
20
24
  "tools.stub.error": "Σφάλμα",
21
25
  "tools.stub.blockCannotBeDisplayed": "Δεν είναι δυνατή η εμφάνιση του μπλοκ",
22
26
  "tools.header.heading1": "Επικεφαλίδα 1",
@@ -44,6 +48,8 @@
44
48
  "a11y.atBottom": "Το μπλοκ είναι στο κάτω μέρος",
45
49
  "tools.table.title": "Πίνακας",
46
50
  "tools.table.clearSelection": "Καθαρισμός",
51
+ "tools.table.copySelection": "Αντιγραφή",
52
+ "tools.table.cellColor": "Χρώμα",
47
53
  "tools.table.headerColumn": "Στήλη επικεφαλίδας",
48
54
  "tools.table.insertColumnLeft": "Εισαγωγή στήλης αριστερά",
49
55
  "tools.table.insertColumnRight": "Εισαγωγή στήλης δεξιά",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Link",
13
13
  "toolNames.bold": "Bold",
14
14
  "toolNames.italic": "Italic",
15
+ "toolNames.marker": "Color",
15
16
  "toolNames.bulletedList": "Bulleted list",
16
17
  "toolNames.numberedList": "Numbered list",
17
18
  "toolNames.todoList": "To-do list",
18
19
  "tools.link.addLink": "Add a link",
19
20
  "tools.link.invalidLink": "Invalid link",
21
+ "tools.marker.textColor": "Text",
22
+ "tools.marker.background": "Background",
23
+ "tools.marker.default": "Default",
20
24
  "tools.stub.error": "Error",
21
25
  "tools.stub.blockCannotBeDisplayed": "This block cannot be displayed",
22
26
  "tools.header.heading1": "Heading 1",
@@ -29,6 +33,8 @@
29
33
  "tools.paragraph.placeholder": "Write something or press / to select a tool",
30
34
  "tools.table.title": "Table",
31
35
  "tools.table.clearSelection": "Clear",
36
+ "tools.table.copySelection": "Copy",
37
+ "tools.table.cellColor": "Color",
32
38
  "tools.table.headerColumn": "Header column",
33
39
  "tools.table.insertColumnLeft": "Insert Column Left",
34
40
  "tools.table.insertColumnRight": "Insert Column Right",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Enlace",
13
13
  "toolNames.bold": "Negrita",
14
14
  "toolNames.italic": "Cursiva",
15
+ "toolNames.marker": "Color",
15
16
  "toolNames.bulletedList": "Lista con viñetas",
16
17
  "toolNames.numberedList": "Lista numerada",
17
18
  "toolNames.todoList": "Lista de tareas",
18
19
  "tools.link.addLink": "Añadir enlace",
19
20
  "tools.link.invalidLink": "Enlace inválido",
21
+ "tools.marker.textColor": "Texto",
22
+ "tools.marker.background": "Fondo",
23
+ "tools.marker.default": "Predeterminado",
20
24
  "tools.stub.error": "Error",
21
25
  "tools.stub.blockCannotBeDisplayed": "No se puede mostrar este bloque",
22
26
  "tools.header.heading1": "Encabezado 1",
@@ -29,6 +33,8 @@
29
33
  "tools.paragraph.placeholder": "Escribe algo o pulsa / para seleccionar",
30
34
  "tools.table.title": "Tabla",
31
35
  "tools.table.clearSelection": "Borrar",
36
+ "tools.table.copySelection": "Copiar",
37
+ "tools.table.cellColor": "Color",
32
38
  "tools.table.headerColumn": "Columna de encabezado",
33
39
  "tools.table.insertColumnLeft": "Insertar columna a la izquierda",
34
40
  "tools.table.insertColumnRight": "Insertar columna a la derecha",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Link",
13
13
  "toolNames.bold": "Paks",
14
14
  "toolNames.italic": "Kursiiv",
15
+ "toolNames.marker": "Värv",
15
16
  "toolNames.bulletedList": "Täpploend",
16
17
  "toolNames.numberedList": "Nummerdatud loend",
17
18
  "toolNames.todoList": "Ülesannete loend",
18
19
  "tools.link.addLink": "Lisa link",
19
20
  "tools.link.invalidLink": "Vigane link",
21
+ "tools.marker.textColor": "Tekst",
22
+ "tools.marker.background": "Taust",
23
+ "tools.marker.default": "Vaikimisi",
20
24
  "tools.stub.error": "Viga",
21
25
  "tools.stub.blockCannotBeDisplayed": "Seda plokki ei saa kuvada",
22
26
  "tools.header.heading1": "Pealkiri 1",
@@ -29,6 +33,8 @@
29
33
  "tools.paragraph.placeholder": "Kirjuta midagi või vajuta / valimiseks",
30
34
  "tools.table.title": "Tabel",
31
35
  "tools.table.clearSelection": "Tühista",
36
+ "tools.table.copySelection": "Kopeeri",
37
+ "tools.table.cellColor": "Värv",
32
38
  "tools.table.headerColumn": "Päiseveerg",
33
39
  "tools.table.insertColumnLeft": "Lisa veerg vasakule",
34
40
  "tools.table.insertColumnRight": "Lisa veerg paremale",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "پیوند",
13
13
  "toolNames.bold": "درشت",
14
14
  "toolNames.italic": "کج",
15
+ "toolNames.marker": "رنگ",
15
16
  "toolNames.bulletedList": "لیست نقطه‌ای",
16
17
  "toolNames.numberedList": "لیست شماره‌دار",
17
18
  "toolNames.todoList": "لیست وظایف",
18
19
  "tools.link.addLink": "افزودن پیوند",
19
20
  "tools.link.invalidLink": "پیوند نامعتبر",
21
+ "tools.marker.textColor": "متن",
22
+ "tools.marker.background": "پس‌زمینه",
23
+ "tools.marker.default": "پیش‌فرض",
20
24
  "tools.stub.error": "خطا",
21
25
  "tools.stub.blockCannotBeDisplayed": "این بلوک قابل نمایش نیست",
22
26
  "tools.header.heading1": "عنوان ۱",
@@ -44,6 +48,8 @@
44
48
  "a11y.atBottom": "بلوک در پایین‌ترین موقعیت است",
45
49
  "tools.table.title": "جدول",
46
50
  "tools.table.clearSelection": "پاک کردن",
51
+ "tools.table.copySelection": "کپی",
52
+ "tools.table.cellColor": "رنگ",
47
53
  "tools.table.headerColumn": "ستون سرآیند",
48
54
  "tools.table.insertColumnLeft": "درج ستون چپ",
49
55
  "tools.table.insertColumnRight": "درج ستون راست",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Linkki",
13
13
  "toolNames.bold": "Lihavoitu",
14
14
  "toolNames.italic": "Kursiivi",
15
+ "toolNames.marker": "Väri",
15
16
  "toolNames.bulletedList": "Luettelomerkitty lista",
16
17
  "toolNames.numberedList": "Numeroitu lista",
17
18
  "toolNames.todoList": "Tehtävälista",
18
19
  "tools.link.addLink": "Lisää linkki",
19
20
  "tools.link.invalidLink": "Virheellinen linkki",
21
+ "tools.marker.textColor": "Teksti",
22
+ "tools.marker.background": "Tausta",
23
+ "tools.marker.default": "Oletus",
20
24
  "tools.stub.error": "Virhe",
21
25
  "tools.stub.blockCannotBeDisplayed": "Tätä lohkoa ei voida näyttää",
22
26
  "tools.header.heading1": "Otsikko 1",
@@ -44,6 +48,8 @@
44
48
  "a11y.atBottom": "Lohko on alimpana, ei voi siirtää alas",
45
49
  "tools.table.title": "Taulukko",
46
50
  "tools.table.clearSelection": "Tyhjennä",
51
+ "tools.table.copySelection": "Kopioi",
52
+ "tools.table.cellColor": "Väri",
47
53
  "tools.table.headerColumn": "Otsikkosarake",
48
54
  "tools.table.insertColumnLeft": "Lisää sarake vasemmalle",
49
55
  "tools.table.insertColumnRight": "Lisää sarake oikealle",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Link",
13
13
  "toolNames.bold": "Bold",
14
14
  "toolNames.italic": "Italic",
15
+ "toolNames.marker": "Kulay",
15
16
  "toolNames.bulletedList": "Listahang may bullet",
16
17
  "toolNames.numberedList": "Numeradong listahan",
17
18
  "toolNames.todoList": "Listahan ng gagawin",
18
19
  "tools.link.addLink": "Magdagdag ng link",
19
20
  "tools.link.invalidLink": "Maling link",
21
+ "tools.marker.textColor": "Teksto",
22
+ "tools.marker.background": "Background",
23
+ "tools.marker.default": "Default",
20
24
  "tools.stub.error": "Error",
21
25
  "tools.stub.blockCannotBeDisplayed": "Hindi maipakita ang block na ito",
22
26
  "tools.header.heading1": "Heading 1",
@@ -29,6 +33,8 @@
29
33
  "tools.paragraph.placeholder": "Sumulat ng kahit ano o pindutin ang / para pumili ng tool",
30
34
  "tools.table.title": "Talahanayan",
31
35
  "tools.table.clearSelection": "I-clear",
36
+ "tools.table.copySelection": "Kopyahin",
37
+ "tools.table.cellColor": "Kulay",
32
38
  "tools.table.headerColumn": "Header na kolum",
33
39
  "tools.table.insertColumnLeft": "Magsingit ng kolum sa kaliwa",
34
40
  "tools.table.insertColumnRight": "Magsingit ng kolum sa kanan",
@@ -12,11 +12,15 @@
12
12
  "toolNames.link": "Lien",
13
13
  "toolNames.bold": "Gras",
14
14
  "toolNames.italic": "Italique",
15
+ "toolNames.marker": "Couleur",
15
16
  "toolNames.bulletedList": "Liste à puces",
16
17
  "toolNames.numberedList": "Liste numérotée",
17
18
  "toolNames.todoList": "Liste de tâches",
18
19
  "tools.link.addLink": "Ajouter un lien",
19
20
  "tools.link.invalidLink": "Lien invalide",
21
+ "tools.marker.textColor": "Texte",
22
+ "tools.marker.background": "Arrière-plan",
23
+ "tools.marker.default": "Par défaut",
20
24
  "tools.stub.error": "Erreur",
21
25
  "tools.stub.blockCannotBeDisplayed": "Ce bloc ne peut pas être affiché",
22
26
  "tools.header.heading1": "Titre 1",
@@ -44,6 +48,8 @@
44
48
  "a11y.atBottom": "Impossible de descendre davantage",
45
49
  "tools.table.title": "Tableau",
46
50
  "tools.table.clearSelection": "Effacer",
51
+ "tools.table.copySelection": "Copier",
52
+ "tools.table.cellColor": "Couleur",
47
53
  "tools.table.headerColumn": "Colonne d'en-tête",
48
54
  "tools.table.insertColumnLeft": "Insérer colonne à gauche",
49
55
  "tools.table.insertColumnRight": "Insérer colonne à droite",