@notectl/core 2.0.3 → 2.0.4

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 (1129) hide show
  1. package/dist/chunks/AlignmentPlugin-DGb1VtCU.mjs +2 -0
  2. package/dist/chunks/AlignmentPlugin-DGb1VtCU.mjs.map +1 -0
  3. package/dist/chunks/AttrRegistry-DvqbnJ6T.mjs +2 -0
  4. package/dist/chunks/AttrRegistry-DvqbnJ6T.mjs.map +1 -0
  5. package/dist/chunks/AttributedMarkCommands-BiJtiHpx.mjs +2 -0
  6. package/dist/chunks/AttributedMarkCommands-BiJtiHpx.mjs.map +1 -0
  7. package/dist/chunks/BlockInsertion-Q8B21SaG.mjs +2 -0
  8. package/dist/chunks/BlockInsertion-Q8B21SaG.mjs.map +1 -0
  9. package/dist/chunks/BlockTypePickerRegistry-5fFlS2i0.mjs +2 -0
  10. package/dist/chunks/BlockTypePickerRegistry-5fFlS2i0.mjs.map +1 -0
  11. package/dist/chunks/BlockquotePlugin-Dz8Pny1r.mjs +2 -0
  12. package/dist/chunks/BlockquotePlugin-Dz8Pny1r.mjs.map +1 -0
  13. package/dist/chunks/CaretNavigationPlugin-mQ1nxJ6m.mjs +2 -0
  14. package/dist/chunks/CaretNavigationPlugin-mQ1nxJ6m.mjs.map +1 -0
  15. package/dist/chunks/CodeBlockPlugin-oPGiMno0.mjs +2 -0
  16. package/dist/chunks/CodeBlockPlugin-oPGiMno0.mjs.map +1 -0
  17. package/dist/chunks/ColorGrid-CcF0bH26.mjs +2 -0
  18. package/dist/chunks/ColorGrid-CcF0bH26.mjs.map +1 -0
  19. package/dist/chunks/ColorPickerPopup-BZxMBDxy.mjs +2 -0
  20. package/dist/chunks/ColorPickerPopup-BZxMBDxy.mjs.map +1 -0
  21. package/dist/chunks/ColorValidation-rOrJxBBt.mjs +2 -0
  22. package/dist/chunks/ColorValidation-rOrJxBBt.mjs.map +1 -0
  23. package/dist/chunks/CommandHelpers-G6M-qXJR.mjs +2 -0
  24. package/dist/chunks/CommandHelpers-G6M-qXJR.mjs.map +1 -0
  25. package/dist/chunks/Commands-ByBjgD3-.mjs +2 -0
  26. package/dist/chunks/Commands-ByBjgD3-.mjs.map +1 -0
  27. package/dist/chunks/Decoration-D-yB-H5v.mjs +2 -0
  28. package/dist/chunks/Decoration-D-yB-H5v.mjs.map +1 -0
  29. package/dist/chunks/Document-DnPKbcPE.mjs +2 -0
  30. package/dist/chunks/Document-DnPKbcPE.mjs.map +1 -0
  31. package/dist/chunks/DocumentParser-KuBaEZN6.mjs +2 -0
  32. package/dist/chunks/DocumentParser-KuBaEZN6.mjs.map +1 -0
  33. package/dist/chunks/DocumentSerializer-DgdiJsES.mjs +2 -0
  34. package/dist/chunks/DocumentSerializer-DgdiJsES.mjs.map +1 -0
  35. package/dist/chunks/FontPlugin-DYntd3gN.mjs +2 -0
  36. package/dist/chunks/FontPlugin-DYntd3gN.mjs.map +1 -0
  37. package/dist/chunks/FontSizePlugin-CGlH-S6g.mjs +2 -0
  38. package/dist/chunks/FontSizePlugin-CGlH-S6g.mjs.map +1 -0
  39. package/dist/chunks/GapCursorNavigation-uytzcZ6C.mjs +2 -0
  40. package/dist/chunks/GapCursorNavigation-uytzcZ6C.mjs.map +1 -0
  41. package/dist/chunks/GapCursorPlugin-BQ2_-7i6.mjs +2 -0
  42. package/dist/chunks/GapCursorPlugin-BQ2_-7i6.mjs.map +1 -0
  43. package/dist/chunks/HardBreakPlugin-CCrP_Kec.mjs +2 -0
  44. package/dist/chunks/HardBreakPlugin-CCrP_Kec.mjs.map +1 -0
  45. package/dist/chunks/HeadingPlugin-BiDNuBmw.mjs +2 -0
  46. package/dist/chunks/HeadingPlugin-BiDNuBmw.mjs.map +1 -0
  47. package/dist/chunks/HighlightPlugin-CwrtRVfS.mjs +2 -0
  48. package/dist/chunks/HighlightPlugin-CwrtRVfS.mjs.map +1 -0
  49. package/dist/chunks/HorizontalRulePlugin-CKIkbVwn.mjs +2 -0
  50. package/dist/chunks/HorizontalRulePlugin-CKIkbVwn.mjs.map +1 -0
  51. package/dist/chunks/ImagePlugin-BqRAKlG1.mjs +2 -0
  52. package/dist/chunks/ImagePlugin-BqRAKlG1.mjs.map +1 -0
  53. package/dist/chunks/KeyboardNav-IMWHB6wc.mjs +2 -0
  54. package/dist/chunks/KeyboardNav-IMWHB6wc.mjs.map +1 -0
  55. package/dist/chunks/LinkPlugin-Cb2cpFe8.mjs +2 -0
  56. package/dist/chunks/LinkPlugin-Cb2cpFe8.mjs.map +1 -0
  57. package/dist/chunks/ListPlugin-CZgkinoS.mjs +2 -0
  58. package/dist/chunks/ListPlugin-CZgkinoS.mjs.map +1 -0
  59. package/dist/chunks/NodeResolver-BkOsZnuU.mjs +2 -0
  60. package/dist/chunks/NodeResolver-BkOsZnuU.mjs.map +1 -0
  61. package/dist/chunks/NodeSelectionCommands-U8xEdaE4.mjs +2 -0
  62. package/dist/chunks/NodeSelectionCommands-U8xEdaE4.mjs.map +1 -0
  63. package/dist/chunks/Platform-wPvKFB9m.mjs +2 -0
  64. package/dist/chunks/Platform-wPvKFB9m.mjs.map +1 -0
  65. package/dist/chunks/Plugin-C4cBw3bs.mjs +2 -0
  66. package/dist/chunks/Plugin-C4cBw3bs.mjs.map +1 -0
  67. package/dist/chunks/PluginHelpers-BZU5rE44.mjs +2 -0
  68. package/dist/chunks/PluginHelpers-BZU5rE44.mjs.map +1 -0
  69. package/dist/chunks/PopupManager-S2qQtTxR.mjs +2 -0
  70. package/dist/chunks/PopupManager-S2qQtTxR.mjs.map +1 -0
  71. package/dist/chunks/PopupPositioning-BdSCai19.mjs +2 -0
  72. package/dist/chunks/PopupPositioning-BdSCai19.mjs.map +1 -0
  73. package/dist/chunks/PrintPlugin-80SINLGF.mjs +2 -0
  74. package/dist/chunks/PrintPlugin-80SINLGF.mjs.map +1 -0
  75. package/dist/chunks/PrintTypes-CWIAfEaX.mjs +2 -0
  76. package/dist/chunks/PrintTypes-CWIAfEaX.mjs.map +1 -0
  77. package/dist/chunks/RangeIterator-DEuX1xKV.mjs +2 -0
  78. package/dist/chunks/RangeIterator-DEuX1xKV.mjs.map +1 -0
  79. package/dist/chunks/ShortcutFormatting-c0IajwWG.mjs +2 -0
  80. package/dist/chunks/ShortcutFormatting-c0IajwWG.mjs.map +1 -0
  81. package/dist/chunks/SmartPastePlugin-BvYBbHSA.mjs +2 -0
  82. package/dist/chunks/SmartPastePlugin-BvYBbHSA.mjs.map +1 -0
  83. package/dist/chunks/StrikethroughPlugin-XBOGv5Oi.mjs +2 -0
  84. package/dist/chunks/StrikethroughPlugin-XBOGv5Oi.mjs.map +1 -0
  85. package/dist/chunks/StyleRuntime-Bwde5icB.mjs +2 -0
  86. package/dist/chunks/StyleRuntime-Bwde5icB.mjs.map +1 -0
  87. package/dist/chunks/SuperSubPlugin-CVjU4W9y.mjs +2 -0
  88. package/dist/chunks/SuperSubPlugin-CVjU4W9y.mjs.map +1 -0
  89. package/dist/chunks/SyntaxTokenTypes-CY2-rJCA.mjs +2 -0
  90. package/dist/chunks/SyntaxTokenTypes-CY2-rJCA.mjs.map +1 -0
  91. package/dist/chunks/TablePlugin-BHpp6h9H.mjs +2 -0
  92. package/dist/chunks/TablePlugin-BHpp6h9H.mjs.map +1 -0
  93. package/dist/chunks/TextColorPlugin-CGbyMGTr.mjs +2 -0
  94. package/dist/chunks/TextColorPlugin-CGbyMGTr.mjs.map +1 -0
  95. package/dist/chunks/TextDirectionCorePlugin-DPU7wy6g.mjs +2 -0
  96. package/dist/chunks/TextDirectionCorePlugin-DPU7wy6g.mjs.map +1 -0
  97. package/dist/chunks/TextDirectionLocale-DxOfFixh.mjs +2 -0
  98. package/dist/chunks/TextDirectionLocale-DxOfFixh.mjs.map +1 -0
  99. package/dist/chunks/TextFormattingPlugin-CYVnhHH4.mjs +2 -0
  100. package/dist/chunks/TextFormattingPlugin-CYVnhHH4.mjs.map +1 -0
  101. package/dist/chunks/ToolbarPlugin-CWDkWXE8.mjs +2 -0
  102. package/dist/chunks/ToolbarPlugin-CWDkWXE8.mjs.map +1 -0
  103. package/dist/chunks/WordBoundary-BkxXn2JA.mjs +2 -0
  104. package/dist/chunks/WordBoundary-BkxXn2JA.mjs.map +1 -0
  105. package/dist/chunks/XmlDetector-BiWxa0RJ.mjs +2 -0
  106. package/dist/chunks/XmlDetector-BiWxa0RJ.mjs.map +1 -0
  107. package/dist/chunks/XmlPatterns-B-V-mHF4.mjs +2 -0
  108. package/dist/chunks/XmlPatterns-B-V-mHF4.mjs.map +1 -0
  109. package/dist/chunks/XmlSupport-Czr8xQB1.mjs +2 -0
  110. package/dist/chunks/XmlSupport-Czr8xQB1.mjs.map +1 -0
  111. package/dist/chunks/ar-BARk0vUs.mjs +2 -0
  112. package/dist/chunks/ar-BARk0vUs.mjs.map +1 -0
  113. package/dist/chunks/ar-BVnwjtBO.mjs +2 -0
  114. package/dist/chunks/ar-BVnwjtBO.mjs.map +1 -0
  115. package/dist/chunks/ar-BaLVMaVO.mjs +2 -0
  116. package/dist/chunks/ar-BaLVMaVO.mjs.map +1 -0
  117. package/dist/chunks/ar-BbXyJVxi.mjs +2 -0
  118. package/dist/chunks/ar-BbXyJVxi.mjs.map +1 -0
  119. package/dist/chunks/ar-Bj_U3O6Y.mjs +2 -0
  120. package/dist/chunks/ar-Bj_U3O6Y.mjs.map +1 -0
  121. package/dist/chunks/ar-CLEiZlfu.mjs +2 -0
  122. package/dist/chunks/ar-CLEiZlfu.mjs.map +1 -0
  123. package/dist/chunks/ar-CaE825oi.mjs +2 -0
  124. package/dist/chunks/ar-CaE825oi.mjs.map +1 -0
  125. package/dist/chunks/ar-CaRHAfkM.mjs +2 -0
  126. package/dist/chunks/ar-CaRHAfkM.mjs.map +1 -0
  127. package/dist/chunks/ar-Cg1wGAxo.mjs +2 -0
  128. package/dist/chunks/ar-Cg1wGAxo.mjs.map +1 -0
  129. package/dist/chunks/ar-Cp9qv7la.mjs +2 -0
  130. package/dist/chunks/ar-Cp9qv7la.mjs.map +1 -0
  131. package/dist/chunks/ar-CpZXocgF.mjs +2 -0
  132. package/dist/chunks/ar-CpZXocgF.mjs.map +1 -0
  133. package/dist/chunks/ar-CqD9pUY0.mjs +2 -0
  134. package/dist/chunks/ar-CqD9pUY0.mjs.map +1 -0
  135. package/dist/chunks/ar-D1DiKwV_.mjs +2 -0
  136. package/dist/chunks/ar-D1DiKwV_.mjs.map +1 -0
  137. package/dist/chunks/ar-D714r_62.mjs +2 -0
  138. package/dist/chunks/ar-D714r_62.mjs.map +1 -0
  139. package/dist/chunks/ar-D8hT58sd.mjs +2 -0
  140. package/dist/chunks/ar-D8hT58sd.mjs.map +1 -0
  141. package/dist/chunks/ar-DYA1zADy.mjs +2 -0
  142. package/dist/chunks/ar-DYA1zADy.mjs.map +1 -0
  143. package/dist/chunks/ar-Dc2VufjD.mjs +2 -0
  144. package/dist/chunks/ar-Dc2VufjD.mjs.map +1 -0
  145. package/dist/chunks/ar-DsmIDxDt.mjs +2 -0
  146. package/dist/chunks/ar-DsmIDxDt.mjs.map +1 -0
  147. package/dist/chunks/ar-M3QzJIS8.mjs +2 -0
  148. package/dist/chunks/ar-M3QzJIS8.mjs.map +1 -0
  149. package/dist/chunks/ar-UKi-TYFz.mjs +2 -0
  150. package/dist/chunks/ar-UKi-TYFz.mjs.map +1 -0
  151. package/dist/chunks/ar-UfrdJzT6.mjs +2 -0
  152. package/dist/chunks/ar-UfrdJzT6.mjs.map +1 -0
  153. package/dist/chunks/ar-fGsuiCw5.mjs +2 -0
  154. package/dist/chunks/ar-fGsuiCw5.mjs.map +1 -0
  155. package/dist/chunks/ar-fSElw9mJ.mjs +2 -0
  156. package/dist/chunks/ar-fSElw9mJ.mjs.map +1 -0
  157. package/dist/chunks/color-picker-iPmE48jm.mjs +2 -0
  158. package/dist/chunks/color-picker-iPmE48jm.mjs.map +1 -0
  159. package/dist/chunks/de-B4BcTYnc.mjs +2 -0
  160. package/dist/chunks/de-B4BcTYnc.mjs.map +1 -0
  161. package/dist/chunks/de-B7H06L3l.mjs +2 -0
  162. package/dist/chunks/de-B7H06L3l.mjs.map +1 -0
  163. package/dist/chunks/de-BWk2-9In.mjs +2 -0
  164. package/dist/chunks/de-BWk2-9In.mjs.map +1 -0
  165. package/dist/chunks/de-ByDTr_of.mjs +2 -0
  166. package/dist/chunks/de-ByDTr_of.mjs.map +1 -0
  167. package/dist/chunks/de-C5If_e7l.mjs +2 -0
  168. package/dist/chunks/de-C5If_e7l.mjs.map +1 -0
  169. package/dist/chunks/de-CAmM7IT5.mjs +2 -0
  170. package/dist/chunks/de-CAmM7IT5.mjs.map +1 -0
  171. package/dist/chunks/de-CF7zshOE.mjs +2 -0
  172. package/dist/chunks/de-CF7zshOE.mjs.map +1 -0
  173. package/dist/chunks/de-CXAESa_f.mjs +2 -0
  174. package/dist/chunks/de-CXAESa_f.mjs.map +1 -0
  175. package/dist/chunks/de-ChvJQZeC.mjs +2 -0
  176. package/dist/chunks/de-ChvJQZeC.mjs.map +1 -0
  177. package/dist/chunks/de-ClJaNWJr.mjs +2 -0
  178. package/dist/chunks/de-ClJaNWJr.mjs.map +1 -0
  179. package/dist/chunks/de-CpNFM0EP.mjs +2 -0
  180. package/dist/chunks/de-CpNFM0EP.mjs.map +1 -0
  181. package/dist/chunks/de-CwSQIBLx.mjs +2 -0
  182. package/dist/chunks/de-CwSQIBLx.mjs.map +1 -0
  183. package/dist/chunks/de-D3lxYgJa.mjs +2 -0
  184. package/dist/chunks/de-D3lxYgJa.mjs.map +1 -0
  185. package/dist/chunks/de-D8gRtvU4.mjs +2 -0
  186. package/dist/chunks/de-D8gRtvU4.mjs.map +1 -0
  187. package/dist/chunks/de-D_9IOrAk.mjs +2 -0
  188. package/dist/chunks/de-D_9IOrAk.mjs.map +1 -0
  189. package/dist/chunks/de-DcwZkO0v.mjs +2 -0
  190. package/dist/chunks/de-DcwZkO0v.mjs.map +1 -0
  191. package/dist/chunks/de-DeSVCxbd.mjs +2 -0
  192. package/dist/chunks/de-DeSVCxbd.mjs.map +1 -0
  193. package/dist/chunks/de-DqxnR2Y8.mjs +2 -0
  194. package/dist/chunks/de-DqxnR2Y8.mjs.map +1 -0
  195. package/dist/chunks/de-J82qPFkV.mjs +2 -0
  196. package/dist/chunks/de-J82qPFkV.mjs.map +1 -0
  197. package/dist/chunks/de-QDbUiCAO.mjs +2 -0
  198. package/dist/chunks/de-QDbUiCAO.mjs.map +1 -0
  199. package/dist/chunks/de-eAQXJdL9.mjs +2 -0
  200. package/dist/chunks/de-eAQXJdL9.mjs.map +1 -0
  201. package/dist/chunks/de-hneXQd4z.mjs +2 -0
  202. package/dist/chunks/de-hneXQd4z.mjs.map +1 -0
  203. package/dist/chunks/de-wXAi5Jyt.mjs +2 -0
  204. package/dist/chunks/de-wXAi5Jyt.mjs.map +1 -0
  205. package/dist/chunks/es-5c_5O95N.mjs +2 -0
  206. package/dist/chunks/es-5c_5O95N.mjs.map +1 -0
  207. package/dist/chunks/es-B2QB6DHA.mjs +2 -0
  208. package/dist/chunks/es-B2QB6DHA.mjs.map +1 -0
  209. package/dist/chunks/es-BEcu8DtV.mjs +2 -0
  210. package/dist/chunks/es-BEcu8DtV.mjs.map +1 -0
  211. package/dist/chunks/es-BXTkzYVW.mjs +2 -0
  212. package/dist/chunks/es-BXTkzYVW.mjs.map +1 -0
  213. package/dist/chunks/es-BemQV8dI.mjs +2 -0
  214. package/dist/chunks/es-BemQV8dI.mjs.map +1 -0
  215. package/dist/chunks/es-BfJM5zJ5.mjs +2 -0
  216. package/dist/chunks/es-BfJM5zJ5.mjs.map +1 -0
  217. package/dist/chunks/es-CnqxzYfU.mjs +2 -0
  218. package/dist/chunks/es-CnqxzYfU.mjs.map +1 -0
  219. package/dist/chunks/es-CrZtAd3-.mjs +2 -0
  220. package/dist/chunks/es-CrZtAd3-.mjs.map +1 -0
  221. package/dist/chunks/es-CsCCy0S5.mjs +2 -0
  222. package/dist/chunks/es-CsCCy0S5.mjs.map +1 -0
  223. package/dist/chunks/es-D62AfyHC.mjs +2 -0
  224. package/dist/chunks/es-D62AfyHC.mjs.map +1 -0
  225. package/dist/chunks/es-DA_zUbSs.mjs +2 -0
  226. package/dist/chunks/es-DA_zUbSs.mjs.map +1 -0
  227. package/dist/chunks/es-DFCDhXJb.mjs +2 -0
  228. package/dist/chunks/es-DFCDhXJb.mjs.map +1 -0
  229. package/dist/chunks/es-DHMIpSfB.mjs +2 -0
  230. package/dist/chunks/es-DHMIpSfB.mjs.map +1 -0
  231. package/dist/chunks/es-DIH9KVn1.mjs +2 -0
  232. package/dist/chunks/es-DIH9KVn1.mjs.map +1 -0
  233. package/dist/chunks/es-DOHIPZYT.mjs +2 -0
  234. package/dist/chunks/es-DOHIPZYT.mjs.map +1 -0
  235. package/dist/chunks/es-DPyejgTk.mjs +2 -0
  236. package/dist/chunks/es-DPyejgTk.mjs.map +1 -0
  237. package/dist/chunks/es-DUVk_Wkc.mjs +2 -0
  238. package/dist/chunks/es-DUVk_Wkc.mjs.map +1 -0
  239. package/dist/chunks/es-Di4t0cUf.mjs +2 -0
  240. package/dist/chunks/es-Di4t0cUf.mjs.map +1 -0
  241. package/dist/chunks/es-DjwvgN1j.mjs +2 -0
  242. package/dist/chunks/es-DjwvgN1j.mjs.map +1 -0
  243. package/dist/chunks/es-Nawgghri.mjs +2 -0
  244. package/dist/chunks/es-Nawgghri.mjs.map +1 -0
  245. package/dist/chunks/es-SuOzBFT7.mjs +2 -0
  246. package/dist/chunks/es-SuOzBFT7.mjs.map +1 -0
  247. package/dist/chunks/es-gB6GcNGB.mjs +2 -0
  248. package/dist/chunks/es-gB6GcNGB.mjs.map +1 -0
  249. package/dist/chunks/es-xSr9miNk.mjs +2 -0
  250. package/dist/chunks/es-xSr9miNk.mjs.map +1 -0
  251. package/dist/chunks/fonts-CG_dDwvT.mjs +2 -0
  252. package/dist/chunks/fonts-CG_dDwvT.mjs.map +1 -0
  253. package/dist/chunks/fr-B35gBW5Z.mjs +2 -0
  254. package/dist/chunks/fr-B35gBW5Z.mjs.map +1 -0
  255. package/dist/chunks/fr-BFngqWSa.mjs +2 -0
  256. package/dist/chunks/fr-BFngqWSa.mjs.map +1 -0
  257. package/dist/chunks/fr-BZRak2_s.mjs +2 -0
  258. package/dist/chunks/fr-BZRak2_s.mjs.map +1 -0
  259. package/dist/chunks/fr-Bj_GziCv.mjs +2 -0
  260. package/dist/chunks/fr-Bj_GziCv.mjs.map +1 -0
  261. package/dist/chunks/fr-BushvDBo.mjs +2 -0
  262. package/dist/chunks/fr-BushvDBo.mjs.map +1 -0
  263. package/dist/chunks/fr-Bz2JMdw5.mjs +2 -0
  264. package/dist/chunks/fr-Bz2JMdw5.mjs.map +1 -0
  265. package/dist/chunks/fr-C2y-quYa.mjs +2 -0
  266. package/dist/chunks/fr-C2y-quYa.mjs.map +1 -0
  267. package/dist/chunks/fr-C5g40qHr.mjs +2 -0
  268. package/dist/chunks/fr-C5g40qHr.mjs.map +1 -0
  269. package/dist/chunks/fr-CRPVlCtC.mjs +2 -0
  270. package/dist/chunks/fr-CRPVlCtC.mjs.map +1 -0
  271. package/dist/chunks/fr-Cf0xNw5j.mjs +2 -0
  272. package/dist/chunks/fr-Cf0xNw5j.mjs.map +1 -0
  273. package/dist/chunks/fr-Cr62KfH7.mjs +2 -0
  274. package/dist/chunks/fr-Cr62KfH7.mjs.map +1 -0
  275. package/dist/chunks/fr-D6XZTFJa.mjs +2 -0
  276. package/dist/chunks/fr-D6XZTFJa.mjs.map +1 -0
  277. package/dist/chunks/fr-D9u2mcht.mjs +2 -0
  278. package/dist/chunks/fr-D9u2mcht.mjs.map +1 -0
  279. package/dist/chunks/fr-DEWFKFrW.mjs +2 -0
  280. package/dist/chunks/fr-DEWFKFrW.mjs.map +1 -0
  281. package/dist/chunks/fr-DGBuhK3D.mjs +2 -0
  282. package/dist/chunks/fr-DGBuhK3D.mjs.map +1 -0
  283. package/dist/chunks/fr-DQBLPLlz.mjs +2 -0
  284. package/dist/chunks/fr-DQBLPLlz.mjs.map +1 -0
  285. package/dist/chunks/fr-DQM130Rf.mjs +2 -0
  286. package/dist/chunks/fr-DQM130Rf.mjs.map +1 -0
  287. package/dist/chunks/fr-Dg5SMkMo.mjs +2 -0
  288. package/dist/chunks/fr-Dg5SMkMo.mjs.map +1 -0
  289. package/dist/chunks/fr-Dv0GIx7Q.mjs +2 -0
  290. package/dist/chunks/fr-Dv0GIx7Q.mjs.map +1 -0
  291. package/dist/chunks/fr-DyGGhKFe.mjs +2 -0
  292. package/dist/chunks/fr-DyGGhKFe.mjs.map +1 -0
  293. package/dist/chunks/fr-DzQfRP8y.mjs +2 -0
  294. package/dist/chunks/fr-DzQfRP8y.mjs.map +1 -0
  295. package/dist/chunks/fr-SxdLDSEQ.mjs +2 -0
  296. package/dist/chunks/fr-SxdLDSEQ.mjs.map +1 -0
  297. package/dist/chunks/fr-VGC8qZxr.mjs +2 -0
  298. package/dist/chunks/fr-VGC8qZxr.mjs.map +1 -0
  299. package/dist/chunks/full-B-bw4M7L.mjs +2 -0
  300. package/dist/chunks/full-B-bw4M7L.mjs.map +1 -0
  301. package/dist/chunks/hi-8AQg9KKV.mjs +2 -0
  302. package/dist/chunks/hi-8AQg9KKV.mjs.map +1 -0
  303. package/dist/chunks/hi-B0EvMNl3.mjs +2 -0
  304. package/dist/chunks/hi-B0EvMNl3.mjs.map +1 -0
  305. package/dist/chunks/hi-B5sPMUNb.mjs +2 -0
  306. package/dist/chunks/hi-B5sPMUNb.mjs.map +1 -0
  307. package/dist/chunks/hi-BOfcnulc.mjs +2 -0
  308. package/dist/chunks/hi-BOfcnulc.mjs.map +1 -0
  309. package/dist/chunks/hi-BUveHWCk.mjs +2 -0
  310. package/dist/chunks/hi-BUveHWCk.mjs.map +1 -0
  311. package/dist/chunks/hi-BZ_n8-zx.mjs +2 -0
  312. package/dist/chunks/hi-BZ_n8-zx.mjs.map +1 -0
  313. package/dist/chunks/hi-BeLhPZ5d.mjs +2 -0
  314. package/dist/chunks/hi-BeLhPZ5d.mjs.map +1 -0
  315. package/dist/chunks/hi-Bg8jWcjX.mjs +2 -0
  316. package/dist/chunks/hi-Bg8jWcjX.mjs.map +1 -0
  317. package/dist/chunks/hi-BktVy4Yc.mjs +2 -0
  318. package/dist/chunks/hi-BktVy4Yc.mjs.map +1 -0
  319. package/dist/chunks/hi-Btg6DNgW.mjs +2 -0
  320. package/dist/chunks/hi-Btg6DNgW.mjs.map +1 -0
  321. package/dist/chunks/hi-C20PmckT.mjs +2 -0
  322. package/dist/chunks/hi-C20PmckT.mjs.map +1 -0
  323. package/dist/chunks/hi-C2DDsttW.mjs +2 -0
  324. package/dist/chunks/hi-C2DDsttW.mjs.map +1 -0
  325. package/dist/chunks/hi-CCDCfQV0.mjs +2 -0
  326. package/dist/chunks/hi-CCDCfQV0.mjs.map +1 -0
  327. package/dist/chunks/hi-CWX5sDy1.mjs +2 -0
  328. package/dist/chunks/hi-CWX5sDy1.mjs.map +1 -0
  329. package/dist/chunks/hi-ClSwgZfK.mjs +2 -0
  330. package/dist/chunks/hi-ClSwgZfK.mjs.map +1 -0
  331. package/dist/chunks/hi-D-apR3ri.mjs +2 -0
  332. package/dist/chunks/hi-D-apR3ri.mjs.map +1 -0
  333. package/dist/chunks/hi-D6ZQ_R6m.mjs +2 -0
  334. package/dist/chunks/hi-D6ZQ_R6m.mjs.map +1 -0
  335. package/dist/chunks/hi-D_rhcSL3.mjs +2 -0
  336. package/dist/chunks/hi-D_rhcSL3.mjs.map +1 -0
  337. package/dist/chunks/hi-DcA0CxZR.mjs +2 -0
  338. package/dist/chunks/hi-DcA0CxZR.mjs.map +1 -0
  339. package/dist/chunks/hi-Dd2GOD9r.mjs +2 -0
  340. package/dist/chunks/hi-Dd2GOD9r.mjs.map +1 -0
  341. package/dist/chunks/hi-DkEmvBok.mjs +2 -0
  342. package/dist/chunks/hi-DkEmvBok.mjs.map +1 -0
  343. package/dist/chunks/hi-nfmm9uwI.mjs +2 -0
  344. package/dist/chunks/hi-nfmm9uwI.mjs.map +1 -0
  345. package/dist/chunks/hi-wBX612X_.mjs +2 -0
  346. package/dist/chunks/hi-wBX612X_.mjs.map +1 -0
  347. package/dist/chunks/minimal-CMt909kl.mjs +2 -0
  348. package/dist/chunks/minimal-CMt909kl.mjs.map +1 -0
  349. package/dist/chunks/pt-BGQ7Sh6p.mjs +2 -0
  350. package/dist/chunks/pt-BGQ7Sh6p.mjs.map +1 -0
  351. package/dist/chunks/pt-BGQj9xok.mjs +2 -0
  352. package/dist/chunks/pt-BGQj9xok.mjs.map +1 -0
  353. package/dist/chunks/pt-BL5xNIhC.mjs +2 -0
  354. package/dist/chunks/pt-BL5xNIhC.mjs.map +1 -0
  355. package/dist/chunks/pt-BM8sUzpI.mjs +2 -0
  356. package/dist/chunks/pt-BM8sUzpI.mjs.map +1 -0
  357. package/dist/chunks/pt-BVLuZULN.mjs +2 -0
  358. package/dist/chunks/pt-BVLuZULN.mjs.map +1 -0
  359. package/dist/chunks/pt-BlGlrx3M.mjs +2 -0
  360. package/dist/chunks/pt-BlGlrx3M.mjs.map +1 -0
  361. package/dist/chunks/pt-CKaXK1FK.mjs +2 -0
  362. package/dist/chunks/pt-CKaXK1FK.mjs.map +1 -0
  363. package/dist/chunks/pt-CMpzmrVu.mjs +2 -0
  364. package/dist/chunks/pt-CMpzmrVu.mjs.map +1 -0
  365. package/dist/chunks/pt-Cw77qSTP.mjs +2 -0
  366. package/dist/chunks/pt-Cw77qSTP.mjs.map +1 -0
  367. package/dist/chunks/pt-DBNe2BiX.mjs +2 -0
  368. package/dist/chunks/pt-DBNe2BiX.mjs.map +1 -0
  369. package/dist/chunks/pt-DCfJFt-v.mjs +2 -0
  370. package/dist/chunks/pt-DCfJFt-v.mjs.map +1 -0
  371. package/dist/chunks/pt-DEs0I6eo.mjs +2 -0
  372. package/dist/chunks/pt-DEs0I6eo.mjs.map +1 -0
  373. package/dist/chunks/pt-DKONqS4g.mjs +2 -0
  374. package/dist/chunks/pt-DKONqS4g.mjs.map +1 -0
  375. package/dist/chunks/pt-DO4FbPvV.mjs +2 -0
  376. package/dist/chunks/pt-DO4FbPvV.mjs.map +1 -0
  377. package/dist/chunks/pt-DbDOQjV-.mjs +2 -0
  378. package/dist/chunks/pt-DbDOQjV-.mjs.map +1 -0
  379. package/dist/chunks/pt-DiYv0Ubf.mjs +2 -0
  380. package/dist/chunks/pt-DiYv0Ubf.mjs.map +1 -0
  381. package/dist/chunks/pt-Dk4Mr4yC.mjs +2 -0
  382. package/dist/chunks/pt-Dk4Mr4yC.mjs.map +1 -0
  383. package/dist/chunks/pt-DpLB51hL.mjs +2 -0
  384. package/dist/chunks/pt-DpLB51hL.mjs.map +1 -0
  385. package/dist/chunks/pt-Q5jXPjWo.mjs +2 -0
  386. package/dist/chunks/pt-Q5jXPjWo.mjs.map +1 -0
  387. package/dist/chunks/pt-kFy3gqNp.mjs +2 -0
  388. package/dist/chunks/pt-kFy3gqNp.mjs.map +1 -0
  389. package/dist/chunks/pt-ncNSxrVp.mjs +2 -0
  390. package/dist/chunks/pt-ncNSxrVp.mjs.map +1 -0
  391. package/dist/chunks/pt-tUVNk-7W.mjs +2 -0
  392. package/dist/chunks/pt-tUVNk-7W.mjs.map +1 -0
  393. package/dist/chunks/pt-zzij5vS0.mjs +2 -0
  394. package/dist/chunks/pt-zzij5vS0.mjs.map +1 -0
  395. package/dist/chunks/ru-B-XR4L6x.mjs +2 -0
  396. package/dist/chunks/ru-B-XR4L6x.mjs.map +1 -0
  397. package/dist/chunks/ru-B00ZXSqu.mjs +2 -0
  398. package/dist/chunks/ru-B00ZXSqu.mjs.map +1 -0
  399. package/dist/chunks/ru-B5wvkAtV.mjs +2 -0
  400. package/dist/chunks/ru-B5wvkAtV.mjs.map +1 -0
  401. package/dist/chunks/ru-BA5-gdMK.mjs +2 -0
  402. package/dist/chunks/ru-BA5-gdMK.mjs.map +1 -0
  403. package/dist/chunks/ru-BNTSKpWh.mjs +2 -0
  404. package/dist/chunks/ru-BNTSKpWh.mjs.map +1 -0
  405. package/dist/chunks/ru-BRy-L-TF.mjs +2 -0
  406. package/dist/chunks/ru-BRy-L-TF.mjs.map +1 -0
  407. package/dist/chunks/ru-BZrPeSDg.mjs +2 -0
  408. package/dist/chunks/ru-BZrPeSDg.mjs.map +1 -0
  409. package/dist/chunks/ru-B_8ujIHK.mjs +2 -0
  410. package/dist/chunks/ru-B_8ujIHK.mjs.map +1 -0
  411. package/dist/chunks/ru-BbgvH6r3.mjs +2 -0
  412. package/dist/chunks/ru-BbgvH6r3.mjs.map +1 -0
  413. package/dist/chunks/ru-CDm5R5CV.mjs +2 -0
  414. package/dist/chunks/ru-CDm5R5CV.mjs.map +1 -0
  415. package/dist/chunks/ru-CWLFWYwd.mjs +2 -0
  416. package/dist/chunks/ru-CWLFWYwd.mjs.map +1 -0
  417. package/dist/chunks/ru-CqsCwBQ_.mjs +2 -0
  418. package/dist/chunks/ru-CqsCwBQ_.mjs.map +1 -0
  419. package/dist/chunks/ru-CsFv_mi4.mjs +2 -0
  420. package/dist/chunks/ru-CsFv_mi4.mjs.map +1 -0
  421. package/dist/chunks/ru-Cv9Zbbn2.mjs +2 -0
  422. package/dist/chunks/ru-Cv9Zbbn2.mjs.map +1 -0
  423. package/dist/chunks/ru-CyTNK9dE.mjs +2 -0
  424. package/dist/chunks/ru-CyTNK9dE.mjs.map +1 -0
  425. package/dist/chunks/ru-DEkLlarB.mjs +2 -0
  426. package/dist/chunks/ru-DEkLlarB.mjs.map +1 -0
  427. package/dist/chunks/ru-DZge62_-.mjs +2 -0
  428. package/dist/chunks/ru-DZge62_-.mjs.map +1 -0
  429. package/dist/chunks/ru-DiVRD-Ds.mjs +2 -0
  430. package/dist/chunks/ru-DiVRD-Ds.mjs.map +1 -0
  431. package/dist/chunks/ru-DkP8YLYT.mjs +2 -0
  432. package/dist/chunks/ru-DkP8YLYT.mjs.map +1 -0
  433. package/dist/chunks/ru-OKZRZ5c-.mjs +2 -0
  434. package/dist/chunks/ru-OKZRZ5c-.mjs.map +1 -0
  435. package/dist/chunks/ru-aYY1QVJS.mjs +2 -0
  436. package/dist/chunks/ru-aYY1QVJS.mjs.map +1 -0
  437. package/dist/chunks/ru-ejPBB15H.mjs +2 -0
  438. package/dist/chunks/ru-ejPBB15H.mjs.map +1 -0
  439. package/dist/chunks/ru-tp62bXSj.mjs +2 -0
  440. package/dist/chunks/ru-tp62bXSj.mjs.map +1 -0
  441. package/dist/chunks/shared-DJ08jwra.mjs +2 -0
  442. package/dist/chunks/shared-DJ08jwra.mjs.map +1 -0
  443. package/dist/chunks/src-dxsvbiql.mjs +2 -0
  444. package/dist/chunks/src-dxsvbiql.mjs.map +1 -0
  445. package/dist/chunks/text-direction-advanced-B71gUwvk.mjs +2 -0
  446. package/dist/chunks/text-direction-advanced-B71gUwvk.mjs.map +1 -0
  447. package/dist/chunks/zh-2gEqF3OX.mjs +2 -0
  448. package/dist/chunks/zh-2gEqF3OX.mjs.map +1 -0
  449. package/dist/chunks/zh-B5J1sSsk.mjs +2 -0
  450. package/dist/chunks/zh-B5J1sSsk.mjs.map +1 -0
  451. package/dist/chunks/zh-B5LmYVQ2.mjs +2 -0
  452. package/dist/chunks/zh-B5LmYVQ2.mjs.map +1 -0
  453. package/dist/chunks/zh-BBOheLpv.mjs +2 -0
  454. package/dist/chunks/zh-BBOheLpv.mjs.map +1 -0
  455. package/dist/chunks/zh-BOy5F5Jq.mjs +2 -0
  456. package/dist/chunks/zh-BOy5F5Jq.mjs.map +1 -0
  457. package/dist/chunks/zh-BRlo0ayI.mjs +2 -0
  458. package/dist/chunks/zh-BRlo0ayI.mjs.map +1 -0
  459. package/dist/chunks/zh-BgTAzt6l.mjs +2 -0
  460. package/dist/chunks/zh-BgTAzt6l.mjs.map +1 -0
  461. package/dist/chunks/zh-BjY4TNQf.mjs +2 -0
  462. package/dist/chunks/zh-BjY4TNQf.mjs.map +1 -0
  463. package/dist/chunks/zh-BtD9NFJS.mjs +2 -0
  464. package/dist/chunks/zh-BtD9NFJS.mjs.map +1 -0
  465. package/dist/chunks/zh-BvSLqJFE.mjs +2 -0
  466. package/dist/chunks/zh-BvSLqJFE.mjs.map +1 -0
  467. package/dist/chunks/zh-C4rxe0Zk.mjs +2 -0
  468. package/dist/chunks/zh-C4rxe0Zk.mjs.map +1 -0
  469. package/dist/chunks/zh-CyX2tIRP.mjs +2 -0
  470. package/dist/chunks/zh-CyX2tIRP.mjs.map +1 -0
  471. package/dist/chunks/zh-D9QN2C7q.mjs +2 -0
  472. package/dist/chunks/zh-D9QN2C7q.mjs.map +1 -0
  473. package/dist/chunks/zh-DTnSCP1F.mjs +2 -0
  474. package/dist/chunks/zh-DTnSCP1F.mjs.map +1 -0
  475. package/dist/chunks/zh-DWlBkrGZ.mjs +2 -0
  476. package/dist/chunks/zh-DWlBkrGZ.mjs.map +1 -0
  477. package/dist/chunks/zh-DcY4Ouin.mjs +2 -0
  478. package/dist/chunks/zh-DcY4Ouin.mjs.map +1 -0
  479. package/dist/chunks/zh-DovMZIDF.mjs +2 -0
  480. package/dist/chunks/zh-DovMZIDF.mjs.map +1 -0
  481. package/dist/chunks/zh-DtzwqBHS.mjs +2 -0
  482. package/dist/chunks/zh-DtzwqBHS.mjs.map +1 -0
  483. package/dist/chunks/zh-DunJzfVR.mjs +2 -0
  484. package/dist/chunks/zh-DunJzfVR.mjs.map +1 -0
  485. package/dist/chunks/zh-Pd1HqYSs.mjs +2 -0
  486. package/dist/chunks/zh-Pd1HqYSs.mjs.map +1 -0
  487. package/dist/chunks/zh-Yvqfkdln.mjs +2 -0
  488. package/dist/chunks/zh-Yvqfkdln.mjs.map +1 -0
  489. package/dist/chunks/zh-Z9seusJc.mjs +2 -0
  490. package/dist/chunks/zh-Z9seusJc.mjs.map +1 -0
  491. package/dist/chunks/zh-fAa_AbWI.mjs +2 -0
  492. package/dist/chunks/zh-fAa_AbWI.mjs.map +1 -0
  493. package/dist/commands/CommandHelpers.d.ts +0 -2
  494. package/dist/commands/CommandHelpers.d.ts.map +1 -1
  495. package/dist/commands/Commands.d.ts +1 -1
  496. package/dist/commands/Commands.d.ts.map +1 -1
  497. package/dist/commands/GapCursorCommands.d.ts.map +1 -1
  498. package/dist/commands/NodeSelectionCommands.d.ts.map +1 -1
  499. package/dist/commands/RangeIterator.d.ts +6 -0
  500. package/dist/commands/RangeIterator.d.ts.map +1 -1
  501. package/dist/editor/EditorInitializer.d.ts.map +1 -1
  502. package/dist/editor/styles/code-block.d.ts +1 -1
  503. package/dist/editor/styles/code-block.d.ts.map +1 -1
  504. package/dist/editor/styles/color-picker.d.ts +1 -1
  505. package/dist/editor/styles/color-picker.d.ts.map +1 -1
  506. package/dist/editor/styles/font-size-select.d.ts +1 -1
  507. package/dist/editor/styles/font-size-select.d.ts.map +1 -1
  508. package/dist/editor/styles/image.d.ts +1 -1
  509. package/dist/editor/styles/image.d.ts.map +1 -1
  510. package/dist/editor/styles/table.d.ts +1 -1
  511. package/dist/editor/styles/table.d.ts.map +1 -1
  512. package/dist/editor/styles/toolbar.d.ts +1 -1
  513. package/dist/editor/styles/toolbar.d.ts.map +1 -1
  514. package/dist/editor/theme/SyntaxTokenTypes.d.ts +26 -0
  515. package/dist/editor/theme/SyntaxTokenTypes.d.ts.map +1 -0
  516. package/dist/editor/theme/ThemeEngine.d.ts.map +1 -1
  517. package/dist/editor/theme/ThemeTokens.d.ts +6 -16
  518. package/dist/editor/theme/ThemeTokens.d.ts.map +1 -1
  519. package/dist/fonts.mjs +1 -1
  520. package/dist/full.d.ts +1 -0
  521. package/dist/full.d.ts.map +1 -1
  522. package/dist/full.mjs +1 -1
  523. package/dist/html.mjs +1 -1
  524. package/dist/index.d.ts +4 -2
  525. package/dist/index.d.ts.map +1 -1
  526. package/dist/model/Document.d.ts +2 -0
  527. package/dist/model/Document.d.ts.map +1 -1
  528. package/dist/model/KeymapRegistry.d.ts.map +1 -1
  529. package/dist/notectl-core.mjs +1 -1
  530. package/dist/notectl-core.umd.js +1 -1
  531. package/dist/notectl-core.umd.js.map +1 -1
  532. package/dist/plugins/alignment.mjs +1 -1
  533. package/dist/plugins/blockquote.mjs +1 -1
  534. package/dist/plugins/caret-navigation.mjs +1 -1
  535. package/dist/plugins/code-block/CodeBlockCommands.d.ts +5 -0
  536. package/dist/plugins/code-block/CodeBlockCommands.d.ts.map +1 -1
  537. package/dist/plugins/code-block/CodeBlockLocale.d.ts +2 -0
  538. package/dist/plugins/code-block/CodeBlockLocale.d.ts.map +1 -1
  539. package/dist/plugins/code-block/CodeBlockNodeView.d.ts.map +1 -1
  540. package/dist/plugins/code-block/CodeBlockPlugin.d.ts +4 -0
  541. package/dist/plugins/code-block/CodeBlockPlugin.d.ts.map +1 -1
  542. package/dist/plugins/code-block/CodeBlockTypes.d.ts +2 -1
  543. package/dist/plugins/code-block/CodeBlockTypes.d.ts.map +1 -1
  544. package/dist/plugins/code-block/highlighter/TokenizerTypes.d.ts +2 -4
  545. package/dist/plugins/code-block/highlighter/TokenizerTypes.d.ts.map +1 -1
  546. package/dist/plugins/code-block/highlighter/languages/index.d.ts +1 -0
  547. package/dist/plugins/code-block/highlighter/languages/index.d.ts.map +1 -1
  548. package/dist/plugins/code-block/highlighter/languages/java.d.ts +3 -0
  549. package/dist/plugins/code-block/highlighter/languages/java.d.ts.map +1 -0
  550. package/dist/plugins/code-block/highlighter/languages/xml.d.ts.map +1 -1
  551. package/dist/plugins/code-block/index.d.ts +1 -0
  552. package/dist/plugins/code-block/index.d.ts.map +1 -1
  553. package/dist/plugins/code-block/locales/ar.d.ts.map +1 -1
  554. package/dist/plugins/code-block/locales/de.d.ts.map +1 -1
  555. package/dist/plugins/code-block/locales/es.d.ts.map +1 -1
  556. package/dist/plugins/code-block/locales/fr.d.ts.map +1 -1
  557. package/dist/plugins/code-block/locales/hi.d.ts.map +1 -1
  558. package/dist/plugins/code-block/locales/pt.d.ts.map +1 -1
  559. package/dist/plugins/code-block/locales/ru.d.ts.map +1 -1
  560. package/dist/plugins/code-block/locales/zh.d.ts.map +1 -1
  561. package/dist/plugins/code-block.mjs +1 -1
  562. package/dist/plugins/font-size.mjs +1 -1
  563. package/dist/plugins/font.mjs +1 -1
  564. package/dist/plugins/gap-cursor.mjs +1 -1
  565. package/dist/plugins/hard-break.mjs +1 -1
  566. package/dist/plugins/heading.mjs +1 -1
  567. package/dist/plugins/highlight.mjs +1 -1
  568. package/dist/plugins/horizontal-rule.mjs +1 -1
  569. package/dist/plugins/image.mjs +1 -1
  570. package/dist/plugins/language/LanguageRegistry.d.ts +15 -0
  571. package/dist/plugins/language/LanguageRegistry.d.ts.map +1 -0
  572. package/dist/plugins/language/LanguageTypes.d.ts +54 -0
  573. package/dist/plugins/language/LanguageTypes.d.ts.map +1 -0
  574. package/dist/plugins/language/bundles/JavaSupport.d.ts +3 -0
  575. package/dist/plugins/language/bundles/JavaSupport.d.ts.map +1 -0
  576. package/dist/plugins/language/bundles/JsonSupport.d.ts +3 -0
  577. package/dist/plugins/language/bundles/JsonSupport.d.ts.map +1 -0
  578. package/dist/plugins/language/bundles/XmlSupport.d.ts +3 -0
  579. package/dist/plugins/language/bundles/XmlSupport.d.ts.map +1 -0
  580. package/dist/plugins/language/bundles/index.d.ts +4 -0
  581. package/dist/plugins/language/bundles/index.d.ts.map +1 -0
  582. package/dist/plugins/language/index.d.ts +4 -0
  583. package/dist/plugins/language/index.d.ts.map +1 -0
  584. package/dist/plugins/language.mjs +1 -0
  585. package/dist/plugins/link.mjs +1 -1
  586. package/dist/plugins/list/ListAttrsFactory.d.ts +5 -0
  587. package/dist/plugins/list/ListAttrsFactory.d.ts.map +1 -0
  588. package/dist/plugins/list/ListCommands.d.ts +13 -0
  589. package/dist/plugins/list/ListCommands.d.ts.map +1 -0
  590. package/dist/plugins/list/ListDefinitions.d.ts +9 -0
  591. package/dist/plugins/list/ListDefinitions.d.ts.map +1 -0
  592. package/dist/plugins/list/ListInputRules.d.ts +5 -0
  593. package/dist/plugins/list/ListInputRules.d.ts.map +1 -0
  594. package/dist/plugins/list/ListKeyboardHandlers.d.ts +4 -0
  595. package/dist/plugins/list/ListKeyboardHandlers.d.ts.map +1 -0
  596. package/dist/plugins/list/ListPlugin.d.ts +0 -22
  597. package/dist/plugins/list/ListPlugin.d.ts.map +1 -1
  598. package/dist/plugins/list/ListToolbarItems.d.ts +6 -0
  599. package/dist/plugins/list/ListToolbarItems.d.ts.map +1 -0
  600. package/dist/plugins/list.mjs +1 -1
  601. package/dist/plugins/print.mjs +1 -1
  602. package/dist/plugins/shared/PopupPositioning.d.ts +20 -0
  603. package/dist/plugins/shared/PopupPositioning.d.ts.map +1 -1
  604. package/dist/plugins/shared.mjs +1 -1
  605. package/dist/plugins/smart-paste/ContentSplitter.d.ts +14 -0
  606. package/dist/plugins/smart-paste/ContentSplitter.d.ts.map +1 -0
  607. package/dist/plugins/smart-paste/SmartPasteLocale.d.ts +1 -0
  608. package/dist/plugins/smart-paste/SmartPasteLocale.d.ts.map +1 -1
  609. package/dist/plugins/smart-paste/SmartPastePlugin.d.ts +6 -1
  610. package/dist/plugins/smart-paste/SmartPastePlugin.d.ts.map +1 -1
  611. package/dist/plugins/smart-paste/SmartPasteTypes.d.ts +5 -0
  612. package/dist/plugins/smart-paste/SmartPasteTypes.d.ts.map +1 -1
  613. package/dist/plugins/smart-paste/detectors/JavaDetector.d.ts +7 -0
  614. package/dist/plugins/smart-paste/detectors/JavaDetector.d.ts.map +1 -0
  615. package/dist/plugins/smart-paste/index.d.ts +2 -1
  616. package/dist/plugins/smart-paste/index.d.ts.map +1 -1
  617. package/dist/plugins/smart-paste/locales/ar.d.ts.map +1 -1
  618. package/dist/plugins/smart-paste/locales/de.d.ts.map +1 -1
  619. package/dist/plugins/smart-paste/locales/es.d.ts.map +1 -1
  620. package/dist/plugins/smart-paste/locales/fr.d.ts.map +1 -1
  621. package/dist/plugins/smart-paste/locales/hi.d.ts.map +1 -1
  622. package/dist/plugins/smart-paste/locales/pt.d.ts.map +1 -1
  623. package/dist/plugins/smart-paste/locales/ru.d.ts.map +1 -1
  624. package/dist/plugins/smart-paste/locales/zh.d.ts.map +1 -1
  625. package/dist/plugins/smart-paste.mjs +1 -1
  626. package/dist/plugins/strikethrough.mjs +1 -1
  627. package/dist/plugins/super-sub.mjs +1 -1
  628. package/dist/plugins/table/TableCommands.d.ts.map +1 -1
  629. package/dist/plugins/table/TableContextMenu.d.ts.map +1 -1
  630. package/dist/plugins/table.mjs +1 -1
  631. package/dist/plugins/text-color.mjs +1 -1
  632. package/dist/plugins/text-direction-advanced.mjs +1 -1
  633. package/dist/plugins/text-direction.mjs +1 -1
  634. package/dist/plugins/text-formatting.mjs +1 -1
  635. package/dist/plugins/toolbar/ToolbarOverflowController.d.ts.map +1 -1
  636. package/dist/plugins/toolbar/ToolbarTooltip.d.ts.map +1 -1
  637. package/dist/plugins/toolbar.mjs +1 -1
  638. package/dist/presets/full.mjs +1 -1
  639. package/dist/presets/minimal.mjs +1 -1
  640. package/dist/presets.mjs +1 -1
  641. package/dist/view/CaretNavigation.d.ts +9 -2
  642. package/dist/view/CaretNavigation.d.ts.map +1 -1
  643. package/dist/view/DomPointUtils.d.ts +2 -3
  644. package/dist/view/DomPointUtils.d.ts.map +1 -1
  645. package/dist/view/EditorViewEvents.d.ts.map +1 -1
  646. package/dist/view/EditorViewNavigation.d.ts.map +1 -1
  647. package/package.json +5 -1
  648. package/dist/chunks/AlignmentPlugin-CIkPaP2h.mjs +0 -2
  649. package/dist/chunks/AlignmentPlugin-CIkPaP2h.mjs.map +0 -1
  650. package/dist/chunks/AttrRegistry-B1iBFcKO.mjs +0 -2
  651. package/dist/chunks/AttrRegistry-B1iBFcKO.mjs.map +0 -1
  652. package/dist/chunks/AttributedMarkCommands-Cmet1IuC.mjs +0 -2
  653. package/dist/chunks/AttributedMarkCommands-Cmet1IuC.mjs.map +0 -1
  654. package/dist/chunks/BlockInsertion-DTIE2BiH.mjs +0 -2
  655. package/dist/chunks/BlockInsertion-DTIE2BiH.mjs.map +0 -1
  656. package/dist/chunks/BlockTypePickerRegistry-U4uY7-lN.mjs +0 -2
  657. package/dist/chunks/BlockTypePickerRegistry-U4uY7-lN.mjs.map +0 -1
  658. package/dist/chunks/BlockquotePlugin-DmbnFmNj.mjs +0 -2
  659. package/dist/chunks/BlockquotePlugin-DmbnFmNj.mjs.map +0 -1
  660. package/dist/chunks/CaretNavigationPlugin-4EaHvYXR.mjs +0 -2
  661. package/dist/chunks/CaretNavigationPlugin-4EaHvYXR.mjs.map +0 -1
  662. package/dist/chunks/CodeBlockPlugin-BP3XaOGj.mjs +0 -2
  663. package/dist/chunks/CodeBlockPlugin-BP3XaOGj.mjs.map +0 -1
  664. package/dist/chunks/ColorGrid-taTKtdsm.mjs +0 -2
  665. package/dist/chunks/ColorGrid-taTKtdsm.mjs.map +0 -1
  666. package/dist/chunks/ColorPickerPopup-JJQ-gMBN.mjs +0 -2
  667. package/dist/chunks/ColorPickerPopup-JJQ-gMBN.mjs.map +0 -1
  668. package/dist/chunks/ColorValidation-3viVw_tK.mjs +0 -2
  669. package/dist/chunks/ColorValidation-3viVw_tK.mjs.map +0 -1
  670. package/dist/chunks/CommandHelpers-D0LIFM4O.mjs +0 -2
  671. package/dist/chunks/CommandHelpers-D0LIFM4O.mjs.map +0 -1
  672. package/dist/chunks/Commands-DJSVqp7b.mjs +0 -2
  673. package/dist/chunks/Commands-DJSVqp7b.mjs.map +0 -1
  674. package/dist/chunks/Decoration-6dhb8k3b.mjs +0 -2
  675. package/dist/chunks/Decoration-6dhb8k3b.mjs.map +0 -1
  676. package/dist/chunks/Document-CkQLx84k.mjs +0 -2
  677. package/dist/chunks/Document-CkQLx84k.mjs.map +0 -1
  678. package/dist/chunks/DocumentParser-QJUmtPp9.mjs +0 -2
  679. package/dist/chunks/DocumentParser-QJUmtPp9.mjs.map +0 -1
  680. package/dist/chunks/DocumentSerializer-bwcxM9WV.mjs +0 -2
  681. package/dist/chunks/DocumentSerializer-bwcxM9WV.mjs.map +0 -1
  682. package/dist/chunks/FontPlugin-Cz4qEYGh.mjs +0 -2
  683. package/dist/chunks/FontPlugin-Cz4qEYGh.mjs.map +0 -1
  684. package/dist/chunks/FontSizePlugin-D1WtDqrH.mjs +0 -2
  685. package/dist/chunks/FontSizePlugin-D1WtDqrH.mjs.map +0 -1
  686. package/dist/chunks/GapCursorNavigation-CKKq42kA.mjs +0 -2
  687. package/dist/chunks/GapCursorNavigation-CKKq42kA.mjs.map +0 -1
  688. package/dist/chunks/GapCursorPlugin-0CyOaciK.mjs +0 -2
  689. package/dist/chunks/GapCursorPlugin-0CyOaciK.mjs.map +0 -1
  690. package/dist/chunks/HardBreakPlugin-BOz-L53p.mjs +0 -2
  691. package/dist/chunks/HardBreakPlugin-BOz-L53p.mjs.map +0 -1
  692. package/dist/chunks/HeadingPlugin-C1F-5Ail.mjs +0 -2
  693. package/dist/chunks/HeadingPlugin-C1F-5Ail.mjs.map +0 -1
  694. package/dist/chunks/HighlightPlugin-LYARYuDC.mjs +0 -2
  695. package/dist/chunks/HighlightPlugin-LYARYuDC.mjs.map +0 -1
  696. package/dist/chunks/HorizontalRulePlugin-fmdbzWDQ.mjs +0 -2
  697. package/dist/chunks/HorizontalRulePlugin-fmdbzWDQ.mjs.map +0 -1
  698. package/dist/chunks/ImagePlugin-CrfnT1sD.mjs +0 -2
  699. package/dist/chunks/ImagePlugin-CrfnT1sD.mjs.map +0 -1
  700. package/dist/chunks/KeyboardNav-BZIHDPDV.mjs +0 -2
  701. package/dist/chunks/KeyboardNav-BZIHDPDV.mjs.map +0 -1
  702. package/dist/chunks/LinkPlugin-DzFJLnfQ.mjs +0 -2
  703. package/dist/chunks/LinkPlugin-DzFJLnfQ.mjs.map +0 -1
  704. package/dist/chunks/ListPlugin-C_Rcz3bV.mjs +0 -2
  705. package/dist/chunks/ListPlugin-C_Rcz3bV.mjs.map +0 -1
  706. package/dist/chunks/NodeResolver-CCA8UVRr.mjs +0 -2
  707. package/dist/chunks/NodeResolver-CCA8UVRr.mjs.map +0 -1
  708. package/dist/chunks/NodeSelectionCommands-CE_73CxF.mjs +0 -2
  709. package/dist/chunks/NodeSelectionCommands-CE_73CxF.mjs.map +0 -1
  710. package/dist/chunks/Platform-D9TRT4Mn.mjs +0 -2
  711. package/dist/chunks/Platform-D9TRT4Mn.mjs.map +0 -1
  712. package/dist/chunks/PluginHelpers-DLKHJWJn.mjs +0 -2
  713. package/dist/chunks/PluginHelpers-DLKHJWJn.mjs.map +0 -1
  714. package/dist/chunks/PopupManager-RWOaksC0.mjs +0 -2
  715. package/dist/chunks/PopupManager-RWOaksC0.mjs.map +0 -1
  716. package/dist/chunks/PopupPositioning-a1ADYSmx.mjs +0 -2
  717. package/dist/chunks/PopupPositioning-a1ADYSmx.mjs.map +0 -1
  718. package/dist/chunks/PrintPlugin-CwbEz3eP.mjs +0 -2
  719. package/dist/chunks/PrintPlugin-CwbEz3eP.mjs.map +0 -1
  720. package/dist/chunks/PrintTypes-B2DXeAEG.mjs +0 -2
  721. package/dist/chunks/PrintTypes-B2DXeAEG.mjs.map +0 -1
  722. package/dist/chunks/ShortcutFormatting-DQPMvupx.mjs +0 -2
  723. package/dist/chunks/ShortcutFormatting-DQPMvupx.mjs.map +0 -1
  724. package/dist/chunks/SmartPastePlugin-CXqJ0CPO.mjs +0 -2
  725. package/dist/chunks/SmartPastePlugin-CXqJ0CPO.mjs.map +0 -1
  726. package/dist/chunks/StrikethroughPlugin-CRl69jm3.mjs +0 -2
  727. package/dist/chunks/StrikethroughPlugin-CRl69jm3.mjs.map +0 -1
  728. package/dist/chunks/StyleRuntime-0yPPJK9H.mjs +0 -2
  729. package/dist/chunks/StyleRuntime-0yPPJK9H.mjs.map +0 -1
  730. package/dist/chunks/SuperSubPlugin-CAnaTJVm.mjs +0 -2
  731. package/dist/chunks/SuperSubPlugin-CAnaTJVm.mjs.map +0 -1
  732. package/dist/chunks/TablePlugin-D_7bgrqm.mjs +0 -2
  733. package/dist/chunks/TablePlugin-D_7bgrqm.mjs.map +0 -1
  734. package/dist/chunks/TextColorPlugin-Dfhvl1qG.mjs +0 -2
  735. package/dist/chunks/TextColorPlugin-Dfhvl1qG.mjs.map +0 -1
  736. package/dist/chunks/TextDirectionCorePlugin-CyKw-C8X.mjs +0 -2
  737. package/dist/chunks/TextDirectionCorePlugin-CyKw-C8X.mjs.map +0 -1
  738. package/dist/chunks/TextDirectionLocale-rlU1yNly.mjs +0 -2
  739. package/dist/chunks/TextDirectionLocale-rlU1yNly.mjs.map +0 -1
  740. package/dist/chunks/TextFormattingPlugin-xtQczzCs.mjs +0 -2
  741. package/dist/chunks/TextFormattingPlugin-xtQczzCs.mjs.map +0 -1
  742. package/dist/chunks/ToolbarPlugin-BFEniyH-.mjs +0 -2
  743. package/dist/chunks/ToolbarPlugin-BFEniyH-.mjs.map +0 -1
  744. package/dist/chunks/WordBoundary-iZXLMFyk.mjs +0 -2
  745. package/dist/chunks/WordBoundary-iZXLMFyk.mjs.map +0 -1
  746. package/dist/chunks/XmlPatterns-Ub8I1jdE.mjs +0 -2
  747. package/dist/chunks/XmlPatterns-Ub8I1jdE.mjs.map +0 -1
  748. package/dist/chunks/ar-3-z4mZhh.mjs +0 -2
  749. package/dist/chunks/ar-3-z4mZhh.mjs.map +0 -1
  750. package/dist/chunks/ar-B-l6wR4D.mjs +0 -2
  751. package/dist/chunks/ar-B-l6wR4D.mjs.map +0 -1
  752. package/dist/chunks/ar-B3NByR5H.mjs +0 -2
  753. package/dist/chunks/ar-B3NByR5H.mjs.map +0 -1
  754. package/dist/chunks/ar-BRvm4F78.mjs +0 -2
  755. package/dist/chunks/ar-BRvm4F78.mjs.map +0 -1
  756. package/dist/chunks/ar-BUMXujtS.mjs +0 -2
  757. package/dist/chunks/ar-BUMXujtS.mjs.map +0 -1
  758. package/dist/chunks/ar-BhVHv8Lx.mjs +0 -2
  759. package/dist/chunks/ar-BhVHv8Lx.mjs.map +0 -1
  760. package/dist/chunks/ar-BhwRD9Cg.mjs +0 -2
  761. package/dist/chunks/ar-BhwRD9Cg.mjs.map +0 -1
  762. package/dist/chunks/ar-Bm8ORJ3H.mjs +0 -2
  763. package/dist/chunks/ar-Bm8ORJ3H.mjs.map +0 -1
  764. package/dist/chunks/ar-BpxuRQB2.mjs +0 -2
  765. package/dist/chunks/ar-BpxuRQB2.mjs.map +0 -1
  766. package/dist/chunks/ar-CA0-ysCj.mjs +0 -2
  767. package/dist/chunks/ar-CA0-ysCj.mjs.map +0 -1
  768. package/dist/chunks/ar-CAkFpIju.mjs +0 -2
  769. package/dist/chunks/ar-CAkFpIju.mjs.map +0 -1
  770. package/dist/chunks/ar-CU6qxyFp.mjs +0 -2
  771. package/dist/chunks/ar-CU6qxyFp.mjs.map +0 -1
  772. package/dist/chunks/ar-CXcTrZVc.mjs +0 -2
  773. package/dist/chunks/ar-CXcTrZVc.mjs.map +0 -1
  774. package/dist/chunks/ar-CeO_osWz.mjs +0 -2
  775. package/dist/chunks/ar-CeO_osWz.mjs.map +0 -1
  776. package/dist/chunks/ar-CxRSPJDE.mjs +0 -2
  777. package/dist/chunks/ar-CxRSPJDE.mjs.map +0 -1
  778. package/dist/chunks/ar-DHes6Igy.mjs +0 -2
  779. package/dist/chunks/ar-DHes6Igy.mjs.map +0 -1
  780. package/dist/chunks/ar-DN1aHdqb.mjs +0 -2
  781. package/dist/chunks/ar-DN1aHdqb.mjs.map +0 -1
  782. package/dist/chunks/ar-DNzmHN3q.mjs +0 -2
  783. package/dist/chunks/ar-DNzmHN3q.mjs.map +0 -1
  784. package/dist/chunks/ar-DVdWier2.mjs +0 -2
  785. package/dist/chunks/ar-DVdWier2.mjs.map +0 -1
  786. package/dist/chunks/ar-G_ADWoCx.mjs +0 -2
  787. package/dist/chunks/ar-G_ADWoCx.mjs.map +0 -1
  788. package/dist/chunks/ar-KAaQxKMo.mjs +0 -2
  789. package/dist/chunks/ar-KAaQxKMo.mjs.map +0 -1
  790. package/dist/chunks/ar-MHdV5PAO.mjs +0 -2
  791. package/dist/chunks/ar-MHdV5PAO.mjs.map +0 -1
  792. package/dist/chunks/ar-S2VfgLMv.mjs +0 -2
  793. package/dist/chunks/ar-S2VfgLMv.mjs.map +0 -1
  794. package/dist/chunks/color-picker-DumtHdqh.mjs +0 -2
  795. package/dist/chunks/color-picker-DumtHdqh.mjs.map +0 -1
  796. package/dist/chunks/de-0x8V-vch.mjs +0 -2
  797. package/dist/chunks/de-0x8V-vch.mjs.map +0 -1
  798. package/dist/chunks/de-B5xIP9en.mjs +0 -2
  799. package/dist/chunks/de-B5xIP9en.mjs.map +0 -1
  800. package/dist/chunks/de-BBohFIqw.mjs +0 -2
  801. package/dist/chunks/de-BBohFIqw.mjs.map +0 -1
  802. package/dist/chunks/de-BWPmC-2S.mjs +0 -2
  803. package/dist/chunks/de-BWPmC-2S.mjs.map +0 -1
  804. package/dist/chunks/de-Bo1kM9rb.mjs +0 -2
  805. package/dist/chunks/de-Bo1kM9rb.mjs.map +0 -1
  806. package/dist/chunks/de-BqzR2XMP.mjs +0 -2
  807. package/dist/chunks/de-BqzR2XMP.mjs.map +0 -1
  808. package/dist/chunks/de-CIZibvOC.mjs +0 -2
  809. package/dist/chunks/de-CIZibvOC.mjs.map +0 -1
  810. package/dist/chunks/de-CLToQn0o.mjs +0 -2
  811. package/dist/chunks/de-CLToQn0o.mjs.map +0 -1
  812. package/dist/chunks/de-CNoAAJul.mjs +0 -2
  813. package/dist/chunks/de-CNoAAJul.mjs.map +0 -1
  814. package/dist/chunks/de-CPb7rgkk.mjs +0 -2
  815. package/dist/chunks/de-CPb7rgkk.mjs.map +0 -1
  816. package/dist/chunks/de-CdmBKVDW.mjs +0 -2
  817. package/dist/chunks/de-CdmBKVDW.mjs.map +0 -1
  818. package/dist/chunks/de-DDgeyWgp.mjs +0 -2
  819. package/dist/chunks/de-DDgeyWgp.mjs.map +0 -1
  820. package/dist/chunks/de-DGXQ4OiR.mjs +0 -2
  821. package/dist/chunks/de-DGXQ4OiR.mjs.map +0 -1
  822. package/dist/chunks/de-DJbvKl4E.mjs +0 -2
  823. package/dist/chunks/de-DJbvKl4E.mjs.map +0 -1
  824. package/dist/chunks/de-DKNvYM_G.mjs +0 -2
  825. package/dist/chunks/de-DKNvYM_G.mjs.map +0 -1
  826. package/dist/chunks/de-DOHm_P4A.mjs +0 -2
  827. package/dist/chunks/de-DOHm_P4A.mjs.map +0 -1
  828. package/dist/chunks/de-DTMX75rn.mjs +0 -2
  829. package/dist/chunks/de-DTMX75rn.mjs.map +0 -1
  830. package/dist/chunks/de-DfkQds5F.mjs +0 -2
  831. package/dist/chunks/de-DfkQds5F.mjs.map +0 -1
  832. package/dist/chunks/de-TEQW-F4t.mjs +0 -2
  833. package/dist/chunks/de-TEQW-F4t.mjs.map +0 -1
  834. package/dist/chunks/de-WzdZ_NJ6.mjs +0 -2
  835. package/dist/chunks/de-WzdZ_NJ6.mjs.map +0 -1
  836. package/dist/chunks/de-_vqVfXeo.mjs +0 -2
  837. package/dist/chunks/de-_vqVfXeo.mjs.map +0 -1
  838. package/dist/chunks/de-gR6jt-sS.mjs +0 -2
  839. package/dist/chunks/de-gR6jt-sS.mjs.map +0 -1
  840. package/dist/chunks/de-qOBFRCGL.mjs +0 -2
  841. package/dist/chunks/de-qOBFRCGL.mjs.map +0 -1
  842. package/dist/chunks/es-1udUsTJd.mjs +0 -2
  843. package/dist/chunks/es-1udUsTJd.mjs.map +0 -1
  844. package/dist/chunks/es-3H7h0_G5.mjs +0 -2
  845. package/dist/chunks/es-3H7h0_G5.mjs.map +0 -1
  846. package/dist/chunks/es-4-5iRK0M.mjs +0 -2
  847. package/dist/chunks/es-4-5iRK0M.mjs.map +0 -1
  848. package/dist/chunks/es-89LD3TlT.mjs +0 -2
  849. package/dist/chunks/es-89LD3TlT.mjs.map +0 -1
  850. package/dist/chunks/es-B2KFVoHa.mjs +0 -2
  851. package/dist/chunks/es-B2KFVoHa.mjs.map +0 -1
  852. package/dist/chunks/es-BUP1scLX.mjs +0 -2
  853. package/dist/chunks/es-BUP1scLX.mjs.map +0 -1
  854. package/dist/chunks/es-Bhhj-yh0.mjs +0 -2
  855. package/dist/chunks/es-Bhhj-yh0.mjs.map +0 -1
  856. package/dist/chunks/es-Bo0NTtQH.mjs +0 -2
  857. package/dist/chunks/es-Bo0NTtQH.mjs.map +0 -1
  858. package/dist/chunks/es-Bovw7l2W.mjs +0 -2
  859. package/dist/chunks/es-Bovw7l2W.mjs.map +0 -1
  860. package/dist/chunks/es-C7xAs1yn.mjs +0 -2
  861. package/dist/chunks/es-C7xAs1yn.mjs.map +0 -1
  862. package/dist/chunks/es-CIdF7MzV.mjs +0 -2
  863. package/dist/chunks/es-CIdF7MzV.mjs.map +0 -1
  864. package/dist/chunks/es-CPit7Z6w.mjs +0 -2
  865. package/dist/chunks/es-CPit7Z6w.mjs.map +0 -1
  866. package/dist/chunks/es-CQzgvQI6.mjs +0 -2
  867. package/dist/chunks/es-CQzgvQI6.mjs.map +0 -1
  868. package/dist/chunks/es-CSteuqi5.mjs +0 -2
  869. package/dist/chunks/es-CSteuqi5.mjs.map +0 -1
  870. package/dist/chunks/es-ClJxqhu_.mjs +0 -2
  871. package/dist/chunks/es-ClJxqhu_.mjs.map +0 -1
  872. package/dist/chunks/es-CrmqYoVh.mjs +0 -2
  873. package/dist/chunks/es-CrmqYoVh.mjs.map +0 -1
  874. package/dist/chunks/es-CwRwLkfr.mjs +0 -2
  875. package/dist/chunks/es-CwRwLkfr.mjs.map +0 -1
  876. package/dist/chunks/es-D7DRGnkZ.mjs +0 -2
  877. package/dist/chunks/es-D7DRGnkZ.mjs.map +0 -1
  878. package/dist/chunks/es-DET1uMu-.mjs +0 -2
  879. package/dist/chunks/es-DET1uMu-.mjs.map +0 -1
  880. package/dist/chunks/es-Dj83hJxy.mjs +0 -2
  881. package/dist/chunks/es-Dj83hJxy.mjs.map +0 -1
  882. package/dist/chunks/es-DwYWucI6.mjs +0 -2
  883. package/dist/chunks/es-DwYWucI6.mjs.map +0 -1
  884. package/dist/chunks/es-DwrcpThR.mjs +0 -2
  885. package/dist/chunks/es-DwrcpThR.mjs.map +0 -1
  886. package/dist/chunks/es-z7xjgDdk.mjs +0 -2
  887. package/dist/chunks/es-z7xjgDdk.mjs.map +0 -1
  888. package/dist/chunks/fonts-CG5ZnGux.mjs +0 -2
  889. package/dist/chunks/fonts-CG5ZnGux.mjs.map +0 -1
  890. package/dist/chunks/fr-B73tOEzO.mjs +0 -2
  891. package/dist/chunks/fr-B73tOEzO.mjs.map +0 -1
  892. package/dist/chunks/fr-BEbsFEkX.mjs +0 -2
  893. package/dist/chunks/fr-BEbsFEkX.mjs.map +0 -1
  894. package/dist/chunks/fr-BFCaEBSV.mjs +0 -2
  895. package/dist/chunks/fr-BFCaEBSV.mjs.map +0 -1
  896. package/dist/chunks/fr-BJ69XrDO.mjs +0 -2
  897. package/dist/chunks/fr-BJ69XrDO.mjs.map +0 -1
  898. package/dist/chunks/fr-BdQ_-Iwg.mjs +0 -2
  899. package/dist/chunks/fr-BdQ_-Iwg.mjs.map +0 -1
  900. package/dist/chunks/fr-BhnuBA0i.mjs +0 -2
  901. package/dist/chunks/fr-BhnuBA0i.mjs.map +0 -1
  902. package/dist/chunks/fr-BiLmpXZ9.mjs +0 -2
  903. package/dist/chunks/fr-BiLmpXZ9.mjs.map +0 -1
  904. package/dist/chunks/fr-C1Pak7kS.mjs +0 -2
  905. package/dist/chunks/fr-C1Pak7kS.mjs.map +0 -1
  906. package/dist/chunks/fr-CFDoFELm.mjs +0 -2
  907. package/dist/chunks/fr-CFDoFELm.mjs.map +0 -1
  908. package/dist/chunks/fr-CmsH8BnY.mjs +0 -2
  909. package/dist/chunks/fr-CmsH8BnY.mjs.map +0 -1
  910. package/dist/chunks/fr-Cz2qWiuV.mjs +0 -2
  911. package/dist/chunks/fr-Cz2qWiuV.mjs.map +0 -1
  912. package/dist/chunks/fr-CzTPuD1P.mjs +0 -2
  913. package/dist/chunks/fr-CzTPuD1P.mjs.map +0 -1
  914. package/dist/chunks/fr-D1LQMsjB.mjs +0 -2
  915. package/dist/chunks/fr-D1LQMsjB.mjs.map +0 -1
  916. package/dist/chunks/fr-D84mXQrZ.mjs +0 -2
  917. package/dist/chunks/fr-D84mXQrZ.mjs.map +0 -1
  918. package/dist/chunks/fr-DX7z_ld0.mjs +0 -2
  919. package/dist/chunks/fr-DX7z_ld0.mjs.map +0 -1
  920. package/dist/chunks/fr-DXkQUerf.mjs +0 -2
  921. package/dist/chunks/fr-DXkQUerf.mjs.map +0 -1
  922. package/dist/chunks/fr-Di5gv5P8.mjs +0 -2
  923. package/dist/chunks/fr-Di5gv5P8.mjs.map +0 -1
  924. package/dist/chunks/fr-Dq5MrVWd.mjs +0 -2
  925. package/dist/chunks/fr-Dq5MrVWd.mjs.map +0 -1
  926. package/dist/chunks/fr-DtfEjLSL.mjs +0 -2
  927. package/dist/chunks/fr-DtfEjLSL.mjs.map +0 -1
  928. package/dist/chunks/fr-DvW-dpp3.mjs +0 -2
  929. package/dist/chunks/fr-DvW-dpp3.mjs.map +0 -1
  930. package/dist/chunks/fr-UJFNrn-V.mjs +0 -2
  931. package/dist/chunks/fr-UJFNrn-V.mjs.map +0 -1
  932. package/dist/chunks/fr-hK8X-sM6.mjs +0 -2
  933. package/dist/chunks/fr-hK8X-sM6.mjs.map +0 -1
  934. package/dist/chunks/fr-uuOSXj4L.mjs +0 -2
  935. package/dist/chunks/fr-uuOSXj4L.mjs.map +0 -1
  936. package/dist/chunks/full-216JgIG1.mjs +0 -2
  937. package/dist/chunks/full-216JgIG1.mjs.map +0 -1
  938. package/dist/chunks/hi-B2kXjElO.mjs +0 -2
  939. package/dist/chunks/hi-B2kXjElO.mjs.map +0 -1
  940. package/dist/chunks/hi-B2mEQ5gX.mjs +0 -2
  941. package/dist/chunks/hi-B2mEQ5gX.mjs.map +0 -1
  942. package/dist/chunks/hi-B61lTO2W.mjs +0 -2
  943. package/dist/chunks/hi-B61lTO2W.mjs.map +0 -1
  944. package/dist/chunks/hi-BD5HrbxU.mjs +0 -2
  945. package/dist/chunks/hi-BD5HrbxU.mjs.map +0 -1
  946. package/dist/chunks/hi-BHTvSWXw.mjs +0 -2
  947. package/dist/chunks/hi-BHTvSWXw.mjs.map +0 -1
  948. package/dist/chunks/hi-BYyaOBqY.mjs +0 -2
  949. package/dist/chunks/hi-BYyaOBqY.mjs.map +0 -1
  950. package/dist/chunks/hi-Bhlbz5gX.mjs +0 -2
  951. package/dist/chunks/hi-Bhlbz5gX.mjs.map +0 -1
  952. package/dist/chunks/hi-BniuSk3L.mjs +0 -2
  953. package/dist/chunks/hi-BniuSk3L.mjs.map +0 -1
  954. package/dist/chunks/hi-CBODdhOq.mjs +0 -2
  955. package/dist/chunks/hi-CBODdhOq.mjs.map +0 -1
  956. package/dist/chunks/hi-CKWQCooT.mjs +0 -2
  957. package/dist/chunks/hi-CKWQCooT.mjs.map +0 -1
  958. package/dist/chunks/hi-CkoruGVs.mjs +0 -2
  959. package/dist/chunks/hi-CkoruGVs.mjs.map +0 -1
  960. package/dist/chunks/hi-D6Ge3Lp5.mjs +0 -2
  961. package/dist/chunks/hi-D6Ge3Lp5.mjs.map +0 -1
  962. package/dist/chunks/hi-DEreeBFj.mjs +0 -2
  963. package/dist/chunks/hi-DEreeBFj.mjs.map +0 -1
  964. package/dist/chunks/hi-Dj4JW-9k.mjs +0 -2
  965. package/dist/chunks/hi-Dj4JW-9k.mjs.map +0 -1
  966. package/dist/chunks/hi-DkP4pHSX.mjs +0 -2
  967. package/dist/chunks/hi-DkP4pHSX.mjs.map +0 -1
  968. package/dist/chunks/hi-DknCX8Nx.mjs +0 -2
  969. package/dist/chunks/hi-DknCX8Nx.mjs.map +0 -1
  970. package/dist/chunks/hi-Dm1KJQQ5.mjs +0 -2
  971. package/dist/chunks/hi-Dm1KJQQ5.mjs.map +0 -1
  972. package/dist/chunks/hi-Dx-LTWg-.mjs +0 -2
  973. package/dist/chunks/hi-Dx-LTWg-.mjs.map +0 -1
  974. package/dist/chunks/hi-RDoZtwMm.mjs +0 -2
  975. package/dist/chunks/hi-RDoZtwMm.mjs.map +0 -1
  976. package/dist/chunks/hi-Tq9eDRk7.mjs +0 -2
  977. package/dist/chunks/hi-Tq9eDRk7.mjs.map +0 -1
  978. package/dist/chunks/hi-_vJ_Eo4p.mjs +0 -2
  979. package/dist/chunks/hi-_vJ_Eo4p.mjs.map +0 -1
  980. package/dist/chunks/hi-l8E-czFm.mjs +0 -2
  981. package/dist/chunks/hi-l8E-czFm.mjs.map +0 -1
  982. package/dist/chunks/hi-ydmPh3HB.mjs +0 -2
  983. package/dist/chunks/hi-ydmPh3HB.mjs.map +0 -1
  984. package/dist/chunks/minimal-D-QxXO1C.mjs +0 -2
  985. package/dist/chunks/minimal-D-QxXO1C.mjs.map +0 -1
  986. package/dist/chunks/pt-B4NUSLW8.mjs +0 -2
  987. package/dist/chunks/pt-B4NUSLW8.mjs.map +0 -1
  988. package/dist/chunks/pt-B8VKEboV.mjs +0 -2
  989. package/dist/chunks/pt-B8VKEboV.mjs.map +0 -1
  990. package/dist/chunks/pt-BMDKykEi.mjs +0 -2
  991. package/dist/chunks/pt-BMDKykEi.mjs.map +0 -1
  992. package/dist/chunks/pt-BmWE3xXF.mjs +0 -2
  993. package/dist/chunks/pt-BmWE3xXF.mjs.map +0 -1
  994. package/dist/chunks/pt-CJWKE1SW.mjs +0 -2
  995. package/dist/chunks/pt-CJWKE1SW.mjs.map +0 -1
  996. package/dist/chunks/pt-CKETXoPa.mjs +0 -2
  997. package/dist/chunks/pt-CKETXoPa.mjs.map +0 -1
  998. package/dist/chunks/pt-CKRs16QH.mjs +0 -2
  999. package/dist/chunks/pt-CKRs16QH.mjs.map +0 -1
  1000. package/dist/chunks/pt-Cb-1GHq4.mjs +0 -2
  1001. package/dist/chunks/pt-Cb-1GHq4.mjs.map +0 -1
  1002. package/dist/chunks/pt-CgpU74p4.mjs +0 -2
  1003. package/dist/chunks/pt-CgpU74p4.mjs.map +0 -1
  1004. package/dist/chunks/pt-CtOdAphq.mjs +0 -2
  1005. package/dist/chunks/pt-CtOdAphq.mjs.map +0 -1
  1006. package/dist/chunks/pt-CzaPFMSx.mjs +0 -2
  1007. package/dist/chunks/pt-CzaPFMSx.mjs.map +0 -1
  1008. package/dist/chunks/pt-DGuLcW0m.mjs +0 -2
  1009. package/dist/chunks/pt-DGuLcW0m.mjs.map +0 -1
  1010. package/dist/chunks/pt-DHzSXzlf.mjs +0 -2
  1011. package/dist/chunks/pt-DHzSXzlf.mjs.map +0 -1
  1012. package/dist/chunks/pt-DWDdBfLk.mjs +0 -2
  1013. package/dist/chunks/pt-DWDdBfLk.mjs.map +0 -1
  1014. package/dist/chunks/pt-DZ6Liq_x.mjs +0 -2
  1015. package/dist/chunks/pt-DZ6Liq_x.mjs.map +0 -1
  1016. package/dist/chunks/pt-D_MD7MJu.mjs +0 -2
  1017. package/dist/chunks/pt-D_MD7MJu.mjs.map +0 -1
  1018. package/dist/chunks/pt-DgaY_yNG.mjs +0 -2
  1019. package/dist/chunks/pt-DgaY_yNG.mjs.map +0 -1
  1020. package/dist/chunks/pt-DgzgCxdH.mjs +0 -2
  1021. package/dist/chunks/pt-DgzgCxdH.mjs.map +0 -1
  1022. package/dist/chunks/pt-Dh7nUcAM.mjs +0 -2
  1023. package/dist/chunks/pt-Dh7nUcAM.mjs.map +0 -1
  1024. package/dist/chunks/pt-P914L5AX.mjs +0 -2
  1025. package/dist/chunks/pt-P914L5AX.mjs.map +0 -1
  1026. package/dist/chunks/pt-XT1vsWZj.mjs +0 -2
  1027. package/dist/chunks/pt-XT1vsWZj.mjs.map +0 -1
  1028. package/dist/chunks/pt-jJ0XXSVz.mjs +0 -2
  1029. package/dist/chunks/pt-jJ0XXSVz.mjs.map +0 -1
  1030. package/dist/chunks/pt-tuOLwYkM.mjs +0 -2
  1031. package/dist/chunks/pt-tuOLwYkM.mjs.map +0 -1
  1032. package/dist/chunks/ru-7m8CMM17.mjs +0 -2
  1033. package/dist/chunks/ru-7m8CMM17.mjs.map +0 -1
  1034. package/dist/chunks/ru-9Qh1fR-K.mjs +0 -2
  1035. package/dist/chunks/ru-9Qh1fR-K.mjs.map +0 -1
  1036. package/dist/chunks/ru-B5gK8OLp.mjs +0 -2
  1037. package/dist/chunks/ru-B5gK8OLp.mjs.map +0 -1
  1038. package/dist/chunks/ru-BRNN6ldH.mjs +0 -2
  1039. package/dist/chunks/ru-BRNN6ldH.mjs.map +0 -1
  1040. package/dist/chunks/ru-BiyE9o-D.mjs +0 -2
  1041. package/dist/chunks/ru-BiyE9o-D.mjs.map +0 -1
  1042. package/dist/chunks/ru-BpGTIPbv.mjs +0 -2
  1043. package/dist/chunks/ru-BpGTIPbv.mjs.map +0 -1
  1044. package/dist/chunks/ru-CAzMaI4y.mjs +0 -2
  1045. package/dist/chunks/ru-CAzMaI4y.mjs.map +0 -1
  1046. package/dist/chunks/ru-COo6HpcD.mjs +0 -2
  1047. package/dist/chunks/ru-COo6HpcD.mjs.map +0 -1
  1048. package/dist/chunks/ru-CgEOZsUs.mjs +0 -2
  1049. package/dist/chunks/ru-CgEOZsUs.mjs.map +0 -1
  1050. package/dist/chunks/ru-CptzezhV.mjs +0 -2
  1051. package/dist/chunks/ru-CptzezhV.mjs.map +0 -1
  1052. package/dist/chunks/ru-Ct0qNMLS.mjs +0 -2
  1053. package/dist/chunks/ru-Ct0qNMLS.mjs.map +0 -1
  1054. package/dist/chunks/ru-Ct2IrzbA.mjs +0 -2
  1055. package/dist/chunks/ru-Ct2IrzbA.mjs.map +0 -1
  1056. package/dist/chunks/ru-CyHnlWLN.mjs +0 -2
  1057. package/dist/chunks/ru-CyHnlWLN.mjs.map +0 -1
  1058. package/dist/chunks/ru-DF0vhzeC.mjs +0 -2
  1059. package/dist/chunks/ru-DF0vhzeC.mjs.map +0 -1
  1060. package/dist/chunks/ru-DH6rsOWL.mjs +0 -2
  1061. package/dist/chunks/ru-DH6rsOWL.mjs.map +0 -1
  1062. package/dist/chunks/ru-DHH8k6G8.mjs +0 -2
  1063. package/dist/chunks/ru-DHH8k6G8.mjs.map +0 -1
  1064. package/dist/chunks/ru-GVReqjM4.mjs +0 -2
  1065. package/dist/chunks/ru-GVReqjM4.mjs.map +0 -1
  1066. package/dist/chunks/ru-IzloX5CY.mjs +0 -2
  1067. package/dist/chunks/ru-IzloX5CY.mjs.map +0 -1
  1068. package/dist/chunks/ru-ZrzXB0f6.mjs +0 -2
  1069. package/dist/chunks/ru-ZrzXB0f6.mjs.map +0 -1
  1070. package/dist/chunks/ru-asRKygvE.mjs +0 -2
  1071. package/dist/chunks/ru-asRKygvE.mjs.map +0 -1
  1072. package/dist/chunks/ru-m19l8nRA.mjs +0 -2
  1073. package/dist/chunks/ru-m19l8nRA.mjs.map +0 -1
  1074. package/dist/chunks/ru-vfQ5Xaz4.mjs +0 -2
  1075. package/dist/chunks/ru-vfQ5Xaz4.mjs.map +0 -1
  1076. package/dist/chunks/ru-wVOlNily.mjs +0 -2
  1077. package/dist/chunks/ru-wVOlNily.mjs.map +0 -1
  1078. package/dist/chunks/shared-DxmfXZH7.mjs +0 -2
  1079. package/dist/chunks/shared-DxmfXZH7.mjs.map +0 -1
  1080. package/dist/chunks/src-DFXIsulM.mjs +0 -2
  1081. package/dist/chunks/src-DFXIsulM.mjs.map +0 -1
  1082. package/dist/chunks/text-direction-advanced-B5JuIs0P.mjs +0 -2
  1083. package/dist/chunks/text-direction-advanced-B5JuIs0P.mjs.map +0 -1
  1084. package/dist/chunks/zh-0uhsRxfq.mjs +0 -2
  1085. package/dist/chunks/zh-0uhsRxfq.mjs.map +0 -1
  1086. package/dist/chunks/zh-1BrLr5Wk.mjs +0 -2
  1087. package/dist/chunks/zh-1BrLr5Wk.mjs.map +0 -1
  1088. package/dist/chunks/zh-BNHeXa_M.mjs +0 -2
  1089. package/dist/chunks/zh-BNHeXa_M.mjs.map +0 -1
  1090. package/dist/chunks/zh-BOpBzSX3.mjs +0 -2
  1091. package/dist/chunks/zh-BOpBzSX3.mjs.map +0 -1
  1092. package/dist/chunks/zh-BV2uDDGf.mjs +0 -2
  1093. package/dist/chunks/zh-BV2uDDGf.mjs.map +0 -1
  1094. package/dist/chunks/zh-BkoPteNb.mjs +0 -2
  1095. package/dist/chunks/zh-BkoPteNb.mjs.map +0 -1
  1096. package/dist/chunks/zh-C2z0g7OC.mjs +0 -2
  1097. package/dist/chunks/zh-C2z0g7OC.mjs.map +0 -1
  1098. package/dist/chunks/zh-CeJw45yo.mjs +0 -2
  1099. package/dist/chunks/zh-CeJw45yo.mjs.map +0 -1
  1100. package/dist/chunks/zh-CwVkxL4q.mjs +0 -2
  1101. package/dist/chunks/zh-CwVkxL4q.mjs.map +0 -1
  1102. package/dist/chunks/zh-Cy7mujpx.mjs +0 -2
  1103. package/dist/chunks/zh-Cy7mujpx.mjs.map +0 -1
  1104. package/dist/chunks/zh-D-P00ENX.mjs +0 -2
  1105. package/dist/chunks/zh-D-P00ENX.mjs.map +0 -1
  1106. package/dist/chunks/zh-D5d-NAuv.mjs +0 -2
  1107. package/dist/chunks/zh-D5d-NAuv.mjs.map +0 -1
  1108. package/dist/chunks/zh-D6gTQA2W.mjs +0 -2
  1109. package/dist/chunks/zh-D6gTQA2W.mjs.map +0 -1
  1110. package/dist/chunks/zh-DLwq4e4-.mjs +0 -2
  1111. package/dist/chunks/zh-DLwq4e4-.mjs.map +0 -1
  1112. package/dist/chunks/zh-D_Yb8Eg6.mjs +0 -2
  1113. package/dist/chunks/zh-D_Yb8Eg6.mjs.map +0 -1
  1114. package/dist/chunks/zh-DaNHqNDY.mjs +0 -2
  1115. package/dist/chunks/zh-DaNHqNDY.mjs.map +0 -1
  1116. package/dist/chunks/zh-De7-Y4O5.mjs +0 -2
  1117. package/dist/chunks/zh-De7-Y4O5.mjs.map +0 -1
  1118. package/dist/chunks/zh-Dj7kHEcp.mjs +0 -2
  1119. package/dist/chunks/zh-Dj7kHEcp.mjs.map +0 -1
  1120. package/dist/chunks/zh-Dl0oVWiK.mjs +0 -2
  1121. package/dist/chunks/zh-Dl0oVWiK.mjs.map +0 -1
  1122. package/dist/chunks/zh-Do0plBjM.mjs +0 -2
  1123. package/dist/chunks/zh-Do0plBjM.mjs.map +0 -1
  1124. package/dist/chunks/zh-Q0aDk5UA.mjs +0 -2
  1125. package/dist/chunks/zh-Q0aDk5UA.mjs.map +0 -1
  1126. package/dist/chunks/zh-eSgs8mzc.mjs +0 -2
  1127. package/dist/chunks/zh-eSgs8mzc.mjs.map +0 -1
  1128. package/dist/chunks/zh-giWyGMSZ.mjs +0 -2
  1129. package/dist/chunks/zh-giWyGMSZ.mjs.map +0 -1
@@ -1,2 +0,0 @@
1
- import{i as t}from"./Platform-D9TRT4Mn.mjs";import{o as e,s as o}from"./StyleRuntime-0yPPJK9H.mjs";import{i as n,l as r}from"./PluginHelpers-DLKHJWJn.mjs";import{n as i,r as l,t as s}from"./KeyboardNav-BZIHDPDV.mjs";import{t as a}from"./PopupPositioning-a1ADYSmx.mjs";import{n as c,t as d}from"./PopupManager-RWOaksC0.mjs";var p=class{_toolbarItems=/* @__PURE__ */new Map;_toolbarItemPluginMap=/* @__PURE__ */new Map;registerToolbarItem(t,e){if(this._toolbarItems.has(t.id))throw new Error(`ToolbarItem with id "${t.id}" is already registered.`);if(this._toolbarItems.set(t.id,t),e){const o=this._toolbarItemPluginMap.get(e)??[];o.push(t.id),this._toolbarItemPluginMap.set(e,o)}}getToolbarItemsByPlugin(t){const e=this._toolbarItemPluginMap.get(t)??[],o=[];for(const n of e){const t=this._toolbarItems.get(n);t&&o.push(t)}return o}getToolbarItem(t){return this._toolbarItems.get(t)}getToolbarItems(){return[...this._toolbarItems.values()]}removeToolbarItem(t){this._toolbarItems.delete(t);for(const[e,o]of this._toolbarItemPluginMap){const n=o.indexOf(t);if(-1!==n){o.splice(n,1),0===o.length&&this._toolbarItemPluginMap.delete(e);break}}}clear(){this._toolbarItems.clear(),this._toolbarItemPluginMap.clear()}};function u(t){for(let e=0;e<t.length;e++)if(!t[e]?.disabled)return e;return-1}var h={formattingOptionsAria:"Formatting options",moreToolsAria:"More tools",gridPickerLabel:(t,e)=>`${t} x ${e}`},b=/* @__PURE__ */Object.assign({"./locales/ar.ts":()=>import("./ar-DHes6Igy.mjs"),"./locales/de.ts":()=>import("./de-DTMX75rn.mjs"),"./locales/es.ts":()=>import("./es-z7xjgDdk.mjs"),"./locales/fr.ts":()=>import("./fr-B73tOEzO.mjs"),"./locales/hi.ts":()=>import("./hi-BHTvSWXw.mjs"),"./locales/pt.ts":()=>import("./pt-XT1vsWZj.mjs"),"./locales/ru.ts":()=>import("./ru-Ct0qNMLS.mjs"),"./locales/zh.ts":()=>import("./zh-BV2uDDGf.mjs")});async function m(t){if("en"===t)return h;const e=b[`./locales/${t}.ts`];if(!e)return h;try{return(await e()).default}catch{return h}}var f={BurgerMenu:"burger-menu",Flow:"flow",None:"none"},v="notectl-toolbar-btn--overflow-hidden",g="notectl-toolbar-separator--overflow-hidden",w=class{toolbar;context;onOverflowChange;onItemActivated;getActiveElement;ariaLabel;popupManager;entries=[];overflowButton=null;overflowDropdown=null;overflowHandle=null;overflowEntries=[];resizeObserver=null;closeHandler=null;closeHandlerTimer=null;closeHandlerAttached=!1;constructor(t){this.toolbar=t.toolbar,this.ariaLabel=t.ariaLabel,this.context=t.context,this.onOverflowChange=t.onOverflowChange,this.onItemActivated=t.onItemActivated,this.getActiveElement=t.getActiveElement,this.popupManager=t.popupManager??null,this.resizeObserver=new ResizeObserver(()=>this.recalculate()),this.resizeObserver.observe(this.toolbar)}update(t){this.entries=t.map(t=>({element:t.element,item:t.item})),this.recalculate()}recalculate(){if(0===this.entries.length)return;this.closeDropdown(),this.resetVisibility(),this.ensureOverflowButton(),this.setOverflowButtonVisible(!1);const t=this.measureAvailableWidth(),e=Array.from(this.toolbar.children),o=this.measureChildWidths(e),n=t-34-2;let r=0,i=!1;const l=[];for(const s of e){if(s===this.overflowButton)continue;if(s.classList.contains("notectl-toolbar-separator")){if(i){s.classList.add(g);continue}const t=(o.get(s)??0)+2;r+t>n?(i=!0,s.classList.add(g)):r+=t;continue}const t=this.entries.find(t=>t.element===s);if(!t)continue;if(i){t.element.classList.add(v),l.push(t);continue}const e=(o.get(s)??0)+2;r+e>n?(i=!0,t.element.classList.add(v),l.push(t)):r+=e}this.overflowEntries=l,this.hideTrailingSeparators(),this.setOverflowButtonVisible(l.length>0),this.notifyChange()}updateItemStates(t){if(!this.overflowDropdown)return;const e=Array.from(this.overflowDropdown.querySelectorAll(".notectl-dropdown__item"));for(const o of e){const e=o.getAttribute("data-toolbar-item"),n=this.overflowEntries.find(t=>t.item.id===e);if(!n)continue;const r=n.item.isActive?.(t)??!1,i=n.item.isEnabled?.(t)??!0;if(o.classList.toggle("notectl-dropdown__item--active",r),o.disabled=!i,"combobox"===n.item.popupType){const e=o.querySelector(".notectl-dropdown__item-label");e&&(e.textContent=n.item.getLabel(t))}if(n.item.getIcon){const e=n.item.getIcon(t),r=o.querySelector(".notectl-dropdown__item-icon");r&&r.innerHTML!==e&&(r.innerHTML=e)}}}destroy(){this.resizeObserver?.disconnect(),this.resizeObserver=null,this.closeDropdown(),this.overflowButton?.remove(),this.overflowButton=null,this.entries=[],this.overflowEntries=[]}measureChildWidths(t){const e=/* @__PURE__ */new Map;for(const o of t)o!==this.overflowButton&&e.set(o,o.offsetWidth);return e}measureAvailableWidth(){const t=getComputedStyle(this.toolbar),e=Number.parseFloat(t.paddingLeft)||0,o=Number.parseFloat(t.paddingRight)||0;return this.toolbar.clientWidth-e-o}resetVisibility(){for(const e of this.entries)e.element.classList.remove(v);const t=Array.from(this.toolbar.querySelectorAll(".notectl-toolbar-separator"));for(const e of t)e.classList.remove(g)}setOverflowButtonVisible(t){this.overflowButton&&(this.overflowButton.classList.toggle("notectl-toolbar-overflow-btn--hidden",!t),t||this.overflowButton.removeAttribute("tabindex"))}ensureOverflowButton(){if(this.overflowButton)return;const t=document.createElement("button");t.type="button",t.className="notectl-toolbar-overflow-btn",t.setAttribute("aria-label",this.ariaLabel),t.setAttribute("aria-haspopup","true"),t.setAttribute("aria-expanded","false"),t.innerHTML='<svg viewBox="0 0 16 16" width="16" height="16"><circle cx="3" cy="8" r="1.5" fill="currentColor"/><circle cx="8" cy="8" r="1.5" fill="currentColor"/><circle cx="13" cy="8" r="1.5" fill="currentColor"/></svg>',t.addEventListener("mousedown",t=>{t.preventDefault(),this.toggleDropdown()}),this.toolbar.appendChild(t),this.overflowButton=t}toggleDropdown(){this.overflowDropdown?this.closeDropdown():this.openDropdown()}openDropdown(){if(!this.overflowButton||0===this.overflowEntries.length)return;const t=document.createElement("div");t.className="notectl-toolbar-popup notectl-dropdown",t.setAttribute("role","menu"),this.renderDropdownItems(t,this.context.getState()),this.popupManager?(this.overflowHandle=this.popupManager.open({anchor:this.overflowButton,className:"notectl-toolbar-popup notectl-dropdown",ariaRole:"menu",position:"below-end",referenceNode:this.overflowButton,restoreFocusTo:this.overflowButton,onClose:()=>{this.overflowHandle=null,this.overflowDropdown=null,this.overflowButton&&this.overflowButton.setAttribute("aria-expanded","false")},content:t=>{this.renderDropdownItems(t,this.context.getState()),this.overflowDropdown=t,t.addEventListener("keydown",t=>this.handleDropdownKeydown(t))}}),this.overflowButton.setAttribute("aria-expanded","true")):(this.positionDropdown(t),a(t,this.overflowButton),this.overflowDropdown=t,this.overflowButton.setAttribute("aria-expanded","true"),requestAnimationFrame(()=>{t.querySelector('[role="menuitem"]')?.focus()}),t.addEventListener("keydown",t=>this.handleDropdownKeydown(t)),this.registerCloseHandler())}renderDropdownItems(t,e){let o=null;for(const n of this.overflowEntries){if(null!==o&&n.item.group!==o){const e=document.createElement("div");e.className="notectl-dropdown__separator",e.setAttribute("role","separator"),t.appendChild(e)}o=n.item.group;const r=document.createElement("button");r.type="button",r.className="notectl-dropdown__item",r.setAttribute("role","menuitem"),r.setAttribute("tabindex","-1"),r.setAttribute("data-toolbar-item",n.item.id);const i=document.createElement("span");i.className="notectl-dropdown__item-icon","combobox"!==n.item.popupType&&(i.innerHTML=n.item.icon),r.appendChild(i);const l=document.createElement("span");l.className="notectl-dropdown__item-label",l.textContent="combobox"===n.item.popupType?n.item.getLabel(e):n.item.tooltip??n.item.label,r.appendChild(l),r.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation(),this.activateOverflowItem(n)}),t.appendChild(r)}}positionDropdown(o){if(!this.overflowButton)return;const n=this.overflowButton.getBoundingClientRect();if(t(this.toolbar))e(o,{position:"fixed",top:`${n.bottom+2}px`,left:`${n.left}px`,right:"auto",zIndex:"10000"});else{const t=window.innerWidth-n.right;e(o,{position:"fixed",top:`${n.bottom+2}px`,right:`${t}px`,left:"auto",zIndex:"10000"})}}registerCloseHandler(){this.closeHandler=t=>{const e=t.composedPath();this.overflowDropdown&&!e.includes(this.overflowDropdown)&&this.overflowButton&&!e.includes(this.overflowButton)&&this.closeDropdown()},this.closeHandlerTimer=setTimeout(()=>{this.closeHandlerTimer=null,this.closeHandler&&this.overflowDropdown&&(document.addEventListener("mousedown",this.closeHandler),this.closeHandlerAttached=!0)},0)}closeDropdown(){if(this.overflowHandle){const t=this.overflowHandle;return this.overflowHandle=null,this.overflowDropdown=null,t.close(),void(this.overflowButton&&this.overflowButton.setAttribute("aria-expanded","false"))}this.overflowDropdown&&(this.overflowDropdown.remove(),this.overflowDropdown=null),this.overflowButton&&this.overflowButton.setAttribute("aria-expanded","false"),this.closeHandler&&(null!==this.closeHandlerTimer&&(clearTimeout(this.closeHandlerTimer),this.closeHandlerTimer=null),this.closeHandlerAttached&&(document.removeEventListener("mousedown",this.closeHandler),this.closeHandlerAttached=!1),this.closeHandler=null)}activateOverflowItem(t){this.closeDropdown(),t.item.popupType&&this.overflowButton?this.onItemActivated(this.overflowButton,t.item):this.context.executeCommand(t.item.command)}handleDropdownKeydown(t){if(!this.overflowDropdown)return;if("Escape"===t.key||"Tab"===t.key)return t.preventDefault(),t.stopPropagation(),this.closeDropdown(),void this.overflowButton?.focus();const e=Array.from(this.overflowDropdown.querySelectorAll('[role="menuitem"]')),o=e.indexOf(this.getActiveElement());switch(t.key){case"ArrowDown":t.preventDefault(),e[i(e,o,1)]?.focus();break;case"ArrowUp":t.preventDefault(),e[i(e,o,-1)]?.focus();break;case"Enter":case" ":{t.preventDefault();const n=e[o];if(!n)break;const r=n.getAttribute("data-toolbar-item"),i=this.overflowEntries.find(t=>t.item.id===r);i&&this.activateOverflowItem(i);break}}}hideTrailingSeparators(){const t=Array.from(this.toolbar.children);for(let e=t.length-1;e>=0;e--){const o=t[e];if(o&&o!==this.overflowButton)if(o.classList.contains("notectl-toolbar-separator"))o.classList.contains(g)||o.classList.add(g);else if(!o.classList.contains(v))break}}notifyChange(){const t=this.entries.filter(t=>!t.element.classList.contains(v)).map(t=>t.element);this.onOverflowChange(t,this.overflowEntries.length>0?this.overflowButton:null)}};function x(t,e,o){const n=t.querySelectorAll(".notectl-grid-picker__cell");for(const r of n){const t=Number(r.getAttribute("data-row")),n=Number(r.getAttribute("data-col"));r.classList.toggle("notectl-grid-picker__cell--highlighted",t<=e&&n<=o)}}function y(){const t=document.createElement("span");return t.className="notectl-toolbar-separator",t.setAttribute("role","separator"),t}var E=class{activePopup=null;activePopupButton=null;activeHandle=null;getActiveElement;locale;popupManager=null;constructor(t,e=h){this.getActiveElement=t,this.locale=e}setPopupManager(t){this.popupManager=t}isOpen(){return null!==this.activePopup}toggle(t,e,o){this.activePopup?this.close():this.openViaManager(t,e,o)}close(){if(this.activeHandle){const t=this.activeHandle;return this.activeHandle=null,this.clearButtonState(),void t.close()}this.clearButtonState(),this.activePopup&&(this.activePopup.remove(),this.activePopup=null)}closeAndRestoreFocus(){const t=this.activePopupButton;this.close(),t?.focus()}destroy(){this.close()}openViaManager(t,e,o){this.popupManager&&(this.activePopupButton=t,t.classList.add("notectl-toolbar-btn--popup-open"),t.setAttribute("aria-expanded","true"),this.activeHandle=this.popupManager.open({anchor:t,className:"notectl-toolbar-popup",referenceNode:t,restoreFocusTo:t,position:"below-start",onClose:()=>{this.activeHandle=null,this.clearButtonState(),this.activePopup=null},content:(t,n)=>{this.activePopup=t,this.renderPopupContent(t,e,o,n),t.addEventListener("keydown",t=>this.handlePopupKeydown(t))}}))}renderPopupContent(t,o,n,r){const i=()=>{r({restoreFocusTo:null}),n.getContainer().focus()};switch(o.popupType){case"gridPicker":!function(t,o,n,r=h){t.className+=" notectl-grid-picker";const i=document.createElement("div");i.className="notectl-grid-picker__grid",i.setAttribute("role","grid"),e(i,{display:"grid",gridTemplateColumns:`repeat(${o.maxCols}, 1fr)`,gap:"2px",padding:"8px"});const l=document.createElement("div");l.className="notectl-grid-picker__label",l.textContent=r.gridPickerLabel(1,1),e(l,{textAlign:"center",padding:"4px",fontSize:"12px"}),l.setAttribute("aria-live","polite");for(let s=1;s<=o.maxRows;s++)for(let t=1;t<=o.maxCols;t++){const a=document.createElement("div");a.className="notectl-grid-picker__cell",a.setAttribute("role","gridcell"),a.setAttribute("tabindex","-1"),a.setAttribute("aria-label",r.gridPickerLabel(s,t)),e(a,{width:"20px",height:"20px",border:"1px solid #ccc",cursor:"pointer"}),a.setAttribute("data-row",String(s)),a.setAttribute("data-col",String(t)),a.addEventListener("mouseenter",()=>{x(i,s,t),l.textContent=r.gridPickerLabel(s,t)}),a.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),a.addEventListener("click",()=>{o.onSelect(s,t),n()}),i.appendChild(a)}t.appendChild(i),t.appendChild(l)}(t,o.popupConfig,i,this.locale);break;case"dropdown":!function(t,e,o,r){t.classList.add("notectl-dropdown"),t.setAttribute("role","menu");for(const i of e.items){const e=document.createElement("button");if(e.type="button",e.className="notectl-dropdown__item",e.setAttribute("role","menuitem"),e.setAttribute("tabindex","-1"),i.icon){const t=document.createElement("span");t.className="notectl-dropdown__item-icon",t.innerHTML=i.icon,e.appendChild(t)}const o=document.createElement("span");o.className="notectl-dropdown__item-label",o.textContent=i.label,e.appendChild(o),e.addEventListener("mousedown",t=>{t.preventDefault(),t.stopPropagation()}),e.addEventListener("click",()=>{var t;t=i.command,n.executeCommand(t),r()}),t.appendChild(e)}}(t,o.popupConfig,0,i);break;case"custom":case"combobox":o.renderPopup(t,n,r)}}clearButtonState(){this.activePopupButton&&(this.activePopupButton.classList.remove("notectl-toolbar-btn--popup-open"),this.activePopupButton.setAttribute("aria-expanded","false"),this.activePopupButton=null)}handlePopupKeydown(t){if(!this.activePopup)return;if("Escape"===t.key)return t.preventDefault(),t.stopPropagation(),void this.closeAndRestoreFocus();if("Tab"===t.key)return t.preventDefault(),void this.closeAndRestoreFocus();const e=this.activePopup.querySelectorAll('[role="menuitem"]');e.length>0?this.handleDropdownKeydown(t,e):null===this.activePopup.querySelector(".notectl-grid-picker__cell")?this.handleCustomPopupKeydown(t):this.handleGridKeydown(t)}handleDropdownKeydown(t,e){const o=Array.from(e),n=o.indexOf(this.getActiveElement());switch(t.key){case"ArrowDown":t.preventDefault(),o[i(o,n,1)]?.focus();break;case"ArrowUp":t.preventDefault(),o[i(o,n,-1)]?.focus();break;case"Enter":case" ":{t.preventDefault();const e=o[n];e&&e.click();break}}}handleGridKeydown(e){const o=this.getActiveElement(),n=Number(o?.getAttribute("data-row")??1),r=Number(o?.getAttribute("data-col")??1),i=this.activePopup?.querySelector(".notectl-grid-picker__grid")??null;if(!i)return;const s=i.querySelector(".notectl-grid-picker__cell:last-child"),a=Number(s?.getAttribute("data-col")??1),c=Number(s?.getAttribute("data-row")??1);if(["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"].includes(e.key)){e.preventDefault();const[o,s]=l(n,r,c,a,e.key,!!this.activePopup&&t(this.activePopup));i.querySelector(`.notectl-grid-picker__cell[data-row="${o}"][data-col="${s}"]`)?.focus(),x(i,o,s);const d=this.activePopup?.querySelector(".notectl-grid-picker__label")??null;d&&(d.textContent=this.locale.gridPickerLabel(o,s))}"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),o?.click())}handleCustomPopupKeydown(t){if(!this.activePopup)return;const e=Array.from(this.activePopup.querySelectorAll("button"));if(0===e.length)return;const o=this.getActiveElement(),n=e.indexOf(o);switch(t.key){case"ArrowDown":t.preventDefault(),e[i(e,n,1)]?.focus();break;case"ArrowUp":t.preventDefault(),e[i(e,n,-1)]?.focus();break;case"Enter":case" ":t.preventDefault(),o&&o.dispatchEvent(new MouseEvent("mousedown",{bubbles:!0,cancelable:!0}))}}},A=class t{element;timer=null;target=null;isPopupActive;static TOOLTIP_ID="notectl-toolbar-tooltip";constructor(e){this.isPopupActive=e,this.element=document.createElement("div"),this.element.className="notectl-toolbar-tooltip",this.element.id=t.TOOLTIP_ID,this.element.setAttribute("role","tooltip"),o(this.element,"display","none")}show(n){if(this.hide(),this.isPopupActive()||n.disabled)return;const r=n.getAttribute("data-tooltip");r&&(this.target=n,this.timer=setTimeout(()=>{if(this.isPopupActive())return;this.element.textContent=r,o(this.element,"display","");const i=n.getRootNode();i instanceof ShadowRoot&&!this.element.parentNode?i.appendChild(this.element):i instanceof ShadowRoot||this.element.parentNode||document.body.appendChild(this.element),n.setAttribute("aria-describedby",t.TOOLTIP_ID);const l=n.getBoundingClientRect();e(this.element,{position:"fixed",top:`${l.bottom+6}px`,left:`${l.left+l.width/2}px`,transform:"translateX(-50%)"})},500))}hide(){this.timer&&(clearTimeout(this.timer),this.timer=null),this.target&&(this.target.removeAttribute("aria-describedby"),this.target=null),o(this.element,"display","none")}destroy(){this.hide(),this.element.remove()}},_=new r("toolbar"),k=class{id="toolbar";name="Toolbar";priority=10;context=null;toolbarElement=null;buttons=[];hiddenItems=/* @__PURE__ */new Set;layoutConfig;overflowBehavior;focusedIndex=0;tooltip=null;popupController=null;popupManager=null;overflowController=null;visibleElements=[];locale;constructor(t){this.layoutConfig=t??null,this.overflowBehavior=t?.overflow??f.BurgerMenu}async init(t){this.locale=await n(t,void 0,h,m),t.registerStyleSheet('\n/* Toolbar */\n.notectl-plugin-container--top {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: nowrap;\n\tborder-bottom: 1px solid var(--notectl-border);\n\tbackground: var(--notectl-toolbar-bg, var(--notectl-surface-raised));\n\tmin-height: 40px;\n}\n\n.notectl-toolbar {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: nowrap;\n\toverflow: hidden;\n\tflex: 1;\n\tmin-width: 0;\n\tgap: 2px;\n\tpadding: 4px 8px;\n}\n\n.notectl-toolbar[hidden] {\n\tdisplay: none;\n}\n\n.notectl-toolbar-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 32px;\n\theight: 32px;\n\tborder: 1px solid transparent;\n\tborder-radius: 4px;\n\tbackground: transparent;\n\tcursor: pointer;\n\tcolor: var(--notectl-fg);\n\tfont-size: 14px;\n\tline-height: 1;\n\tpadding: 0;\n\tflex-shrink: 0;\n\ttransition: background 0.1s, border-color 0.1s;\n}\n\n@media (hover: hover) {\n\t.notectl-toolbar-btn:hover {\n\t\tbackground: var(--notectl-hover-bg);\n\t\tborder-color: var(--notectl-border);\n\t}\n}\n\n.notectl-toolbar-btn--active {\n\tbackground: var(--notectl-active-bg);\n\tborder-color: var(--notectl-primary-muted);\n\tcolor: var(--notectl-primary-fg);\n}\n\n.notectl-toolbar-btn:focus-visible {\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n\toutline: none;\n}\n\n.notectl-toolbar-btn:disabled {\n\topacity: 0.4;\n\tcursor: not-allowed;\n}\n\n@media (hover: hover) {\n\t.notectl-toolbar-btn:disabled:hover {\n\t\tbackground: transparent;\n\t\tborder-color: transparent;\n\t}\n}\n\n.notectl-toolbar-btn__icon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpointer-events: none;\n}\n\n.notectl-toolbar-btn__icon svg {\n\tdisplay: block;\n\twidth: 18px;\n\theight: 18px;\n\tfill: currentColor;\n}\n\n/* Tooltip (rendered as fixed-position element in shadow root) */\n.notectl-toolbar-tooltip {\n\tposition: fixed;\n\tpadding: 4px 8px;\n\tborder-radius: 4px;\n\tbackground: var(--notectl-tooltip-bg);\n\tcolor: var(--notectl-tooltip-fg);\n\tfont-size: 11px;\n\tfont-weight: 500;\n\twhite-space: nowrap;\n\tpointer-events: none;\n\tz-index: 10001;\n\tline-height: 1.4;\n\tletter-spacing: 0.01em;\n\tfont-family: -apple-system, BlinkMacSystemFont, \'Segoe UI\', Roboto, sans-serif;\n}\n\n.notectl-toolbar-separator {\n\tdisplay: inline-block;\n\twidth: 1px;\n\theight: 20px;\n\tbackground: var(--notectl-border);\n\tmargin: 0 4px;\n\tvertical-align: middle;\n}\n\n/* Toolbar Popups */\n.notectl-toolbar-popup {\n\tbackground: var(--notectl-surface-overlay);\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 6px;\n\tbox-shadow: 0 4px 12px var(--notectl-shadow);\n\toverflow: hidden;\n}\n\n/* Grid Picker */\n.notectl-grid-picker__cell:focus-visible {\n\toutline: 2px solid var(--notectl-focus-ring);\n\toutline-offset: -1px;\n}\n\n.notectl-grid-picker__cell--highlighted {\n\tbackground: var(--notectl-primary-muted);\n\tborder-color: var(--notectl-primary);\n}\n\n/* Dropdown */\n.notectl-dropdown {\n\tmin-width: 160px;\n\tpadding: 4px 0;\n}\n\n.notectl-dropdown__item {\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 100%;\n\tpadding: 8px 12px;\n\ttext-align: start;\n\tborder: none;\n\tbackground: none;\n\tcursor: pointer;\n\tfont-size: 14px;\n\tcolor: var(--notectl-fg);\n\tline-height: 1.4;\n\tfont-family: inherit;\n\twhite-space: nowrap;\n}\n\n@media (hover: hover) {\n\t.notectl-dropdown__item:hover {\n\t\tbackground: var(--notectl-hover-bg);\n\t}\n}\n\n.notectl-dropdown__item:focus-visible {\n\tbackground: var(--notectl-hover-bg);\n\toutline: none;\n}\n\n.notectl-dropdown__item-icon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 28px;\n\tfont-weight: 600;\n\tcolor: var(--notectl-fg-muted);\n\tflex-shrink: 0;\n}\n\n.notectl-dropdown__item-label {\n\tflex: 1;\n}\n\n/* Overflow behavior: flow mode — toolbar wraps to additional rows */\n.notectl-toolbar[data-overflow="flow"] {\n\tflex-wrap: wrap;\n\toverflow: visible;\n}\n\n/* Overflow behavior: none — toolbar clips without any responsive behavior */\n.notectl-toolbar[data-overflow="none"] {\n\tflex-wrap: nowrap;\n\toverflow: hidden;\n}\n\n/* Overflow: hidden items (burger-menu mode) */\n.notectl-toolbar-btn--overflow-hidden,\n.notectl-toolbar-separator--overflow-hidden {\n\tdisplay: none;\n}\n\n/* Overflow "more" button */\n.notectl-toolbar-overflow-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 32px;\n\theight: 32px;\n\tborder: 1px solid transparent;\n\tborder-radius: 4px;\n\tbackground: transparent;\n\tcursor: pointer;\n\tcolor: var(--notectl-fg);\n\tfont-size: 16px;\n\tline-height: 1;\n\tpadding: 0;\n\tflex-shrink: 0;\n\tmargin-inline-start: auto;\n\ttransition: background 0.1s, border-color 0.1s;\n}\n\n@media (hover: hover) {\n\t.notectl-toolbar-overflow-btn:hover {\n\t\tbackground: var(--notectl-hover-bg);\n\t\tborder-color: var(--notectl-border);\n\t}\n}\n\n.notectl-toolbar-overflow-btn--hidden {\n\tdisplay: none;\n}\n\n.notectl-toolbar-overflow-btn:focus-visible {\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n\toutline: none;\n}\n\n/* Dropdown item states shared by all dropdown menus (including overflow) */\n.notectl-dropdown__item:disabled {\n\topacity: 0.4;\n\tcursor: not-allowed;\n}\n\n@media (hover: hover) {\n\t.notectl-dropdown__item:disabled:hover {\n\t\tbackground: none;\n\t}\n}\n\n.notectl-dropdown__item--active {\n\tcolor: var(--notectl-primary-fg);\n}\n\n.notectl-dropdown__item-icon svg {\n\tdisplay: block;\n\twidth: 16px;\n\theight: 16px;\n\tfill: currentColor;\n}\n\n.notectl-dropdown__separator {\n\theight: 1px;\n\tbackground: var(--notectl-border);\n\tmargin: 4px 0;\n}\n\n/* Combobox-style toolbar buttons (shared base for font, fontSize, heading, etc.) */\n.notectl-toolbar-btn[role="combobox"] {\n\twidth: auto;\n\tpadding: 0 8px;\n\tgap: 4px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-bg);\n}\n\n@media (hover: hover) {\n\t.notectl-toolbar-btn[role="combobox"]:hover {\n\t\tbackground: var(--notectl-hover-bg);\n\t\tborder-color: var(--notectl-fg-muted);\n\t}\n}\n\n.notectl-toolbar-btn[role="combobox"].notectl-toolbar-btn--active {\n\tbackground: var(--notectl-bg);\n\tborder-color: var(--notectl-primary-muted);\n}\n\n.notectl-toolbar-combobox__label {\n\tflex: 1;\n\tfont-size: 13px;\n\tfont-weight: 500;\n\tcolor: var(--notectl-fg);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\ttext-align: start;\n\tline-height: 30px;\n}\n\n.notectl-toolbar-combobox__arrow {\n\tflex-shrink: 0;\n\tfont-size: 11px;\n\tcolor: var(--notectl-fg-muted);\n\tline-height: 30px;\n}\n\n/* Link Popup */\n.notectl-link-popup {\n\tpadding: 8px;\n\tmin-width: 200px;\n}\n\n.notectl-link-popup__input {\n\twidth: 100%;\n\tpadding: 4px;\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tfont-size: 13px;\n\tcolor: var(--notectl-fg);\n\tbackground: var(--notectl-bg);\n}\n\n.notectl-link-popup__input:focus-visible {\n\toutline: 2px solid var(--notectl-focus-ring);\n\toutline-offset: -1px;\n}\n\n.notectl-link-popup__button {\n\twidth: 100%;\n\tpadding: 6px 12px;\n\tcursor: pointer;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-bg);\n\tcolor: var(--notectl-fg);\n\tfont-size: 13px;\n}\n\n.notectl-link-popup__button--apply {\n\tmargin-top: 4px;\n}\n\n@media (hover: hover) {\n\t.notectl-link-popup__button:hover {\n\t\tbackground: var(--notectl-hover-bg);\n\t}\n}\n\n.notectl-link-popup__button:focus-visible {\n\toutline: 2px solid var(--notectl-focus-ring);\n\toutline-offset: -1px;\n}\n'),this.context=t,this.popupManager=new d(t.getContainer()),t.registerService(c,this.popupManager),this.popupController=new E(()=>this.getActiveElement(),this.locale),this.popupController.setPopupManager(this.popupManager),this.tooltip=new A(()=>this.popupController?.isOpen()??!1),t.registerService(_,{refresh:()=>this.updateButtonStates(t.getState()),closePopup:()=>this.popupController?.close()}),this.createToolbarElement()}getOverflowBehavior(){return this.overflowBehavior}setOverflowBehavior(t){t!==this.overflowBehavior&&(this.overflowBehavior=t,this.applyOverflowBehavior(),this.renderItems())}onReady(){this.renderItems()}destroy(){this.overflowController?.destroy(),this.overflowController=null,this.popupController?.destroy(),this.popupController=null,this.popupManager?.destroy(),this.popupManager=null,this.tooltip?.destroy(),this.tooltip=null,this.toolbarElement&&(this.toolbarElement.remove(),this.toolbarElement=null),this.buttons=[],this.visibleElements=[],this.context=null}onStateChange(t,e,o){this.updateButtonStates(e)}onReadOnlyChange(t){this.toolbarElement&&(this.toolbarElement.hidden=t)}onConfigure(t){for(const[e,o]of Object.entries(t))!1===o?this.hiddenItems.add(e):this.hiddenItems.delete(e);this.renderItems()}createToolbarElement(){if(!this.context)return;this.toolbarElement&&this.toolbarElement.remove(),this.buttons=[];const t=this.context.getPluginContainer("top");this.toolbarElement=document.createElement("div"),this.toolbarElement.setAttribute("role","toolbar"),this.toolbarElement.setAttribute("aria-label",this.locale.formattingOptionsAria),this.toolbarElement.setAttribute("data-notectl-no-print",""),this.toolbarElement.className="notectl-toolbar",this.toolbarElement.addEventListener("keydown",t=>this.handleToolbarKeydown(t)),this.applyOverflowBehavior(),t.appendChild(this.toolbarElement)}applyOverflowBehavior(){this.toolbarElement&&this.context&&(this.overflowController?.destroy(),this.overflowController=null,this.toolbarElement.setAttribute("data-overflow",this.overflowBehavior),this.overflowBehavior===f.BurgerMenu?this.overflowController=new w({toolbar:this.toolbarElement,ariaLabel:this.locale.moreToolsAria,context:this.context,popupManager:this.popupManager??void 0,onOverflowChange:(t,e)=>{this.visibleElements=e?[...t,e]:[...t],this.initRovingTabindex()},onItemActivated:(t,e)=>{this.activateButton(t,e)},getActiveElement:()=>this.getActiveElement()}):this.visibleElements=[])}renderItems(){if(this.context&&this.toolbarElement){for(const t of this.buttons)t.element.remove();this.buttons=[];for(const t of this.toolbarElement.querySelectorAll(".notectl-toolbar-separator"))t.remove();this.layoutConfig?this.renderItemsByLayout():this.renderItemsByGroup(),this.buttons.length>0&&!this.toolbarElement.parentElement&&this.context.getPluginContainer("top").appendChild(this.toolbarElement),this.overflowController?.update(this.buttons),this.initRovingTabindex(),this.updateButtonStates(this.context.getState())}}getTabElements(){return this.visibleElements.length>0?this.visibleElements:this.buttons.map(t=>t.element)}initRovingTabindex(){const t=this.getTabElements(),e=u(t);this.focusedIndex=e>=0?e:0,s(t,this.focusedIndex)}setRovingFocus(t){const e=this.getTabElements();t<0||t>=e.length||(this.focusedIndex=t,s(e,t),e[t]?.focus())}getActiveElement(){const t=this.toolbarElement?.getRootNode();return t instanceof ShadowRoot?t.activeElement:document.activeElement}syncFocusedIndex(){const t=this.getActiveElement(),e=this.getTabElements().findIndex(e=>e===t);e>=0&&(this.focusedIndex=e)}handleToolbarKeydown(e){const o=this.getTabElements();var n;if(0!==o.length)switch(this.syncFocusedIndex(),e.key){case"ArrowRight":case"ArrowLeft":{e.preventDefault();const r=(n=!!this.toolbarElement&&t(this.toolbarElement),"ArrowRight"===e.key?n?-1:1:n?1:-1),i=function(t,e,o){const n=t.length;if(0===n)return-1;let r=e;for(let i=0;i<n;i++)if(r=(r+o+n)%n,!t[r]?.disabled)return r;return e}(o,this.focusedIndex,r);this.setRovingFocus(i);break}case"Home":{e.preventDefault();const t=u(o);t>=0&&this.setRovingFocus(t);break}case"End":{e.preventDefault();const t=function(t){for(let e=t.length-1;e>=0;e--)if(!t[e]?.disabled)return e;return-1}(o);t>=0&&this.setRovingFocus(t);break}case"Enter":case" ":{e.preventDefault();const t=o[this.focusedIndex],n=this.buttons.find(e=>e.element===t);n&&this.activateButton(n.element,n.item);break}}}activateButton(t,e){this.tooltip?.hide(),e.popupType&&this.context?this.popupController?.toggle(t,e,this.context):this.context?.executeCommand(e.command)}renderItemsByLayout(){if(!this.context||!this.toolbarElement||!this.layoutConfig)return;const t=this.context.getToolbarRegistry();let e=!0;for(const o of this.layoutConfig.groups){const n=[];for(const e of o){const o=t.getToolbarItemsByPlugin(e).filter(t=>!this.hiddenItems.has(t.id));n.push(...o)}if(0!==n.length){e||this.toolbarElement.appendChild(y()),e=!1;for(const t of n){const e=this.createButton(t);this.toolbarElement.appendChild(e.element),this.buttons.push(e)}}}0===this.buttons.length&&this.toolbarElement.remove()}renderItemsByGroup(){if(!this.context||!this.toolbarElement)return;const t=this.context.getToolbarRegistry().getToolbarItems().filter(t=>!this.hiddenItems.has(t.id));if(0===t.length)return void this.toolbarElement.remove();const e=/* @__PURE__ */new Map;for(const n of t){const t=e.get(n.group)??[];t.push(n),e.set(n.group,t)}let o=!0;for(const[,n]of e){o||this.toolbarElement.appendChild(y()),o=!1;for(const t of n){const e=this.createButton(t);this.toolbarElement.appendChild(e.element),this.buttons.push(e)}}}createButton(t){const e=document.createElement("button");e.type="button",e.className=`notectl-toolbar-btn notectl-toolbar-btn--${t.id}`,e.setAttribute("aria-pressed","false"),e.setAttribute("aria-label",t.label),e.setAttribute("data-toolbar-item",t.id),e.setAttribute("data-tooltip",t.tooltip??t.label);let o=null;if("combobox"===t.popupType){e.setAttribute("role","combobox"),e.setAttribute("aria-haspopup","listbox"),e.setAttribute("aria-expanded","false");const n=document.createElement("span");n.className="notectl-toolbar-combobox__label";const r=this.context?.getState();r&&(n.textContent=t.getLabel(r)),e.appendChild(n),o=n;const i=document.createElement("span");i.className="notectl-toolbar-combobox__arrow",i.setAttribute("aria-hidden","true"),i.textContent="▾",e.appendChild(i)}else{t.popupType&&(e.setAttribute("aria-haspopup","true"),e.setAttribute("aria-expanded","false"));const o=document.createElement("span");o.className="notectl-toolbar-btn__icon",o.innerHTML=t.icon,e.appendChild(o)}return e.addEventListener("mousedown",o=>{o.preventDefault(),this.activateButton(e,t)}),e.addEventListener("mouseenter",()=>this.tooltip?.show(e)),e.addEventListener("mouseleave",()=>this.tooltip?.hide()),e.addEventListener("focus",()=>this.tooltip?.show(e)),e.addEventListener("blur",()=>this.tooltip?.hide()),{element:e,item:t,comboLabelEl:o}}updateButtonStates(t){for(const e of this.buttons){const o=e.item.isActive?.(t)??!1,n=e.item.isEnabled?.(t)??!0;if(e.element.setAttribute("aria-pressed",String(o)),e.element.classList.toggle("notectl-toolbar-btn--active",o),e.element.disabled=!n,n?e.element.removeAttribute("aria-disabled"):e.element.setAttribute("aria-disabled","true"),e.comboLabelEl&&"combobox"===e.item.popupType&&(e.comboLabelEl.textContent=e.item.getLabel(t)),e.item.getIcon){const o=e.item.getIcon(t),n=e.element.querySelector(".notectl-toolbar-btn__icon");n&&n.innerHTML!==o&&(n.innerHTML=o)}}this.overflowController?.updateItemStates(t)}};export{m as a,h as i,_ as n,p as o,f as r,k as t};
2
- //# sourceMappingURL=ToolbarPlugin-BFEniyH-.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToolbarPlugin-BFEniyH-.mjs","names":[],"sources":["../../src/plugins/toolbar/ToolbarRegistry.ts","../../src/editor/styles/toolbar.ts","../../src/plugins/toolbar/ToolbarKeyboardNav.ts","../../src/plugins/toolbar/ToolbarLocale.ts","../../src/plugins/toolbar/ToolbarOverflowBehavior.ts","../../src/plugins/toolbar/ToolbarOverflowController.ts","../../src/plugins/toolbar/ToolbarRenderers.ts","../../src/plugins/toolbar/ToolbarPopupController.ts","../../src/plugins/toolbar/ToolbarTooltip.ts","../../src/plugins/toolbar/ToolbarPlugin.ts"],"sourcesContent":["/**\n * ToolbarRegistry: manages plugin-registered toolbar items\n * with per-plugin tracking for clean teardown.\n */\n\nimport type { ToolbarItem } from './ToolbarItem.js';\n\nexport class ToolbarRegistry {\n\tprivate readonly _toolbarItems = new Map<string, ToolbarItem>();\n\tprivate readonly _toolbarItemPluginMap = new Map<string, string[]>();\n\n\tregisterToolbarItem(item: ToolbarItem, pluginId?: string): void {\n\t\tif (this._toolbarItems.has(item.id)) {\n\t\t\tthrow new Error(`ToolbarItem with id \"${item.id}\" is already registered.`);\n\t\t}\n\t\tthis._toolbarItems.set(item.id, item);\n\t\tif (pluginId) {\n\t\t\tconst ids = this._toolbarItemPluginMap.get(pluginId) ?? [];\n\t\t\tids.push(item.id);\n\t\t\tthis._toolbarItemPluginMap.set(pluginId, ids);\n\t\t}\n\t}\n\n\tgetToolbarItemsByPlugin(pluginId: string): ToolbarItem[] {\n\t\tconst ids = this._toolbarItemPluginMap.get(pluginId) ?? [];\n\t\tconst items: ToolbarItem[] = [];\n\t\tfor (const id of ids) {\n\t\t\tconst item = this._toolbarItems.get(id);\n\t\t\tif (item) items.push(item);\n\t\t}\n\t\treturn items;\n\t}\n\n\tgetToolbarItem(id: string): ToolbarItem | undefined {\n\t\treturn this._toolbarItems.get(id);\n\t}\n\n\tgetToolbarItems(): ToolbarItem[] {\n\t\treturn [...this._toolbarItems.values()];\n\t}\n\n\tremoveToolbarItem(id: string): void {\n\t\tthis._toolbarItems.delete(id);\n\t\tfor (const [pluginId, ids] of this._toolbarItemPluginMap) {\n\t\t\tconst idx = ids.indexOf(id);\n\t\t\tif (idx !== -1) {\n\t\t\t\tids.splice(idx, 1);\n\t\t\t\tif (ids.length === 0) this._toolbarItemPluginMap.delete(pluginId);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tclear(): void {\n\t\tthis._toolbarItems.clear();\n\t\tthis._toolbarItemPluginMap.clear();\n\t}\n}\n","/** Toolbar styles — buttons, separators, tooltips, popups, dropdowns. */\nexport const TOOLBAR_CSS = `\n/* Toolbar */\n.notectl-plugin-container--top {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: nowrap;\n\tborder-bottom: 1px solid var(--notectl-border);\n\tbackground: var(--notectl-toolbar-bg, var(--notectl-surface-raised));\n\tmin-height: 40px;\n}\n\n.notectl-toolbar {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: nowrap;\n\toverflow: hidden;\n\tflex: 1;\n\tmin-width: 0;\n\tgap: 2px;\n\tpadding: 4px 8px;\n}\n\n.notectl-toolbar[hidden] {\n\tdisplay: none;\n}\n\n.notectl-toolbar-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 32px;\n\theight: 32px;\n\tborder: 1px solid transparent;\n\tborder-radius: 4px;\n\tbackground: transparent;\n\tcursor: pointer;\n\tcolor: var(--notectl-fg);\n\tfont-size: 14px;\n\tline-height: 1;\n\tpadding: 0;\n\tflex-shrink: 0;\n\ttransition: background 0.1s, border-color 0.1s;\n}\n\n@media (hover: hover) {\n\t.notectl-toolbar-btn:hover {\n\t\tbackground: var(--notectl-hover-bg);\n\t\tborder-color: var(--notectl-border);\n\t}\n}\n\n.notectl-toolbar-btn--active {\n\tbackground: var(--notectl-active-bg);\n\tborder-color: var(--notectl-primary-muted);\n\tcolor: var(--notectl-primary-fg);\n}\n\n.notectl-toolbar-btn:focus-visible {\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n\toutline: none;\n}\n\n.notectl-toolbar-btn:disabled {\n\topacity: 0.4;\n\tcursor: not-allowed;\n}\n\n@media (hover: hover) {\n\t.notectl-toolbar-btn:disabled:hover {\n\t\tbackground: transparent;\n\t\tborder-color: transparent;\n\t}\n}\n\n.notectl-toolbar-btn__icon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tpointer-events: none;\n}\n\n.notectl-toolbar-btn__icon svg {\n\tdisplay: block;\n\twidth: 18px;\n\theight: 18px;\n\tfill: currentColor;\n}\n\n/* Tooltip (rendered as fixed-position element in shadow root) */\n.notectl-toolbar-tooltip {\n\tposition: fixed;\n\tpadding: 4px 8px;\n\tborder-radius: 4px;\n\tbackground: var(--notectl-tooltip-bg);\n\tcolor: var(--notectl-tooltip-fg);\n\tfont-size: 11px;\n\tfont-weight: 500;\n\twhite-space: nowrap;\n\tpointer-events: none;\n\tz-index: 10001;\n\tline-height: 1.4;\n\tletter-spacing: 0.01em;\n\tfont-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n}\n\n.notectl-toolbar-separator {\n\tdisplay: inline-block;\n\twidth: 1px;\n\theight: 20px;\n\tbackground: var(--notectl-border);\n\tmargin: 0 4px;\n\tvertical-align: middle;\n}\n\n/* Toolbar Popups */\n.notectl-toolbar-popup {\n\tbackground: var(--notectl-surface-overlay);\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 6px;\n\tbox-shadow: 0 4px 12px var(--notectl-shadow);\n\toverflow: hidden;\n}\n\n/* Grid Picker */\n.notectl-grid-picker__cell:focus-visible {\n\toutline: 2px solid var(--notectl-focus-ring);\n\toutline-offset: -1px;\n}\n\n.notectl-grid-picker__cell--highlighted {\n\tbackground: var(--notectl-primary-muted);\n\tborder-color: var(--notectl-primary);\n}\n\n/* Dropdown */\n.notectl-dropdown {\n\tmin-width: 160px;\n\tpadding: 4px 0;\n}\n\n.notectl-dropdown__item {\n\tdisplay: flex;\n\talign-items: center;\n\twidth: 100%;\n\tpadding: 8px 12px;\n\ttext-align: start;\n\tborder: none;\n\tbackground: none;\n\tcursor: pointer;\n\tfont-size: 14px;\n\tcolor: var(--notectl-fg);\n\tline-height: 1.4;\n\tfont-family: inherit;\n\twhite-space: nowrap;\n}\n\n@media (hover: hover) {\n\t.notectl-dropdown__item:hover {\n\t\tbackground: var(--notectl-hover-bg);\n\t}\n}\n\n.notectl-dropdown__item:focus-visible {\n\tbackground: var(--notectl-hover-bg);\n\toutline: none;\n}\n\n.notectl-dropdown__item-icon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 28px;\n\tfont-weight: 600;\n\tcolor: var(--notectl-fg-muted);\n\tflex-shrink: 0;\n}\n\n.notectl-dropdown__item-label {\n\tflex: 1;\n}\n\n/* Overflow behavior: flow mode — toolbar wraps to additional rows */\n.notectl-toolbar[data-overflow=\"flow\"] {\n\tflex-wrap: wrap;\n\toverflow: visible;\n}\n\n/* Overflow behavior: none — toolbar clips without any responsive behavior */\n.notectl-toolbar[data-overflow=\"none\"] {\n\tflex-wrap: nowrap;\n\toverflow: hidden;\n}\n\n/* Overflow: hidden items (burger-menu mode) */\n.notectl-toolbar-btn--overflow-hidden,\n.notectl-toolbar-separator--overflow-hidden {\n\tdisplay: none;\n}\n\n/* Overflow \"more\" button */\n.notectl-toolbar-overflow-btn {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: 32px;\n\theight: 32px;\n\tborder: 1px solid transparent;\n\tborder-radius: 4px;\n\tbackground: transparent;\n\tcursor: pointer;\n\tcolor: var(--notectl-fg);\n\tfont-size: 16px;\n\tline-height: 1;\n\tpadding: 0;\n\tflex-shrink: 0;\n\tmargin-inline-start: auto;\n\ttransition: background 0.1s, border-color 0.1s;\n}\n\n@media (hover: hover) {\n\t.notectl-toolbar-overflow-btn:hover {\n\t\tbackground: var(--notectl-hover-bg);\n\t\tborder-color: var(--notectl-border);\n\t}\n}\n\n.notectl-toolbar-overflow-btn--hidden {\n\tdisplay: none;\n}\n\n.notectl-toolbar-overflow-btn:focus-visible {\n\tbox-shadow: 0 0 0 2px var(--notectl-focus-ring);\n\toutline: none;\n}\n\n/* Dropdown item states shared by all dropdown menus (including overflow) */\n.notectl-dropdown__item:disabled {\n\topacity: 0.4;\n\tcursor: not-allowed;\n}\n\n@media (hover: hover) {\n\t.notectl-dropdown__item:disabled:hover {\n\t\tbackground: none;\n\t}\n}\n\n.notectl-dropdown__item--active {\n\tcolor: var(--notectl-primary-fg);\n}\n\n.notectl-dropdown__item-icon svg {\n\tdisplay: block;\n\twidth: 16px;\n\theight: 16px;\n\tfill: currentColor;\n}\n\n.notectl-dropdown__separator {\n\theight: 1px;\n\tbackground: var(--notectl-border);\n\tmargin: 4px 0;\n}\n\n/* Combobox-style toolbar buttons (shared base for font, fontSize, heading, etc.) */\n.notectl-toolbar-btn[role=\"combobox\"] {\n\twidth: auto;\n\tpadding: 0 8px;\n\tgap: 4px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-bg);\n}\n\n@media (hover: hover) {\n\t.notectl-toolbar-btn[role=\"combobox\"]:hover {\n\t\tbackground: var(--notectl-hover-bg);\n\t\tborder-color: var(--notectl-fg-muted);\n\t}\n}\n\n.notectl-toolbar-btn[role=\"combobox\"].notectl-toolbar-btn--active {\n\tbackground: var(--notectl-bg);\n\tborder-color: var(--notectl-primary-muted);\n}\n\n.notectl-toolbar-combobox__label {\n\tflex: 1;\n\tfont-size: 13px;\n\tfont-weight: 500;\n\tcolor: var(--notectl-fg);\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\ttext-align: start;\n\tline-height: 30px;\n}\n\n.notectl-toolbar-combobox__arrow {\n\tflex-shrink: 0;\n\tfont-size: 11px;\n\tcolor: var(--notectl-fg-muted);\n\tline-height: 30px;\n}\n\n/* Link Popup */\n.notectl-link-popup {\n\tpadding: 8px;\n\tmin-width: 200px;\n}\n\n.notectl-link-popup__input {\n\twidth: 100%;\n\tpadding: 4px;\n\tbox-sizing: border-box;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tfont-size: 13px;\n\tcolor: var(--notectl-fg);\n\tbackground: var(--notectl-bg);\n}\n\n.notectl-link-popup__input:focus-visible {\n\toutline: 2px solid var(--notectl-focus-ring);\n\toutline-offset: -1px;\n}\n\n.notectl-link-popup__button {\n\twidth: 100%;\n\tpadding: 6px 12px;\n\tcursor: pointer;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-bg);\n\tcolor: var(--notectl-fg);\n\tfont-size: 13px;\n}\n\n.notectl-link-popup__button--apply {\n\tmargin-top: 4px;\n}\n\n@media (hover: hover) {\n\t.notectl-link-popup__button:hover {\n\t\tbackground: var(--notectl-hover-bg);\n\t}\n}\n\n.notectl-link-popup__button:focus-visible {\n\toutline: 2px solid var(--notectl-focus-ring);\n\toutline-offset: -1px;\n}\n`;\n","/**\n * Keyboard navigation helpers for the toolbar (WAI-ARIA Toolbar pattern).\n * Also re-exports generic navigation helpers from `plugins/shared`.\n */\n\n/** Returns indices of all enabled buttons. */\nexport function getEnabledIndices(buttons: readonly HTMLButtonElement[]): number[] {\n\tconst result: number[] = [];\n\tfor (let i = 0; i < buttons.length; i++) {\n\t\tif (!buttons[i]?.disabled) {\n\t\t\tresult.push(i);\n\t\t}\n\t}\n\treturn result;\n}\n\n/** Finds the next enabled button index in the given direction (wraps around). */\nexport function findNextEnabled(\n\tbuttons: readonly HTMLButtonElement[],\n\tcurrent: number,\n\tdirection: 1 | -1,\n): number {\n\tconst len = buttons.length;\n\tif (len === 0) return -1;\n\n\tlet index = current;\n\tfor (let i = 0; i < len; i++) {\n\t\tindex = (index + direction + len) % len;\n\t\tif (!buttons[index]?.disabled) {\n\t\t\treturn index;\n\t\t}\n\t}\n\treturn current;\n}\n\n/** Finds the first enabled button index. */\nexport function findFirstEnabled(buttons: readonly HTMLButtonElement[]): number {\n\tfor (let i = 0; i < buttons.length; i++) {\n\t\tif (!buttons[i]?.disabled) return i;\n\t}\n\treturn -1;\n}\n\n/** Finds the last enabled button index. */\nexport function findLastEnabled(buttons: readonly HTMLButtonElement[]): number {\n\tfor (let i = buttons.length - 1; i >= 0; i--) {\n\t\tif (!buttons[i]?.disabled) return i;\n\t}\n\treturn -1;\n}\n\nexport {\n\tapplyRovingTabindex,\n\tfindNextDropdownItem,\n\tnavigateGrid,\n} from '../shared/KeyboardNav.js';\n\n/**\n * Resolves a horizontal navigation direction based on text direction.\n * In RTL, ArrowRight moves backward (-1) and ArrowLeft moves forward (1).\n */\nexport function resolveHorizontalDirection(\n\tkey: 'ArrowRight' | 'ArrowLeft',\n\tisRtl: boolean,\n): 1 | -1 {\n\tif (key === 'ArrowRight') return isRtl ? -1 : 1;\n\treturn isRtl ? 1 : -1;\n}\n","/** Locale interface and default English locale for the ToolbarPlugin. */\n\n// --- Locale Interface ---\n\nexport interface ToolbarLocale {\n\treadonly formattingOptionsAria: string;\n\treadonly moreToolsAria: string;\n\treadonly gridPickerLabel: (rows: number, cols: number) => string;\n}\n\n// --- Default English Locale ---\n\nexport const TOOLBAR_LOCALE_EN: ToolbarLocale = {\n\tformattingOptionsAria: 'Formatting options',\n\tmoreToolsAria: 'More tools',\n\tgridPickerLabel: (rows: number, cols: number) => `${rows} x ${cols}`,\n};\n\n// --- Lazy Locale Loader ---\n\nconst localeModules: Record<string, () => Promise<{ default: ToolbarLocale }>> = import.meta.glob<{\n\tdefault: ToolbarLocale;\n}>('./locales/*.ts', { eager: false });\n\nexport async function loadToolbarLocale(lang: string): Promise<ToolbarLocale> {\n\tif (lang === 'en') return TOOLBAR_LOCALE_EN;\n\tconst loader = localeModules[`./locales/${lang}.ts`];\n\tif (!loader) return TOOLBAR_LOCALE_EN;\n\ttry {\n\t\tconst mod = await loader();\n\t\treturn mod.default;\n\t} catch {\n\t\treturn TOOLBAR_LOCALE_EN;\n\t}\n}\n","/**\n * Controls how the toolbar responds when items exceed the available width.\n *\n * @example\n * ```typescript\n * const editor = await createEditor({\n * toolbar: {\n * groups: [[BoldPlugin, ItalicPlugin], [HeadingPlugin]],\n * overflow: ToolbarOverflowBehavior.Flow,\n * },\n * });\n * ```\n */\nexport const ToolbarOverflowBehavior = {\n\t/** Items that don't fit are hidden behind a \"...\" dropdown button. Default. */\n\tBurgerMenu: 'burger-menu',\n\t/** Toolbar wraps to additional rows when items overflow. Pure CSS, no JS measurement. */\n\tFlow: 'flow',\n\t/** No responsive behavior; the toolbar clips at the container boundary. */\n\tNone: 'none',\n} as const;\n\nexport type ToolbarOverflowBehavior =\n\t(typeof ToolbarOverflowBehavior)[keyof typeof ToolbarOverflowBehavior];\n","/**\n * ToolbarOverflowController: manages responsive toolbar overflow.\n * Uses ResizeObserver to detect when items exceed available width,\n * hides overflow items, and shows a \"more\" dropdown button.\n * Delegates popup lifecycle to PopupManager when available.\n */\n\nimport { isRtlContext } from '../../platform/Platform.js';\nimport type { EditorState } from '../../state/EditorState.js';\nimport { setStyleProperties } from '../../style/StyleRuntime.js';\nimport type { PluginContext } from '../Plugin.js';\nimport { findNextDropdownItem } from '../shared/KeyboardNav.js';\nimport type { PopupHandle, PopupManager } from '../shared/PopupManager.js';\nimport { appendToRoot } from '../shared/PopupPositioning.js';\nimport type { ToolbarItem } from './ToolbarItem.js';\n\n// --- Types ---\n\ninterface OverflowEntry {\n\treadonly element: HTMLButtonElement;\n\treadonly item: ToolbarItem;\n}\n\ntype OnOverflowChange = (\n\tvisibleButtons: readonly HTMLButtonElement[],\n\toverflowButton: HTMLButtonElement | null,\n) => void;\n\ntype OnItemActivated = (overflowButton: HTMLButtonElement, item: ToolbarItem) => void;\n\nexport interface OverflowControllerConfig {\n\treadonly toolbar: HTMLElement;\n\treadonly ariaLabel: string;\n\treadonly context: PluginContext;\n\treadonly onOverflowChange: OnOverflowChange;\n\treadonly onItemActivated: OnItemActivated;\n\treadonly getActiveElement: () => Element | null;\n\treadonly popupManager?: PopupManager;\n}\n\n// --- Constants ---\n\nconst OVERFLOW_BTN_WIDTH = 34;\nconst GAP = 2;\nconst HIDDEN_BTN_CLASS = 'notectl-toolbar-btn--overflow-hidden';\nconst HIDDEN_SEP_CLASS = 'notectl-toolbar-separator--overflow-hidden';\nconst HIDDEN_OVERFLOW_CLASS = 'notectl-toolbar-overflow-btn--hidden';\nconst ELLIPSIS_SVG =\n\t'<svg viewBox=\"0 0 16 16\" width=\"16\" height=\"16\"><circle cx=\"3\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/><circle cx=\"8\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/><circle cx=\"13\" cy=\"8\" r=\"1.5\" fill=\"currentColor\"/></svg>';\n\n// --- Controller ---\n\nexport class ToolbarOverflowController {\n\tprivate readonly toolbar: HTMLElement;\n\tprivate readonly context: PluginContext;\n\tprivate readonly onOverflowChange: OnOverflowChange;\n\tprivate readonly onItemActivated: OnItemActivated;\n\tprivate readonly getActiveElement: () => Element | null;\n\tprivate readonly ariaLabel: string;\n\tprivate readonly popupManager: PopupManager | null;\n\n\tprivate entries: OverflowEntry[] = [];\n\tprivate overflowButton: HTMLButtonElement | null = null;\n\tprivate overflowDropdown: HTMLElement | null = null;\n\tprivate overflowHandle: PopupHandle | null = null;\n\tprivate overflowEntries: OverflowEntry[] = [];\n\tprivate resizeObserver: ResizeObserver | null = null;\n\tprivate closeHandler: ((e: MouseEvent) => void) | null = null;\n\tprivate closeHandlerTimer: ReturnType<typeof setTimeout> | null = null;\n\tprivate closeHandlerAttached = false;\n\n\tconstructor(config: OverflowControllerConfig) {\n\t\tthis.toolbar = config.toolbar;\n\t\tthis.ariaLabel = config.ariaLabel;\n\t\tthis.context = config.context;\n\t\tthis.onOverflowChange = config.onOverflowChange;\n\t\tthis.onItemActivated = config.onItemActivated;\n\t\tthis.getActiveElement = config.getActiveElement;\n\t\tthis.popupManager = config.popupManager ?? null;\n\n\t\tthis.resizeObserver = new ResizeObserver(() => this.recalculate());\n\t\tthis.resizeObserver.observe(this.toolbar);\n\t}\n\n\t/** Called after renderItems() — stores button references and recalculates. */\n\tupdate(buttons: readonly { element: HTMLButtonElement; item: ToolbarItem }[]): void {\n\t\tthis.entries = buttons.map((b) => ({ element: b.element, item: b.item }));\n\t\tthis.recalculate();\n\t}\n\n\t/** Measures toolbar and redistributes items between visible and overflow. */\n\trecalculate(): void {\n\t\tif (this.entries.length === 0) return;\n\n\t\tthis.closeDropdown();\n\t\tthis.resetVisibility();\n\t\tthis.ensureOverflowButton();\n\t\tthis.setOverflowButtonVisible(false);\n\n\t\t// Phase 1 — Measure (reads only): batch all layout reads before any writes\n\t\tconst availableWidth: number = this.measureAvailableWidth();\n\t\tconst children: HTMLElement[] = Array.from(this.toolbar.children) as HTMLElement[];\n\t\tconst childWidths: Map<HTMLElement, number> = this.measureChildWidths(children);\n\n\t\t// Phase 2 — Apply (writes only): use cached widths, no layout reads\n\t\tconst maxWidth: number = availableWidth - OVERFLOW_BTN_WIDTH - GAP;\n\t\tlet usedWidth = 0;\n\t\tlet overflowing = false;\n\t\tconst overflowList: OverflowEntry[] = [];\n\n\t\tfor (const child of children) {\n\t\t\tif (child === this.overflowButton) continue;\n\n\t\t\tif (child.classList.contains('notectl-toolbar-separator')) {\n\t\t\t\tif (overflowing) {\n\t\t\t\t\tchild.classList.add(HIDDEN_SEP_CLASS);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst sepWidth: number = (childWidths.get(child) ?? 0) + GAP;\n\t\t\t\tif (usedWidth + sepWidth > maxWidth) {\n\t\t\t\t\toverflowing = true;\n\t\t\t\t\tchild.classList.add(HIDDEN_SEP_CLASS);\n\t\t\t\t} else {\n\t\t\t\t\tusedWidth += sepWidth;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst entry: OverflowEntry | undefined = this.entries.find((oe) => oe.element === child);\n\t\t\tif (!entry) continue;\n\n\t\t\tif (overflowing) {\n\t\t\t\tentry.element.classList.add(HIDDEN_BTN_CLASS);\n\t\t\t\toverflowList.push(entry);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst btnWidth: number = (childWidths.get(child) ?? 0) + GAP;\n\t\t\tif (usedWidth + btnWidth > maxWidth) {\n\t\t\t\toverflowing = true;\n\t\t\t\tentry.element.classList.add(HIDDEN_BTN_CLASS);\n\t\t\t\toverflowList.push(entry);\n\t\t\t} else {\n\t\t\t\tusedWidth += btnWidth;\n\t\t\t}\n\t\t}\n\n\t\tthis.overflowEntries = overflowList;\n\t\tthis.hideTrailingSeparators();\n\t\tthis.setOverflowButtonVisible(overflowList.length > 0);\n\t\tthis.notifyChange();\n\t}\n\n\t/** Updates active/disabled states for items in the open overflow dropdown. */\n\tupdateItemStates(state: EditorState): void {\n\t\tif (!this.overflowDropdown) return;\n\n\t\tconst menuItems: HTMLButtonElement[] = Array.from(\n\t\t\tthis.overflowDropdown.querySelectorAll('.notectl-dropdown__item'),\n\t\t) as HTMLButtonElement[];\n\n\t\tfor (const menuItem of menuItems) {\n\t\t\tconst itemId: string | null = menuItem.getAttribute('data-toolbar-item');\n\t\t\tconst entry: OverflowEntry | undefined = this.overflowEntries.find(\n\t\t\t\t(oe) => oe.item.id === itemId,\n\t\t\t);\n\t\t\tif (!entry) continue;\n\n\t\t\tconst active: boolean = entry.item.isActive?.(state) ?? false;\n\t\t\tconst enabled: boolean = entry.item.isEnabled?.(state) ?? true;\n\t\t\tmenuItem.classList.toggle('notectl-dropdown__item--active', active);\n\t\t\tmenuItem.disabled = !enabled;\n\n\t\t\tif (entry.item.popupType === 'combobox') {\n\t\t\t\tconst labelEl: HTMLSpanElement | null = menuItem.querySelector(\n\t\t\t\t\t'.notectl-dropdown__item-label',\n\t\t\t\t);\n\t\t\t\tif (labelEl) {\n\t\t\t\t\tlabelEl.textContent = entry.item.getLabel(state);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (entry.item.getIcon) {\n\t\t\t\tconst newIcon: string = entry.item.getIcon(state);\n\t\t\t\tconst iconEl: HTMLSpanElement | null = menuItem.querySelector(\n\t\t\t\t\t'.notectl-dropdown__item-icon',\n\t\t\t\t);\n\t\t\t\tif (iconEl && iconEl.innerHTML !== newIcon) {\n\t\t\t\t\ticonEl.innerHTML = newIcon;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/** Cleans up ResizeObserver, DOM elements, and event listeners. */\n\tdestroy(): void {\n\t\tthis.resizeObserver?.disconnect();\n\t\tthis.resizeObserver = null;\n\t\tthis.closeDropdown();\n\t\tthis.overflowButton?.remove();\n\t\tthis.overflowButton = null;\n\t\tthis.entries = [];\n\t\tthis.overflowEntries = [];\n\t}\n\n\t// --- Measurement ---\n\n\tprivate measureChildWidths(children: readonly HTMLElement[]): Map<HTMLElement, number> {\n\t\tconst widths: Map<HTMLElement, number> = new Map();\n\t\tfor (const child of children) {\n\t\t\tif (child === this.overflowButton) continue;\n\t\t\twidths.set(child, child.offsetWidth);\n\t\t}\n\t\treturn widths;\n\t}\n\n\tprivate measureAvailableWidth(): number {\n\t\tconst toolbarStyle: CSSStyleDeclaration = getComputedStyle(this.toolbar);\n\t\tconst paddingLeft: number = Number.parseFloat(toolbarStyle.paddingLeft) || 0;\n\t\tconst paddingRight: number = Number.parseFloat(toolbarStyle.paddingRight) || 0;\n\t\treturn this.toolbar.clientWidth - paddingLeft - paddingRight;\n\t}\n\n\tprivate resetVisibility(): void {\n\t\tfor (const entry of this.entries) {\n\t\t\tentry.element.classList.remove(HIDDEN_BTN_CLASS);\n\t\t}\n\t\tconst separators: HTMLElement[] = Array.from(\n\t\t\tthis.toolbar.querySelectorAll('.notectl-toolbar-separator'),\n\t\t) as HTMLElement[];\n\t\tfor (const sep of separators) {\n\t\t\tsep.classList.remove(HIDDEN_SEP_CLASS);\n\t\t}\n\t}\n\n\t// --- Overflow Button ---\n\n\tprivate setOverflowButtonVisible(visible: boolean): void {\n\t\tif (!this.overflowButton) return;\n\t\tthis.overflowButton.classList.toggle(HIDDEN_OVERFLOW_CLASS, !visible);\n\t\tif (!visible) {\n\t\t\tthis.overflowButton.removeAttribute('tabindex');\n\t\t}\n\t}\n\n\tprivate ensureOverflowButton(): void {\n\t\tif (this.overflowButton) return;\n\n\t\tconst btn: HTMLButtonElement = document.createElement('button');\n\t\tbtn.type = 'button';\n\t\tbtn.className = 'notectl-toolbar-overflow-btn';\n\t\tbtn.setAttribute('aria-label', this.ariaLabel);\n\t\tbtn.setAttribute('aria-haspopup', 'true');\n\t\tbtn.setAttribute('aria-expanded', 'false');\n\t\tbtn.innerHTML = ELLIPSIS_SVG;\n\n\t\tbtn.addEventListener('mousedown', (e: MouseEvent) => {\n\t\t\te.preventDefault();\n\t\t\tthis.toggleDropdown();\n\t\t});\n\n\t\tthis.toolbar.appendChild(btn);\n\t\tthis.overflowButton = btn;\n\t}\n\n\t// --- Dropdown ---\n\n\tprivate toggleDropdown(): void {\n\t\tif (this.overflowDropdown) {\n\t\t\tthis.closeDropdown();\n\t\t} else {\n\t\t\tthis.openDropdown();\n\t\t}\n\t}\n\n\tprivate openDropdown(): void {\n\t\tif (!this.overflowButton || this.overflowEntries.length === 0) return;\n\n\t\tconst dropdown: HTMLDivElement = document.createElement('div');\n\t\tdropdown.className = 'notectl-toolbar-popup notectl-dropdown';\n\t\tdropdown.setAttribute('role', 'menu');\n\n\t\tthis.renderDropdownItems(dropdown, this.context.getState());\n\n\t\tif (this.popupManager) {\n\t\t\tthis.overflowHandle = this.popupManager.open({\n\t\t\t\tanchor: this.overflowButton,\n\t\t\t\tclassName: 'notectl-toolbar-popup notectl-dropdown',\n\t\t\t\tariaRole: 'menu',\n\t\t\t\tposition: 'below-end',\n\t\t\t\treferenceNode: this.overflowButton,\n\t\t\t\trestoreFocusTo: this.overflowButton,\n\t\t\t\tonClose: () => {\n\t\t\t\t\tthis.overflowHandle = null;\n\t\t\t\t\tthis.overflowDropdown = null;\n\t\t\t\t\tif (this.overflowButton) {\n\t\t\t\t\t\tthis.overflowButton.setAttribute('aria-expanded', 'false');\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcontent: (popup: HTMLElement) => {\n\t\t\t\t\tthis.renderDropdownItems(popup, this.context.getState());\n\t\t\t\t\tthis.overflowDropdown = popup;\n\t\t\t\t\tpopup.addEventListener('keydown', (e: KeyboardEvent) => this.handleDropdownKeydown(e));\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis.overflowButton.setAttribute('aria-expanded', 'true');\n\t\t} else {\n\t\t\tthis.positionDropdown(dropdown);\n\t\t\tappendToRoot(dropdown, this.overflowButton);\n\t\t\tthis.overflowDropdown = dropdown;\n\t\t\tthis.overflowButton.setAttribute('aria-expanded', 'true');\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tconst first: HTMLElement | null = dropdown.querySelector('[role=\"menuitem\"]');\n\t\t\t\tfirst?.focus();\n\t\t\t});\n\n\t\t\tdropdown.addEventListener('keydown', (e: KeyboardEvent) => this.handleDropdownKeydown(e));\n\t\t\tthis.registerCloseHandler();\n\t\t}\n\t}\n\n\tprivate renderDropdownItems(dropdown: HTMLElement, state: EditorState): void {\n\t\tlet lastGroup: string | null = null;\n\n\t\tfor (const entry of this.overflowEntries) {\n\t\t\tif (lastGroup !== null && entry.item.group !== lastGroup) {\n\t\t\t\tconst sep: HTMLDivElement = document.createElement('div');\n\t\t\t\tsep.className = 'notectl-dropdown__separator';\n\t\t\t\tsep.setAttribute('role', 'separator');\n\t\t\t\tdropdown.appendChild(sep);\n\t\t\t}\n\t\t\tlastGroup = entry.item.group;\n\n\t\t\tconst menuBtn: HTMLButtonElement = document.createElement('button');\n\t\t\tmenuBtn.type = 'button';\n\t\t\tmenuBtn.className = 'notectl-dropdown__item';\n\t\t\tmenuBtn.setAttribute('role', 'menuitem');\n\t\t\tmenuBtn.setAttribute('tabindex', '-1');\n\t\t\tmenuBtn.setAttribute('data-toolbar-item', entry.item.id);\n\n\t\t\tconst iconSpan: HTMLSpanElement = document.createElement('span');\n\t\t\ticonSpan.className = 'notectl-dropdown__item-icon';\n\t\t\tif (entry.item.popupType !== 'combobox') {\n\t\t\t\ticonSpan.innerHTML = entry.item.icon;\n\t\t\t}\n\t\t\tmenuBtn.appendChild(iconSpan);\n\n\t\t\tconst labelSpan: HTMLSpanElement = document.createElement('span');\n\t\t\tlabelSpan.className = 'notectl-dropdown__item-label';\n\t\t\tlabelSpan.textContent =\n\t\t\t\tentry.item.popupType === 'combobox'\n\t\t\t\t\t? entry.item.getLabel(state)\n\t\t\t\t\t: (entry.item.tooltip ?? entry.item.label);\n\t\t\tmenuBtn.appendChild(labelSpan);\n\n\t\t\tmenuBtn.addEventListener('mousedown', (ev: MouseEvent) => {\n\t\t\t\tev.preventDefault();\n\t\t\t\tev.stopPropagation();\n\t\t\t\tthis.activateOverflowItem(entry);\n\t\t\t});\n\n\t\t\tdropdown.appendChild(menuBtn);\n\t\t}\n\t}\n\n\tprivate positionDropdown(dropdown: HTMLElement): void {\n\t\tif (!this.overflowButton) return;\n\n\t\tconst rect: DOMRect = this.overflowButton.getBoundingClientRect();\n\t\tconst rtl: boolean = isRtlContext(this.toolbar);\n\n\t\tif (rtl) {\n\t\t\tsetStyleProperties(dropdown, {\n\t\t\t\tposition: 'fixed',\n\t\t\t\ttop: `${rect.bottom + 2}px`,\n\t\t\t\tleft: `${rect.left}px`,\n\t\t\t\tright: 'auto',\n\t\t\t\tzIndex: '10000',\n\t\t\t});\n\t\t} else {\n\t\t\tconst rightEdge: number = window.innerWidth - rect.right;\n\t\t\tsetStyleProperties(dropdown, {\n\t\t\t\tposition: 'fixed',\n\t\t\t\ttop: `${rect.bottom + 2}px`,\n\t\t\t\tright: `${rightEdge}px`,\n\t\t\t\tleft: 'auto',\n\t\t\t\tzIndex: '10000',\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate registerCloseHandler(): void {\n\t\tthis.closeHandler = (ev: MouseEvent) => {\n\t\t\tconst path: EventTarget[] = ev.composedPath();\n\t\t\tif (\n\t\t\t\tthis.overflowDropdown &&\n\t\t\t\t!path.includes(this.overflowDropdown) &&\n\t\t\t\tthis.overflowButton &&\n\t\t\t\t!path.includes(this.overflowButton)\n\t\t\t) {\n\t\t\t\tthis.closeDropdown();\n\t\t\t}\n\t\t};\n\t\tthis.closeHandlerTimer = setTimeout(() => {\n\t\t\tthis.closeHandlerTimer = null;\n\t\t\tif (!this.closeHandler || !this.overflowDropdown) return;\n\t\t\tdocument.addEventListener('mousedown', this.closeHandler);\n\t\t\tthis.closeHandlerAttached = true;\n\t\t}, 0);\n\t}\n\n\tprivate closeDropdown(): void {\n\t\tif (this.overflowHandle) {\n\t\t\tconst handle: PopupHandle = this.overflowHandle;\n\t\t\tthis.overflowHandle = null;\n\t\t\tthis.overflowDropdown = null;\n\t\t\thandle.close();\n\t\t\tif (this.overflowButton) {\n\t\t\t\tthis.overflowButton.setAttribute('aria-expanded', 'false');\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.overflowDropdown) {\n\t\t\tthis.overflowDropdown.remove();\n\t\t\tthis.overflowDropdown = null;\n\t\t}\n\t\tif (this.overflowButton) {\n\t\t\tthis.overflowButton.setAttribute('aria-expanded', 'false');\n\t\t}\n\t\tif (this.closeHandler) {\n\t\t\tif (this.closeHandlerTimer !== null) {\n\t\t\t\tclearTimeout(this.closeHandlerTimer);\n\t\t\t\tthis.closeHandlerTimer = null;\n\t\t\t}\n\t\t\tif (this.closeHandlerAttached) {\n\t\t\t\tdocument.removeEventListener('mousedown', this.closeHandler);\n\t\t\t\tthis.closeHandlerAttached = false;\n\t\t\t}\n\t\t\tthis.closeHandler = null;\n\t\t}\n\t}\n\n\tprivate activateOverflowItem(entry: OverflowEntry): void {\n\t\tthis.closeDropdown();\n\t\tif (entry.item.popupType && this.overflowButton) {\n\t\t\tthis.onItemActivated(this.overflowButton, entry.item);\n\t\t} else {\n\t\t\tthis.context.executeCommand(entry.item.command);\n\t\t}\n\t}\n\n\t// --- Keyboard Navigation ---\n\n\tprivate handleDropdownKeydown(e: KeyboardEvent): void {\n\t\tif (!this.overflowDropdown) return;\n\n\t\tif (e.key === 'Escape' || e.key === 'Tab') {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tthis.closeDropdown();\n\t\t\tthis.overflowButton?.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tconst items: HTMLElement[] = Array.from(\n\t\t\tthis.overflowDropdown.querySelectorAll('[role=\"menuitem\"]'),\n\t\t) as HTMLElement[];\n\t\tconst current: number = items.indexOf(this.getActiveElement() as HTMLElement);\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst next: number = findNextDropdownItem(items, current, 1);\n\t\t\t\titems[next]?.focus();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'ArrowUp': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst prev: number = findNextDropdownItem(items, current, -1);\n\t\t\t\titems[prev]?.focus();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'Enter':\n\t\t\tcase ' ': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst focusedItem: HTMLElement | undefined = items[current];\n\t\t\t\tif (!focusedItem) break;\n\t\t\t\tconst itemId: string | null = focusedItem.getAttribute('data-toolbar-item');\n\t\t\t\tconst entry: OverflowEntry | undefined = this.overflowEntries.find(\n\t\t\t\t\t(oe) => oe.item.id === itemId,\n\t\t\t\t);\n\t\t\t\tif (entry) this.activateOverflowItem(entry);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// --- Helpers ---\n\n\tprivate hideTrailingSeparators(): void {\n\t\tconst children: HTMLElement[] = Array.from(this.toolbar.children) as HTMLElement[];\n\t\tfor (let i = children.length - 1; i >= 0; i--) {\n\t\t\tconst child: HTMLElement | undefined = children[i];\n\t\t\tif (!child || child === this.overflowButton) continue;\n\t\t\tif (child.classList.contains('notectl-toolbar-separator')) {\n\t\t\t\tif (!child.classList.contains(HIDDEN_SEP_CLASS)) {\n\t\t\t\t\tchild.classList.add(HIDDEN_SEP_CLASS);\n\t\t\t\t}\n\t\t\t} else if (!child.classList.contains(HIDDEN_BTN_CLASS)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate notifyChange(): void {\n\t\tconst visible: HTMLButtonElement[] = this.entries\n\t\t\t.filter((oe) => !oe.element.classList.contains(HIDDEN_BTN_CLASS))\n\t\t\t.map((oe) => oe.element);\n\t\tthis.onOverflowChange(visible, this.overflowEntries.length > 0 ? this.overflowButton : null);\n\t}\n}\n","/**\n * ToolbarRenderers: pure rendering functions for toolbar popup content.\n * Grid pickers, dropdown menus, and separator elements.\n */\n\nimport { setStyleProperties } from '../../style/StyleRuntime.js';\nimport type { DropdownConfig, GridPickerConfig } from './ToolbarItem.js';\nimport { TOOLBAR_LOCALE_EN, type ToolbarLocale } from './ToolbarLocale.js';\n\nconst HIGHLIGHTED_CLASS = 'notectl-grid-picker__cell--highlighted';\n\n/**\n * Renders a grid picker into the given container.\n * Calls `onClose` after a cell is selected so the popup can be dismissed.\n */\nexport function renderGridPicker(\n\tcontainer: HTMLElement,\n\tconfig: GridPickerConfig,\n\tonClose: () => void,\n\tlocale: ToolbarLocale = TOOLBAR_LOCALE_EN,\n): void {\n\tcontainer.className += ' notectl-grid-picker';\n\n\tconst grid: HTMLDivElement = document.createElement('div');\n\tgrid.className = 'notectl-grid-picker__grid';\n\tgrid.setAttribute('role', 'grid');\n\tsetStyleProperties(grid, {\n\t\tdisplay: 'grid',\n\t\tgridTemplateColumns: `repeat(${config.maxCols}, 1fr)`,\n\t\tgap: '2px',\n\t\tpadding: '8px',\n\t});\n\n\tconst label: HTMLDivElement = document.createElement('div');\n\tlabel.className = 'notectl-grid-picker__label';\n\tlabel.textContent = locale.gridPickerLabel(1, 1);\n\tsetStyleProperties(label, {\n\t\ttextAlign: 'center',\n\t\tpadding: '4px',\n\t\tfontSize: '12px',\n\t});\n\tlabel.setAttribute('aria-live', 'polite');\n\n\tfor (let r = 1; r <= config.maxRows; r++) {\n\t\tfor (let c = 1; c <= config.maxCols; c++) {\n\t\t\tconst cell: HTMLDivElement = document.createElement('div');\n\t\t\tcell.className = 'notectl-grid-picker__cell';\n\t\t\tcell.setAttribute('role', 'gridcell');\n\t\t\tcell.setAttribute('tabindex', '-1');\n\t\t\tcell.setAttribute('aria-label', locale.gridPickerLabel(r, c));\n\t\t\tsetStyleProperties(cell, {\n\t\t\t\twidth: '20px',\n\t\t\t\theight: '20px',\n\t\t\t\tborder: '1px solid #ccc',\n\t\t\t\tcursor: 'pointer',\n\t\t\t});\n\t\t\tcell.setAttribute('data-row', String(r));\n\t\t\tcell.setAttribute('data-col', String(c));\n\n\t\t\tcell.addEventListener('mouseenter', () => {\n\t\t\t\thighlightCells(grid, r, c);\n\t\t\t\tlabel.textContent = locale.gridPickerLabel(r, c);\n\t\t\t});\n\n\t\t\tcell.addEventListener('mousedown', (e: MouseEvent) => {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t});\n\n\t\t\tcell.addEventListener('click', () => {\n\t\t\t\tconfig.onSelect(r, c);\n\t\t\t\tonClose();\n\t\t\t});\n\n\t\t\tgrid.appendChild(cell);\n\t\t}\n\t}\n\n\tcontainer.appendChild(grid);\n\tcontainer.appendChild(label);\n}\n\n/**\n * Highlights grid cells up to the given row/col and updates the label.\n * Used by both mouse hover and keyboard navigation.\n */\nexport function highlightCells(grid: HTMLElement, targetRow: number, targetCol: number): void {\n\tconst cells: NodeListOf<Element> = grid.querySelectorAll('.notectl-grid-picker__cell');\n\tfor (const cell of cells) {\n\t\tconst r: number = Number(cell.getAttribute('data-row'));\n\t\tconst c: number = Number(cell.getAttribute('data-col'));\n\t\tcell.classList.toggle(HIGHLIGHTED_CLASS, r <= targetRow && c <= targetCol);\n\t}\n}\n\n/**\n * Renders a dropdown menu into the given container.\n * Calls `onClose` after an item is activated so the popup can be dismissed.\n */\nexport function renderDropdown(\n\tcontainer: HTMLElement,\n\tconfig: DropdownConfig,\n\texecuteCommand: (command: string) => void,\n\tonClose: () => void,\n): void {\n\tcontainer.classList.add('notectl-dropdown');\n\tcontainer.setAttribute('role', 'menu');\n\n\tfor (const item of config.items) {\n\t\tconst btn: HTMLButtonElement = document.createElement('button');\n\t\tbtn.type = 'button';\n\t\tbtn.className = 'notectl-dropdown__item';\n\t\tbtn.setAttribute('role', 'menuitem');\n\t\tbtn.setAttribute('tabindex', '-1');\n\n\t\tif (item.icon) {\n\t\t\tconst iconSpan: HTMLSpanElement = document.createElement('span');\n\t\t\ticonSpan.className = 'notectl-dropdown__item-icon';\n\t\t\ticonSpan.innerHTML = item.icon;\n\t\t\tbtn.appendChild(iconSpan);\n\t\t}\n\n\t\tconst labelSpan: HTMLSpanElement = document.createElement('span');\n\t\tlabelSpan.className = 'notectl-dropdown__item-label';\n\t\tlabelSpan.textContent = item.label;\n\t\tbtn.appendChild(labelSpan);\n\n\t\tbtn.addEventListener('mousedown', (e: MouseEvent) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\tbtn.addEventListener('click', () => {\n\t\t\texecuteCommand(item.command);\n\t\t\tonClose();\n\t\t});\n\n\t\tcontainer.appendChild(btn);\n\t}\n}\n\n/** Creates a toolbar group separator element. */\nexport function createSeparator(): HTMLSpanElement {\n\tconst sep: HTMLSpanElement = document.createElement('span');\n\tsep.className = 'notectl-toolbar-separator';\n\tsep.setAttribute('role', 'separator');\n\treturn sep;\n}\n","/**\n * ToolbarPopupController: manages popup lifecycle, positioning, keyboard\n * navigation, and auto-close for toolbar popups (grid pickers, dropdowns,\n * and custom popups). Delegates lifecycle to PopupManager.\n */\n\nimport { isRtlContext } from '../../platform/Platform.js';\nimport type { PluginContext } from '../Plugin.js';\nimport { findNextDropdownItem, navigateGrid } from '../shared/KeyboardNav.js';\nimport type { PopupCloseOptions, PopupHandle, PopupManager } from '../shared/PopupManager.js';\nimport type { ToolbarItem } from './ToolbarItem.js';\nimport { TOOLBAR_LOCALE_EN, type ToolbarLocale } from './ToolbarLocale.js';\nimport { highlightCells, renderDropdown, renderGridPicker } from './ToolbarRenderers.js';\n\nexport class ToolbarPopupController {\n\tprivate activePopup: HTMLElement | null = null;\n\tprivate activePopupButton: HTMLButtonElement | null = null;\n\tprivate activeHandle: PopupHandle | null = null;\n\tprivate readonly getActiveElement: () => Element | null;\n\tprivate readonly locale: ToolbarLocale;\n\tprivate popupManager: PopupManager | null = null;\n\n\tconstructor(getActiveElement: () => Element | null, locale: ToolbarLocale = TOOLBAR_LOCALE_EN) {\n\t\tthis.getActiveElement = getActiveElement;\n\t\tthis.locale = locale;\n\t}\n\n\t/** Injects the PopupManager instance (called after service registration). */\n\tsetPopupManager(manager: PopupManager): void {\n\t\tthis.popupManager = manager;\n\t}\n\n\t/** Whether a popup is currently open. */\n\tisOpen(): boolean {\n\t\treturn this.activePopup !== null;\n\t}\n\n\t/** Toggles a popup for the given toolbar button. */\n\ttoggle(button: HTMLButtonElement, item: ToolbarItem, context: PluginContext): void {\n\t\tif (this.activePopup) {\n\t\t\tthis.close();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.openViaManager(button, item, context);\n\t}\n\n\t/** Closes the active popup and cleans up event listeners. */\n\tclose(): void {\n\t\tif (this.activeHandle) {\n\t\t\t// Prevent onClose callback from re-entering\n\t\t\tconst handle: PopupHandle = this.activeHandle;\n\t\t\tthis.activeHandle = null;\n\t\t\tthis.clearButtonState();\n\t\t\thandle.close();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearButtonState();\n\t\tif (this.activePopup) {\n\t\t\tthis.activePopup.remove();\n\t\t\tthis.activePopup = null;\n\t\t}\n\t}\n\n\t/** Closes popup and restores focus to the trigger button. */\n\tcloseAndRestoreFocus(): void {\n\t\tconst triggerBtn: HTMLButtonElement | null = this.activePopupButton;\n\t\tthis.close();\n\t\ttriggerBtn?.focus();\n\t}\n\n\tdestroy(): void {\n\t\tthis.close();\n\t}\n\n\t// --- PopupManager path ---\n\n\tprivate openViaManager(\n\t\tbutton: HTMLButtonElement,\n\t\titem: ToolbarItem,\n\t\tcontext: PluginContext,\n\t): void {\n\t\tif (!this.popupManager) return;\n\n\t\tthis.activePopupButton = button;\n\t\tbutton.classList.add('notectl-toolbar-btn--popup-open');\n\t\tbutton.setAttribute('aria-expanded', 'true');\n\n\t\tthis.activeHandle = this.popupManager.open({\n\t\t\tanchor: button,\n\t\t\tclassName: 'notectl-toolbar-popup',\n\t\t\treferenceNode: button,\n\t\t\trestoreFocusTo: button,\n\t\t\tposition: 'below-start',\n\t\t\tonClose: () => {\n\t\t\t\t// Called when PopupManager closes the popup (click-outside, etc.)\n\t\t\t\tthis.activeHandle = null;\n\t\t\t\tthis.clearButtonState();\n\t\t\t\tthis.activePopup = null;\n\t\t\t},\n\t\t\tcontent: (popup: HTMLElement, close: (options?: PopupCloseOptions) => void) => {\n\t\t\t\tthis.activePopup = popup;\n\t\t\t\tthis.renderPopupContent(popup, item, context, close);\n\t\t\t\tpopup.addEventListener('keydown', (e: KeyboardEvent) => this.handlePopupKeydown(e));\n\t\t\t},\n\t\t});\n\t}\n\n\t// --- Shared rendering ---\n\n\tprivate renderPopupContent(\n\t\tpopup: HTMLElement,\n\t\titem: ToolbarItem,\n\t\tcontext: PluginContext,\n\t\tclose: (options?: PopupCloseOptions) => void,\n\t): void {\n\t\tconst closeAndFocusEditor = (): void => {\n\t\t\tclose({ restoreFocusTo: null });\n\t\t\tcontext.getContainer().focus();\n\t\t};\n\n\t\tswitch (item.popupType) {\n\t\t\tcase 'gridPicker':\n\t\t\t\trenderGridPicker(popup, item.popupConfig, closeAndFocusEditor, this.locale);\n\t\t\t\tbreak;\n\t\t\tcase 'dropdown':\n\t\t\t\trenderDropdown(\n\t\t\t\t\tpopup,\n\t\t\t\t\titem.popupConfig,\n\t\t\t\t\t(cmd: string) => context.executeCommand(cmd),\n\t\t\t\t\tcloseAndFocusEditor,\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase 'custom':\n\t\t\t\titem.renderPopup(popup, context, close);\n\t\t\t\tbreak;\n\t\t\tcase 'combobox':\n\t\t\t\titem.renderPopup(popup, context, close);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\n\t// --- Button state ---\n\n\tprivate clearButtonState(): void {\n\t\tif (this.activePopupButton) {\n\t\t\tthis.activePopupButton.classList.remove('notectl-toolbar-btn--popup-open');\n\t\t\tthis.activePopupButton.setAttribute('aria-expanded', 'false');\n\t\t\tthis.activePopupButton = null;\n\t\t}\n\t}\n\n\t// --- Keyboard Navigation ---\n\n\tprivate handlePopupKeydown(e: KeyboardEvent): void {\n\t\tif (!this.activePopup) return;\n\n\t\tif (e.key === 'Escape') {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tthis.closeAndRestoreFocus();\n\t\t\treturn;\n\t\t}\n\n\t\tif (e.key === 'Tab') {\n\t\t\te.preventDefault();\n\t\t\tthis.closeAndRestoreFocus();\n\t\t\treturn;\n\t\t}\n\n\t\tconst menuItems: NodeListOf<Element> = this.activePopup.querySelectorAll('[role=\"menuitem\"]');\n\t\tif (menuItems.length > 0) {\n\t\t\tthis.handleDropdownKeydown(e, menuItems);\n\t\t\treturn;\n\t\t}\n\n\t\tconst hasGrid: boolean = this.activePopup.querySelector('.notectl-grid-picker__cell') !== null;\n\t\tif (hasGrid) {\n\t\t\tthis.handleGridKeydown(e);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.handleCustomPopupKeydown(e);\n\t}\n\n\tprivate handleDropdownKeydown(e: KeyboardEvent, items: NodeListOf<Element>): void {\n\t\tconst itemArr: HTMLElement[] = Array.from(items) as HTMLElement[];\n\t\tconst current: number = itemArr.indexOf(this.getActiveElement() as HTMLElement);\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst next: number = findNextDropdownItem(itemArr, current, 1);\n\t\t\t\titemArr[next]?.focus();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'ArrowUp': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst prev: number = findNextDropdownItem(itemArr, current, -1);\n\t\t\t\titemArr[prev]?.focus();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'Enter':\n\t\t\tcase ' ': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst focused: HTMLElement | undefined = itemArr[current];\n\t\t\t\tif (focused) focused.click();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleGridKeydown(e: KeyboardEvent): void {\n\t\tconst focused: HTMLElement = this.getActiveElement() as HTMLElement;\n\t\tconst row: number = Number(focused?.getAttribute('data-row') ?? 1);\n\t\tconst col: number = Number(focused?.getAttribute('data-col') ?? 1);\n\n\t\tconst grid: Element | null =\n\t\t\tthis.activePopup?.querySelector('.notectl-grid-picker__grid') ?? null;\n\t\tif (!grid) return;\n\n\t\tconst lastCell: Element | null = grid.querySelector('.notectl-grid-picker__cell:last-child');\n\t\tconst maxCols: number = Number(lastCell?.getAttribute('data-col') ?? 1);\n\t\tconst maxRows: number = Number(lastCell?.getAttribute('data-row') ?? 1);\n\n\t\tif (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(e.key)) {\n\t\t\te.preventDefault();\n\t\t\tconst [newRow, newCol]: [number, number] = navigateGrid(\n\t\t\t\trow,\n\t\t\t\tcol,\n\t\t\t\tmaxRows,\n\t\t\t\tmaxCols,\n\t\t\t\te.key as 'ArrowUp' | 'ArrowDown' | 'ArrowLeft' | 'ArrowRight',\n\t\t\t\tthis.activePopup ? isRtlContext(this.activePopup) : false,\n\t\t\t);\n\t\t\tconst target: HTMLElement | null = grid.querySelector(\n\t\t\t\t`.notectl-grid-picker__cell[data-row=\"${newRow}\"][data-col=\"${newCol}\"]`,\n\t\t\t);\n\t\t\ttarget?.focus();\n\n\t\t\thighlightCells(grid as HTMLElement, newRow, newCol);\n\t\t\tconst label: Element | null =\n\t\t\t\tthis.activePopup?.querySelector('.notectl-grid-picker__label') ?? null;\n\t\t\tif (label) label.textContent = this.locale.gridPickerLabel(newRow, newCol);\n\t\t}\n\n\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\te.preventDefault();\n\t\t\tfocused?.click();\n\t\t}\n\t}\n\n\tprivate handleCustomPopupKeydown(e: KeyboardEvent): void {\n\t\tif (!this.activePopup) return;\n\t\tconst buttons: HTMLButtonElement[] = Array.from(this.activePopup.querySelectorAll('button'));\n\t\tif (buttons.length === 0) return;\n\t\tconst active: HTMLElement = this.getActiveElement() as HTMLElement;\n\t\tconst currentIdx: number = buttons.indexOf(active as HTMLButtonElement);\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowDown': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst next: number = findNextDropdownItem(buttons, currentIdx, 1);\n\t\t\t\tbuttons[next]?.focus();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'ArrowUp': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst prev: number = findNextDropdownItem(buttons, currentIdx, -1);\n\t\t\t\tbuttons[prev]?.focus();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'Enter':\n\t\t\tcase ' ': {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (active) {\n\t\t\t\t\tactive.dispatchEvent(new MouseEvent('mousedown', { bubbles: true, cancelable: true }));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n","/**\n * ToolbarTooltip: manages the tooltip lifecycle for toolbar buttons.\n * Shows a tooltip after a short delay when hovering or focusing a button,\n * hides it when the cursor leaves or focus moves away.\n */\n\nimport { setStyleProperties, setStyleProperty } from '../../style/StyleRuntime.js';\n\nconst TOOLTIP_DELAY_MS = 500;\n\nexport class ToolbarTooltip {\n\tprivate readonly element: HTMLElement;\n\tprivate timer: ReturnType<typeof setTimeout> | null = null;\n\tprivate target: HTMLButtonElement | null = null;\n\tprivate readonly isPopupActive: () => boolean;\n\n\tstatic readonly TOOLTIP_ID = 'notectl-toolbar-tooltip';\n\n\tconstructor(isPopupActive: () => boolean) {\n\t\tthis.isPopupActive = isPopupActive;\n\t\tthis.element = document.createElement('div');\n\t\tthis.element.className = 'notectl-toolbar-tooltip';\n\t\tthis.element.id = ToolbarTooltip.TOOLTIP_ID;\n\t\tthis.element.setAttribute('role', 'tooltip');\n\t\tsetStyleProperty(this.element, 'display', 'none');\n\t}\n\n\tshow(button: HTMLButtonElement): void {\n\t\tthis.hide();\n\n\t\tif (this.isPopupActive() || button.disabled) return;\n\n\t\tconst text: string | null = button.getAttribute('data-tooltip');\n\t\tif (!text) return;\n\n\t\tthis.target = button;\n\n\t\tthis.timer = setTimeout(() => {\n\t\t\tif (this.isPopupActive()) return;\n\n\t\t\tthis.element.textContent = text;\n\t\t\tsetStyleProperty(this.element, 'display', '');\n\n\t\t\tconst root: Node = button.getRootNode();\n\t\t\tif (root instanceof ShadowRoot && !this.element.parentNode) {\n\t\t\t\troot.appendChild(this.element);\n\t\t\t} else if (!(root instanceof ShadowRoot) && !this.element.parentNode) {\n\t\t\t\tdocument.body.appendChild(this.element);\n\t\t\t}\n\n\t\t\tbutton.setAttribute('aria-describedby', ToolbarTooltip.TOOLTIP_ID);\n\n\t\t\tconst rect: DOMRect = button.getBoundingClientRect();\n\t\t\tsetStyleProperties(this.element, {\n\t\t\t\tposition: 'fixed',\n\t\t\t\ttop: `${rect.bottom + 6}px`,\n\t\t\t\tleft: `${rect.left + rect.width / 2}px`,\n\t\t\t\ttransform: 'translateX(-50%)',\n\t\t\t});\n\t\t}, TOOLTIP_DELAY_MS);\n\t}\n\n\thide(): void {\n\t\tif (this.timer) {\n\t\t\tclearTimeout(this.timer);\n\t\t\tthis.timer = null;\n\t\t}\n\t\tif (this.target) {\n\t\t\tthis.target.removeAttribute('aria-describedby');\n\t\t\tthis.target = null;\n\t\t}\n\t\tsetStyleProperty(this.element, 'display', 'none');\n\t}\n\n\tdestroy(): void {\n\t\tthis.hide();\n\t\tthis.element.remove();\n\t}\n}\n","/**\n * Toolbar plugin: renders toolbar items registered by other plugins.\n * Acts as a pure rendering engine — has no knowledge of specific features.\n * Supports buttons, dropdowns, grid pickers, and custom popups.\n * Implements WAI-ARIA Toolbar pattern with roving tabindex.\n */\n\nimport { TOOLBAR_CSS } from '../../editor/styles/toolbar.js';\nimport { isRtlContext } from '../../platform/Platform.js';\nimport type { EditorState } from '../../state/EditorState.js';\nimport type { Transaction } from '../../state/Transaction.js';\nimport { ServiceKey } from '../Plugin.js';\nimport type { Plugin, PluginConfig, PluginContext } from '../Plugin.js';\nimport { applyRovingTabindex } from '../shared/KeyboardNav.js';\nimport { resolveLocale } from '../shared/PluginHelpers.js';\nimport { PopupManager, PopupServiceKey } from '../shared/PopupManager.js';\nimport type { ToolbarItem } from './ToolbarItem.js';\nimport {\n\tfindFirstEnabled,\n\tfindLastEnabled,\n\tfindNextEnabled,\n\tresolveHorizontalDirection,\n} from './ToolbarKeyboardNav.js';\nimport { TOOLBAR_LOCALE_EN, type ToolbarLocale, loadToolbarLocale } from './ToolbarLocale.js';\nimport {\n\tToolbarOverflowBehavior,\n\ttype ToolbarOverflowBehavior as ToolbarOverflowBehaviorType,\n} from './ToolbarOverflowBehavior.js';\nimport { ToolbarOverflowController } from './ToolbarOverflowController.js';\nimport { ToolbarPopupController } from './ToolbarPopupController.js';\nimport { createSeparator } from './ToolbarRenderers.js';\nimport { ToolbarTooltip } from './ToolbarTooltip.js';\n\n// --- Layout Config ---\n\nexport interface ToolbarLayoutConfig {\n\treadonly groups: ReadonlyArray<ReadonlyArray<string>>;\n\t/**\n\t * Controls responsive overflow behavior when toolbar items exceed available width.\n\t * Defaults to `ToolbarOverflowBehavior.BurgerMenu`.\n\t */\n\treadonly overflow?: ToolbarOverflowBehaviorType;\n}\n\n// --- Typed Service API ---\n\nexport interface ToolbarServiceAPI {\n\t/** Re-reads isActive/isEnabled from state and updates all buttons. */\n\trefresh(): void;\n\t/** Closes the currently open popup, if any. */\n\tclosePopup(): void;\n}\n\nexport const ToolbarServiceKey = new ServiceKey<ToolbarServiceAPI>('toolbar');\n\n// --- Plugin ---\n\ninterface ToolbarButton {\n\telement: HTMLButtonElement;\n\titem: ToolbarItem;\n\tcomboLabelEl: HTMLSpanElement | null;\n}\n\nexport class ToolbarPlugin implements Plugin {\n\treadonly id = 'toolbar';\n\treadonly name = 'Toolbar';\n\treadonly priority = 10;\n\n\tprivate context: PluginContext | null = null;\n\tprivate toolbarElement: HTMLElement | null = null;\n\tprivate buttons: ToolbarButton[] = [];\n\tprivate readonly hiddenItems = new Set<string>();\n\tprivate readonly layoutConfig: ToolbarLayoutConfig | null;\n\tprivate overflowBehavior: ToolbarOverflowBehaviorType;\n\tprivate focusedIndex = 0;\n\tprivate tooltip: ToolbarTooltip | null = null;\n\tprivate popupController: ToolbarPopupController | null = null;\n\tprivate popupManager: PopupManager | null = null;\n\tprivate overflowController: ToolbarOverflowController | null = null;\n\tprivate visibleElements: HTMLButtonElement[] = [];\n\tprivate locale!: ToolbarLocale;\n\n\tconstructor(layoutConfig?: ToolbarLayoutConfig) {\n\t\tthis.layoutConfig = layoutConfig ?? null;\n\t\tthis.overflowBehavior = layoutConfig?.overflow ?? ToolbarOverflowBehavior.BurgerMenu;\n\t}\n\n\tasync init(context: PluginContext): Promise<void> {\n\t\tthis.locale = await resolveLocale(context, undefined, TOOLBAR_LOCALE_EN, loadToolbarLocale);\n\t\tcontext.registerStyleSheet(TOOLBAR_CSS);\n\t\tthis.context = context;\n\n\t\tthis.popupManager = new PopupManager(context.getContainer());\n\t\tcontext.registerService(PopupServiceKey, this.popupManager);\n\n\t\tthis.popupController = new ToolbarPopupController(() => this.getActiveElement(), this.locale);\n\t\tthis.popupController.setPopupManager(this.popupManager);\n\t\tthis.tooltip = new ToolbarTooltip(() => this.popupController?.isOpen() ?? false);\n\n\t\tcontext.registerService(ToolbarServiceKey, {\n\t\t\trefresh: () => this.updateButtonStates(context.getState()),\n\t\t\tclosePopup: () => this.popupController?.close(),\n\t\t});\n\n\t\tthis.createToolbarElement();\n\t}\n\n\t/** Returns the current overflow behavior. */\n\tgetOverflowBehavior(): ToolbarOverflowBehaviorType {\n\t\treturn this.overflowBehavior;\n\t}\n\n\t/** Switches the overflow behavior at runtime. */\n\tsetOverflowBehavior(behavior: ToolbarOverflowBehaviorType): void {\n\t\tif (behavior === this.overflowBehavior) return;\n\n\t\tthis.overflowBehavior = behavior;\n\t\tthis.applyOverflowBehavior();\n\t\tthis.renderItems();\n\t}\n\n\tonReady(): void {\n\t\tthis.renderItems();\n\t}\n\n\tdestroy(): void {\n\t\tthis.overflowController?.destroy();\n\t\tthis.overflowController = null;\n\t\tthis.popupController?.destroy();\n\t\tthis.popupController = null;\n\t\tthis.popupManager?.destroy();\n\t\tthis.popupManager = null;\n\t\tthis.tooltip?.destroy();\n\t\tthis.tooltip = null;\n\t\tif (this.toolbarElement) {\n\t\t\tthis.toolbarElement.remove();\n\t\t\tthis.toolbarElement = null;\n\t\t}\n\t\tthis.buttons = [];\n\t\tthis.visibleElements = [];\n\t\tthis.context = null;\n\t}\n\n\tonStateChange(_oldState: EditorState, newState: EditorState, _tr: Transaction): void {\n\t\tthis.updateButtonStates(newState);\n\t}\n\n\tonReadOnlyChange(readonly: boolean): void {\n\t\tif (this.toolbarElement) {\n\t\t\tthis.toolbarElement.hidden = readonly;\n\t\t}\n\t}\n\n\tonConfigure(config: PluginConfig): void {\n\t\tfor (const [key, value] of Object.entries(config)) {\n\t\t\tif (value === false) {\n\t\t\t\tthis.hiddenItems.add(key);\n\t\t\t} else {\n\t\t\t\tthis.hiddenItems.delete(key);\n\t\t\t}\n\t\t}\n\t\tthis.renderItems();\n\t}\n\n\t// --- Toolbar ---\n\n\tprivate createToolbarElement(): void {\n\t\tif (!this.context) return;\n\n\t\tif (this.toolbarElement) {\n\t\t\tthis.toolbarElement.remove();\n\t\t}\n\t\tthis.buttons = [];\n\n\t\tconst container: HTMLElement = this.context.getPluginContainer('top');\n\t\tthis.toolbarElement = document.createElement('div');\n\t\tthis.toolbarElement.setAttribute('role', 'toolbar');\n\t\tthis.toolbarElement.setAttribute('aria-label', this.locale.formattingOptionsAria);\n\t\tthis.toolbarElement.setAttribute('data-notectl-no-print', '');\n\t\tthis.toolbarElement.className = 'notectl-toolbar';\n\n\t\tthis.toolbarElement.addEventListener('keydown', (e) => this.handleToolbarKeydown(e));\n\n\t\tthis.applyOverflowBehavior();\n\t\tcontainer.appendChild(this.toolbarElement);\n\t}\n\n\t/** Applies the current overflow behavior: creates/destroys the overflow controller and sets the data attribute. */\n\tprivate applyOverflowBehavior(): void {\n\t\tif (!this.toolbarElement || !this.context) return;\n\n\t\t// Tear down existing overflow controller\n\t\tthis.overflowController?.destroy();\n\t\tthis.overflowController = null;\n\n\t\tthis.toolbarElement.setAttribute('data-overflow', this.overflowBehavior);\n\n\t\tif (this.overflowBehavior === ToolbarOverflowBehavior.BurgerMenu) {\n\t\t\tthis.overflowController = new ToolbarOverflowController({\n\t\t\t\ttoolbar: this.toolbarElement,\n\t\t\t\tariaLabel: this.locale.moreToolsAria,\n\t\t\t\tcontext: this.context,\n\t\t\t\tpopupManager: this.popupManager ?? undefined,\n\t\t\t\tonOverflowChange: (visibleButtons, overflowBtn) => {\n\t\t\t\t\tthis.visibleElements = overflowBtn\n\t\t\t\t\t\t? [...visibleButtons, overflowBtn]\n\t\t\t\t\t\t: [...visibleButtons];\n\t\t\t\t\tthis.initRovingTabindex();\n\t\t\t\t},\n\t\t\t\tonItemActivated: (btn: HTMLButtonElement, item: ToolbarItem) => {\n\t\t\t\t\tthis.activateButton(btn, item);\n\t\t\t\t},\n\t\t\t\tgetActiveElement: () => this.getActiveElement(),\n\t\t\t});\n\t\t} else {\n\t\t\t// Flow and None modes: all buttons are visible for roving tabindex\n\t\t\tthis.visibleElements = [];\n\t\t}\n\t}\n\n\tprivate renderItems(): void {\n\t\tif (!this.context || !this.toolbarElement) return;\n\n\t\tfor (const btn of this.buttons) {\n\t\t\tbtn.element.remove();\n\t\t}\n\t\tthis.buttons = [];\n\n\t\tfor (const sep of this.toolbarElement.querySelectorAll('.notectl-toolbar-separator')) {\n\t\t\tsep.remove();\n\t\t}\n\n\t\tif (this.layoutConfig) {\n\t\t\tthis.renderItemsByLayout();\n\t\t} else {\n\t\t\tthis.renderItemsByGroup();\n\t\t}\n\n\t\tif (this.buttons.length > 0 && !this.toolbarElement.parentElement) {\n\t\t\tconst container: HTMLElement = this.context.getPluginContainer('top');\n\t\t\tcontainer.appendChild(this.toolbarElement);\n\t\t}\n\n\t\tthis.overflowController?.update(this.buttons);\n\t\tthis.initRovingTabindex();\n\t\tthis.updateButtonStates(this.context.getState());\n\t}\n\n\t// --- Roving Tabindex ---\n\n\tprivate getTabElements(): HTMLButtonElement[] {\n\t\treturn this.visibleElements.length > 0\n\t\t\t? this.visibleElements\n\t\t\t: this.buttons.map((b) => b.element);\n\t}\n\n\tprivate initRovingTabindex(): void {\n\t\tconst elements: HTMLButtonElement[] = this.getTabElements();\n\t\tconst first: number = findFirstEnabled(elements);\n\t\tthis.focusedIndex = first >= 0 ? first : 0;\n\t\tapplyRovingTabindex(elements, this.focusedIndex);\n\t}\n\n\tprivate setRovingFocus(index: number): void {\n\t\tconst elements: HTMLButtonElement[] = this.getTabElements();\n\t\tif (index < 0 || index >= elements.length) return;\n\t\tthis.focusedIndex = index;\n\t\tapplyRovingTabindex(elements, index);\n\t\telements[index]?.focus();\n\t}\n\n\t/** Returns the active element, respecting shadow DOM boundaries. */\n\tprivate getActiveElement(): Element | null {\n\t\tconst root: Node | undefined = this.toolbarElement?.getRootNode();\n\t\tif (root instanceof ShadowRoot) {\n\t\t\treturn root.activeElement;\n\t\t}\n\t\treturn document.activeElement;\n\t}\n\n\tprivate syncFocusedIndex(): void {\n\t\tconst active: Element | null = this.getActiveElement();\n\t\tconst elements: HTMLButtonElement[] = this.getTabElements();\n\t\tconst idx: number = elements.findIndex((el) => el === active);\n\t\tif (idx >= 0) {\n\t\t\tthis.focusedIndex = idx;\n\t\t}\n\t}\n\n\t// --- Toolbar Keyboard ---\n\n\tprivate handleToolbarKeydown(e: KeyboardEvent): void {\n\t\tconst elements: HTMLButtonElement[] = this.getTabElements();\n\t\tif (elements.length === 0) return;\n\n\t\tthis.syncFocusedIndex();\n\n\t\tswitch (e.key) {\n\t\t\tcase 'ArrowRight':\n\t\t\tcase 'ArrowLeft': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst rtl: boolean = this.toolbarElement ? isRtlContext(this.toolbarElement) : false;\n\t\t\t\tconst dir: 1 | -1 = resolveHorizontalDirection(e.key, rtl);\n\t\t\t\tconst next: number = findNextEnabled(elements, this.focusedIndex, dir);\n\t\t\t\tthis.setRovingFocus(next);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'Home': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst first: number = findFirstEnabled(elements);\n\t\t\t\tif (first >= 0) this.setRovingFocus(first);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'End': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst last: number = findLastEnabled(elements);\n\t\t\t\tif (last >= 0) this.setRovingFocus(last);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'Enter':\n\t\t\tcase ' ': {\n\t\t\t\te.preventDefault();\n\t\t\t\tconst focused: HTMLButtonElement | undefined = elements[this.focusedIndex];\n\t\t\t\tconst btn: ToolbarButton | undefined = this.buttons.find((b) => b.element === focused);\n\t\t\t\tif (btn) this.activateButton(btn.element, btn.item);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t/** Activates a toolbar button (shared between mouse click and keyboard). */\n\tprivate activateButton(btn: HTMLButtonElement, item: ToolbarItem): void {\n\t\tthis.tooltip?.hide();\n\t\tif (item.popupType && this.context) {\n\t\t\tthis.popupController?.toggle(btn, item, this.context);\n\t\t} else {\n\t\t\tthis.context?.executeCommand(item.command);\n\t\t}\n\t}\n\n\t// --- Layout Rendering ---\n\n\tprivate renderItemsByLayout(): void {\n\t\tif (!this.context || !this.toolbarElement || !this.layoutConfig) return;\n\n\t\tconst toolbarReg = this.context.getToolbarRegistry();\n\t\tlet firstGroup = true;\n\n\t\tfor (const groupPluginIds of this.layoutConfig.groups) {\n\t\t\tconst groupItems: ToolbarItem[] = [];\n\t\t\tfor (const pId of groupPluginIds) {\n\t\t\t\tconst items: ToolbarItem[] = toolbarReg\n\t\t\t\t\t.getToolbarItemsByPlugin(pId)\n\t\t\t\t\t.filter((item) => !this.hiddenItems.has(item.id));\n\t\t\t\tgroupItems.push(...items);\n\t\t\t}\n\n\t\t\tif (groupItems.length === 0) continue;\n\n\t\t\tif (!firstGroup) {\n\t\t\t\tthis.toolbarElement.appendChild(createSeparator());\n\t\t\t}\n\t\t\tfirstGroup = false;\n\n\t\t\tfor (const item of groupItems) {\n\t\t\t\tconst btn: ToolbarButton = this.createButton(item);\n\t\t\t\tthis.toolbarElement.appendChild(btn.element);\n\t\t\t\tthis.buttons.push(btn);\n\t\t\t}\n\t\t}\n\n\t\tif (this.buttons.length === 0) {\n\t\t\tthis.toolbarElement.remove();\n\t\t}\n\t}\n\n\tprivate renderItemsByGroup(): void {\n\t\tif (!this.context || !this.toolbarElement) return;\n\n\t\tconst toolbarRegistry = this.context.getToolbarRegistry();\n\t\tconst items: ToolbarItem[] = toolbarRegistry\n\t\t\t.getToolbarItems()\n\t\t\t.filter((item) => !this.hiddenItems.has(item.id));\n\t\tif (items.length === 0) {\n\t\t\tthis.toolbarElement.remove();\n\t\t\treturn;\n\t\t}\n\n\t\tconst groups = new Map<string, ToolbarItem[]>();\n\t\tfor (const item of items) {\n\t\t\tconst list: ToolbarItem[] = groups.get(item.group) ?? [];\n\t\t\tlist.push(item);\n\t\t\tgroups.set(item.group, list);\n\t\t}\n\n\t\tlet firstGroup = true;\n\t\tfor (const [, groupItems] of groups) {\n\t\t\tif (!firstGroup) {\n\t\t\t\tthis.toolbarElement.appendChild(createSeparator());\n\t\t\t}\n\t\t\tfirstGroup = false;\n\n\t\t\tfor (const item of groupItems) {\n\t\t\t\tconst btn: ToolbarButton = this.createButton(item);\n\t\t\t\tthis.toolbarElement.appendChild(btn.element);\n\t\t\t\tthis.buttons.push(btn);\n\t\t\t}\n\t\t}\n\t}\n\n\t// --- Button Creation ---\n\n\tprivate createButton(item: ToolbarItem): ToolbarButton {\n\t\tconst btn: HTMLButtonElement = document.createElement('button');\n\t\tbtn.type = 'button';\n\t\tbtn.className = `notectl-toolbar-btn notectl-toolbar-btn--${item.id}`;\n\t\tbtn.setAttribute('aria-pressed', 'false');\n\t\tbtn.setAttribute('aria-label', item.label);\n\t\tbtn.setAttribute('data-toolbar-item', item.id);\n\t\tbtn.setAttribute('data-tooltip', item.tooltip ?? item.label);\n\n\t\tlet comboLabelEl: HTMLSpanElement | null = null;\n\n\t\tif (item.popupType === 'combobox') {\n\t\t\tbtn.setAttribute('role', 'combobox');\n\t\t\tbtn.setAttribute('aria-haspopup', 'listbox');\n\t\t\tbtn.setAttribute('aria-expanded', 'false');\n\n\t\t\tconst labelSpan: HTMLSpanElement = document.createElement('span');\n\t\t\tlabelSpan.className = 'notectl-toolbar-combobox__label';\n\t\t\tconst state: EditorState | undefined = this.context?.getState();\n\t\t\tif (state) {\n\t\t\t\tlabelSpan.textContent = item.getLabel(state);\n\t\t\t}\n\t\t\tbtn.appendChild(labelSpan);\n\t\t\tcomboLabelEl = labelSpan;\n\n\t\t\tconst arrowSpan: HTMLSpanElement = document.createElement('span');\n\t\t\tarrowSpan.className = 'notectl-toolbar-combobox__arrow';\n\t\t\tarrowSpan.setAttribute('aria-hidden', 'true');\n\t\t\tarrowSpan.textContent = '\\u25BE';\n\t\t\tbtn.appendChild(arrowSpan);\n\t\t} else {\n\t\t\tif (item.popupType) {\n\t\t\t\tbtn.setAttribute('aria-haspopup', 'true');\n\t\t\t\tbtn.setAttribute('aria-expanded', 'false');\n\t\t\t}\n\n\t\t\tconst span: HTMLSpanElement = document.createElement('span');\n\t\t\tspan.className = 'notectl-toolbar-btn__icon';\n\t\t\tspan.innerHTML = item.icon;\n\t\t\tbtn.appendChild(span);\n\t\t}\n\n\t\tbtn.addEventListener('mousedown', (e: MouseEvent) => {\n\t\t\te.preventDefault();\n\t\t\tthis.activateButton(btn, item);\n\t\t});\n\n\t\tbtn.addEventListener('mouseenter', () => this.tooltip?.show(btn));\n\t\tbtn.addEventListener('mouseleave', () => this.tooltip?.hide());\n\t\tbtn.addEventListener('focus', () => this.tooltip?.show(btn));\n\t\tbtn.addEventListener('blur', () => this.tooltip?.hide());\n\n\t\treturn { element: btn, item, comboLabelEl };\n\t}\n\n\t// --- Button State Updates ---\n\n\tprivate updateButtonStates(state: EditorState): void {\n\t\tfor (const btn of this.buttons) {\n\t\t\tconst active: boolean = btn.item.isActive?.(state) ?? false;\n\t\t\tconst enabled: boolean = btn.item.isEnabled?.(state) ?? true;\n\t\t\tbtn.element.setAttribute('aria-pressed', String(active));\n\t\t\tbtn.element.classList.toggle('notectl-toolbar-btn--active', active);\n\t\t\tbtn.element.disabled = !enabled;\n\t\t\tif (!enabled) {\n\t\t\t\tbtn.element.setAttribute('aria-disabled', 'true');\n\t\t\t} else {\n\t\t\t\tbtn.element.removeAttribute('aria-disabled');\n\t\t\t}\n\t\t\tif (btn.comboLabelEl && btn.item.popupType === 'combobox') {\n\t\t\t\tbtn.comboLabelEl.textContent = btn.item.getLabel(state);\n\t\t\t}\n\t\t\tif (btn.item.getIcon) {\n\t\t\t\tconst newIcon: string = btn.item.getIcon(state);\n\t\t\t\tconst iconEl: HTMLSpanElement | null = btn.element.querySelector(\n\t\t\t\t\t'.notectl-toolbar-btn__icon',\n\t\t\t\t);\n\t\t\t\tif (iconEl && iconEl.innerHTML !== newIcon) {\n\t\t\t\t\ticonEl.innerHTML = newIcon;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.overflowController?.updateItemStates(state);\n\t}\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{m as n,u as i}from"./Document-CkQLx84k.mjs";function r(i,r){let e=r-1;for(;e>=0;){const r=n(i,e);if(!r||"inline"===r.kind)break;if(!/\s/.test(r.char))break;e--}if(e>=0&&"inline"===n(i,e)?.kind)return e;for(;e>=0;){const r=n(i,e);if(!r||"inline"===r.kind)break;if(/\s/.test(r.char))break;e--}return e+1}function e(r,e){const t=i(r);let s=e;for(;s<t;){const i=n(r,s);if(!i||"inline"===i.kind)break;if(/\s/.test(i.char))break;s++}if(s===e&&s<t&&"inline"===n(r,s)?.kind)return s+1;for(;s<t;){const i=n(r,s);if(!i||"inline"===i.kind)break;if(!/\s/.test(i.char))break;s++}return s}export{e as n,r as t};
2
- //# sourceMappingURL=WordBoundary-iZXLMFyk.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"WordBoundary-iZXLMFyk.mjs","names":[],"sources":["../../src/model/WordBoundary.ts"],"sourcesContent":["/**\n * Word boundary detection for delete-word and word-movement commands.\n * InlineNodes act as word boundaries.\n */\n\nimport { type BlockNode, getBlockLength, getContentAtOffset } from './Document.js';\n\n/**\n * Finds the word boundary backward from the given offset.\n * InlineNodes act as word boundaries.\n */\nexport function findWordBoundaryBackward(block: BlockNode, offset: number): number {\n\tlet pos = offset - 1;\n\t// Skip trailing whitespace\n\twhile (pos >= 0) {\n\t\tconst content = getContentAtOffset(block, pos);\n\t\tif (!content || content.kind === 'inline') break;\n\t\tif (!/\\s/.test(content.char)) break;\n\t\tpos--;\n\t}\n\t// If at InlineNode, delete just it (treat as word boundary)\n\tif (pos >= 0) {\n\t\tconst content = getContentAtOffset(block, pos);\n\t\tif (content?.kind === 'inline') return pos;\n\t}\n\t// Skip word characters until whitespace or InlineNode\n\twhile (pos >= 0) {\n\t\tconst content = getContentAtOffset(block, pos);\n\t\tif (!content || content.kind === 'inline') break;\n\t\tif (/\\s/.test(content.char)) break;\n\t\tpos--;\n\t}\n\treturn pos + 1;\n}\n\n/**\n * Finds the word boundary forward from the given offset.\n * InlineNodes act as word boundaries.\n */\nexport function findWordBoundaryForward(block: BlockNode, offset: number): number {\n\tconst len = getBlockLength(block);\n\tlet pos = offset;\n\t// Skip word characters first\n\twhile (pos < len) {\n\t\tconst content = getContentAtOffset(block, pos);\n\t\tif (!content || content.kind === 'inline') break;\n\t\tif (/\\s/.test(content.char)) break;\n\t\tpos++;\n\t}\n\t// If at InlineNode and haven't moved, delete just the InlineNode\n\tif (pos === offset && pos < len) {\n\t\tconst content = getContentAtOffset(block, pos);\n\t\tif (content?.kind === 'inline') return pos + 1;\n\t}\n\t// Skip trailing whitespace\n\twhile (pos < len) {\n\t\tconst content = getContentAtOffset(block, pos);\n\t\tif (!content || content.kind === 'inline') break;\n\t\tif (!/\\s/.test(content.char)) break;\n\t\tpos++;\n\t}\n\treturn pos;\n}\n"],"mappings":"mDAWA,SAAgB,EAAyB,EAAkB,GAC1D,IAAI,EAAM,EAAS,EAEnB,KAAO,GAAO,GAAG,CAChB,MAAM,EAAU,EAAmB,EAAO,GAC1C,IAAK,GAA4B,WAAjB,EAAQ,KAAmB,MAC3C,IAAK,KAAK,KAAK,EAAQ,MAAO,MAC9B,IAGD,GAAI,GAAO,GAEY,WADN,EAAmB,EAAO,IAC7B,KAAmB,OAAO,EAGxC,KAAO,GAAO,GAAG,CAChB,MAAM,EAAU,EAAmB,EAAO,GAC1C,IAAK,GAA4B,WAAjB,EAAQ,KAAmB,MAC3C,GAAI,KAAK,KAAK,EAAQ,MAAO,MAC7B,IAED,OAAO,EAAM,EAOd,SAAgB,EAAwB,EAAkB,GACzD,MAAM,EAAM,EAAe,GAC3B,IAAI,EAAM,EAEV,KAAO,EAAM,GAAK,CACjB,MAAM,EAAU,EAAmB,EAAO,GAC1C,IAAK,GAA4B,WAAjB,EAAQ,KAAmB,MAC3C,GAAI,KAAK,KAAK,EAAQ,MAAO,MAC7B,IAGD,GAAI,IAAQ,GAAU,EAAM,GAEL,WADN,EAAmB,EAAO,IAC7B,KAAmB,OAAO,EAAM,EAG9C,KAAO,EAAM,GAAK,CACjB,MAAM,EAAU,EAAmB,EAAO,GAC1C,IAAK,GAA4B,WAAjB,EAAQ,KAAmB,MAC3C,IAAK,KAAK,KAAK,EAAQ,MAAO,MAC9B,IAED,OAAO"}
@@ -1,2 +0,0 @@
1
- var a="[a-zA-Z_][\\w:.-]*",s="(?:\\s(?:[^>\"']|\"[^\"]*\"|'[^']*')*)?";export{a as n,s as t};
2
- //# sourceMappingURL=XmlPatterns-Ub8I1jdE.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"XmlPatterns-Ub8I1jdE.mjs","names":[],"sources":["../../src/plugins/shared/XmlPatterns.ts"],"sourcesContent":["/**\n * Shared XML regex pattern fragments used by XmlDetector and XML language definition.\n *\n * Based on XML 1.0 spec Name production (simplified to ASCII + common extensions).\n */\n\n/** XML tag name pattern (string fragment for RegExp construction). */\nexport const XML_TAG_NAME = '[a-zA-Z_][\\\\w:.-]*';\n\n/** Optional attributes pattern (string fragment for RegExp construction). */\nexport const XML_ATTRS = '(?:\\\\s(?:[^>\"\\']|\"[^\"]*\"|\\'[^\\']*\\')*)?';\n"],"mappings":"AAOA,IAAa,EAAe,qBAGf,EAAY"}
@@ -1,2 +0,0 @@
1
- var a={ariaLabel:"محرر نص منسق",ariaDescription:"اضغط Escape للخروج من المحرر",defaultPlaceholder:"ابدأ الكتابة..."};export{a as default};
2
- //# sourceMappingURL=ar-3-z4mZhh.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-3-z4mZhh.mjs","names":[],"sources":["../../src/editor/locales/ar.ts"],"sourcesContent":["import type { EditorLocale } from '../EditorLocale.js';\n\nconst locale: EditorLocale = {\n\tariaLabel: '\\u0645\\u062d\\u0631\\u0631 \\u0646\\u0635 \\u0645\\u0646\\u0633\\u0642',\n\tariaDescription:\n\t\t'\\u0627\\u0636\\u063a\\u0637 Escape \\u0644\\u0644\\u062e\\u0631\\u0648\\u062c \\u0645\\u0646 \\u0627\\u0644\\u0645\\u062d\\u0631\\u0631',\n\tdefaultPlaceholder: '\\u0627\\u0628\\u062f\\u0623 \\u0627\\u0644\\u0643\\u062a\\u0627\\u0628\\u0629...',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAuB,CAC5B,UAAW,eACX,gBACC,+BACD,mBAAoB"}
@@ -1,2 +0,0 @@
1
- var a={label:"الخط",tooltip:"عائلة الخط"};export{a as default};
2
- //# sourceMappingURL=ar-B-l6wR4D.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-B-l6wR4D.mjs","names":[],"sources":["../../src/plugins/font/locales/ar.ts"],"sourcesContent":["import type { FontLocale } from '../FontLocale.js';\n\nconst locale: FontLocale = {\n\tlabel: 'الخط',\n\ttooltip: 'عائلة الخط',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAqB,CAC1B,MAAO,OACP,QAAS"}
@@ -1,2 +0,0 @@
1
- var a={label:"لون النص",tooltip:"لون النص",resetLabel:"افتراضي",ariaLabelPrefix:"لون النص"};export{a as default};
2
- //# sourceMappingURL=ar-B3NByR5H.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-B3NByR5H.mjs","names":[],"sources":["../../src/plugins/text-color/locales/ar.ts"],"sourcesContent":["import type { TextColorLocale } from '../TextColorLocale.js';\n\nconst locale: TextColorLocale = {\n\tlabel: 'لون النص',\n\ttooltip: 'لون النص',\n\tresetLabel: 'افتراضي',\n\tariaLabelPrefix: 'لون النص',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA0B,CAC/B,MAAO,WACP,QAAS,WACT,WAAY,UACZ,gBAAiB"}
@@ -1,2 +0,0 @@
1
- var e={insertRowAbove:"إدراج صف أعلى",insertRowBelow:"إدراج صف أسفل",insertColumnLeft:"إدراج عمود على اليسار",insertColumnRight:"إدراج عمود على اليمين",deleteRow:"حذف الصف",deleteColumn:"حذف العمود",borderColorLabel:"لون الحدود…",deleteTable:"حذف الجدول",tableActions:"إجراءات الجدول",menuKeyboardHint:"↑↓ تنقل · Enter تحديد · Esc إغلاق",insertRow:"إدراج صف",insertColumn:"إدراج عمود",addRow:"إضافة صف",addColumn:"إضافة عمود",tableActionsHint:"إجراءات الجدول (انقر بزر الماوس الأيمن أو Shift+F10)",contextMenuHint:"انقر بزر الماوس الأيمن أو Shift+F10 لإجراءات الجدول",borderColor:"لون الحدود",defaultColor:"افتراضي",noBorders:"بدون حدود",borderColorPicker:"منتقي لون الحدود",announceBorderColorSet:e=>`تم تعيين لون حدود الجدول إلى ${e}`,announceBorderReset:"تم إعادة تعيين حدود الجدول إلى الافتراضي",borderSwatchLabel:e=>`حدود ${e}`,announceRowInsertedAbove:"تم إدراج صف أعلى",announceRowInsertedBelow:"تم إدراج صف أسفل",announceColumnInserted:e=>`تم إدراج عمود ${e}`,announceRowDeleted:"تم حذف الصف",announceColumnDeleted:"تم حذف العمود",announceTableDeleted:"تم حذف الجدول",insertTable:"إدراج جدول",tableAriaLabel:(e,n)=>`جدول من ${e} صفوف و ${n} أعمدة`,tableAriaDescription:"انقر بزر الماوس الأيمن أو Shift+F10 لإجراءات الجدول"};export{e as default};
2
- //# sourceMappingURL=ar-BRvm4F78.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-BRvm4F78.mjs","names":[],"sources":["../../src/plugins/table/locales/ar.ts"],"sourcesContent":["import type { TableLocale } from '../TableLocale.js';\n\nconst locale: TableLocale = {\n\tinsertRowAbove: '\\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0641 \\u0623\\u0639\\u0644\\u0649',\n\tinsertRowBelow: '\\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0641 \\u0623\\u0633\\u0641\\u0644',\n\tinsertColumnLeft:\n\t\t'\\u0625\\u062f\\u0631\\u0627\\u062c \\u0639\\u0645\\u0648\\u062f \\u0639\\u0644\\u0649 \\u0627\\u0644\\u064a\\u0633\\u0627\\u0631',\n\tinsertColumnRight:\n\t\t'\\u0625\\u062f\\u0631\\u0627\\u062c \\u0639\\u0645\\u0648\\u062f \\u0639\\u0644\\u0649 \\u0627\\u0644\\u064a\\u0645\\u064a\\u0646',\n\tdeleteRow: '\\u062d\\u0630\\u0641 \\u0627\\u0644\\u0635\\u0641',\n\tdeleteColumn: '\\u062d\\u0630\\u0641 \\u0627\\u0644\\u0639\\u0645\\u0648\\u062f',\n\tborderColorLabel: '\\u0644\\u0648\\u0646 \\u0627\\u0644\\u062d\\u062f\\u0648\\u062f\\u2026',\n\tdeleteTable: '\\u062d\\u0630\\u0641 \\u0627\\u0644\\u062c\\u062f\\u0648\\u0644',\n\n\ttableActions: '\\u0625\\u062c\\u0631\\u0627\\u0621\\u0627\\u062a \\u0627\\u0644\\u062c\\u062f\\u0648\\u0644',\n\tmenuKeyboardHint:\n\t\t'\\u2191\\u2193 \\u062a\\u0646\\u0642\\u0644 \\u00b7 Enter \\u062a\\u062d\\u062f\\u064a\\u062f \\u00b7 Esc \\u0625\\u063a\\u0644\\u0627\\u0642',\n\n\tinsertRow: '\\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0641',\n\tinsertColumn: '\\u0625\\u062f\\u0631\\u0627\\u062c \\u0639\\u0645\\u0648\\u062f',\n\taddRow: '\\u0625\\u0636\\u0627\\u0641\\u0629 \\u0635\\u0641',\n\taddColumn: '\\u0625\\u0636\\u0627\\u0641\\u0629 \\u0639\\u0645\\u0648\\u062f',\n\ttableActionsHint:\n\t\t'\\u0625\\u062c\\u0631\\u0627\\u0621\\u0627\\u062a \\u0627\\u0644\\u062c\\u062f\\u0648\\u0644 (\\u0627\\u0646\\u0642\\u0631 \\u0628\\u0632\\u0631 \\u0627\\u0644\\u0645\\u0627\\u0648\\u0633 \\u0627\\u0644\\u0623\\u064a\\u0645\\u0646 \\u0623\\u0648 Shift+F10)',\n\tcontextMenuHint:\n\t\t'\\u0627\\u0646\\u0642\\u0631 \\u0628\\u0632\\u0631 \\u0627\\u0644\\u0645\\u0627\\u0648\\u0633 \\u0627\\u0644\\u0623\\u064a\\u0645\\u0646 \\u0623\\u0648 Shift+F10 \\u0644\\u0625\\u062c\\u0631\\u0627\\u0621\\u0627\\u062a \\u0627\\u0644\\u062c\\u062f\\u0648\\u0644',\n\tborderColor: '\\u0644\\u0648\\u0646 \\u0627\\u0644\\u062d\\u062f\\u0648\\u062f',\n\n\tdefaultColor: '\\u0627\\u0641\\u062a\\u0631\\u0627\\u0636\\u064a',\n\tnoBorders: '\\u0628\\u062f\\u0648\\u0646 \\u062d\\u062f\\u0648\\u062f',\n\tborderColorPicker:\n\t\t'\\u0645\\u0646\\u062a\\u0642\\u064a \\u0644\\u0648\\u0646 \\u0627\\u0644\\u062d\\u062f\\u0648\\u062f',\n\tannounceBorderColorSet: (colorName: string) =>\n\t\t`\\u062a\\u0645 \\u062a\\u0639\\u064a\\u064a\\u0646 \\u0644\\u0648\\u0646 \\u062d\\u062f\\u0648\\u062f \\u0627\\u0644\\u062c\\u062f\\u0648\\u0644 \\u0625\\u0644\\u0649 ${colorName}`,\n\tannounceBorderReset:\n\t\t'\\u062a\\u0645 \\u0625\\u0639\\u0627\\u062f\\u0629 \\u062a\\u0639\\u064a\\u064a\\u0646 \\u062d\\u062f\\u0648\\u062f \\u0627\\u0644\\u062c\\u062f\\u0648\\u0644 \\u0625\\u0644\\u0649 \\u0627\\u0644\\u0627\\u0641\\u062a\\u0631\\u0627\\u0636\\u064a',\n\tborderSwatchLabel: (colorName: string) => `\\u062d\\u062f\\u0648\\u062f ${colorName}`,\n\n\tannounceRowInsertedAbove:\n\t\t'\\u062a\\u0645 \\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0641 \\u0623\\u0639\\u0644\\u0649',\n\tannounceRowInsertedBelow:\n\t\t'\\u062a\\u0645 \\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0641 \\u0623\\u0633\\u0641\\u0644',\n\tannounceColumnInserted: (side: string) =>\n\t\t`\\u062a\\u0645 \\u0625\\u062f\\u0631\\u0627\\u062c \\u0639\\u0645\\u0648\\u062f ${side}`,\n\tannounceRowDeleted: '\\u062a\\u0645 \\u062d\\u0630\\u0641 \\u0627\\u0644\\u0635\\u0641',\n\tannounceColumnDeleted: '\\u062a\\u0645 \\u062d\\u0630\\u0641 \\u0627\\u0644\\u0639\\u0645\\u0648\\u062f',\n\tannounceTableDeleted: '\\u062a\\u0645 \\u062d\\u0630\\u0641 \\u0627\\u0644\\u062c\\u062f\\u0648\\u0644',\n\n\tinsertTable: '\\u0625\\u062f\\u0631\\u0627\\u062c \\u062c\\u062f\\u0648\\u0644',\n\n\ttableAriaLabel: (rows: number, cols: number) =>\n\t\t`\\u062c\\u062f\\u0648\\u0644 \\u0645\\u0646 ${rows} \\u0635\\u0641\\u0648\\u0641 \\u0648 ${cols} \\u0623\\u0639\\u0645\\u062f\\u0629`,\n\ttableAriaDescription:\n\t\t'\\u0627\\u0646\\u0642\\u0631 \\u0628\\u0632\\u0631 \\u0627\\u0644\\u0645\\u0627\\u0648\\u0633 \\u0627\\u0644\\u0623\\u064a\\u0645\\u0646 \\u0623\\u0648 Shift+F10 \\u0644\\u0625\\u062c\\u0631\\u0627\\u0621\\u0627\\u062a \\u0627\\u0644\\u062c\\u062f\\u0648\\u0644',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAsB,CAC3B,eAAgB,gBAChB,eAAgB,gBAChB,iBACC,wBACD,kBACC,wBACD,UAAW,WACX,aAAc,aACd,iBAAkB,cAClB,YAAa,aAEb,aAAc,iBACd,iBACC,oCAED,UAAW,WACX,aAAc,aACd,OAAQ,WACR,UAAW,aACX,iBACC,uDACD,gBACC,sDACD,YAAa,aAEb,aAAc,UACd,UAAW,YACX,kBACC,mBACD,uBAAyB,GACxB,gCAAmJ,IACpJ,oBACC,2CACD,kBAAoB,GAAsB,QAA4B,IAEtE,yBACC,mBACD,yBACC,mBACD,uBAAyB,GACxB,iBAAwE,IACzE,mBAAoB,cACpB,sBAAuB,gBACvB,qBAAsB,gBAEtB,YAAa,aAEb,eAAA,CAAiB,EAAc,IAC9B,WAAyC,YAAwC,UAClF,qBACC"}
@@ -1,2 +0,0 @@
1
- var n={ltr:"من اليسار إلى اليمين",rtl:"من اليمين إلى اليسار",auto:"تلقائي",toolbarLabel:"اتجاه النص",toolbarTooltip:"اتجاه النص",announceLTR:"تم تعيين اتجاه النص من اليسار إلى اليمين",announceRTL:"تم تعيين اتجاه النص من اليمين إلى اليسار",announceAuto:"تم تعيين اتجاه النص إلى تلقائي",inlineLTR:"سطري من اليسار إلى اليمين",inlineRTL:"سطري من اليمين إلى اليسار",inlineAuto:"سطري تلقائي",inlineLabel:"اتجاه سطري",inlineTooltip:"اتجاه سطري",announceRemoveBidi:"تم إزالة عزل الاتجاه السطري"};export{n as default};
2
- //# sourceMappingURL=ar-BUMXujtS.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-BUMXujtS.mjs","names":[],"sources":["../../src/plugins/text-direction/locales/ar.ts"],"sourcesContent":["import type { TextDirectionLocale } from '../TextDirectionLocale.js';\n\nconst locale: TextDirectionLocale = {\n\tltr: 'من اليسار إلى اليمين',\n\trtl: 'من اليمين إلى اليسار',\n\tauto: 'تلقائي',\n\ttoolbarLabel: 'اتجاه النص',\n\ttoolbarTooltip: 'اتجاه النص',\n\tannounceLTR: 'تم تعيين اتجاه النص من اليسار إلى اليمين',\n\tannounceRTL: 'تم تعيين اتجاه النص من اليمين إلى اليسار',\n\tannounceAuto: 'تم تعيين اتجاه النص إلى تلقائي',\n\tinlineLTR: 'سطري من اليسار إلى اليمين',\n\tinlineRTL: 'سطري من اليمين إلى اليسار',\n\tinlineAuto: 'سطري تلقائي',\n\tinlineLabel: 'اتجاه سطري',\n\tinlineTooltip: 'اتجاه سطري',\n\tannounceRemoveBidi: 'تم إزالة عزل الاتجاه السطري',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA8B,CACnC,IAAK,uBACL,IAAK,uBACL,KAAM,SACN,aAAc,aACd,eAAgB,aAChB,YAAa,2CACb,YAAa,2CACb,aAAc,iCACd,UAAW,4BACX,UAAW,4BACX,WAAY,cACZ,YAAa,aACb,cAAe,aACf,mBAAoB"}
@@ -1,2 +0,0 @@
1
- var a={paragraph:"فقرة",heading1:"عنوان 1",heading2:"عنوان 2",heading3:"عنوان 3",heading4:"عنوان 4",heading5:"عنوان 5",heading6:"عنوان 6",codeBlock:"كتلة برمجية",blockquote:"اقتباس",listItem:"عنصر قائمة",horizontalRule:"خط أفقي",image:"صورة",table:"جدول"};export{a as default};
2
- //# sourceMappingURL=ar-BhVHv8Lx.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-BhVHv8Lx.mjs","names":[],"sources":["../../src/plugins/caret-navigation/locales/ar.ts"],"sourcesContent":["import type { CaretNavigationLocale } from '../CaretNavigationLocale.js';\n\nconst locale: CaretNavigationLocale = {\n\tparagraph: 'فقرة',\n\theading1: 'عنوان 1',\n\theading2: 'عنوان 2',\n\theading3: 'عنوان 3',\n\theading4: 'عنوان 4',\n\theading5: 'عنوان 5',\n\theading6: 'عنوان 6',\n\tcodeBlock: 'كتلة برمجية',\n\tblockquote: 'اقتباس',\n\tlistItem: 'عنصر قائمة',\n\thorizontalRule: 'خط أفقي',\n\timage: 'صورة',\n\ttable: 'جدول',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAgC,CACrC,UAAW,OACX,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,UAAW,cACX,WAAY,SACZ,SAAU,aACV,eAAgB,UAChB,MAAO,OACP,MAAO"}
@@ -1,2 +0,0 @@
1
- var a={label:"رابط",tooltip:a=>`إدراج رابط (${a})`,removeLink:"إزالة الرابط",removeLinkAria:"إزالة الرابط",urlPlaceholder:"https://...",urlAria:"عنوان الرابط",apply:"تطبيق",applyAria:"تطبيق الرابط"};export{a as default};
2
- //# sourceMappingURL=ar-BhwRD9Cg.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-BhwRD9Cg.mjs","names":[],"sources":["../../src/plugins/link/locales/ar.ts"],"sourcesContent":["import type { LinkLocale } from '../LinkLocale.js';\n\nconst locale: LinkLocale = {\n\tlabel: 'رابط',\n\ttooltip: (shortcut: string) => `إدراج رابط (${shortcut})`,\n\tremoveLink: 'إزالة الرابط',\n\tremoveLinkAria: 'إزالة الرابط',\n\turlPlaceholder: 'https://...',\n\turlAria: 'عنوان الرابط',\n\tapply: 'تطبيق',\n\tapplyAria: 'تطبيق الرابط',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAqB,CAC1B,MAAO,OACP,QAAU,GAAqB,eAAe,KAC9C,WAAY,eACZ,eAAgB,eAChB,eAAgB,cAChB,QAAS,eACT,MAAO,QACP,UAAW"}
@@ -1,2 +0,0 @@
1
- var a={alignStart:"محاذاة البداية",alignCenter:"توسيط",alignEnd:"محاذاة النهاية",justify:"ضبط",toolbarLabel:"المحاذاة",toolbarTooltip:"المحاذاة"};export{a as default};
2
- //# sourceMappingURL=ar-Bm8ORJ3H.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-Bm8ORJ3H.mjs","names":[],"sources":["../../src/plugins/alignment/locales/ar.ts"],"sourcesContent":["import type { AlignmentLocale } from '../AlignmentLocale.js';\n\nconst locale: AlignmentLocale = {\n\talignStart: 'محاذاة البداية',\n\talignCenter: 'توسيط',\n\talignEnd: 'محاذاة النهاية',\n\tjustify: 'ضبط',\n\ttoolbarLabel: 'المحاذاة',\n\ttoolbarTooltip: 'المحاذاة',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA0B,CAC/B,WAAY,iBACZ,YAAa,QACb,SAAU,iBACV,QAAS,MACT,aAAc,WACd,eAAgB"}
@@ -1,2 +0,0 @@
1
- var a={gapCursorActive:"مؤشر الفجوة نشط. اكتب لإدراج فقرة جديدة."};export{a as default};
2
- //# sourceMappingURL=ar-BpxuRQB2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-BpxuRQB2.mjs","names":[],"sources":["../../src/plugins/gap-cursor/locales/ar.ts"],"sourcesContent":["import type { GapCursorLocale } from '../GapCursorLocale.js';\n\nconst locale: GapCursorLocale = {\n\tgapCursorActive:\n\t\t'\\u0645\\u0624\\u0634\\u0631 \\u0627\\u0644\\u0641\\u062c\\u0648\\u0629 \\u0646\\u0634\\u0637. \\u0627\\u0643\\u062a\\u0628 \\u0644\\u0625\\u062f\\u0631\\u0627\\u062c \\u0641\\u0642\\u0631\\u0629 \\u062c\\u062f\\u064a\\u062f\\u0629.',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA0B,CAC/B,gBACC"}
@@ -1,2 +0,0 @@
1
- var a={label:"خط أفقي",tooltip:a=>`خط أفقي (${a})`};export{a as default};
2
- //# sourceMappingURL=ar-CA0-ysCj.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-CA0-ysCj.mjs","names":[],"sources":["../../src/plugins/horizontal-rule/locales/ar.ts"],"sourcesContent":["import type { HorizontalRuleLocale } from '../HorizontalRuleLocale.js';\n\nconst locale: HorizontalRuleLocale = {\n\tlabel: 'خط أفقي',\n\ttooltip: (shortcut: string) => `خط أفقي (${shortcut})`,\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA+B,CACpC,MAAO,UACP,QAAU,GAAqB,YAAY"}
@@ -1,2 +0,0 @@
1
- var p={superscriptLabel:"مرتفع",superscriptTooltip:p=>`مرتفع (${p})`,subscriptLabel:"منخفض",subscriptTooltip:p=>`منخفض (${p})`};export{p as default};
2
- //# sourceMappingURL=ar-CAkFpIju.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-CAkFpIju.mjs","names":[],"sources":["../../src/plugins/super-sub/locales/ar.ts"],"sourcesContent":["import type { SuperSubLocale } from '../SuperSubLocale.js';\n\nconst locale: SuperSubLocale = {\n\tsuperscriptLabel: '\\u0645\\u0631\\u062a\\u0641\\u0639',\n\tsuperscriptTooltip: (shortcut: string) => `\\u0645\\u0631\\u062a\\u0641\\u0639 (${shortcut})`,\n\tsubscriptLabel: '\\u0645\\u0646\\u062e\\u0641\\u0636',\n\tsubscriptTooltip: (shortcut: string) => `\\u0645\\u0646\\u062e\\u0641\\u0636 (${shortcut})`,\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAyB,CAC9B,iBAAkB,QAClB,mBAAqB,GAAqB,UAAmC,KAC7E,eAAgB,QAChB,iBAAmB,GAAqB,UAAmC"}
@@ -1,2 +0,0 @@
1
- var e={insertImage:"إدراج صورة",insertImageTooltip:"إدراج صورة",uploadFromComputer:"رفع من الحاسوب",uploadAria:"رفع صورة من الحاسوب",separator:"أو",urlPlaceholder:"https://...",urlAria:"رابط الصورة",insertButton:"إدراج",insertAria:"إدراج صورة",imageAria:(e,t,i)=>{const a=[e||"صورة"];return void 0!==t&&void 0!==i&&a.push(`${t} × ${i} بكسل`),a.join("، ")},resetToNaturalSize:"تمت إعادة الصورة إلى حجمها الطبيعي.",uploadFailed:"فشل رفع الصورة.",uploading:"...جارٍ الرفع",resizeHandleLabel:e=>`تغيير حجم ${{"top-left":"أعلى اليسار","top-right":"أعلى اليمين","bottom-left":"أسفل اليسار","bottom-right":"أسفل اليمين"}[e]??e}`,imageSelected:"تم تحديد الصورة.",altTextPrefix:"النص البديل: ",imageSizeAnnounce:(e,t)=>`الحجم: ${e} × ${t} بكسل.`,resizeHint:(e,t)=>`${e} / ${t} لتغيير الحجم.`,imageResized:(e,t)=>`تم تغيير حجم الصورة إلى ${e} × ${t} بكسل.`,keyboardResizeHint:(e,t)=>`${e} / ${t} لتغيير الحجم`};export{e as default};
2
- //# sourceMappingURL=ar-CU6qxyFp.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-CU6qxyFp.mjs","names":[],"sources":["../../src/plugins/image/locales/ar.ts"],"sourcesContent":["import type { ImageLocale } from '../ImageLocale.js';\n\nconst locale: ImageLocale = {\n\tinsertImage: '\\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0648\\u0631\\u0629',\n\tinsertImageTooltip: '\\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0648\\u0631\\u0629',\n\tuploadFromComputer: '\\u0631\\u0641\\u0639 \\u0645\\u0646 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0648\\u0628',\n\tuploadAria:\n\t\t'\\u0631\\u0641\\u0639 \\u0635\\u0648\\u0631\\u0629 \\u0645\\u0646 \\u0627\\u0644\\u062d\\u0627\\u0633\\u0648\\u0628',\n\tseparator: '\\u0623\\u0648',\n\turlPlaceholder: 'https://...',\n\turlAria: '\\u0631\\u0627\\u0628\\u0637 \\u0627\\u0644\\u0635\\u0648\\u0631\\u0629',\n\tinsertButton: '\\u0625\\u062f\\u0631\\u0627\\u062c',\n\tinsertAria: '\\u0625\\u062f\\u0631\\u0627\\u062c \\u0635\\u0648\\u0631\\u0629',\n\timageAria: (alt: string, width?: number, height?: number) => {\n\t\tconst parts: string[] = [alt || '\\u0635\\u0648\\u0631\\u0629'];\n\t\tif (width !== undefined && height !== undefined) {\n\t\t\tparts.push(`${width} \\u00d7 ${height} \\u0628\\u0643\\u0633\\u0644`);\n\t\t}\n\t\treturn parts.join('\\u060c ');\n\t},\n\tresetToNaturalSize:\n\t\t'\\u062a\\u0645\\u062a \\u0625\\u0639\\u0627\\u062f\\u0629 \\u0627\\u0644\\u0635\\u0648\\u0631\\u0629 \\u0625\\u0644\\u0649 \\u062d\\u062c\\u0645\\u0647\\u0627 \\u0627\\u0644\\u0637\\u0628\\u064a\\u0639\\u064a.',\n\tuploadFailed: '\\u0641\\u0634\\u0644 \\u0631\\u0641\\u0639 \\u0627\\u0644\\u0635\\u0648\\u0631\\u0629.',\n\tuploading: '...\\u062c\\u0627\\u0631\\u064d \\u0627\\u0644\\u0631\\u0641\\u0639',\n\tresizeHandleLabel: (position: string) => {\n\t\tconst positions: Record<string, string> = {\n\t\t\t'top-left': '\\u0623\\u0639\\u0644\\u0649 \\u0627\\u0644\\u064a\\u0633\\u0627\\u0631',\n\t\t\t'top-right': '\\u0623\\u0639\\u0644\\u0649 \\u0627\\u0644\\u064a\\u0645\\u064a\\u0646',\n\t\t\t'bottom-left': '\\u0623\\u0633\\u0641\\u0644 \\u0627\\u0644\\u064a\\u0633\\u0627\\u0631',\n\t\t\t'bottom-right': '\\u0623\\u0633\\u0641\\u0644 \\u0627\\u0644\\u064a\\u0645\\u064a\\u0646',\n\t\t};\n\t\treturn `\\u062a\\u063a\\u064a\\u064a\\u0631 \\u062d\\u062c\\u0645 ${positions[position] ?? position}`;\n\t},\n\timageSelected:\n\t\t'\\u062a\\u0645 \\u062a\\u062d\\u062f\\u064a\\u062f \\u0627\\u0644\\u0635\\u0648\\u0631\\u0629.',\n\taltTextPrefix: '\\u0627\\u0644\\u0646\\u0635 \\u0627\\u0644\\u0628\\u062f\\u064a\\u0644: ',\n\timageSizeAnnounce: (w: number, h: number) =>\n\t\t`\\u0627\\u0644\\u062d\\u062c\\u0645: ${w} \\u00d7 ${h} \\u0628\\u0643\\u0633\\u0644.`,\n\tresizeHint: (shrink: string, grow: string) =>\n\t\t`${shrink} / ${grow} \\u0644\\u062a\\u063a\\u064a\\u064a\\u0631 \\u0627\\u0644\\u062d\\u062c\\u0645.`,\n\timageResized: (w: number, h: number) =>\n\t\t`\\u062a\\u0645 \\u062a\\u063a\\u064a\\u064a\\u0631 \\u062d\\u062c\\u0645 \\u0627\\u0644\\u0635\\u0648\\u0631\\u0629 \\u0625\\u0644\\u0649 ${w} \\u00d7 ${h} \\u0628\\u0643\\u0633\\u0644.`,\n\tkeyboardResizeHint: (shrink: string, grow: string) =>\n\t\t`${shrink} / ${grow} \\u0644\\u062a\\u063a\\u064a\\u064a\\u0631 \\u0627\\u0644\\u062d\\u062c\\u0645`,\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAsB,CAC3B,YAAa,aACb,mBAAoB,aACpB,mBAAoB,iBACpB,WACC,sBACD,UAAW,KACX,eAAgB,cAChB,QAAS,cACT,aAAc,QACd,WAAY,aACZ,UAAA,CAAY,EAAa,EAAgB,KACxC,MAAM,EAAkB,CAAC,GAAO,QAIhC,YAHc,IAAV,QAAkC,IAAX,GAC1B,EAAM,KAAK,GAAG,OAAgB,UAExB,EAAM,KAAK,OAEnB,mBACC,sCACD,aAAc,kBACd,UAAW,gBACX,kBAAoB,GAOZ,aANmC,CACzC,WAAY,cACZ,YAAa,cACb,cAAe,cACf,eAAgB,eAEqD,IAAa,IAEpF,cACC,mBACD,cAAe,gBACf,kBAAA,CAAoB,EAAW,IAC9B,UAAmC,OAAY,UAChD,WAAA,CAAa,EAAgB,IAC5B,GAAG,OAAY,kBAChB,aAAA,CAAe,EAAW,IACzB,2BAA0H,OAAY,UACvI,mBAAA,CAAqB,EAAgB,IACpC,GAAG,OAAY"}
@@ -1,2 +0,0 @@
1
- var a={label:"اقتباس",tooltip:a=>`اقتباس (${a})`};export{a as default};
2
- //# sourceMappingURL=ar-CXcTrZVc.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-CXcTrZVc.mjs","names":[],"sources":["../../src/plugins/blockquote/locales/ar.ts"],"sourcesContent":["import type { BlockquoteLocale } from '../BlockquoteLocale.js';\n\nconst locale: BlockquoteLocale = {\n\tlabel: 'اقتباس',\n\ttooltip: (shortcut: string) => `اقتباس (${shortcut})`,\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA2B,CAChC,MAAO,SACP,QAAU,GAAqB,WAAW"}
@@ -1,2 +0,0 @@
1
- var a={label:"تمييز",tooltip:"لون التمييز",resetLabel:"بدون",ariaLabelPrefix:"لون التمييز"};export{a as default};
2
- //# sourceMappingURL=ar-CeO_osWz.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-CeO_osWz.mjs","names":[],"sources":["../../src/plugins/highlight/locales/ar.ts"],"sourcesContent":["import type { HighlightLocale } from '../HighlightLocale.js';\n\nconst locale: HighlightLocale = {\n\tlabel: 'تمييز',\n\ttooltip: 'لون التمييز',\n\tresetLabel: 'بدون',\n\tariaLabelPrefix: 'لون التمييز',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA0B,CAC/B,MAAO,QACP,QAAS,cACT,WAAY,OACZ,gBAAiB"}
@@ -1,2 +0,0 @@
1
- var a={paragraph:"فقرة",title:"عنوان",subtitle:"عنوان فرعي",heading1:"عنوان 1",heading2:"عنوان 2",heading3:"عنوان 3",heading4:"عنوان 4",heading5:"عنوان 5",heading6:"عنوان 6",blockTypeLabel:"نوع الكتلة",blockTypesAria:"أنواع الكتل"};export{a as default};
2
- //# sourceMappingURL=ar-CxRSPJDE.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-CxRSPJDE.mjs","names":[],"sources":["../../src/plugins/heading/locales/ar.ts"],"sourcesContent":["import type { HeadingLocale } from '../HeadingLocale.js';\n\nconst locale: HeadingLocale = {\n\tparagraph: 'فقرة',\n\ttitle: 'عنوان',\n\tsubtitle: 'عنوان فرعي',\n\theading1: 'عنوان 1',\n\theading2: 'عنوان 2',\n\theading3: 'عنوان 3',\n\theading4: 'عنوان 4',\n\theading5: 'عنوان 5',\n\theading6: 'عنوان 6',\n\tblockTypeLabel: 'نوع الكتلة',\n\tblockTypesAria: 'أنواع الكتل',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAwB,CAC7B,UAAW,OACX,MAAO,QACP,SAAU,aACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,SAAU,UACV,eAAgB,aAChB,eAAgB"}
@@ -1,2 +0,0 @@
1
- var r={formattingOptionsAria:"خيارات التنسيق",moreToolsAria:"أدوات إضافية",gridPickerLabel:(r,a)=>`${r} × ${a}`};export{r as default};
2
- //# sourceMappingURL=ar-DHes6Igy.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-DHes6Igy.mjs","names":[],"sources":["../../src/plugins/toolbar/locales/ar.ts"],"sourcesContent":["import type { ToolbarLocale } from '../ToolbarLocale.js';\n\nconst locale: ToolbarLocale = {\n\tformattingOptionsAria:\n\t\t'\\u062e\\u064a\\u0627\\u0631\\u0627\\u062a \\u0627\\u0644\\u062a\\u0646\\u0633\\u064a\\u0642',\n\tmoreToolsAria: '\\u0623\\u062f\\u0648\\u0627\\u062a \\u0625\\u0636\\u0627\\u0641\\u064a\\u0629',\n\tgridPickerLabel: (rows: number, cols: number) => `${rows} \\u00d7 ${cols}`,\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAwB,CAC7B,sBACC,iBACD,cAAe,eACf,gBAAA,CAAkB,EAAc,IAAiB,GAAG,OAAe"}
@@ -1,2 +0,0 @@
1
- var a={label:"يتوسطه خط",tooltip:a=>`يتوسطه خط (${a})`};export{a as default};
2
- //# sourceMappingURL=ar-DN1aHdqb.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-DN1aHdqb.mjs","names":[],"sources":["../../src/plugins/strikethrough/locales/ar.ts"],"sourcesContent":["import type { StrikethroughLocale } from '../StrikethroughLocale.js';\n\nconst locale: StrikethroughLocale = {\n\tlabel: 'يتوسطه خط',\n\ttooltip: (shortcut: string) => `يتوسطه خط (${shortcut})`,\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA8B,CACnC,MAAO,YACP,QAAU,GAAqB,cAAc"}
@@ -1,2 +0,0 @@
1
- var t={label:"حجم الخط",tooltip:"حجم الخط",customFontSizeAria:"حجم خط مخصص",fontSizesAria:"أحجام الخط"};export{t as default};
2
- //# sourceMappingURL=ar-DNzmHN3q.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-DNzmHN3q.mjs","names":[],"sources":["../../src/plugins/font-size/locales/ar.ts"],"sourcesContent":["import type { FontSizeLocale } from '../FontSizeLocale.js';\n\nconst locale: FontSizeLocale = {\n\tlabel: 'حجم الخط',\n\ttooltip: 'حجم الخط',\n\tcustomFontSizeAria: 'حجم خط مخصص',\n\tfontSizesAria: 'أحجام الخط',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAyB,CAC9B,MAAO,WACP,QAAS,WACT,mBAAoB,cACpB,cAAe"}
@@ -1,2 +0,0 @@
1
- var a={boldLabel:"غامق",italicLabel:"مائل",underlineLabel:"تحته خط"};export{a as default};
2
- //# sourceMappingURL=ar-DVdWier2.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-DVdWier2.mjs","names":[],"sources":["../../src/plugins/text-formatting/locales/ar.ts"],"sourcesContent":["import type { TextFormattingLocale } from '../TextFormattingLocale.js';\n\nconst locale: TextFormattingLocale = {\n\tboldLabel: 'غامق',\n\titalicLabel: 'مائل',\n\tunderlineLabel: 'تحته خط',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA+B,CACpC,UAAW,OACX,YAAa,OACb,eAAgB"}
@@ -1,2 +0,0 @@
1
- var e={detectedAsCodeBlock:e=>`تم اللصق ككتلة كود ${e} مع تمييز بناء الجملة.`};export{e as default};
2
- //# sourceMappingURL=ar-G_ADWoCx.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-G_ADWoCx.mjs","names":[],"sources":["../../src/plugins/smart-paste/locales/ar.ts"],"sourcesContent":["import type { SmartPasteLocale } from '../SmartPasteLocale.js';\n\nconst locale: SmartPasteLocale = {\n\tdetectedAsCodeBlock: (language: string) => `تم اللصق ككتلة كود ${language} مع تمييز بناء الجملة.`,\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA2B,CAChC,oBAAsB,GAAqB,sBAAsB"}
@@ -1,2 +0,0 @@
1
- var n={label:"طباعة",tooltip:n=>`طباعة (${n})`,printingAnnouncement:"جارٍ الطباعة"};export{n as default};
2
- //# sourceMappingURL=ar-KAaQxKMo.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-KAaQxKMo.mjs","names":[],"sources":["../../src/plugins/print/locales/ar.ts"],"sourcesContent":["import type { PrintLocale } from '../PrintLocale.js';\n\nconst locale: PrintLocale = {\n\tlabel: '\\u0637\\u0628\\u0627\\u0639\\u0629',\n\ttooltip: (shortcut: string) => `\\u0637\\u0628\\u0627\\u0639\\u0629 (${shortcut})`,\n\tprintingAnnouncement: '\\u062c\\u0627\\u0631\\u064d \\u0627\\u0644\\u0637\\u0628\\u0627\\u0639\\u0629',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAsB,CAC3B,MAAO,QACP,QAAU,GAAqB,UAAmC,KAClE,qBAAsB"}
@@ -1,2 +0,0 @@
1
- var e={label:"كتلة كود",tooltip:e=>e?`كتلة كود (${e})`:"كتلة كود",enteredCodeBlock:"تم الدخول إلى كتلة الكود. اضغط Escape للخروج.",leftCodeBlock:"تم الخروج من كتلة الكود.",copyCodeAria:"نسخ الكود",escToExit:"Esc للخروج",codeBlockAriaLabel:e=>`كتلة كود ${e}. اضغط Escape للخروج.`,copiedToClipboard:"تم النسخ إلى الحافظة"};export{e as default};
2
- //# sourceMappingURL=ar-MHdV5PAO.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-MHdV5PAO.mjs","names":[],"sources":["../../src/plugins/code-block/locales/ar.ts"],"sourcesContent":["import type { CodeBlockLocale } from '../CodeBlockLocale.js';\n\nconst locale: CodeBlockLocale = {\n\tlabel: '\\u0643\\u062a\\u0644\\u0629 \\u0643\\u0648\\u062f',\n\ttooltip: (shortcut?: string) =>\n\t\tshortcut\n\t\t\t? `\\u0643\\u062a\\u0644\\u0629 \\u0643\\u0648\\u062f (${shortcut})`\n\t\t\t: '\\u0643\\u062a\\u0644\\u0629 \\u0643\\u0648\\u062f',\n\tenteredCodeBlock:\n\t\t'\\u062a\\u0645 \\u0627\\u0644\\u062f\\u062e\\u0648\\u0644 \\u0625\\u0644\\u0649 \\u0643\\u062a\\u0644\\u0629 \\u0627\\u0644\\u0643\\u0648\\u062f. \\u0627\\u0636\\u063a\\u0637 Escape \\u0644\\u0644\\u062e\\u0631\\u0648\\u062c.',\n\tleftCodeBlock:\n\t\t'\\u062a\\u0645 \\u0627\\u0644\\u062e\\u0631\\u0648\\u062c \\u0645\\u0646 \\u0643\\u062a\\u0644\\u0629 \\u0627\\u0644\\u0643\\u0648\\u062f.',\n\tcopyCodeAria: '\\u0646\\u0633\\u062e \\u0627\\u0644\\u0643\\u0648\\u062f',\n\tescToExit: 'Esc \\u0644\\u0644\\u062e\\u0631\\u0648\\u062c',\n\tcodeBlockAriaLabel: (lang: string) =>\n\t\t`\\u0643\\u062a\\u0644\\u0629 \\u0643\\u0648\\u062f ${lang}. \\u0627\\u0636\\u063a\\u0637 Escape \\u0644\\u0644\\u062e\\u0631\\u0648\\u062c.`,\n\tcopiedToClipboard:\n\t\t'\\u062a\\u0645 \\u0627\\u0644\\u0646\\u0633\\u062e \\u0625\\u0644\\u0649 \\u0627\\u0644\\u062d\\u0627\\u0641\\u0638\\u0629',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAA0B,CAC/B,MAAO,WACP,QAAU,GACT,EACG,aAAgD,KAChD,WACJ,iBACC,gDACD,cACC,2BACD,aAAc,YACd,UAAW,aACX,mBAAqB,GACpB,YAA+C,yBAChD,kBACC"}
@@ -1,2 +0,0 @@
1
- var e={bulletList:"قائمة نقطية",numberedList:"قائمة مرقمة",checklist:"قائمة تحقق"};export{e as default};
2
- //# sourceMappingURL=ar-S2VfgLMv.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ar-S2VfgLMv.mjs","names":[],"sources":["../../src/plugins/list/locales/ar.ts"],"sourcesContent":["import type { ListLocale } from '../ListLocale.js';\n\nconst locale: ListLocale = {\n\tbulletList: 'قائمة نقطية',\n\tnumberedList: 'قائمة مرقمة',\n\tchecklist: 'قائمة تحقق',\n};\n\nexport default locale;\n"],"mappings":"AAEA,IAAM,EAAqB,CAC1B,WAAY,cACZ,aAAc,cACd,UAAW"}
@@ -1,2 +0,0 @@
1
- var t='\n/* Color Picker Popup */\n.notectl-color-picker {\n\tpadding: 8px;\n\tmin-width: 240px;\n}\n\n.notectl-color-picker__default {\n\tdisplay: block;\n\twidth: 100%;\n\tpadding: 6px 12px;\n\tmargin-bottom: 8px;\n\tborder: 1px solid var(--notectl-border);\n\tborder-radius: 4px;\n\tbackground: var(--notectl-bg);\n\tcursor: pointer;\n\tfont-size: 13px;\n\tcolor: var(--notectl-fg);\n\ttext-align: center;\n}\n\n.notectl-color-picker__default:hover {\n\tbackground: var(--notectl-hover-bg);\n}\n\n.notectl-color-picker__grid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(10, 1fr);\n\tgap: 3px;\n}\n\n.notectl-color-picker__grid [role="row"] {\n\tdisplay: contents;\n}\n\n.notectl-color-picker__swatch {\n\twidth: 22px;\n\theight: 22px;\n\tborder: 1px solid transparent;\n\tborder-radius: 3px;\n\tpadding: 0;\n\tcursor: pointer;\n\ttransition: transform 0.1s;\n}\n\n.notectl-color-picker__swatch:hover,\n.notectl-color-picker__swatch:focus-visible {\n\ttransform: scale(1.25);\n\tz-index: 1;\n}\n\n.notectl-color-picker__swatch:focus-visible {\n\toutline: 2px solid var(--notectl-focus-ring);\n\toutline-offset: 1px;\n}\n\n.notectl-color-picker__swatch--active {\n\tborder: 2px solid var(--notectl-primary-fg);\n\tborder-radius: 3px;\n}\n\n.notectl-toolbar-btn--textColor .notectl-toolbar-btn__color-indicator {\n\tdisplay: block;\n\twidth: 16px;\n\theight: 3px;\n\tmargin-top: 1px;\n\tborder-radius: 1px;\n}\n';export{t};
2
- //# sourceMappingURL=color-picker-DumtHdqh.mjs.map