@jackuait/blok 0.19.2 → 0.21.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 (307) hide show
  1. package/dist/blok.cjs +1 -1
  2. package/dist/blok.iife.js +4 -4
  3. package/dist/blok.mjs +2 -2
  4. package/dist/blok.umd.js +41 -41
  5. package/dist/chunks/{blok-C8_pY9Bg.cjs → blok-Cz71HTuP.cjs} +13 -13
  6. package/dist/chunks/{blok-DCc23rzA.mjs → blok-x8D2aON2.mjs} +2645 -2116
  7. package/dist/chunks/constants-BK6kLyZB.cjs +606 -0
  8. package/dist/chunks/{constants-C3-Lh6Fs.mjs → constants-CLzXh7Tb.mjs} +392 -267
  9. package/dist/chunks/{i18next-loader-BBPMegxc.cjs → i18next-loader-DVakgVCy.cjs} +1 -1
  10. package/dist/chunks/{i18next-loader-K-ir8UKk.mjs → i18next-loader-DfIonnVO.mjs} +1 -1
  11. package/dist/chunks/{lightweight-i18n-LFW8S8u-.cjs → lightweight-i18n-BnIqQ5Cf.cjs} +1 -1
  12. package/dist/chunks/{lightweight-i18n-DJpMke7a.mjs → lightweight-i18n-Cj88c8gl.mjs} +15 -0
  13. package/dist/chunks/{messages-Bb80Csl3.mjs → messages-0EAci1N0.mjs} +15 -0
  14. package/dist/chunks/{messages-BkgBVEiE.cjs → messages-1jzEPeW5.cjs} +1 -1
  15. package/dist/chunks/{messages-CATH_uz1.mjs → messages-4CqVAaCY.mjs} +16 -1
  16. package/dist/chunks/{messages-DFHNw6PQ.cjs → messages-4Qka94cm.cjs} +1 -1
  17. package/dist/chunks/{messages-CBbgEXuO.cjs → messages-7wDDggws.cjs} +1 -1
  18. package/dist/chunks/{messages-B7st3eF_.cjs → messages-9VzB9Djh.cjs} +1 -1
  19. package/dist/chunks/{messages-B_cHWyWC.cjs → messages-9bK437Rh.cjs} +1 -1
  20. package/dist/chunks/{messages-CZddldga.cjs → messages-AtTKtjsQ.cjs} +1 -1
  21. package/dist/chunks/{messages-HJnG9r2l.mjs → messages-B1inw201.mjs} +16 -1
  22. package/dist/chunks/{messages-B-u5B7tY.cjs → messages-B4ZVgIh5.cjs} +1 -1
  23. package/dist/chunks/{messages-CJFSq8Fl.cjs → messages-B5bSFRCa.cjs} +1 -1
  24. package/dist/{messages-HVgCKIww2.mjs → chunks/messages-B705gxqz.mjs} +16 -1
  25. package/dist/{messages-Dq_RdEny2.mjs → chunks/messages-B7F3tX4u.mjs} +16 -1
  26. package/dist/chunks/{messages-NJAjMFXd.cjs → messages-BDer7I67.cjs} +1 -1
  27. package/dist/chunks/{messages-BV22YIZ_.cjs → messages-BEEGgtPo.cjs} +1 -1
  28. package/dist/{messages-bN4Zmk2m.mjs → chunks/messages-BGlEWmsB.mjs} +16 -1
  29. package/dist/{messages-Ao2vCNAH2.mjs → chunks/messages-BJJsuZhy.mjs} +16 -1
  30. package/dist/chunks/{messages-DjrfovG0.cjs → messages-BJcc9h6p.cjs} +1 -1
  31. package/dist/chunks/{messages-Hfo6uCIC.cjs → messages-BL-E2Kw3.cjs} +1 -1
  32. package/dist/{messages-8__-vX3U.mjs → chunks/messages-BLJGzntb.mjs} +16 -1
  33. package/dist/chunks/{messages-Au1UpgkX.cjs → messages-BLNieIb-.cjs} +1 -1
  34. package/dist/chunks/{messages-DQJcAz4s.cjs → messages-BRbGk1-Z.cjs} +1 -1
  35. package/dist/chunks/{messages-BwOUSDJR.mjs → messages-BUlZRNoO.mjs} +15 -0
  36. package/dist/{messages-BKGg4XYm2.mjs → chunks/messages-BWQF9y2r.mjs} +16 -1
  37. package/dist/chunks/{messages-UXS3zL9A2.cjs → messages-BWh9I5Jv2.cjs} +1 -1
  38. package/dist/chunks/{messages-B6dbtt1c.cjs → messages-BX86v7Ev.cjs} +1 -1
  39. package/dist/chunks/{messages-DIFwztFo.cjs → messages-BYpvkG9S.cjs} +1 -1
  40. package/dist/{messages-CDueJTe8.mjs → chunks/messages-Bdw_vAdq2.mjs} +16 -1
  41. package/dist/chunks/{messages-DIetNXTx.cjs → messages-BeQVEC9q.cjs} +1 -1
  42. package/dist/{messages-CusWGsl42.mjs → chunks/messages-BeTZTXZm.mjs} +16 -1
  43. package/dist/chunks/{messages-CmsAbu_A.cjs → messages-BhTlR4PP.cjs} +1 -1
  44. package/dist/chunks/{messages-C3rGCBi_.mjs → messages-BhnZTZbQ.mjs} +16 -1
  45. package/dist/{messages-BpwhHkFb2.mjs → chunks/messages-BqJdoBHm.mjs} +16 -1
  46. package/dist/chunks/{messages-zPUQsksJ.mjs → messages-BqPiH7QC.mjs} +16 -1
  47. package/dist/chunks/{messages-CjfEt9bg.cjs → messages-Br_qu_wR.cjs} +1 -1
  48. package/dist/chunks/{messages-DtaPHADA.cjs → messages-BscUmD6D.cjs} +1 -1
  49. package/dist/{messages-Cg6a88Bb2.mjs → chunks/messages-Btapuvxo.mjs} +16 -1
  50. package/dist/chunks/{messages-CEySIig9.cjs → messages-BwCw0TJ1.cjs} +1 -1
  51. package/dist/chunks/{messages-BO-L5oN9.mjs → messages-C3RDWmXV.mjs} +15 -0
  52. package/dist/chunks/{messages-CZJZ-au3.cjs → messages-C3SZsVB9.cjs} +1 -1
  53. package/dist/chunks/{messages-DQr7bXMD.mjs → messages-C65mLRVK.mjs} +16 -1
  54. package/dist/chunks/{messages-CT8djlV6.cjs → messages-C73dKqPT.cjs} +1 -1
  55. package/dist/chunks/{messages-DOqJ6ogK.cjs → messages-C8f4kUOB.cjs} +1 -1
  56. package/dist/{messages-yuNINyS1.mjs → chunks/messages-C9vfrzKQ.mjs} +16 -1
  57. package/dist/{messages-Grhv5SE_.mjs → chunks/messages-CEbe34zh.mjs} +15 -0
  58. package/dist/chunks/{messages-CcsM8Q7g.cjs → messages-CHEpECGv.cjs} +1 -1
  59. package/dist/chunks/{messages-DEg5FAg1.cjs → messages-CHP0nYRn.cjs} +1 -1
  60. package/dist/chunks/{messages-CjCn5IsF.mjs → messages-CIbh-0oJ.mjs} +16 -1
  61. package/dist/chunks/{messages-BHCepNsI.cjs → messages-CJC94Hci.cjs} +1 -1
  62. package/dist/chunks/{messages-ByNR9m9W.cjs → messages-CMP5dbqQ.cjs} +1 -1
  63. package/dist/chunks/{messages-DpNmnBjK.cjs → messages-CMm8FeOL.cjs} +1 -1
  64. package/dist/chunks/{messages-Da8yFc7l.cjs → messages-CNMPtWiq.cjs} +1 -1
  65. package/dist/{messages-CqZgsrVP2.mjs → chunks/messages-CQUr4lBa.mjs} +16 -1
  66. package/dist/{messages-Cvq2EFPT2.mjs → chunks/messages-CUuOX1k3.mjs} +16 -1
  67. package/dist/chunks/{messages-BsTzdfZF.cjs → messages-CVerbLou.cjs} +1 -1
  68. package/dist/{messages-CGiVoFTi.mjs → chunks/messages-CWW9OwKO.mjs} +16 -1
  69. package/dist/{messages-Da1woCgt2.mjs → chunks/messages-CWqap54p.mjs} +16 -1
  70. package/dist/{messages-CEGqNXnP.mjs → chunks/messages-CXNQBFHp.mjs} +16 -1
  71. package/dist/chunks/{messages-DgF8OkNr.mjs → messages-CYDhuSF4.mjs} +16 -1
  72. package/dist/chunks/{messages-Bp0LdGKj.mjs → messages-CYy3Zd3F.mjs} +15 -0
  73. package/dist/{messages-CUcUO5bC2.mjs → chunks/messages-C_BM_XHo.mjs} +16 -1
  74. package/dist/chunks/{messages-IqNWRaNS.cjs → messages-CbKOqXT6.cjs} +1 -1
  75. package/dist/chunks/{messages-Bmq--WTx.mjs → messages-CbxXU_Um.mjs} +15 -0
  76. package/dist/chunks/{messages-CVrOxu3J.cjs → messages-CcO-3_4k.cjs} +1 -1
  77. package/dist/chunks/{messages-D41fO84y.cjs → messages-CcTkC677.cjs} +1 -1
  78. package/dist/chunks/{messages-Cy-2_lIA.cjs → messages-CdEZ98_p.cjs} +1 -1
  79. package/dist/{messages-KyJQtOkh2.mjs → chunks/messages-CeZ1lo-o.mjs} +16 -1
  80. package/dist/chunks/{messages-D7H9JUDr.cjs → messages-CgFAGUJX.cjs} +1 -1
  81. package/dist/chunks/{messages-Dwl878eS.mjs → messages-CprMp4Va.mjs} +16 -1
  82. package/dist/{messages-wmS6Z2m82.mjs → chunks/messages-CtXDxPOq.mjs} +16 -1
  83. package/dist/{messages-DcQNeoPB.mjs → chunks/messages-Cutnm4AZ.mjs} +15 -0
  84. package/dist/chunks/{messages-cSBZ5qVe.mjs → messages-CwIC_sse.mjs} +16 -1
  85. package/dist/chunks/{messages-7LWW3BVh.mjs → messages-CwbTr9lL.mjs} +16 -1
  86. package/dist/chunks/{messages-ETJ7tQ9O.cjs → messages-CxIknrw4.cjs} +1 -1
  87. package/dist/{messages-VIQ8vjvS.mjs → chunks/messages-D0Jj7Dtw.mjs} +15 -0
  88. package/dist/chunks/{messages-SozFksSf.cjs → messages-D0th-I9S.cjs} +1 -1
  89. package/dist/chunks/{messages-gh5G15J1.cjs → messages-D1XTyTJz.cjs} +1 -1
  90. package/dist/chunks/{messages-DNtAzacv.mjs → messages-D24EoKbO.mjs} +16 -1
  91. package/dist/chunks/{messages-DDJkNbJy.mjs → messages-D2chjyLM.mjs} +16 -1
  92. package/dist/chunks/{messages-CqRtDVFO.cjs → messages-D6y13edn.cjs} +1 -1
  93. package/dist/chunks/{messages-EsX3eikv.cjs → messages-D86p1eQY.cjs} +1 -1
  94. package/dist/{messages-BwCgJUdq.mjs → chunks/messages-D8L_8amv.mjs} +16 -1
  95. package/dist/chunks/{messages-C2ptZOWh.cjs → messages-DC-yFRyF.cjs} +1 -1
  96. package/dist/{messages-BgPDPIkO.mjs → chunks/messages-DEPxxCNU.mjs} +16 -1
  97. package/dist/chunks/{messages-VeyvtTce.cjs → messages-DG9l5agQ.cjs} +1 -1
  98. package/dist/chunks/{messages-B6794_2J.cjs → messages-DIeUb2w-.cjs} +1 -1
  99. package/dist/chunks/{messages-COx3hDcP.cjs → messages-DJ-RX5EJ.cjs} +1 -1
  100. package/dist/chunks/{messages-Cvg_uTfy.mjs → messages-DJ7lbpBX.mjs} +16 -1
  101. package/dist/{messages-Cn3uvFq3.mjs → chunks/messages-DJH_kd46.mjs} +16 -1
  102. package/dist/chunks/{messages-CWFSMzug2.cjs → messages-DLYl6KdK2.cjs} +1 -1
  103. package/dist/{messages-Ch-SytN8.mjs → chunks/messages-DMcCkOtN.mjs} +16 -1
  104. package/dist/chunks/{messages-BdL8bmTL.mjs → messages-DQks74hq.mjs} +16 -1
  105. package/dist/chunks/{messages-D-QWtvWg.mjs → messages-DTiqggtG.mjs} +16 -1
  106. package/dist/chunks/{messages-typO_i_k.mjs → messages-DTsSYToI.mjs} +15 -0
  107. package/dist/{messages-CwvHO8gp2.mjs → chunks/messages-DU6TOz6v.mjs} +16 -1
  108. package/dist/chunks/{messages-DmjccFHq.cjs → messages-DUbZA-w_.cjs} +1 -1
  109. package/dist/chunks/{messages-DCwrXfck.cjs → messages-DVAU-8rH.cjs} +1 -1
  110. package/dist/chunks/{messages-Z4LYgfWc.cjs → messages-Df6vXDrY.cjs} +1 -1
  111. package/dist/chunks/{messages-9B1F-k48.cjs → messages-Dh79ToYM.cjs} +1 -1
  112. package/dist/chunks/{messages-CuMtymEs.cjs → messages-Dh9psewW.cjs} +1 -1
  113. package/dist/chunks/{messages-BjYhwRk7.cjs → messages-Dln2T0zJ.cjs} +1 -1
  114. package/dist/chunks/{messages-DT-JnTnw.cjs → messages-DoA0Ecoi.cjs} +1 -1
  115. package/dist/chunks/{messages-D-p-omWy.mjs → messages-Dre_MB7o.mjs} +16 -1
  116. package/dist/chunks/{messages-BveiGA2x.cjs → messages-Dv4oyF7T.cjs} +1 -1
  117. package/dist/{messages-C6R0bzW5.mjs → chunks/messages-FMAQkmg4.mjs} +15 -0
  118. package/dist/{messages-CQzOV7VE2.mjs → chunks/messages-GownDU-J.mjs} +16 -1
  119. package/dist/chunks/{messages-CH9SBR-i.cjs → messages-JYea02IT.cjs} +1 -1
  120. package/dist/chunks/{messages-BXp_U3uS.cjs → messages-JyzorVPx.cjs} +1 -1
  121. package/dist/{messages-BIgvPd6I2.mjs → chunks/messages-L70TFQAY.mjs} +16 -1
  122. package/dist/{messages-CskLLTiG2.mjs → chunks/messages-L8CslBBZ.mjs} +16 -1
  123. package/dist/chunks/{messages-CM8uUnPx.cjs → messages-LX9PuLsT.cjs} +1 -1
  124. package/dist/{messages-BarhGl2S2.mjs → chunks/messages-NFUr7Sxk.mjs} +16 -1
  125. package/dist/chunks/{messages-CGdCpNZ62.cjs → messages-PpRvDwOa2.cjs} +1 -1
  126. package/dist/chunks/{messages-ZMG7qQ3D.mjs → messages-QQ5-ET8y.mjs} +16 -1
  127. package/dist/{messages-DbE-riR52.mjs → chunks/messages-Stf6rn2I.mjs} +16 -1
  128. package/dist/chunks/{messages-D7sU-NqL.cjs → messages-T8hCmys7.cjs} +1 -1
  129. package/dist/chunks/{messages-DDX6I6MX.mjs → messages-TZtv60nI.mjs} +16 -1
  130. package/dist/chunks/{messages-CeLv1whu2.mjs → messages-V9bvFOFc2.mjs} +16 -1
  131. package/dist/chunks/{messages-tR0BdeVG.cjs → messages-Vp8CpYh3.cjs} +1 -1
  132. package/dist/chunks/{messages-DUWCkLYR.cjs → messages-XqCqLy0k.cjs} +1 -1
  133. package/dist/chunks/{messages-B01D7aHY.mjs → messages-_1y6EX7X.mjs} +16 -1
  134. package/dist/chunks/{messages-CXk-iM-i.mjs → messages-aTZglEV9.mjs} +16 -1
  135. package/dist/chunks/{messages-BHdKd7pH.cjs → messages-cSHh8Zgv.cjs} +1 -1
  136. package/dist/{messages-P5B61L1J2.mjs → chunks/messages-e8gxPi7a.mjs} +16 -1
  137. package/dist/{messages-CUFac9Qe.mjs → chunks/messages-hiwlrrr-.mjs} +16 -1
  138. package/dist/{messages-CeqpzGl9.mjs → chunks/messages-icPZhZ81.mjs} +15 -0
  139. package/dist/chunks/{messages-Byn9-dhb2.mjs → messages-lbwOYFxS2.mjs} +16 -1
  140. package/dist/chunks/{messages-B6yMdb3B.cjs → messages-lvo-9Be0.cjs} +1 -1
  141. package/dist/chunks/{messages-B2iaIrIu.mjs → messages-rm6jXexA.mjs} +16 -1
  142. package/dist/chunks/{messages-Ciq5_PsP.cjs → messages-sTyGkmbu.cjs} +1 -1
  143. package/dist/{messages-CF5MeYEt2.mjs → chunks/messages-uBwK-Ze2.mjs} +16 -1
  144. package/dist/chunks/{messages-BaVZgTrw.cjs → messages-uOISsfmj.cjs} +1 -1
  145. package/dist/{messages-L4sYfXpM.mjs → chunks/messages-wq0vxJ3p.mjs} +16 -1
  146. package/dist/chunks/{messages-CQT8TtiF.cjs → messages-z2DzBRgO.cjs} +1 -1
  147. package/dist/chunks/tools-BKjP4TXy.cjs +208 -0
  148. package/dist/chunks/{tools-fEI-EVng.mjs → tools-Bw8_CkhE.mjs} +2537 -2469
  149. package/dist/full.cjs +1 -1
  150. package/dist/full.mjs +3 -3
  151. package/dist/locales.mjs +82 -67
  152. package/dist/{messages-BlvF3pot.mjs → messages--sHkn4PD.mjs} +16 -1
  153. package/dist/{chunks/messages-QCaF3d92.mjs → messages-4mxgsYKZ2.mjs} +16 -1
  154. package/dist/{messages-zOl6jpOa.mjs → messages-6fQMeTiI.mjs} +16 -1
  155. package/dist/{messages-BRLWpOnP.mjs → messages-B22G0fir.mjs} +16 -1
  156. package/dist/{chunks/messages-kqnzps-X.mjs → messages-B908tGhl.mjs} +16 -1
  157. package/dist/{chunks/messages-C8_r3iTR2.mjs → messages-BAUvKI0_.mjs} +16 -1
  158. package/dist/{chunks/messages-BpMWMH9_.mjs → messages-BAfMwQnT2.mjs} +16 -1
  159. package/dist/{messages-Bmu3rJwO.mjs → messages-BCk7o4Pz.mjs} +16 -1
  160. package/dist/{messages-D4dovFzY2.mjs → messages-BG2BE6Sg2.mjs} +16 -1
  161. package/dist/{messages-DR2JBU-H.mjs → messages-BGe6GS_j.mjs} +16 -1
  162. package/dist/{chunks/messages-CeIzWL_4.mjs → messages-BHLrVFmZ2.mjs} +16 -1
  163. package/dist/{messages-BOWDzfkH.mjs → messages-BJjffJIu.mjs} +16 -1
  164. package/dist/{chunks/messages-DHv7knYB.mjs → messages-BSGZSOH32.mjs} +16 -1
  165. package/dist/{chunks/messages-BRTWvTAP.mjs → messages-BT6TyDYQ2.mjs} +16 -1
  166. package/dist/{messages-jQsl7cga2.mjs → messages-BWZ0_zUi2.mjs} +16 -1
  167. package/dist/{messages-lnxRz5rM.mjs → messages-BWhJgyhl.mjs} +16 -1
  168. package/dist/{chunks/messages-Xh-c7d4C.mjs → messages-BXqLaS2g2.mjs} +16 -1
  169. package/dist/{messages-gTUy3xjb.mjs → messages-BZiuFv_O.mjs} +15 -0
  170. package/dist/{chunks/messages-B_d857cA.mjs → messages-Bb-XEtyl.mjs} +15 -0
  171. package/dist/{messages-C9Kq8259.mjs → messages-BkKAnFz_.mjs} +15 -0
  172. package/dist/{chunks/messages-BUvlOqll.mjs → messages-BoLu5_Wp2.mjs} +16 -1
  173. package/dist/{messages-RXQKVFCJ.mjs → messages-BpqRzil6.mjs} +16 -1
  174. package/dist/{chunks/messages-CkosWGGH.mjs → messages-C2E8rQjb.mjs} +15 -0
  175. package/dist/{chunks/messages-jEbEE90_.mjs → messages-C2JJxi5D2.mjs} +16 -1
  176. package/dist/{messages-jsrzDVZy2.mjs → messages-C4d1_z432.mjs} +16 -1
  177. package/dist/{chunks/messages-MPe9FjYe.mjs → messages-C5Igyij0.mjs} +16 -1
  178. package/dist/{messages-CAnOyxrm.mjs → messages-C8fscB2J.mjs} +16 -1
  179. package/dist/{chunks/messages-CX0tJpOb.mjs → messages-CD8CgT1F.mjs} +16 -1
  180. package/dist/{messages-BKG0QHVl.mjs → messages-CDxPk3xE.mjs} +15 -0
  181. package/dist/{messages-hGop1gbF.mjs → messages-CGXrIdHT.mjs} +15 -0
  182. package/dist/{chunks/messages-DuHFGMCJ.mjs → messages-CHfkCxGQ2.mjs} +16 -1
  183. package/dist/{messages-fAEKzdUq.mjs → messages-CMvNzksb.mjs} +16 -1
  184. package/dist/{chunks/messages-t26x8wxB.mjs → messages-CSIhcdDx2.mjs} +16 -1
  185. package/dist/{messages-UJx6PvCL.mjs → messages-CW5z5hSz.mjs} +16 -1
  186. package/dist/{chunks/messages-CUPup5e3.mjs → messages-CYvpDx4p2.mjs} +16 -1
  187. package/dist/{chunks/messages-Ca9zIrBo.mjs → messages-CcTlmrYs.mjs} +16 -1
  188. package/dist/{messages-CcF4SO9W.mjs → messages-Ce8ShL0-.mjs} +16 -1
  189. package/dist/{chunks/messages-CbyVDo8y.mjs → messages-CgT32m3D.mjs} +15 -0
  190. package/dist/{chunks/messages-ypIHI9Fr.mjs → messages-CmCBnNtA2.mjs} +16 -1
  191. package/dist/{messages-DGAWjKQZ.mjs → messages-CneVTJSN.mjs} +16 -1
  192. package/dist/{messages-C5IE9mXm.mjs → messages-CpNerer8.mjs} +15 -0
  193. package/dist/{chunks/messages-D-s4_vnU.mjs → messages-Cs0L1gyv.mjs} +16 -1
  194. package/dist/{chunks/messages-BYCHzM7F.mjs → messages-CsGnp1wE2.mjs} +16 -1
  195. package/dist/{chunks/messages-D4u2PSQw.mjs → messages-CvbIxcr7.mjs} +16 -1
  196. package/dist/{chunks/messages-DuD4ut1b.mjs → messages-Cx6oQfMR2.mjs} +16 -1
  197. package/dist/{messages-BvutXmgt.mjs → messages-DBESJOhQ.mjs} +16 -1
  198. package/dist/{chunks/messages-Cl_pM31G.mjs → messages-DGOBPnKC2.mjs} +16 -1
  199. package/dist/{messages-B13GEFFu.mjs → messages-DK2AwXAp.mjs} +16 -1
  200. package/dist/{chunks/messages-CI2W7P-j.mjs → messages-DMbnesQ9.mjs} +16 -1
  201. package/dist/{messages-4drvqPN8.mjs → messages-DOiSOenW.mjs} +16 -1
  202. package/dist/{chunks/messages-5339ApgH.mjs → messages-DQqp_ANL.mjs} +16 -1
  203. package/dist/{chunks/messages-Ck1-ddbo.mjs → messages-DThG2jW-2.mjs} +16 -1
  204. package/dist/{chunks/messages-DQfi2DoY.mjs → messages-DXlB7Vpm.mjs} +16 -1
  205. package/dist/{chunks/messages-DjZoCJ00.mjs → messages-De0NAxJt.mjs} +15 -0
  206. package/dist/{messages-BI5B9bxE.mjs → messages-Depz8d3Q.mjs} +15 -0
  207. package/dist/{messages-BQaiScU1.mjs → messages-Dfsw3a8v.mjs} +16 -1
  208. package/dist/{messages-D9qgYMU82.mjs → messages-Dhmmqob82.mjs} +16 -1
  209. package/dist/{chunks/messages-DiODNXET.mjs → messages-DmNUAv0e2.mjs} +16 -1
  210. package/dist/{chunks/messages-3jkCmB_A.mjs → messages-DrQaJrDO.mjs} +16 -1
  211. package/dist/{messages-B2YnZIU2.mjs → messages-DsksuHtZ.mjs} +16 -1
  212. package/dist/{chunks/messages-m-A6ArIM.mjs → messages-DzOVTq3E2.mjs} +16 -1
  213. package/dist/{chunks/messages-C0swL9CY.mjs → messages-Igpt5WIA2.mjs} +16 -1
  214. package/dist/{chunks/messages-CIBYzzFy.mjs → messages-JhpGtjjS.mjs} +16 -1
  215. package/dist/{chunks/messages-BbZz_Anm.mjs → messages-WCy1wiGS2.mjs} +16 -1
  216. package/dist/{chunks/messages-CRUb9o5k.mjs → messages-XbA-jXKc.mjs} +15 -0
  217. package/dist/{chunks/messages-BeS9EOEO.mjs → messages-imHGm9SI2.mjs} +16 -1
  218. package/dist/{messages-BQhHthxq2.mjs → messages-yTNyxXRV2.mjs} +16 -1
  219. package/dist/react.cjs +1 -1
  220. package/dist/react.mjs +1 -1
  221. package/dist/tools.cjs +1 -1
  222. package/dist/tools.mjs +2 -2
  223. package/package.json +1 -1
  224. package/src/components/i18n/locales/am/messages.json +16 -1
  225. package/src/components/i18n/locales/ar/messages.json +16 -1
  226. package/src/components/i18n/locales/az/messages.json +16 -1
  227. package/src/components/i18n/locales/bg/messages.json +16 -1
  228. package/src/components/i18n/locales/bn/messages.json +16 -1
  229. package/src/components/i18n/locales/bs/messages.json +16 -1
  230. package/src/components/i18n/locales/cs/messages.json +16 -1
  231. package/src/components/i18n/locales/da/messages.json +16 -1
  232. package/src/components/i18n/locales/de/messages.json +16 -1
  233. package/src/components/i18n/locales/dv/messages.json +16 -1
  234. package/src/components/i18n/locales/el/messages.json +16 -1
  235. package/src/components/i18n/locales/en/messages.json +15 -0
  236. package/src/components/i18n/locales/es/messages.json +15 -0
  237. package/src/components/i18n/locales/et/messages.json +15 -0
  238. package/src/components/i18n/locales/fa/messages.json +15 -0
  239. package/src/components/i18n/locales/fi/messages.json +15 -0
  240. package/src/components/i18n/locales/fil/messages.json +15 -0
  241. package/src/components/i18n/locales/fr/messages.json +15 -0
  242. package/src/components/i18n/locales/gu/messages.json +15 -0
  243. package/src/components/i18n/locales/he/messages.json +15 -0
  244. package/src/components/i18n/locales/hi/messages.json +15 -0
  245. package/src/components/i18n/locales/hr/messages.json +15 -0
  246. package/src/components/i18n/locales/hu/messages.json +15 -0
  247. package/src/components/i18n/locales/hy/messages.json +16 -1
  248. package/src/components/i18n/locales/id/messages.json +16 -1
  249. package/src/components/i18n/locales/it/messages.json +16 -1
  250. package/src/components/i18n/locales/ja/messages.json +16 -1
  251. package/src/components/i18n/locales/ka/messages.json +16 -1
  252. package/src/components/i18n/locales/km/messages.json +16 -1
  253. package/src/components/i18n/locales/kn/messages.json +16 -1
  254. package/src/components/i18n/locales/ko/messages.json +16 -1
  255. package/src/components/i18n/locales/ku/messages.json +16 -1
  256. package/src/components/i18n/locales/lo/messages.json +16 -1
  257. package/src/components/i18n/locales/lt/messages.json +16 -1
  258. package/src/components/i18n/locales/lv/messages.json +16 -1
  259. package/src/components/i18n/locales/mk/messages.json +16 -1
  260. package/src/components/i18n/locales/ml/messages.json +16 -1
  261. package/src/components/i18n/locales/mn/messages.json +16 -1
  262. package/src/components/i18n/locales/mr/messages.json +16 -1
  263. package/src/components/i18n/locales/ms/messages.json +16 -1
  264. package/src/components/i18n/locales/my/messages.json +16 -1
  265. package/src/components/i18n/locales/ne/messages.json +16 -1
  266. package/src/components/i18n/locales/nl/messages.json +16 -1
  267. package/src/components/i18n/locales/no/messages.json +16 -1
  268. package/src/components/i18n/locales/pa/messages.json +16 -1
  269. package/src/components/i18n/locales/pl/messages.json +16 -1
  270. package/src/components/i18n/locales/ps/messages.json +16 -1
  271. package/src/components/i18n/locales/pt/messages.json +16 -1
  272. package/src/components/i18n/locales/ro/messages.json +16 -1
  273. package/src/components/i18n/locales/ru/messages.json +16 -1
  274. package/src/components/i18n/locales/sd/messages.json +16 -1
  275. package/src/components/i18n/locales/si/messages.json +16 -1
  276. package/src/components/i18n/locales/sk/messages.json +16 -1
  277. package/src/components/i18n/locales/sl/messages.json +16 -1
  278. package/src/components/i18n/locales/sq/messages.json +16 -1
  279. package/src/components/i18n/locales/sr/messages.json +16 -1
  280. package/src/components/i18n/locales/sv/messages.json +16 -1
  281. package/src/components/i18n/locales/sw/messages.json +16 -1
  282. package/src/components/i18n/locales/ta/messages.json +16 -1
  283. package/src/components/i18n/locales/te/messages.json +16 -1
  284. package/src/components/i18n/locales/th/messages.json +16 -1
  285. package/src/components/i18n/locales/tr/messages.json +16 -1
  286. package/src/components/i18n/locales/ug/messages.json +16 -1
  287. package/src/components/i18n/locales/uk/messages.json +16 -1
  288. package/src/components/i18n/locales/ur/messages.json +16 -1
  289. package/src/components/i18n/locales/vi/messages.json +16 -1
  290. package/src/components/i18n/locales/yi/messages.json +16 -1
  291. package/src/components/i18n/locales/zh/messages.json +16 -1
  292. package/src/components/modules/paste/handlers/blok-data-handler.ts +39 -23
  293. package/src/components/modules/paste/index.ts +38 -4
  294. package/src/components/modules/paste/notion-blocks-v3.ts +932 -0
  295. package/src/components/modules/paste/notion-preprocessor.ts +67 -0
  296. package/src/components/utils/media-empty-state.ts +48 -5
  297. package/src/styles/audio.css +348 -36
  298. package/src/styles/tables.css +10 -0
  299. package/src/tools/audio/constants.ts +6 -0
  300. package/src/tools/audio/controls.ts +53 -7
  301. package/src/tools/audio/cover-picker.ts +126 -0
  302. package/src/tools/audio/disc.ts +137 -0
  303. package/src/tools/audio/index.ts +114 -6
  304. package/src/tools/audio/liveliness.ts +26 -8
  305. package/src/tools/audio/ui.ts +39 -4
  306. package/dist/chunks/constants-R70ypRAK.cjs +0 -606
  307. package/dist/chunks/tools-DcbePIHF.cjs +0 -208
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "max. {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "Vložte URL videa…",
444
444
  "tools.audio.emptyUrlAria": "URL videa",
445
- "tools.audio.emptySourceAria": "Zdroj videa"
445
+ "tools.audio.emptySourceAria": "Zdroj videa",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "Nahrať",
453
+ "tools.audio.coverLink": "Odkaz",
454
+ "tools.audio.coverChooseFile": "Vybrať súbor",
455
+ "tools.audio.coverOrDropHere": "alebo sem pretiahnite obrázok",
456
+ "tools.audio.coverDropToUpload": "Pustite pre nahranie",
457
+ "tools.audio.coverInsert": "Vložiť",
458
+ "tools.audio.coverUrlPlaceholder": "Vložte URL obrázka…",
459
+ "tools.audio.coverUrlAria": "URL obrázka",
460
+ "tools.audio.coverSourceAria": "Zdroj obrázka"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "do {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "Prilepite URL videa…",
444
444
  "tools.audio.emptyUrlAria": "URL videa",
445
- "tools.audio.emptySourceAria": "Vir videa"
445
+ "tools.audio.emptySourceAria": "Vir videa",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "Naloži",
453
+ "tools.audio.coverLink": "Povezava",
454
+ "tools.audio.coverChooseFile": "Izberi datoteko",
455
+ "tools.audio.coverOrDropHere": "ali spustite sliko sem",
456
+ "tools.audio.coverDropToUpload": "Spustite za nalaganje",
457
+ "tools.audio.coverInsert": "Vstavi",
458
+ "tools.audio.coverUrlPlaceholder": "Prilepite URL slike…",
459
+ "tools.audio.coverUrlAria": "URL slike",
460
+ "tools.audio.coverSourceAria": "Vir slike"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "maks. {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "Ngjit një URL audioje…",
444
444
  "tools.audio.emptyUrlAria": "URL e audios",
445
- "tools.audio.emptySourceAria": "Burimi i audios"
445
+ "tools.audio.emptySourceAria": "Burimi i audios",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "Ngarko",
453
+ "tools.audio.coverLink": "Lidhje",
454
+ "tools.audio.coverChooseFile": "Zgjidh skedar",
455
+ "tools.audio.coverOrDropHere": "ose hidh një imazh këtu",
456
+ "tools.audio.coverDropToUpload": "Lësho për të ngarkuar",
457
+ "tools.audio.coverInsert": "Fut",
458
+ "tools.audio.coverUrlPlaceholder": "Ngjit një URL imazhi…",
459
+ "tools.audio.coverUrlAria": "URL e imazhit",
460
+ "tools.audio.coverSourceAria": "Burimi i imazhit"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "до {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "Налепите URL видеа…",
444
444
  "tools.audio.emptyUrlAria": "URL видеа",
445
- "tools.audio.emptySourceAria": "Извор видеа"
445
+ "tools.audio.emptySourceAria": "Извор видеа",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "Отпреми",
453
+ "tools.audio.coverLink": "Веза",
454
+ "tools.audio.coverChooseFile": "Изабери датотеку",
455
+ "tools.audio.coverOrDropHere": "или превуците слику овде",
456
+ "tools.audio.coverDropToUpload": "Отпустите за отпремање",
457
+ "tools.audio.coverInsert": "Уметни",
458
+ "tools.audio.coverUrlPlaceholder": "Налепите URL слике…",
459
+ "tools.audio.coverUrlAria": "URL слике",
460
+ "tools.audio.coverSourceAria": "Извор слике"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "högst {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "Klistra in en ljud-URL…",
444
444
  "tools.audio.emptyUrlAria": "Ljud-URL",
445
- "tools.audio.emptySourceAria": "Ljudkälla"
445
+ "tools.audio.emptySourceAria": "Ljudkälla",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "Ladda upp",
453
+ "tools.audio.coverLink": "Länk",
454
+ "tools.audio.coverChooseFile": "Välj fil",
455
+ "tools.audio.coverOrDropHere": "eller släpp en bild här",
456
+ "tools.audio.coverDropToUpload": "Släpp för att ladda upp",
457
+ "tools.audio.coverInsert": "Infoga",
458
+ "tools.audio.coverUrlPlaceholder": "Klistra in en bild-URL…",
459
+ "tools.audio.coverUrlAria": "Bild-URL",
460
+ "tools.audio.coverSourceAria": "Bildkälla"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "upeo {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "Bandika URL ya sauti…",
444
444
  "tools.audio.emptyUrlAria": "URL ya sauti",
445
- "tools.audio.emptySourceAria": "Chanzo cha sauti"
445
+ "tools.audio.emptySourceAria": "Chanzo cha sauti",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "Pakia",
453
+ "tools.audio.coverLink": "Kiungo",
454
+ "tools.audio.coverChooseFile": "Chagua faili",
455
+ "tools.audio.coverOrDropHere": "au dondosha picha hapa",
456
+ "tools.audio.coverDropToUpload": "Dondosha ili kupakia",
457
+ "tools.audio.coverInsert": "Ingiza",
458
+ "tools.audio.coverUrlPlaceholder": "Bandika URL ya picha…",
459
+ "tools.audio.coverUrlAria": "URL ya picha",
460
+ "tools.audio.coverSourceAria": "Chanzo cha picha"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "அதிகபட்சம் {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "ஆடியோ URL ஐ ஒட்டவும்…",
444
444
  "tools.audio.emptyUrlAria": "ஆடியோ URL",
445
- "tools.audio.emptySourceAria": "ஆடியோ மூலம்"
445
+ "tools.audio.emptySourceAria": "ஆடியோ மூலம்",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "பதிவேற்று",
453
+ "tools.audio.coverLink": "இணைப்பு",
454
+ "tools.audio.coverChooseFile": "கோப்பைத் தேர்ந்தெடு",
455
+ "tools.audio.coverOrDropHere": "அல்லது படத்தை இங்கே விடவும்",
456
+ "tools.audio.coverDropToUpload": "பதிவேற்ற விடவும்",
457
+ "tools.audio.coverInsert": "செருகு",
458
+ "tools.audio.coverUrlPlaceholder": "பட URL ஐ ஒட்டவும்…",
459
+ "tools.audio.coverUrlAria": "பட URL",
460
+ "tools.audio.coverSourceAria": "பட மூலம்"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "గరిష్టంగా {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "ఆడియో URL అతికించండి…",
444
444
  "tools.audio.emptyUrlAria": "ఆడియో URL",
445
- "tools.audio.emptySourceAria": "ఆడియో మూలం"
445
+ "tools.audio.emptySourceAria": "ఆడియో మూలం",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "అప్‌లోడ్",
453
+ "tools.audio.coverLink": "లింక్",
454
+ "tools.audio.coverChooseFile": "ఫైల్‌ను ఎంచుకోండి",
455
+ "tools.audio.coverOrDropHere": "లేదా ఇక్కడ చిత్రాన్ని వదలండి",
456
+ "tools.audio.coverDropToUpload": "అప్‌లోడ్ చేయడానికి వదలండి",
457
+ "tools.audio.coverInsert": "చొప్పించు",
458
+ "tools.audio.coverUrlPlaceholder": "చిత్రం URL అతికించండి…",
459
+ "tools.audio.coverUrlAria": "చిత్రం URL",
460
+ "tools.audio.coverSourceAria": "చిత్ర మూలం"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "สูงสุด {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "วาง URL เสียง…",
444
444
  "tools.audio.emptyUrlAria": "URL เสียง",
445
- "tools.audio.emptySourceAria": "แหล่งที่มาของเสียง"
445
+ "tools.audio.emptySourceAria": "แหล่งที่มาของเสียง",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "อัปโหลด",
453
+ "tools.audio.coverLink": "ลิงก์",
454
+ "tools.audio.coverChooseFile": "เลือกไฟล์",
455
+ "tools.audio.coverOrDropHere": "หรือวางรูปภาพที่นี่",
456
+ "tools.audio.coverDropToUpload": "วางเพื่ออัปโหลด",
457
+ "tools.audio.coverInsert": "แทรก",
458
+ "tools.audio.coverUrlPlaceholder": "วาง URL รูปภาพ…",
459
+ "tools.audio.coverUrlAria": "URL รูปภาพ",
460
+ "tools.audio.coverSourceAria": "แหล่งที่มาของรูปภาพ"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "maks {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "Ses URL'si yapıştırın…",
444
444
  "tools.audio.emptyUrlAria": "Ses URL'si",
445
- "tools.audio.emptySourceAria": "Ses kaynağı"
445
+ "tools.audio.emptySourceAria": "Ses kaynağı",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "Yükle",
453
+ "tools.audio.coverLink": "Bağlantı",
454
+ "tools.audio.coverChooseFile": "Dosya seç",
455
+ "tools.audio.coverOrDropHere": "veya görseli buraya bırakın",
456
+ "tools.audio.coverDropToUpload": "Yüklemek için bırakın",
457
+ "tools.audio.coverInsert": "Ekle",
458
+ "tools.audio.coverUrlPlaceholder": "Görsel URL'si yapıştırın…",
459
+ "tools.audio.coverUrlAria": "Görsel URL'si",
460
+ "tools.audio.coverSourceAria": "Görsel kaynağı"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "ئەڭ كۆپ {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "ئاۋاز URL سىنى چاپلاڭ…",
444
444
  "tools.audio.emptyUrlAria": "ئاۋاز URL",
445
- "tools.audio.emptySourceAria": "ئاۋاز مەنبەسى"
445
+ "tools.audio.emptySourceAria": "ئاۋاز مەنبەسى",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "يۈكلەش",
453
+ "tools.audio.coverLink": "ئۇلانما",
454
+ "tools.audio.coverChooseFile": "ھۆججەت تاللاش",
455
+ "tools.audio.coverOrDropHere": "ياكى بۇ يەرگە رەسىم تاشلاڭ",
456
+ "tools.audio.coverDropToUpload": "يۈكلەش ئۈچۈن تاشلاڭ",
457
+ "tools.audio.coverInsert": "قىستۇرۇش",
458
+ "tools.audio.coverUrlPlaceholder": "رەسىم URL سىنى چاپلاڭ…",
459
+ "tools.audio.coverUrlAria": "رەسىم URL",
460
+ "tools.audio.coverSourceAria": "رەسىم مەنبەسى"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "до {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "Вставте URL аудіо…",
444
444
  "tools.audio.emptyUrlAria": "URL аудіо",
445
- "tools.audio.emptySourceAria": "Джерело аудіо"
445
+ "tools.audio.emptySourceAria": "Джерело аудіо",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "Завантажити",
453
+ "tools.audio.coverLink": "Посилання",
454
+ "tools.audio.coverChooseFile": "Вибрати файл",
455
+ "tools.audio.coverOrDropHere": "або перетягніть сюди",
456
+ "tools.audio.coverDropToUpload": "Відпустіть для завантаження",
457
+ "tools.audio.coverInsert": "Вставити",
458
+ "tools.audio.coverUrlPlaceholder": "Вставте URL зображення…",
459
+ "tools.audio.coverUrlAria": "URL зображення",
460
+ "tools.audio.coverSourceAria": "Джерело зображення"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "زیادہ سے زیادہ {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "آڈیو کا URL پیسٹ کریں…",
444
444
  "tools.audio.emptyUrlAria": "آڈیو کا URL",
445
- "tools.audio.emptySourceAria": "آڈیو کا ذریعہ"
445
+ "tools.audio.emptySourceAria": "آڈیو کا ذریعہ",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "اپ لوڈ",
453
+ "tools.audio.coverLink": "لنک",
454
+ "tools.audio.coverChooseFile": "فائل منتخب کریں",
455
+ "tools.audio.coverOrDropHere": "یا یہاں تصویر ڈراپ کریں",
456
+ "tools.audio.coverDropToUpload": "اپ لوڈ کے لیے چھوڑیں",
457
+ "tools.audio.coverInsert": "داخل کریں",
458
+ "tools.audio.coverUrlPlaceholder": "تصویر کا URL پیسٹ کریں…",
459
+ "tools.audio.coverUrlAria": "تصویر کا URL",
460
+ "tools.audio.coverSourceAria": "تصویر کا ذریعہ"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "tối đa {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "Dán URL audio…",
444
444
  "tools.audio.emptyUrlAria": "URL audio",
445
- "tools.audio.emptySourceAria": "Nguồn audio"
445
+ "tools.audio.emptySourceAria": "Nguồn audio",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "Tải lên",
453
+ "tools.audio.coverLink": "Liên kết",
454
+ "tools.audio.coverChooseFile": "Chọn tệp",
455
+ "tools.audio.coverOrDropHere": "hoặc thả ảnh vào đây",
456
+ "tools.audio.coverDropToUpload": "Thả để tải lên",
457
+ "tools.audio.coverInsert": "Chèn",
458
+ "tools.audio.coverUrlPlaceholder": "Dán URL ảnh…",
459
+ "tools.audio.coverUrlAria": "URL hình ảnh",
460
+ "tools.audio.coverSourceAria": "Nguồn hình ảnh"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "ביז {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "לייג צו אויך URL…",
444
444
  "tools.audio.emptyUrlAria": "אויך URL",
445
- "tools.audio.emptySourceAria": "אויך מקור"
445
+ "tools.audio.emptySourceAria": "אויך מקור",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "אפלאד",
453
+ "tools.audio.coverLink": "לינק",
454
+ "tools.audio.coverChooseFile": "קלייב א טעקע",
455
+ "tools.audio.coverOrDropHere": "אדער לאז פאלן א בילד דא",
456
+ "tools.audio.coverDropToUpload": "לאז פאלן צו לאדן",
457
+ "tools.audio.coverInsert": "אריינלייגן",
458
+ "tools.audio.coverUrlPlaceholder": "לייג צו בילד URL…",
459
+ "tools.audio.coverUrlAria": "בילד URL",
460
+ "tools.audio.coverSourceAria": "בילד מקור"
446
461
  }
@@ -442,5 +442,20 @@
442
442
  "tools.audio.emptyMaxSize": "最大 {size}",
443
443
  "tools.audio.emptyUrlPlaceholder": "粘贴音频 URL…",
444
444
  "tools.audio.emptyUrlAria": "音频 URL",
445
- "tools.audio.emptySourceAria": "音频来源"
445
+ "tools.audio.emptySourceAria": "音频来源",
446
+ "tools.audio.coverChange": "Change cover",
447
+ "tools.audio.coverSet": "Set cover image",
448
+ "tools.audio.coverRemove": "Remove cover",
449
+ "tools.audio.coverErrorType": "Choose an image file",
450
+ "tools.audio.coverErrorTooLarge": "Image is too large",
451
+ "tools.audio.coverAdd": "Add a cover",
452
+ "tools.audio.coverUpload": "上传",
453
+ "tools.audio.coverLink": "链接",
454
+ "tools.audio.coverChooseFile": "选择文件",
455
+ "tools.audio.coverOrDropHere": "或将图片拖放到此处",
456
+ "tools.audio.coverDropToUpload": "拖放以上传",
457
+ "tools.audio.coverInsert": "插入",
458
+ "tools.audio.coverUrlPlaceholder": "粘贴图片 URL…",
459
+ "tools.audio.coverUrlAria": "图片 URL",
460
+ "tools.audio.coverSourceAria": "图片来源"
446
461
  }
@@ -129,15 +129,20 @@ export class BlokDataHandler extends BasePasteHandler implements PasteHandler {
129
129
  /**
130
130
  * Insert Blok JSON blocks using a two-pass approach:
131
131
  *
132
- * Pass 1 — child blocks (those whose parentId is within the pasted set) are
133
- * inserted first. They receive new IDs, which are recorded in a map.
134
- *
135
- * Pass 2 root/container blocks (e.g. tables) are inserted with their data
136
- * remapped so that any old child-block ID references are replaced by the new
137
- * IDs from Pass 1. This prevents container tools (TableCellBlocks) from
132
+ * Pass 1 — TABLE cell children (blocks whose parentId is a pasted table) are
133
+ * inserted first. They receive new IDs, which are recorded in a map, so the
134
+ * owning table can be inserted with its `data.content` references remapped to
135
+ * the new cell IDs. This prevents container tools (TableCellBlocks) from
138
136
  * resolving old IDs that still exist in the editor and stealing blocks from
139
137
  * the original table.
140
138
  *
139
+ * Pass 2 — every other block (roots AND flow-nested children such as list
140
+ * sub-items and toggle/callout/column children) is inserted in DOCUMENT ORDER
141
+ * with its data remapped. Preserving document order is what keeps a nested
142
+ * child from rendering above its parent (the Notion-paste scramble bug);
143
+ * flow-nested blocks have no separate DOM container, so their array position
144
+ * IS their visual position.
145
+ *
141
146
  * After both passes the parent-child hierarchy is re-established using the
142
147
  * accumulated old→new ID mapping.
143
148
  */
@@ -187,12 +192,26 @@ export class BlokDataHandler extends BasePasteHandler implements PasteHandler {
187
192
  ? (currentBlock?.id ?? null)
188
193
  : (currentBlock?.parentId ?? null);
189
194
 
190
- // Set of old IDs present in this paste, used to identify parent-child pairs.
191
- const pastedOldIds = new Set(blocks.map(b => b.id));
195
+ // IDs of pasted table blocks. ONLY a table's cell children must be inserted
196
+ // before their parent: the table block's `data.content` references its cell
197
+ // child IDs and the table tool resolves (adopts) them on insert, so the
198
+ // cells must already exist with their new IDs. Every OTHER nested block —
199
+ // list sub-items, toggle/callout/column children — is "flow-nested" and
200
+ // must be inserted in DOCUMENT ORDER. Inserting those children-first
201
+ // scrambled the document: a nested list child rendered ABOVE its parent and
202
+ // the whole top-level order collapsed (Notion paste "broken order" bug).
203
+ const pastedTableIds = new Set(
204
+ blocks.filter(b => b.tool === 'table' && b.id !== undefined).map(b => b.id)
205
+ );
206
+
207
+ const isTableCellChild = (block: BlokClipboardBlock): boolean =>
208
+ block.parentId !== undefined &&
209
+ block.parentId !== null &&
210
+ pastedTableIds.has(block.parentId);
192
211
 
193
212
  type Entry = { sanitized: (typeof sanitizedBlocks)[number]; original: BlokClipboardBlock };
194
- const children: Entry[] = [];
195
- const roots: Entry[] = [];
213
+ const tableCells: Entry[] = [];
214
+ const documentFlow: Entry[] = [];
196
215
 
197
216
  sanitizedBlocks.forEach((sanitizedBlock, i) => {
198
217
  const original = blocks[i];
@@ -201,12 +220,7 @@ export class BlokDataHandler extends BasePasteHandler implements PasteHandler {
201
220
  return;
202
221
  }
203
222
 
204
- const isChild =
205
- original.parentId !== undefined &&
206
- original.parentId !== null &&
207
- pastedOldIds.has(original.parentId);
208
-
209
- (isChild ? children : roots).push({ sanitized: sanitizedBlock, original });
223
+ (isTableCellChild(original) ? tableCells : documentFlow).push({ sanitized: sanitizedBlock, original });
210
224
  });
211
225
 
212
226
  /**
@@ -220,8 +234,9 @@ export class BlokDataHandler extends BasePasteHandler implements PasteHandler {
220
234
  // each BlockManager.insert and setBlockParent lands on its own undo
221
235
  // stack item, and the user has to press undo N times to clear a paste.
222
236
  const runInsertPasses = (): void => {
223
- // Pass 1: insert children first so they exist with new IDs before the parent.
224
- children.forEach(({ sanitized, original }) => {
237
+ // Pass 1: insert table cells first so they exist with new IDs before the
238
+ // owning table block is inserted with its (remapped) content references.
239
+ tableCells.forEach(({ sanitized, original }) => {
225
240
  const block = BlockManager.insert({ tool: sanitized.tool, data: sanitized.data });
226
241
 
227
242
  oldIdToEntry.set(original.id, { newBlock: block, original });
@@ -235,10 +250,11 @@ export class BlokDataHandler extends BasePasteHandler implements PasteHandler {
235
250
  oldIdToNewId.set(oldId, newBlock.id);
236
251
  }
237
252
 
238
- // Pass 2: insert root blocks with child IDs remapped in their data.
239
- // Skip replace when children were pre-inserted to avoid replacing a
240
- // just-inserted child paragraph rather than the original empty block.
241
- roots.forEach(({ sanitized, original }, idx) => {
253
+ // Pass 2: insert every remaining block in DOCUMENT ORDER, remapping any
254
+ // table cell IDs in their data. Skip replace when table cells were
255
+ // pre-inserted to avoid replacing a just-inserted cell paragraph rather
256
+ // than the original empty block.
257
+ documentFlow.forEach(({ sanitized, original }, idx) => {
242
258
  const remappedData = oldIdToNewId.size > 0
243
259
  ? remapIds(sanitized.data, oldIdToNewId) as typeof sanitized.data
244
260
  : sanitized.data;
@@ -246,7 +262,7 @@ export class BlokDataHandler extends BasePasteHandler implements PasteHandler {
246
262
  const block = BlockManager.insert({
247
263
  tool: sanitized.tool,
248
264
  data: remappedData,
249
- replace: idx === 0 && shouldReplaceFirst && children.length === 0,
265
+ replace: idx === 0 && shouldReplaceFirst && tableCells.length === 0,
250
266
  });
251
267
 
252
268
  /**
@@ -5,6 +5,8 @@ import { composeSanitizerConfig, clean } from '../../utils/sanitizer';
5
5
 
6
6
  import { SAFE_STRUCTURAL_TAGS } from './constants';
7
7
  import { preprocessGoogleDocsHtml } from './google-docs-preprocessor';
8
+ import { preprocessNotionHtml } from './notion-preprocessor';
9
+ import { NOTION_BLOCKS_V3_MIME, parseNotionBlocksV3 } from './notion-blocks-v3';
8
10
  import type { PasteHandler } from './handlers/base';
9
11
  import { BlokDataHandler } from './handlers/blok-data-handler';
10
12
  import { FilesHandler } from './handlers/files-handler';
@@ -45,14 +47,19 @@ export class Paste extends Module {
45
47
 
46
48
  await this.toolRegistry.processTools();
47
49
 
48
- // Initialize handlers in priority order (higher priority first)
50
+ // Initialize handlers in priority order (higher priority first).
51
+ // HtmlHandler (40) must precede MarkdownHandler (30): rich clipboards such
52
+ // as Notion ship both a faithful text/html payload and a lossy markdown
53
+ // text/plain twin, and routing picks the first eligible handler in this
54
+ // list. Trying HTML first keeps images, links and other structure that the
55
+ // markdown twin drops; markdown still wins when no usable HTML is present.
49
56
  this.handlers = [
50
57
  new BlokDataHandler(this.Blok, this.toolRegistry, this.sanitizerBuilder, this.config),
51
58
  new TableCellsHandler(this.Blok, this.toolRegistry, this.sanitizerBuilder),
52
59
  new FilesHandler(this.Blok, this.toolRegistry, this.sanitizerBuilder),
53
60
  new PatternHandler(this.Blok, this.toolRegistry, this.sanitizerBuilder, this.config),
54
- new MarkdownHandler(this.Blok, this.toolRegistry, this.sanitizerBuilder),
55
61
  new HtmlHandler(this.Blok, this.toolRegistry, this.sanitizerBuilder),
62
+ new MarkdownHandler(this.Blok, this.toolRegistry, this.sanitizerBuilder),
56
63
  new TextHandler(this.Blok, this.toolRegistry, this.sanitizerBuilder, this.config),
57
64
  ];
58
65
  }
@@ -104,10 +111,16 @@ export class Paste extends Module {
104
111
  * Handle pasted data transfer object.
105
112
  */
106
113
  public async processDataTransfer(dataTransfer: DataTransfer, pasteTarget?: Element): Promise<void> {
107
- const blokData = dataTransfer.getData(this.MIME_TYPE);
108
114
  const plainData = dataTransfer.getData('text/plain');
109
115
  const rawHtmlData = dataTransfer.getData('text/html');
110
116
 
117
+ // Native Blok clipboard data always wins. When absent, fall back to
118
+ // Notion's lossless proprietary flavour (web→web paste): it carries full
119
+ // block state (checked, language, nesting, colour…) that the HTML flavour
120
+ // cannot. We translate it into the Blok clipboard shape so it flows through
121
+ // the existing BlokDataHandler two-pass hierarchy builder.
122
+ const blokData = dataTransfer.getData(this.MIME_TYPE) || this.readNotionBlocksV3(dataTransfer);
123
+
111
124
  // Route to handlers based on data type
112
125
  const handled = await this.routeToHandlers(dataTransfer, plainData, rawHtmlData, blokData, pasteTarget);
113
126
 
@@ -119,6 +132,27 @@ export class Paste extends Module {
119
132
  await this.processAsText(plainData);
120
133
  }
121
134
 
135
+ /**
136
+ * Read Notion's `text/_notion-blocks-v3-production` clipboard flavour and
137
+ * translate it into the Blok clipboard JSON shape, or return '' when it is
138
+ * absent / unparseable (so the caller falls back to the HTML path).
139
+ */
140
+ private readNotionBlocksV3(dataTransfer: DataTransfer): string {
141
+ const raw = dataTransfer.getData(NOTION_BLOCKS_V3_MIME);
142
+
143
+ if (!raw) {
144
+ return '';
145
+ }
146
+
147
+ const parsed = parseNotionBlocksV3(raw);
148
+
149
+ if (parsed === null || parsed.length === 0) {
150
+ return '';
151
+ }
152
+
153
+ return JSON.stringify(parsed);
154
+ }
155
+
122
156
  /**
123
157
  * Route paste data to handlers in priority order.
124
158
  */
@@ -222,7 +256,7 @@ export class Paste extends Module {
222
256
  { br: {} }
223
257
  );
224
258
 
225
- const preprocessed = preprocessGoogleDocsHtml(rawHtmlData);
259
+ const preprocessed = preprocessNotionHtml(preprocessGoogleDocsHtml(rawHtmlData));
226
260
  const cleanData = clean(preprocessed, customConfig);
227
261
  const cleanDataIsHtml = dom$.isHTMLString(cleanData);
228
262
  const shouldProcessAsPlain = !cleanData.trim() || (cleanData.trim() === plainData || !cleanDataIsHtml);