@jackuait/blok 0.10.0-beta.3 → 0.10.0-beta.5

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 (251) hide show
  1. package/dist/blok.mjs +2 -2
  2. package/dist/chunks/{blok-CrfCy6RQ.mjs → blok-DH-WEcA8.mjs} +2213 -2200
  3. package/dist/chunks/{constants-BzBmIAnT.mjs → constants-Ccno9NZS.mjs} +86 -64
  4. package/dist/chunks/{i18next-Ch0gVA3V.mjs → i18next-G6FKbZqA.mjs} +1 -1
  5. package/dist/chunks/{i18next-loader-BOlOKRt8.mjs → i18next-loader-CwNimni3.mjs} +2 -2
  6. package/dist/chunks/{lightweight-i18n-D1n0OClP.mjs → lightweight-i18n-DWCdzAw0.mjs} +17 -1
  7. package/dist/{messages-D7Wofcg3.mjs → chunks/messages-1Raf1IK82.mjs} +16 -0
  8. package/dist/chunks/{messages-Du6j7HqD2.mjs → messages-6mikOS4D2.mjs} +16 -0
  9. package/dist/{messages-CyQQ8g9w2.mjs → chunks/messages-B0ffBqzr.mjs} +16 -0
  10. package/dist/{messages-CfaiAQHW2.mjs → chunks/messages-B2pW6jO_.mjs} +16 -0
  11. package/dist/{messages-4kMr3vfK2.mjs → chunks/messages-B3s2vra72.mjs} +16 -0
  12. package/dist/{messages-CBWUNVHy.mjs → chunks/messages-B7MIRzCa2.mjs} +16 -0
  13. package/dist/chunks/{messages-0Nh_GHU02.mjs → messages-BPog17132.mjs} +16 -0
  14. package/dist/chunks/{messages-CbXL5f99.mjs → messages-BS1nOvZ-.mjs} +16 -0
  15. package/dist/{messages-BCIuVjwb.mjs → chunks/messages-BW_7lfqG2.mjs} +16 -0
  16. package/dist/chunks/{messages-naWwXCx3.mjs → messages-BaPZuLjN.mjs} +16 -0
  17. package/dist/chunks/{messages-DcrkPXXn.mjs → messages-BbdNugdi.mjs} +16 -0
  18. package/dist/{messages-CeyO7HXV.mjs → chunks/messages-BdnSVKOw.mjs} +16 -0
  19. package/dist/chunks/{messages-BORQKKT9.mjs → messages-BgVEGd4c.mjs} +16 -0
  20. package/dist/chunks/{messages-C1pm6RWX.mjs → messages-BgsPQXfP.mjs} +16 -0
  21. package/dist/chunks/{messages-CYZgPXFK.mjs → messages-BkCjgGxc.mjs} +16 -0
  22. package/dist/{messages-DB1-0FXB.mjs → chunks/messages-BnznaKEP2.mjs} +16 -0
  23. package/dist/{messages-CIpXgMRr2.mjs → chunks/messages-Bpda_3PM2.mjs} +16 -0
  24. package/dist/{messages-D2GHT83V2.mjs → chunks/messages-BrFl5773.mjs} +16 -0
  25. package/dist/chunks/{messages-BLD1DC722.mjs → messages-C-b6tPad2.mjs} +16 -0
  26. package/dist/chunks/{messages-LiSIeruD2.mjs → messages-C11byid72.mjs} +16 -0
  27. package/dist/chunks/{messages-IKrYzwFq.mjs → messages-C1OqT_nL.mjs} +16 -0
  28. package/dist/chunks/{messages-fitmpwb3.mjs → messages-Cdx4QMR1.mjs} +16 -0
  29. package/dist/{messages-CLB0caVL.mjs → chunks/messages-CgRvtOEY.mjs} +16 -0
  30. package/dist/{messages-BxcqzUx0.mjs → chunks/messages-ClRHDxzh.mjs} +16 -0
  31. package/dist/{messages-DwroI9YW.mjs → chunks/messages-CljStrYi.mjs} +16 -0
  32. package/dist/chunks/{messages-CR48wvl32.mjs → messages-CmXADeab2.mjs} +16 -0
  33. package/dist/{messages-BkZDaKu6.mjs → chunks/messages-CmrMwBv3.mjs} +16 -0
  34. package/dist/chunks/{messages-B7Vlzmgw.mjs → messages-CpzO7KRA.mjs} +16 -0
  35. package/dist/{messages-DwTwecgF2.mjs → chunks/messages-Cqc-6rfh2.mjs} +16 -0
  36. package/dist/chunks/{messages-BN_zp4oj.mjs → messages-CrMfiGu5.mjs} +16 -0
  37. package/dist/{messages-BRlbE8SE.mjs → chunks/messages-Cs9XBt4T.mjs} +16 -0
  38. package/dist/chunks/{messages-DDM4t-j8.mjs → messages-Csvm4mtA.mjs} +16 -0
  39. package/dist/chunks/{messages-CuHxfDvL2.mjs → messages-Ct7AMBS82.mjs} +16 -0
  40. package/dist/{messages-BjEY7_jw.mjs → chunks/messages-CvfKofOP.mjs} +16 -0
  41. package/dist/{messages-Du0fWeyE.mjs → chunks/messages-CyNsByCY.mjs} +16 -0
  42. package/dist/{messages-6Cq_jyNk2.mjs → chunks/messages-Czny5pPT2.mjs} +16 -0
  43. package/dist/{messages-CGqRnKaM.mjs → chunks/messages-D5IgUbBD2.mjs} +16 -0
  44. package/dist/{messages-uP6wmMOs.mjs → chunks/messages-DA7Zk-Cy.mjs} +16 -0
  45. package/dist/chunks/{messages-DJ9yyqUO2.mjs → messages-DAVsuDWh2.mjs} +16 -0
  46. package/dist/chunks/{messages-i9ThpxZk2.mjs → messages-DBpXyvRe2.mjs} +16 -0
  47. package/dist/chunks/{messages-CogKhvJL.mjs → messages-DC7TX-YT.mjs} +16 -0
  48. package/dist/{messages-C-KPP7bC.mjs → chunks/messages-DD7BI6BK.mjs} +16 -0
  49. package/dist/{messages-ZMa-zmIc.mjs → chunks/messages-DHCVA7XQ.mjs} +16 -0
  50. package/dist/chunks/{messages-BPQA3B862.mjs → messages-DJA6fb_P2.mjs} +16 -0
  51. package/dist/chunks/{messages-D9SfB6MI.mjs → messages-DJkIeapn.mjs} +16 -0
  52. package/dist/{messages-CZkwcbV12.mjs → chunks/messages-DPykxECP2.mjs} +16 -0
  53. package/dist/chunks/{messages-BQvBhQem.mjs → messages-DQ5AyNCU.mjs} +16 -0
  54. package/dist/chunks/{messages-rxlf-Ule.mjs → messages-DR09nkcZ.mjs} +16 -0
  55. package/dist/chunks/{messages-B1uFbxNg.mjs → messages-DSjXen8E.mjs} +16 -0
  56. package/dist/chunks/{messages-OFFQT8Fg.mjs → messages-DT7fRpCy.mjs} +16 -0
  57. package/dist/{messages-DnNNd3RW2.mjs → chunks/messages-DUDgFEEe2.mjs} +16 -0
  58. package/dist/chunks/{messages-7PIvzufT.mjs → messages-Df87zXXG.mjs} +16 -0
  59. package/dist/chunks/{messages-CvA7Fbqf.mjs → messages-Dfpi8pDY.mjs} +16 -0
  60. package/dist/{messages-CXlAjnEQ.mjs → chunks/messages-Dm4YVlrm.mjs} +16 -0
  61. package/dist/chunks/{messages-CuJLHCj5.mjs → messages-Dplnp19q.mjs} +16 -0
  62. package/dist/{messages-DEfeDBuV2.mjs → chunks/messages-FHrCEJmY2.mjs} +16 -0
  63. package/dist/chunks/{messages-nZP1GShd.mjs → messages-ID1PHnMv.mjs} +16 -0
  64. package/dist/{messages-BiK5fMYF2.mjs → chunks/messages-IDEUsFhQ2.mjs} +16 -0
  65. package/dist/{messages-C672uqt-.mjs → chunks/messages-JQKFJo7C.mjs} +16 -0
  66. package/dist/{messages-DVHWIOfr2.mjs → chunks/messages-LxumrNue2.mjs} +16 -0
  67. package/dist/chunks/{messages-By-gACFM2.mjs → messages-R2W_rGOo2.mjs} +16 -0
  68. package/dist/chunks/{messages-FEjIF48t.mjs → messages-ZJ0b1C3a.mjs} +16 -0
  69. package/dist/{messages-nosa-xnx2.mjs → chunks/messages-d0Ky6QjR.mjs} +16 -0
  70. package/dist/{messages-CHaVGY89.mjs → chunks/messages-p4byLfvR.mjs} +16 -0
  71. package/dist/{messages-D-bnq2qy.mjs → chunks/messages-u2yxkNTE2.mjs} +16 -0
  72. package/dist/{messages-axsznSTn2.mjs → chunks/messages-wLSVQbsA2.mjs} +16 -0
  73. package/dist/chunks/{messages-DiaQNuPV.mjs → messages-xfjdrZmx.mjs} +16 -0
  74. package/dist/chunks/{objectSpread2-CyPxu8-u.mjs → objectSpread2-BY4mgzrQ.mjs} +1 -1
  75. package/dist/chunks/{tools-B6tibTzs.mjs → tools-C2_IVsQY.mjs} +2868 -1082
  76. package/dist/full.mjs +11 -11
  77. package/dist/locales.mjs +83 -67
  78. package/dist/{messages-BfbYJ8Wk2.mjs → messages--S8_taOd2.mjs} +16 -0
  79. package/dist/{chunks/messages-CkWidbwX2.mjs → messages-B-4fku2H2.mjs} +16 -0
  80. package/dist/{chunks/messages-Dn1ZDZUy.mjs → messages-BAcH6PtT2.mjs} +16 -0
  81. package/dist/{chunks/messages-2nj1xBDo.mjs → messages-BBq0M604.mjs} +16 -0
  82. package/dist/{messages-Dzqb5lg6.mjs → messages-BBvDbp62.mjs} +16 -0
  83. package/dist/{messages-kuLrhtV2.mjs → messages-BCG_evLg.mjs} +16 -0
  84. package/dist/{messages-DEKkIgU6.mjs → messages-BCuTVHBV.mjs} +16 -0
  85. package/dist/{chunks/messages-CYZL_rhV2.mjs → messages-BGsDZTQp2.mjs} +16 -0
  86. package/dist/{chunks/messages-cMwiuDZM.mjs → messages-BJ7BuFZi.mjs} +16 -0
  87. package/dist/{chunks/messages-Dl16RBg1.mjs → messages-BKjqW08U.mjs} +16 -0
  88. package/dist/{messages-Daza4lOM.mjs → messages-BSe3QDnQ.mjs} +16 -0
  89. package/dist/{chunks/messages-CDV8VcSZ2.mjs → messages-BVKZK-3t.mjs} +16 -0
  90. package/dist/{messages-CcPrYMHE.mjs → messages-BXI3qIos.mjs} +16 -0
  91. package/dist/{messages-B_6S7hBj2.mjs → messages-BcFQFcJ92.mjs} +16 -0
  92. package/dist/{chunks/messages-CmSsyItg.mjs → messages-Bio7KYsr2.mjs} +16 -0
  93. package/dist/{chunks/messages-CqdYWY192.mjs → messages-Bk984gRE2.mjs} +16 -0
  94. package/dist/{chunks/messages-CQgP-Fo22.mjs → messages-BmNaAyKS.mjs} +16 -0
  95. package/dist/{messages-DbPt9d2U.mjs → messages-Bo_FUvVH.mjs} +16 -0
  96. package/dist/{chunks/messages-x6GyZWWT.mjs → messages-BokEflKa.mjs} +16 -0
  97. package/dist/{chunks/messages-C9qPNbrJ2.mjs → messages-BtxaN-xx.mjs} +16 -0
  98. package/dist/{messages-6edZhK922.mjs → messages-BvgTQLf72.mjs} +16 -0
  99. package/dist/{chunks/messages-BVl-X2wo2.mjs → messages-BvgXeMSL2.mjs} +16 -0
  100. package/dist/{messages-BBauvpFc.mjs → messages-BywbKcPC.mjs} +16 -0
  101. package/dist/{chunks/messages-D06U2QNl2.mjs → messages-C30Vz-UZ2.mjs} +16 -0
  102. package/dist/{messages-BwyQiBdm2.mjs → messages-C5XPUD9T2.mjs} +16 -0
  103. package/dist/{chunks/messages-BivhofAQ2.mjs → messages-C6OJvnJg2.mjs} +16 -0
  104. package/dist/{chunks/messages-D6ZvH6hX.mjs → messages-C6Y4Jv2N.mjs} +16 -0
  105. package/dist/{messages-DaFDdCrr.mjs → messages-CBdQ3XP9.mjs} +16 -0
  106. package/dist/{chunks/messages-KihEeXdr.mjs → messages-CBzd_x7H.mjs} +16 -0
  107. package/dist/{messages-CsVZUVra.mjs → messages-CHJ5SOZI.mjs} +16 -0
  108. package/dist/{messages-us2JotS-2.mjs → messages-CM5fsPo02.mjs} +16 -0
  109. package/dist/{chunks/messages-DjhgPQtb.mjs → messages-CVcQD-9u.mjs} +16 -0
  110. package/dist/{messages-BQi_l2vs.mjs → messages-CYX48nfg.mjs} +16 -0
  111. package/dist/{chunks/messages-BF8c-lMm.mjs → messages-Ccd587Yn.mjs} +16 -0
  112. package/dist/{chunks/messages-5WyxUYVR2.mjs → messages-CdlsTFB1.mjs} +16 -0
  113. package/dist/{messages-ke15helG2.mjs → messages-CgzbJ8_l2.mjs} +16 -0
  114. package/dist/{messages-D1-_eTfM.mjs → messages-CjmSrt1D.mjs} +16 -0
  115. package/dist/{chunks/messages-C7YpgZ9m.mjs → messages-CqkRG9mH.mjs} +16 -0
  116. package/dist/{messages-Dtw27ih4.mjs → messages-D3cAcyzj.mjs} +16 -0
  117. package/dist/{messages-CLN3oL77.mjs → messages-DA-o8X3A.mjs} +16 -0
  118. package/dist/{chunks/messages-BtZ8oQXS.mjs → messages-DD5pW0zJ.mjs} +16 -0
  119. package/dist/{chunks/messages-A3Z4jxwt2.mjs → messages-DIRha_gg2.mjs} +16 -0
  120. package/dist/{chunks/messages-rnd6qiJ12.mjs → messages-DJKLtW7u.mjs} +16 -0
  121. package/dist/{messages-h_VN1Kyo2.mjs → messages-DJT4Bt_02.mjs} +16 -0
  122. package/dist/{chunks/messages-D3hNTep_.mjs → messages-DOTJ2NvJ.mjs} +16 -0
  123. package/dist/{chunks/messages-B18MZnaY.mjs → messages-DUBHHfEt.mjs} +16 -0
  124. package/dist/{chunks/messages-92ma9RJD2.mjs → messages-DV9e1DW7.mjs} +16 -0
  125. package/dist/{chunks/messages-DQUUtL5v.mjs → messages-DVQNjdPk.mjs} +16 -0
  126. package/dist/{messages-DflAKRLd.mjs → messages-DZEcrbmH.mjs} +16 -0
  127. package/dist/{messages-BLjz6V7y2.mjs → messages-DbxbxUiK2.mjs} +16 -0
  128. package/dist/{messages-QkGAxuVC2.mjs → messages-Dcyrzdxa2.mjs} +16 -0
  129. package/dist/{chunks/messages-DBZ-uuAV.mjs → messages-Dddxv8-f2.mjs} +16 -0
  130. package/dist/{messages-DVILiJw52.mjs → messages-DjJQoYvP2.mjs} +16 -0
  131. package/dist/{messages-B-lXqB1z2.mjs → messages-Dkg99bfr2.mjs} +16 -0
  132. package/dist/{messages-CCBgCmyq.mjs → messages-DnatBKPm.mjs} +16 -0
  133. package/dist/{messages-Dn-khi3a.mjs → messages-DqyqEw1_.mjs} +16 -0
  134. package/dist/{chunks/messages-D4QXMtW52.mjs → messages-DtrSrdfE2.mjs} +16 -0
  135. package/dist/{messages-BHIdzfAS2.mjs → messages-JhoVMjfX2.mjs} +16 -0
  136. package/dist/{messages-YlWV9cSl.mjs → messages-eTourT12.mjs} +16 -0
  137. package/dist/{messages-DzlmoWqQ.mjs → messages-fLi0P2dP.mjs} +16 -0
  138. package/dist/{messages-C-v50b4r.mjs → messages-hTpeKUaW.mjs} +16 -0
  139. package/dist/{chunks/messages-16UmLAWZ2.mjs → messages-i4S6q64n2.mjs} +16 -0
  140. package/dist/{messages-DP9PhNTo.mjs → messages-pgPcitDH.mjs} +16 -0
  141. package/dist/{chunks/messages-D5iRrf9M.mjs → messages-tK67CBqn.mjs} +16 -0
  142. package/dist/{chunks/messages-BTyEo5Kb.mjs → messages-tsHpMdDT2.mjs} +16 -0
  143. package/dist/{chunks/messages-Ct_H_5cB2.mjs → messages-upqrRZQH2.mjs} +16 -0
  144. package/dist/{messages-CyZZ10br.mjs → messages-xEI8gEDK.mjs} +16 -0
  145. package/dist/react.mjs +3 -3
  146. package/dist/tools.mjs +3 -3
  147. package/dist/vendor.LICENSE.txt +136 -1
  148. package/package.json +2 -1
  149. package/src/components/block/style-manager.ts +1 -1
  150. package/src/components/i18n/locales/am/messages.json +16 -0
  151. package/src/components/i18n/locales/ar/messages.json +16 -0
  152. package/src/components/i18n/locales/az/messages.json +16 -0
  153. package/src/components/i18n/locales/bg/messages.json +16 -0
  154. package/src/components/i18n/locales/bn/messages.json +16 -0
  155. package/src/components/i18n/locales/bs/messages.json +16 -0
  156. package/src/components/i18n/locales/cs/messages.json +16 -0
  157. package/src/components/i18n/locales/da/messages.json +16 -0
  158. package/src/components/i18n/locales/de/messages.json +16 -0
  159. package/src/components/i18n/locales/dv/messages.json +16 -0
  160. package/src/components/i18n/locales/el/messages.json +16 -0
  161. package/src/components/i18n/locales/en/messages.json +16 -0
  162. package/src/components/i18n/locales/es/messages.json +16 -0
  163. package/src/components/i18n/locales/et/messages.json +16 -0
  164. package/src/components/i18n/locales/fa/messages.json +16 -0
  165. package/src/components/i18n/locales/fi/messages.json +16 -0
  166. package/src/components/i18n/locales/fil/messages.json +16 -0
  167. package/src/components/i18n/locales/fr/messages.json +16 -0
  168. package/src/components/i18n/locales/gu/messages.json +16 -0
  169. package/src/components/i18n/locales/he/messages.json +16 -0
  170. package/src/components/i18n/locales/hi/messages.json +16 -0
  171. package/src/components/i18n/locales/hr/messages.json +16 -0
  172. package/src/components/i18n/locales/hu/messages.json +16 -0
  173. package/src/components/i18n/locales/hy/messages.json +16 -0
  174. package/src/components/i18n/locales/id/messages.json +16 -0
  175. package/src/components/i18n/locales/it/messages.json +16 -0
  176. package/src/components/i18n/locales/ja/messages.json +16 -0
  177. package/src/components/i18n/locales/ka/messages.json +16 -0
  178. package/src/components/i18n/locales/km/messages.json +16 -0
  179. package/src/components/i18n/locales/kn/messages.json +16 -0
  180. package/src/components/i18n/locales/ko/messages.json +16 -0
  181. package/src/components/i18n/locales/ku/messages.json +16 -0
  182. package/src/components/i18n/locales/lo/messages.json +16 -0
  183. package/src/components/i18n/locales/lt/messages.json +16 -0
  184. package/src/components/i18n/locales/lv/messages.json +16 -0
  185. package/src/components/i18n/locales/mk/messages.json +16 -0
  186. package/src/components/i18n/locales/ml/messages.json +16 -0
  187. package/src/components/i18n/locales/mn/messages.json +16 -0
  188. package/src/components/i18n/locales/mr/messages.json +16 -0
  189. package/src/components/i18n/locales/ms/messages.json +16 -0
  190. package/src/components/i18n/locales/my/messages.json +16 -0
  191. package/src/components/i18n/locales/ne/messages.json +16 -0
  192. package/src/components/i18n/locales/nl/messages.json +16 -0
  193. package/src/components/i18n/locales/no/messages.json +16 -0
  194. package/src/components/i18n/locales/pa/messages.json +16 -0
  195. package/src/components/i18n/locales/pl/messages.json +16 -0
  196. package/src/components/i18n/locales/ps/messages.json +16 -0
  197. package/src/components/i18n/locales/pt/messages.json +16 -0
  198. package/src/components/i18n/locales/ro/messages.json +16 -0
  199. package/src/components/i18n/locales/ru/messages.json +16 -0
  200. package/src/components/i18n/locales/sd/messages.json +16 -0
  201. package/src/components/i18n/locales/si/messages.json +16 -0
  202. package/src/components/i18n/locales/sk/messages.json +16 -0
  203. package/src/components/i18n/locales/sl/messages.json +16 -0
  204. package/src/components/i18n/locales/sq/messages.json +16 -0
  205. package/src/components/i18n/locales/sr/messages.json +16 -0
  206. package/src/components/i18n/locales/sv/messages.json +16 -0
  207. package/src/components/i18n/locales/sw/messages.json +16 -0
  208. package/src/components/i18n/locales/ta/messages.json +16 -0
  209. package/src/components/i18n/locales/te/messages.json +16 -0
  210. package/src/components/i18n/locales/th/messages.json +16 -0
  211. package/src/components/i18n/locales/tr/messages.json +16 -0
  212. package/src/components/i18n/locales/ug/messages.json +16 -0
  213. package/src/components/i18n/locales/uk/messages.json +16 -0
  214. package/src/components/i18n/locales/ur/messages.json +16 -0
  215. package/src/components/i18n/locales/vi/messages.json +16 -0
  216. package/src/components/i18n/locales/yi/messages.json +16 -0
  217. package/src/components/i18n/locales/zh/messages.json +16 -0
  218. package/src/components/icons/index.ts +56 -0
  219. package/src/components/modules/api/tools.ts +19 -0
  220. package/src/components/modules/blockEvents/composers/keyboardNavigation.ts +5 -5
  221. package/src/components/modules/blockManager/blockManager.ts +11 -0
  222. package/src/components/modules/blockManager/event-binder.ts +12 -1
  223. package/src/components/modules/themeManager.ts +3 -1
  224. package/src/components/modules/toolbar/blockSettings.ts +0 -1
  225. package/src/components/modules/toolbar/inline/index.ts +0 -3
  226. package/src/components/modules/uiControllers/controllers/keyboard.ts +29 -0
  227. package/src/components/modules/uiControllers/controllers/selection.ts +14 -2
  228. package/src/components/ui/toolbox.ts +0 -1
  229. package/src/components/utils/popover/popover-position.ts +4 -2
  230. package/src/styles/main.css +1139 -0
  231. package/src/tools/callout/constants.ts +2 -1
  232. package/src/tools/database/database-backend-sync.ts +101 -0
  233. package/src/tools/database/database-board-view.ts +301 -0
  234. package/src/tools/database/database-card-drag.ts +306 -0
  235. package/src/tools/database/database-card-drawer.ts +546 -0
  236. package/src/tools/database/database-column-controls.ts +46 -0
  237. package/src/tools/database/database-column-drag.ts +262 -0
  238. package/src/tools/database/database-keyboard.ts +35 -0
  239. package/src/tools/database/database-list-row-drag.ts +245 -0
  240. package/src/tools/database/database-list-view.ts +333 -0
  241. package/src/tools/database/database-model.ts +246 -0
  242. package/src/tools/database/database-property-type-popover.ts +108 -0
  243. package/src/tools/database/database-tab-bar.ts +532 -0
  244. package/src/tools/database/database-view-popover.ts +109 -0
  245. package/src/tools/database/database-view-renderer.ts +25 -0
  246. package/src/tools/database/index.ts +948 -0
  247. package/src/tools/database/types.ts +144 -0
  248. package/src/tools/index.ts +2 -0
  249. package/types/api/tools.d.ts +18 -0
  250. package/types/index.d.ts +16 -0
  251. package/types/tools/database.d.ts +145 -0
@@ -18,6 +18,8 @@
18
18
  "toolNames.numberedList": "รายการแบบตัวเลข",
19
19
  "toolNames.todoList": "รายการสิ่งที่ต้องทำ",
20
20
  "toolNames.toggleList": "รายการพับได้",
21
+ "toolNames.board": "บอร์ด",
22
+ "toolNames.database": "ฐานข้อมูล",
21
23
  "tools.link.addLink": "เพิ่มลิงก์",
22
24
  "tools.link.invalidLink": "ลิงก์ไม่ถูกต้อง",
23
25
  "tools.marker.textColor": "ข้อความ",
@@ -141,6 +143,20 @@
141
143
  "tools.callout.emojiCategoryObjects": "วัตถุ",
142
144
  "tools.callout.emojiCategorySymbols": "สัญลักษณ์",
143
145
  "tools.callout.emojiCategoryFlags": "ธง",
146
+ "tools.database.addCard": "เพิ่มการ์ด",
147
+ "tools.database.newPage": "หน้าใหม่",
148
+ "tools.database.addColumn": "เพิ่มคอลัมน์",
149
+ "tools.database.cardTitlePlaceholder": "หน้าเปล่า",
150
+ "tools.database.columnTitlePlaceholder": "คอลัมน์",
151
+ "tools.database.deleteCard": "ลบการ์ด",
152
+ "tools.database.deleteColumn": "ลบคอลัมน์",
153
+ "tools.database.emptyColumn": "ไม่มีการ์ด",
154
+ "tools.database.rowTitlePlaceholder": "หน้าเปล่า",
155
+ "tools.database.addRow": "เพิ่มแถว",
156
+ "tools.database.newRow": "แถวใหม่",
157
+ "tools.database.openRow": "เปิดแถว",
158
+ "tools.database.deleteRow": "ลบแถว",
159
+ "tools.database.renameColumn": "เปลี่ยนชื่อคอลัมน์",
144
160
  "tools.callout.color": "สี",
145
161
  "tools.callout.colorDefault": "ค่าเริ่มต้น",
146
162
  "tools.callout.colorGray": "สีเทา",
@@ -18,6 +18,8 @@
18
18
  "toolNames.numberedList": "Numaralı liste",
19
19
  "toolNames.todoList": "Yapılacaklar listesi",
20
20
  "toolNames.toggleList": "Açılır liste",
21
+ "toolNames.board": "Pano",
22
+ "toolNames.database": "Veritabanı",
21
23
  "tools.link.addLink": "Bağlantı ekle",
22
24
  "tools.link.invalidLink": "Geçersiz bağlantı",
23
25
  "tools.marker.textColor": "Metin",
@@ -141,6 +143,20 @@
141
143
  "tools.callout.emojiCategoryObjects": "Nesneler",
142
144
  "tools.callout.emojiCategorySymbols": "Semboller",
143
145
  "tools.callout.emojiCategoryFlags": "Bayraklar",
146
+ "tools.database.addCard": "Kart ekle",
147
+ "tools.database.newPage": "Yeni sayfa",
148
+ "tools.database.addColumn": "Sütun ekle",
149
+ "tools.database.cardTitlePlaceholder": "Boş sayfa",
150
+ "tools.database.columnTitlePlaceholder": "Sütun",
151
+ "tools.database.deleteCard": "Kartı sil",
152
+ "tools.database.deleteColumn": "Sütunu sil",
153
+ "tools.database.emptyColumn": "Kart yok",
154
+ "tools.database.rowTitlePlaceholder": "Boş sayfa",
155
+ "tools.database.addRow": "Satır ekle",
156
+ "tools.database.newRow": "Yeni satır",
157
+ "tools.database.openRow": "Satırı aç",
158
+ "tools.database.deleteRow": "Satırı sil",
159
+ "tools.database.renameColumn": "Sütunu yeniden adlandır",
144
160
  "tools.callout.color": "Renk",
145
161
  "tools.callout.colorDefault": "Varsayılan",
146
162
  "tools.callout.colorGray": "Gri",
@@ -18,6 +18,8 @@
18
18
  "toolNames.numberedList": "نومۇرلۇق تىزىملىك",
19
19
  "toolNames.todoList": "ۋەزىپە تىزىملىكى",
20
20
  "toolNames.toggleList": "يىغىلما تىزىملىك",
21
+ "toolNames.board": "تاختا",
22
+ "toolNames.database": "سانداق",
21
23
  "tools.link.addLink": "ئۇلانما قوشۇش",
22
24
  "tools.link.invalidLink": "ئىناۋەتسىز ئۇلانما",
23
25
  "tools.marker.textColor": "تېكىست",
@@ -141,6 +143,20 @@
141
143
  "tools.callout.emojiCategoryObjects": "نەرسىلەر",
142
144
  "tools.callout.emojiCategorySymbols": "بەلگىلەر",
143
145
  "tools.callout.emojiCategoryFlags": "بايراقلار",
146
+ "tools.database.addCard": "كارتا قوشۇش",
147
+ "tools.database.newPage": "يېڭى بەت",
148
+ "tools.database.addColumn": "ئىستون قوشۇش",
149
+ "tools.database.cardTitlePlaceholder": "بوش بەت",
150
+ "tools.database.columnTitlePlaceholder": "ئىستون",
151
+ "tools.database.deleteCard": "كارتىنى ئۆچۈرۈش",
152
+ "tools.database.deleteColumn": "ئىستوننى ئۆچۈرۈش",
153
+ "tools.database.emptyColumn": "كارتا يوق",
154
+ "tools.database.rowTitlePlaceholder": "بوش بەت",
155
+ "tools.database.addRow": "قۇر قوشۇش",
156
+ "tools.database.newRow": "يېڭى قۇر",
157
+ "tools.database.openRow": "قۇرنى ئېچىش",
158
+ "tools.database.deleteRow": "قۇرنى ئۆچۈرۈش",
159
+ "tools.database.renameColumn": "ئىستون نامىنى ئۆزگەرتىش",
144
160
  "tools.callout.color": "رەڭ",
145
161
  "tools.callout.colorDefault": "سۈكۈتتىكى",
146
162
  "tools.callout.colorGray": "كۈلرەڭ",
@@ -18,6 +18,8 @@
18
18
  "toolNames.numberedList": "Нумерований список",
19
19
  "toolNames.todoList": "Список справ",
20
20
  "toolNames.toggleList": "Згортний список",
21
+ "toolNames.board": "Дошка",
22
+ "toolNames.database": "База даних",
21
23
  "tools.link.addLink": "Додати посилання",
22
24
  "tools.link.invalidLink": "Недійсне посилання",
23
25
  "tools.marker.textColor": "Текст",
@@ -141,6 +143,20 @@
141
143
  "tools.callout.emojiCategoryObjects": "Об'єкти",
142
144
  "tools.callout.emojiCategorySymbols": "Символи",
143
145
  "tools.callout.emojiCategoryFlags": "Прапори",
146
+ "tools.database.addCard": "Додати картку",
147
+ "tools.database.newPage": "Нова сторінка",
148
+ "tools.database.addColumn": "Додати стовпець",
149
+ "tools.database.cardTitlePlaceholder": "Порожня сторінка",
150
+ "tools.database.columnTitlePlaceholder": "Стовпець",
151
+ "tools.database.deleteCard": "Видалити картку",
152
+ "tools.database.deleteColumn": "Видалити стовпець",
153
+ "tools.database.emptyColumn": "Немає карток",
154
+ "tools.database.rowTitlePlaceholder": "Порожня сторінка",
155
+ "tools.database.addRow": "Додати рядок",
156
+ "tools.database.newRow": "Новий рядок",
157
+ "tools.database.openRow": "Відкрити рядок",
158
+ "tools.database.deleteRow": "Видалити рядок",
159
+ "tools.database.renameColumn": "Перейменувати стовпець",
144
160
  "tools.callout.color": "Колір",
145
161
  "tools.callout.colorDefault": "за замовчуванням",
146
162
  "tools.callout.colorGray": "Сірий",
@@ -18,6 +18,8 @@
18
18
  "toolNames.numberedList": "نمبر فہرست",
19
19
  "toolNames.todoList": "کام کی فہرست",
20
20
  "toolNames.toggleList": "ٹوگل فہرست",
21
+ "toolNames.board": "بورڈ",
22
+ "toolNames.database": "ڈیٹابیس",
21
23
  "tools.link.addLink": "لنک شامل کریں",
22
24
  "tools.link.invalidLink": "غلط لنک",
23
25
  "tools.marker.textColor": "متن",
@@ -141,6 +143,20 @@
141
143
  "tools.callout.emojiCategoryObjects": "اشیاء",
142
144
  "tools.callout.emojiCategorySymbols": "علامات",
143
145
  "tools.callout.emojiCategoryFlags": "جھنڈے",
146
+ "tools.database.addCard": "کارڈ شامل کریں",
147
+ "tools.database.newPage": "نیا صفحہ",
148
+ "tools.database.addColumn": "کالم شامل کریں",
149
+ "tools.database.cardTitlePlaceholder": "خالی صفحہ",
150
+ "tools.database.columnTitlePlaceholder": "کالم",
151
+ "tools.database.deleteCard": "کارڈ حذف کریں",
152
+ "tools.database.deleteColumn": "کالم حذف کریں",
153
+ "tools.database.emptyColumn": "کوئی کارڈ نہیں",
154
+ "tools.database.rowTitlePlaceholder": "خالی صفحہ",
155
+ "tools.database.addRow": "قطار شامل کریں",
156
+ "tools.database.newRow": "نئی قطار",
157
+ "tools.database.openRow": "قطار کھولیں",
158
+ "tools.database.deleteRow": "قطار حذف کریں",
159
+ "tools.database.renameColumn": "کالم کا نام بدلیں",
144
160
  "tools.callout.color": "رنگ",
145
161
  "tools.callout.colorDefault": "طے شدہ",
146
162
  "tools.callout.colorGray": "سرمئی",
@@ -18,6 +18,8 @@
18
18
  "toolNames.numberedList": "Danh sách đánh số",
19
19
  "toolNames.todoList": "Danh sách việc cần làm",
20
20
  "toolNames.toggleList": "Danh sách thu gọn",
21
+ "toolNames.board": "Bảng",
22
+ "toolNames.database": "Cơ sở dữ liệu",
21
23
  "tools.link.addLink": "Thêm liên kết",
22
24
  "tools.link.invalidLink": "Liên kết không hợp lệ",
23
25
  "tools.marker.textColor": "Chữ",
@@ -141,6 +143,20 @@
141
143
  "tools.callout.emojiCategoryObjects": "Đồ vật",
142
144
  "tools.callout.emojiCategorySymbols": "Biểu tượng",
143
145
  "tools.callout.emojiCategoryFlags": "Cờ",
146
+ "tools.database.addCard": "Thêm thẻ",
147
+ "tools.database.newPage": "Trang mới",
148
+ "tools.database.addColumn": "Thêm cột",
149
+ "tools.database.cardTitlePlaceholder": "Trang trống",
150
+ "tools.database.columnTitlePlaceholder": "Cột",
151
+ "tools.database.deleteCard": "Xóa thẻ",
152
+ "tools.database.deleteColumn": "Xóa cột",
153
+ "tools.database.emptyColumn": "Không có thẻ",
154
+ "tools.database.rowTitlePlaceholder": "Trang trống",
155
+ "tools.database.addRow": "Thêm hàng",
156
+ "tools.database.newRow": "Hàng mới",
157
+ "tools.database.openRow": "Mở hàng",
158
+ "tools.database.deleteRow": "Xóa hàng",
159
+ "tools.database.renameColumn": "Đổi tên cột",
144
160
  "tools.callout.color": "Màu",
145
161
  "tools.callout.colorDefault": "Mặc định",
146
162
  "tools.callout.colorGray": "Xám",
@@ -18,6 +18,8 @@
18
18
  "toolNames.numberedList": "נומעריקע ליסטע",
19
19
  "toolNames.todoList": "צו-טאָן ליסטע",
20
20
  "toolNames.toggleList": "אויפֿקלאַפּ ליסטע",
21
+ "toolNames.board": "טאָוול",
22
+ "toolNames.database": "דאַטאַבאַנק",
21
23
  "tools.link.addLink": "צולייגן לינק",
22
24
  "tools.link.invalidLink": "אומגילטיקער לינק",
23
25
  "tools.marker.textColor": "טעקסט",
@@ -141,6 +143,20 @@
141
143
  "tools.callout.emojiCategoryObjects": "זאַכן",
142
144
  "tools.callout.emojiCategorySymbols": "סימבאָלן",
143
145
  "tools.callout.emojiCategoryFlags": "פֿאָנען",
146
+ "tools.database.addCard": "צוגעבן קאַרטל",
147
+ "tools.database.newPage": "נייע בלאט",
148
+ "tools.database.addColumn": "צוגעבן שפּאַלט",
149
+ "tools.database.cardTitlePlaceholder": "ליידיק בלאַט",
150
+ "tools.database.columnTitlePlaceholder": "שפּאַלט",
151
+ "tools.database.deleteCard": "אויסמעקן קאַרטל",
152
+ "tools.database.deleteColumn": "אויסמעקן שפּאַלט",
153
+ "tools.database.emptyColumn": "קיין קארטן",
154
+ "tools.database.rowTitlePlaceholder": "ליידיק בלאַט",
155
+ "tools.database.addRow": "צוגעבן שורה",
156
+ "tools.database.newRow": "נייע שורה",
157
+ "tools.database.openRow": "עפֿענען שורה",
158
+ "tools.database.deleteRow": "אויסמעקן שורה",
159
+ "tools.database.renameColumn": "באַנענען שפּאַלט",
144
160
  "tools.callout.color": "קאָליר",
145
161
  "tools.callout.colorDefault": "שטאַנדאַרד",
146
162
  "tools.callout.colorGray": "גרוי",
@@ -18,6 +18,8 @@
18
18
  "toolNames.numberedList": "有序列表",
19
19
  "toolNames.todoList": "清单",
20
20
  "toolNames.toggleList": "折叠列表",
21
+ "toolNames.board": "看板",
22
+ "toolNames.database": "数据库",
21
23
  "tools.link.addLink": "添加链接",
22
24
  "tools.link.invalidLink": "链接无效",
23
25
  "tools.marker.textColor": "文字",
@@ -141,6 +143,20 @@
141
143
  "tools.callout.emojiCategoryObjects": "物品",
142
144
  "tools.callout.emojiCategorySymbols": "符号",
143
145
  "tools.callout.emojiCategoryFlags": "旗帜",
146
+ "tools.database.addCard": "添加卡片",
147
+ "tools.database.newPage": "新页面",
148
+ "tools.database.addColumn": "添加列",
149
+ "tools.database.cardTitlePlaceholder": "空白页面",
150
+ "tools.database.columnTitlePlaceholder": "列",
151
+ "tools.database.deleteCard": "删除卡片",
152
+ "tools.database.deleteColumn": "删除列",
153
+ "tools.database.emptyColumn": "没有卡片",
154
+ "tools.database.rowTitlePlaceholder": "空白页面",
155
+ "tools.database.addRow": "添加行",
156
+ "tools.database.newRow": "新行",
157
+ "tools.database.openRow": "打开行",
158
+ "tools.database.deleteRow": "删除行",
159
+ "tools.database.renameColumn": "重命名列",
144
160
  "tools.callout.color": "颜色",
145
161
  "tools.callout.colorDefault": "默认",
146
162
  "tools.callout.colorGray": "灰色",
@@ -370,6 +370,13 @@ export const IconCopy = `
370
370
  </svg>
371
371
  `;
372
372
 
373
+ // Pencil/Rename icon
374
+ export const IconPencil = `
375
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
376
+ <path d="M12.5 5.5l2 2M4.5 13.5l8-8 2 2-8 8H4.5v-2z" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
377
+ </svg>
378
+ `;
379
+
373
380
  // Trash/Delete icon
374
381
  export const IconTrash = `
375
382
  <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -547,3 +554,52 @@ export const IconEmojiFlag = `
547
554
  <path d="M5 3c2 0 3 1.5 5 1.5S14 3 16 3v8c-2 0-3 1.5-5 1.5S7 11 5 11" stroke="currentColor" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
548
555
  </svg>
549
556
  `;
557
+
558
+ export const IconDatabase = `
559
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
560
+ <ellipse cx="10" cy="5.5" rx="6" ry="2.5" stroke="currentColor" stroke-width="1.25"/>
561
+ <path d="M4 5.5v4c0 1.38 2.69 2.5 6 2.5s6-1.12 6-2.5v-4" stroke="currentColor" stroke-width="1.25"/>
562
+ <path d="M4 9.5v4c0 1.38 2.69 2.5 6 2.5s6-1.12 6-2.5v-4" stroke="currentColor" stroke-width="1.25"/>
563
+ </svg>
564
+ `;
565
+
566
+ export const IconBoard = `
567
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
568
+ <rect x="3" y="4" width="14" height="12" rx="1.5" stroke="currentColor" stroke-width="1.25"/>
569
+ <path d="M7.5 4v12M12.5 4v12" stroke="currentColor" stroke-width="1.25"/>
570
+ <rect x="4.5" y="6" width="1.5" height="2" rx="0.5" fill="currentColor"/>
571
+ <rect x="4.5" y="9" width="1.5" height="2" rx="0.5" fill="currentColor"/>
572
+ <rect x="9" y="6" width="1.5" height="2" rx="0.5" fill="currentColor"/>
573
+ <rect x="14" y="6" width="1.5" height="2" rx="0.5" fill="currentColor"/>
574
+ </svg>
575
+ `;
576
+
577
+ export const IconGallery = `
578
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
579
+ <rect x="3" y="4" width="6" height="5" rx="1" stroke="currentColor" stroke-width="1.25"/>
580
+ <rect x="11" y="4" width="6" height="5" rx="1" stroke="currentColor" stroke-width="1.25"/>
581
+ <rect x="3" y="11" width="6" height="5" rx="1" stroke="currentColor" stroke-width="1.25"/>
582
+ <rect x="11" y="11" width="6" height="5" rx="1" stroke="currentColor" stroke-width="1.25"/>
583
+ </svg>
584
+ `;
585
+
586
+ export const IconList = `
587
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
588
+ <circle cx="4.5" cy="6.5" r="1" fill="currentColor"/>
589
+ <circle cx="4.5" cy="10" r="1" fill="currentColor"/>
590
+ <circle cx="4.5" cy="13.5" r="1" fill="currentColor"/>
591
+ <path d="M7.5 6.5h9M7.5 10h9M7.5 13.5h9" stroke="currentColor" stroke-width="1.25" stroke-linecap="round"/>
592
+ </svg>
593
+ `;
594
+
595
+ // Calendar icon (date property type)
596
+ export const IconCalendar = `
597
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
598
+ <rect x="3" y="4.5" width="14" height="12" rx="1.5" stroke="currentColor" stroke-width="1.25"/>
599
+ <path d="M3 8.5h14" stroke="currentColor" stroke-width="1.25" stroke-linecap="round"/>
600
+ <path d="M7 3v3M13 3v3" stroke="currentColor" stroke-width="1.25" stroke-linecap="round"/>
601
+ <circle cx="7" cy="12" r="1" fill="currentColor"/>
602
+ <circle cx="10" cy="12" r="1" fill="currentColor"/>
603
+ <circle cx="13" cy="12" r="1" fill="currentColor"/>
604
+ </svg>
605
+ `;
@@ -11,6 +11,25 @@ export class ToolsAPI extends Module {
11
11
  public get methods(): ToolsAPIInterface {
12
12
  return {
13
13
  getBlockTools: () => Array.from(this.Blok.Tools.blockTools.values()),
14
+ getToolsConfig: () => {
15
+ const result: ReturnType<ToolsAPIInterface['getToolsConfig']> = {
16
+ tools: this.config.tools,
17
+ };
18
+
19
+ if (this.config.inlineToolbar !== undefined) {
20
+ result.inlineToolbar = this.config.inlineToolbar;
21
+ }
22
+
23
+ if (this.config.tunes !== undefined) {
24
+ result.tunes = this.config.tunes;
25
+ }
26
+
27
+ if (this.config.theme !== undefined) {
28
+ result.theme = this.config.theme;
29
+ }
30
+
31
+ return result;
32
+ },
14
33
  };
15
34
  }
16
35
  }
@@ -91,14 +91,14 @@ export class KeyboardNavigation extends BlockEventComposer {
91
91
  return;
92
92
  }
93
93
 
94
- const isNavigated = event.shiftKey ? Caret.navigatePrevious(true) : Caret.navigateNext(true);
94
+ event.shiftKey ? Caret.navigatePrevious(true) : Caret.navigateNext(true);
95
95
 
96
96
  /**
97
- * If we have next Block/input to focus, then focus it. Otherwise, leave native Tab behaviour
97
+ * Always prevent default Tab behaviour to keep focus inside the editor.
98
+ * Without this, pressing Tab on the last block of a nested editor (e.g. a
99
+ * database card drawer) lets the browser move focus out of the editor entirely.
98
100
  */
99
- if (isNavigated) {
100
- event.preventDefault();
101
- }
101
+ event.preventDefault();
102
102
  }
103
103
 
104
104
  /**
@@ -300,6 +300,17 @@ export class BlockManager extends Module {
300
300
  eventsDispatcher: this.eventsDispatcher,
301
301
  getBlockIndex: (block) => this.repository.getBlockIndex(block),
302
302
  onBlockMutated: this.blockDidMutated.bind(this),
303
+ shouldHandleEvent: (event: Event) => {
304
+ const target = event.target;
305
+
306
+ if (target instanceof Element) {
307
+ const closestEditor = target.closest('[data-blok-testid="blok-editor"]');
308
+
309
+ return closestEditor === null || closestEditor === this.Blok.UI.nodes.wrapper;
310
+ }
311
+
312
+ return true;
313
+ },
303
314
  });
304
315
 
305
316
  // Initialize factory
@@ -51,6 +51,8 @@ export interface BlockEventBinderDependencies {
51
51
  getBlockIndex: (block: Block) => number;
52
52
  /** Callback when block is mutated */
53
53
  onBlockMutated: BlockMutationCallback;
54
+ /** Check if an event should be handled by this editor instance */
55
+ shouldHandleEvent?: (event: Event) => boolean;
54
56
  }
55
57
 
56
58
  /**
@@ -76,22 +78,31 @@ export class BlockEventBinder {
76
78
  * @param block - Block to bind events to
77
79
  */
78
80
  public bindBlockEvents(block: Block): void {
79
- const { blockEvents, listeners, onBlockMutated, getBlockIndex } = this.dependencies;
81
+ const { blockEvents, listeners, onBlockMutated, getBlockIndex, shouldHandleEvent } = this.dependencies;
80
82
 
81
83
  listeners.on(block.holder, 'keydown', (event: Event) => {
82
84
  if (event instanceof KeyboardEvent) {
85
+ if (shouldHandleEvent && !shouldHandleEvent(event)) {
86
+ return;
87
+ }
83
88
  blockEvents.keydown(event);
84
89
  }
85
90
  });
86
91
 
87
92
  listeners.on(block.holder, 'keyup', (event: Event) => {
88
93
  if (event instanceof KeyboardEvent) {
94
+ if (shouldHandleEvent && !shouldHandleEvent(event)) {
95
+ return;
96
+ }
89
97
  blockEvents.keyup(event);
90
98
  }
91
99
  });
92
100
 
93
101
  listeners.on(block.holder, 'input', (event: Event) => {
94
102
  if (event instanceof InputEvent) {
103
+ if (shouldHandleEvent && !shouldHandleEvent(event)) {
104
+ return;
105
+ }
95
106
  blockEvents.input(event);
96
107
  }
97
108
  });
@@ -108,7 +108,9 @@ export class ThemeManager extends Module {
108
108
  }
109
109
 
110
110
  if (this.mode === 'auto') {
111
- this.removeAttribute();
111
+ if (state.activeInstances <= 1) {
112
+ this.removeAttribute();
113
+ }
112
114
  } else {
113
115
  document.documentElement.setAttribute(ATTR, this.mode);
114
116
  }
@@ -191,7 +191,6 @@ export class BlockSettings extends Module<BlockSettingsNodes> {
191
191
  searchable: true,
192
192
  trigger: trigger || this.nodes.wrapper,
193
193
  items: await this.getTunesItems(block, commonTunes, toolTunes),
194
- scopeElement: this.Blok.API.methods.ui.nodes.redactor,
195
194
  messages: {
196
195
  nothingFound: this.Blok.I18n.t('popover.nothingFound'),
197
196
  search: this.Blok.I18n.t('popover.search'),
@@ -330,11 +330,8 @@ export class InlineToolbar extends Module<InlineToolbarNodes> {
330
330
  const popoverItems = await this.buildPopoverItems();
331
331
 
332
332
  // Create popover
333
- const scopeElement = this.Blok.API?.methods?.ui?.nodes?.redactor ?? this.Blok.UI.nodes.redactor;
334
-
335
333
  this.popover = new PopoverInline({
336
334
  items: popoverItems,
337
- scopeElement,
338
335
  messages: {
339
336
  nothingFound: this.Blok.I18n.t('popover.nothingFound'),
340
337
  search: this.Blok.I18n.t('popover.search'),
@@ -78,6 +78,21 @@ export class KeyboardController extends Controller {
78
78
  return;
79
79
  }
80
80
 
81
+ const target = event.target;
82
+
83
+ if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {
84
+ return;
85
+ }
86
+
87
+ // Skip events from nested editors
88
+ if (target instanceof Element) {
89
+ const closestEditor = target.closest('[data-blok-testid="blok-editor"]');
90
+
91
+ if (closestEditor !== null && closestEditor !== this.Blok.UI.nodes.wrapper) {
92
+ return;
93
+ }
94
+ }
95
+
81
96
  if (KEYS_REQUIRING_CARET_CAPTURE.has(event.key)) {
82
97
  this.Blok.YjsManager.markCaretBeforeChange();
83
98
  }
@@ -89,6 +104,20 @@ export class KeyboardController extends Controller {
89
104
  * @param event - keyboard event
90
105
  */
91
106
  private handleKeydown(event: KeyboardEvent): void {
107
+ const target = event.target;
108
+
109
+ if (target instanceof HTMLInputElement || target instanceof HTMLTextAreaElement) {
110
+ return;
111
+ }
112
+
113
+ if (target instanceof Element) {
114
+ const closestEditor = target.closest('[data-blok-testid="blok-editor"]');
115
+
116
+ if (closestEditor !== null && closestEditor !== this.Blok.UI.nodes.wrapper) {
117
+ return;
118
+ }
119
+ }
120
+
92
121
  const key = event.key ?? '';
93
122
 
94
123
  switch (key) {
@@ -167,10 +167,22 @@ export class SelectionController extends Controller {
167
167
  * @returns true if current block should be updated
168
168
  */
169
169
  private shouldUpdateCurrentBlock(): boolean {
170
+ const focusedElement = Selection.anchorElement;
171
+
172
+ if (!focusedElement || !this.wrapperElement) {
173
+ return false;
174
+ }
175
+
170
176
  /**
171
- * Always update current block when focus moves to a different block.
172
- * This handles Tab key navigation, programmatic focus, and accessibility tools.
177
+ * Skip updating current block when focus is inside a nested editor instance.
178
+ * The closest editor wrapper must match this instance's wrapper.
173
179
  */
180
+ const closestEditor = focusedElement.closest('[data-blok-testid="blok-editor"]');
181
+
182
+ if (closestEditor !== null && closestEditor !== this.wrapperElement) {
183
+ return false;
184
+ }
185
+
174
186
  return true;
175
187
  }
176
188
  }
@@ -411,7 +411,6 @@ export class Toolbox extends EventsDispatcher<ToolboxEventMap> {
411
411
  const PopoverClass = isMobileScreen() ? PopoverMobile : PopoverDesktop;
412
412
 
413
413
  this.popover = new PopoverClass({
414
- scopeElement: this.api.ui.nodes.redactor,
415
414
  trigger: this.triggerElement || this.nodes.toolbox,
416
415
  leftAlignElement: this.leftAlignElement,
417
416
  messages: {
@@ -32,7 +32,9 @@ export interface ResolvedPosition {
32
32
 
33
33
  /**
34
34
  * Determines whether the popover should flip to the alternate side.
35
- * Returns true when the popover doesn't fit on the preferred side and the alternate side has more (or equal) space.
35
+ * Returns true only when the popover fits on the alternate side but not the preferred side.
36
+ * When neither side fits, stays on the preferred side so the popover remains adjacent
37
+ * to the anchor instead of getting clamped to a distant boundary edge.
36
38
  */
37
39
  function shouldFlip(popoverDimension: number, spaceOnPreferred: number, spaceOnAlternate: number): boolean {
38
40
  if (popoverDimension <= spaceOnPreferred) {
@@ -43,7 +45,7 @@ function shouldFlip(popoverDimension: number, spaceOnPreferred: number, spaceOnA
43
45
  return true;
44
46
  }
45
47
 
46
- return spaceOnAlternate > spaceOnPreferred;
48
+ return false;
47
49
  }
48
50
 
49
51
  /**