@notectl/core 2.0.7 → 2.0.8

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 (278) hide show
  1. package/README.md +1 -1
  2. package/dist/chunks/AlignmentPlugin-D1wmhWE6.mjs +2 -0
  3. package/dist/chunks/AlignmentPlugin-D1wmhWE6.mjs.map +1 -0
  4. package/dist/chunks/{AttributedMarkCommands-D_PYkbBt.mjs → AttributedMarkCommands-35jTbVRg.mjs} +2 -2
  5. package/dist/chunks/{AttributedMarkCommands-D_PYkbBt.mjs.map → AttributedMarkCommands-35jTbVRg.mjs.map} +1 -1
  6. package/dist/chunks/{BlockInsertion-DaG_4D31.mjs → BlockInsertion-DsnHLcvM.mjs} +2 -2
  7. package/dist/chunks/{BlockInsertion-DaG_4D31.mjs.map → BlockInsertion-DsnHLcvM.mjs.map} +1 -1
  8. package/dist/chunks/BlockquotePlugin-Bwny0CP6.mjs +2 -0
  9. package/dist/chunks/BlockquotePlugin-Bwny0CP6.mjs.map +1 -0
  10. package/dist/chunks/CaretNavigationPlugin-C-rCDbu0.mjs +2 -0
  11. package/dist/chunks/CaretNavigationPlugin-C-rCDbu0.mjs.map +1 -0
  12. package/dist/chunks/CodeBlockPlugin-CNC290_q.mjs +2 -0
  13. package/dist/chunks/CodeBlockPlugin-CNC290_q.mjs.map +1 -0
  14. package/dist/chunks/{ColorGrid-BNDaG3b2.mjs → ColorGrid-BUSIBKZH.mjs} +1 -1
  15. package/dist/chunks/{ColorGrid-BNDaG3b2.mjs.map → ColorGrid-BUSIBKZH.mjs.map} +1 -1
  16. package/dist/chunks/{ColorPickerPopup-BwU_WZHh.mjs → ColorPickerPopup-CvE90IAu.mjs} +2 -2
  17. package/dist/chunks/{ColorPickerPopup-BwU_WZHh.mjs.map → ColorPickerPopup-CvE90IAu.mjs.map} +1 -1
  18. package/dist/chunks/{CommandHelpers-BoRO1KfE.mjs → CommandHelpers-DTlQcGv5.mjs} +2 -2
  19. package/dist/chunks/{CommandHelpers-BoRO1KfE.mjs.map → CommandHelpers-DTlQcGv5.mjs.map} +1 -1
  20. package/dist/chunks/Commands-BuYF23lf.mjs +2 -0
  21. package/dist/chunks/Commands-BuYF23lf.mjs.map +1 -0
  22. package/dist/chunks/FontPlugin-z0QF1M5q.mjs +2 -0
  23. package/dist/chunks/FontPlugin-z0QF1M5q.mjs.map +1 -0
  24. package/dist/chunks/FontSizePlugin-DYKvhu9w.mjs +2 -0
  25. package/dist/chunks/FontSizePlugin-DYKvhu9w.mjs.map +1 -0
  26. package/dist/chunks/{GapCursorNavigation-PhJeqELx.mjs → GapCursorNavigation-BaXDnjFf.mjs} +2 -2
  27. package/dist/chunks/{GapCursorNavigation-PhJeqELx.mjs.map → GapCursorNavigation-BaXDnjFf.mjs.map} +1 -1
  28. package/dist/chunks/GapCursorPlugin-uxw7W7vj.mjs +2 -0
  29. package/dist/chunks/GapCursorPlugin-uxw7W7vj.mjs.map +1 -0
  30. package/dist/chunks/{HardBreakPlugin-BzAU3DoJ.mjs → HardBreakPlugin-BpXipf8h.mjs} +2 -2
  31. package/dist/chunks/{HardBreakPlugin-BzAU3DoJ.mjs.map → HardBreakPlugin-BpXipf8h.mjs.map} +1 -1
  32. package/dist/chunks/HeadingPlugin-CUN746aD.mjs +2 -0
  33. package/dist/chunks/{HeadingPlugin-1BVn57NF.mjs.map → HeadingPlugin-CUN746aD.mjs.map} +1 -1
  34. package/dist/chunks/HighlightPlugin-bbAi6W6k.mjs +2 -0
  35. package/dist/chunks/HighlightPlugin-bbAi6W6k.mjs.map +1 -0
  36. package/dist/chunks/HorizontalRulePlugin-D8w6paMa.mjs +2 -0
  37. package/dist/chunks/HorizontalRulePlugin-D8w6paMa.mjs.map +1 -0
  38. package/dist/chunks/ImagePlugin-De7lWcZ7.mjs +2 -0
  39. package/dist/chunks/ImagePlugin-De7lWcZ7.mjs.map +1 -0
  40. package/dist/chunks/InlineCodePlugin-DKQIYhTb.mjs +2 -0
  41. package/dist/chunks/InlineCodePlugin-DKQIYhTb.mjs.map +1 -0
  42. package/dist/chunks/LinkPlugin-BD7mcRHS.mjs +2 -0
  43. package/dist/chunks/LinkPlugin-BD7mcRHS.mjs.map +1 -0
  44. package/dist/chunks/ListPlugin-DbixSqMH.mjs +2 -0
  45. package/dist/chunks/{ListPlugin-Datp4nPR.mjs.map → ListPlugin-DbixSqMH.mjs.map} +1 -1
  46. package/dist/chunks/{NavigationQueries-_xQtPALX.mjs → NavigationQueries-CgYPG6oY.mjs} +1 -1
  47. package/dist/chunks/{NavigationQueries-_xQtPALX.mjs.map → NavigationQueries-CgYPG6oY.mjs.map} +1 -1
  48. package/dist/chunks/NodeSelectionCommands-Ddxu5Qck.mjs +2 -0
  49. package/dist/chunks/NodeSelectionCommands-Ddxu5Qck.mjs.map +1 -0
  50. package/dist/chunks/PluginHelpers-D1QF-YaF.mjs +2 -0
  51. package/dist/chunks/PluginHelpers-D1QF-YaF.mjs.map +1 -0
  52. package/dist/chunks/{shared-BLU27F7-.mjs → PopupKeyboardPatterns-DhcUe29m.mjs} +1 -1
  53. package/dist/chunks/PopupKeyboardPatterns-DhcUe29m.mjs.map +1 -0
  54. package/dist/chunks/PrintPlugin-DVRybXSN.mjs +2 -0
  55. package/dist/chunks/PrintPlugin-DVRybXSN.mjs.map +1 -0
  56. package/dist/chunks/{RangeIterator-CVUeIB4P.mjs → RangeIterator-DytL1lUT.mjs} +1 -1
  57. package/dist/chunks/{RangeIterator-CVUeIB4P.mjs.map → RangeIterator-DytL1lUT.mjs.map} +1 -1
  58. package/dist/chunks/SmartPastePlugin-i96yAnXZ.mjs +2 -0
  59. package/dist/chunks/SmartPastePlugin-i96yAnXZ.mjs.map +1 -0
  60. package/dist/chunks/StrikethroughPlugin-RGZATXUZ.mjs +2 -0
  61. package/dist/chunks/StrikethroughPlugin-RGZATXUZ.mjs.map +1 -0
  62. package/dist/chunks/SuperSubPlugin-BOWFP1Kr.mjs +2 -0
  63. package/dist/chunks/SuperSubPlugin-BOWFP1Kr.mjs.map +1 -0
  64. package/dist/chunks/TablePlugin-DZTMBkyu.mjs +2 -0
  65. package/dist/chunks/TablePlugin-DZTMBkyu.mjs.map +1 -0
  66. package/dist/chunks/TextColorPlugin-CB3RpTSQ.mjs +2 -0
  67. package/dist/chunks/TextColorPlugin-CB3RpTSQ.mjs.map +1 -0
  68. package/dist/chunks/{TextDirectionCorePlugin-CXCxX532.mjs → TextDirectionCorePlugin-tNecTcrX.mjs} +2 -2
  69. package/dist/chunks/{TextDirectionCorePlugin-CXCxX532.mjs.map → TextDirectionCorePlugin-tNecTcrX.mjs.map} +1 -1
  70. package/dist/chunks/TextDirectionLocale-_AUfZu9j.mjs +2 -0
  71. package/dist/chunks/{TextDirectionLocale-Kh3r4XQS.mjs.map → TextDirectionLocale-_AUfZu9j.mjs.map} +1 -1
  72. package/dist/chunks/TextFormattingPlugin-CZ6D-luc.mjs +2 -0
  73. package/dist/chunks/TextFormattingPlugin-CZ6D-luc.mjs.map +1 -0
  74. package/dist/chunks/ToolbarPlugin-2K96zYut.mjs +2 -0
  75. package/dist/chunks/ToolbarPlugin-2K96zYut.mjs.map +1 -0
  76. package/dist/chunks/WordBoundary-BE2u997Q.mjs +2 -0
  77. package/dist/chunks/WordBoundary-BE2u997Q.mjs.map +1 -0
  78. package/dist/chunks/XmlSupport-DG8PEZhO.mjs +2 -0
  79. package/dist/chunks/XmlSupport-DG8PEZhO.mjs.map +1 -0
  80. package/dist/chunks/ar--dzNQRg4.mjs +2 -0
  81. package/dist/chunks/{ar-DLxmSv7R.mjs.map → ar--dzNQRg4.mjs.map} +1 -1
  82. package/dist/chunks/{color-picker-D4Vi72Z_.mjs → color-picker-ChYYdC-r.mjs} +1 -1
  83. package/dist/chunks/{color-picker-D4Vi72Z_.mjs.map → color-picker-ChYYdC-r.mjs.map} +1 -1
  84. package/dist/chunks/de-C7Grl0t1.mjs +2 -0
  85. package/dist/chunks/de-C7Grl0t1.mjs.map +1 -0
  86. package/dist/chunks/{es-BL7KuLOg.mjs → es-BwmzRdDZ.mjs} +2 -2
  87. package/dist/chunks/es-BwmzRdDZ.mjs.map +1 -0
  88. package/dist/chunks/{fonts-B3hiRKxQ.mjs → fonts-CG_dDwvT.mjs} +1 -1
  89. package/dist/chunks/{fonts-B3hiRKxQ.mjs.map → fonts-CG_dDwvT.mjs.map} +1 -1
  90. package/dist/chunks/fr-CC7TYK5K.mjs +2 -0
  91. package/dist/chunks/{fr-GSoPohxY.mjs.map → fr-CC7TYK5K.mjs.map} +1 -1
  92. package/dist/chunks/full-B9IqlP6u.mjs +2 -0
  93. package/dist/chunks/{full-DCZ8MMpe.mjs.map → full-B9IqlP6u.mjs.map} +1 -1
  94. package/dist/chunks/{hi-CTb2tu17.mjs → hi-BtN2T9la.mjs} +2 -2
  95. package/dist/chunks/{hi-CTb2tu17.mjs.map → hi-BtN2T9la.mjs.map} +1 -1
  96. package/dist/chunks/minimal-J-u7e_pr.mjs +2 -0
  97. package/dist/chunks/{minimal-DmYfqOxb.mjs.map → minimal-J-u7e_pr.mjs.map} +1 -1
  98. package/dist/chunks/{pt-BattAVOq.mjs → pt-B59gJzMS.mjs} +2 -2
  99. package/dist/chunks/pt-B59gJzMS.mjs.map +1 -0
  100. package/dist/chunks/{ru-U-UhwubV.mjs → ru-KBX9Y7TT.mjs} +2 -2
  101. package/dist/chunks/{ru-U-UhwubV.mjs.map → ru-KBX9Y7TT.mjs.map} +1 -1
  102. package/dist/chunks/src-Bq4jFC-Q.mjs +2 -0
  103. package/dist/chunks/src-Bq4jFC-Q.mjs.map +1 -0
  104. package/dist/chunks/{text-direction-advanced-CkFu0K_I.mjs → text-direction-advanced-S4MgVMLX.mjs} +2 -2
  105. package/dist/chunks/{text-direction-advanced-CkFu0K_I.mjs.map → text-direction-advanced-S4MgVMLX.mjs.map} +1 -1
  106. package/dist/chunks/{zh-TXVgSc3H.mjs → zh-D4eu30KQ.mjs} +2 -2
  107. package/dist/chunks/{zh-TXVgSc3H.mjs.map → zh-D4eu30KQ.mjs.map} +1 -1
  108. package/dist/commands/CommandHelpers.d.ts +13 -0
  109. package/dist/commands/CommandHelpers.d.ts.map +1 -1
  110. package/dist/commands/DeleteCommands.d.ts.map +1 -1
  111. package/dist/editor/EditorConfig.d.ts +7 -0
  112. package/dist/editor/EditorConfig.d.ts.map +1 -1
  113. package/dist/editor/EditorLocale.d.ts.map +1 -1
  114. package/dist/editor/styles/code-block.d.ts.map +1 -1
  115. package/dist/fonts.mjs +1 -1
  116. package/dist/full.mjs +1 -1
  117. package/dist/index.d.ts +2 -1
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/notectl-core.mjs +1 -1
  120. package/dist/notectl-core.umd.js +1 -1
  121. package/dist/notectl-core.umd.js.map +1 -1
  122. package/dist/plugins/CommandRegistry.d.ts +3 -0
  123. package/dist/plugins/CommandRegistry.d.ts.map +1 -1
  124. package/dist/plugins/EventBus.d.ts +3 -0
  125. package/dist/plugins/EventBus.d.ts.map +1 -1
  126. package/dist/plugins/Logger.d.ts +50 -0
  127. package/dist/plugins/Logger.d.ts.map +1 -0
  128. package/dist/plugins/MiddlewareChain.d.ts +3 -0
  129. package/dist/plugins/MiddlewareChain.d.ts.map +1 -1
  130. package/dist/plugins/PluginContextFactory.d.ts +2 -0
  131. package/dist/plugins/PluginContextFactory.d.ts.map +1 -1
  132. package/dist/plugins/PluginLifecycle.d.ts +3 -1
  133. package/dist/plugins/PluginLifecycle.d.ts.map +1 -1
  134. package/dist/plugins/PluginManager.d.ts +14 -1
  135. package/dist/plugins/PluginManager.d.ts.map +1 -1
  136. package/dist/plugins/alignment/AlignmentLocale.d.ts.map +1 -1
  137. package/dist/plugins/alignment.mjs +1 -1
  138. package/dist/plugins/blockquote/BlockquoteLocale.d.ts.map +1 -1
  139. package/dist/plugins/blockquote.mjs +1 -1
  140. package/dist/plugins/caret-navigation/CaretNavigationLocale.d.ts.map +1 -1
  141. package/dist/plugins/caret-navigation.mjs +1 -1
  142. package/dist/plugins/code-block/CodeBlockCommands.d.ts.map +1 -1
  143. package/dist/plugins/code-block/CodeBlockLocale.d.ts +4 -0
  144. package/dist/plugins/code-block/CodeBlockLocale.d.ts.map +1 -1
  145. package/dist/plugins/code-block/CodeBlockNodeView.d.ts +13 -1
  146. package/dist/plugins/code-block/CodeBlockNodeView.d.ts.map +1 -1
  147. package/dist/plugins/code-block/CodeBlockPlugin.d.ts.map +1 -1
  148. package/dist/plugins/code-block/CodeBlockService.d.ts +2 -2
  149. package/dist/plugins/code-block/CodeBlockService.d.ts.map +1 -1
  150. package/dist/plugins/code-block/LanguagePicker.d.ts +14 -0
  151. package/dist/plugins/code-block/LanguagePicker.d.ts.map +1 -0
  152. package/dist/plugins/code-block/highlighter/RegexTokenizer.d.ts.map +1 -1
  153. package/dist/plugins/code-block/highlighter/TokenizerTypes.d.ts +1 -1
  154. package/dist/plugins/code-block/highlighter/TokenizerTypes.d.ts.map +1 -1
  155. package/dist/plugins/code-block/locales/ar.d.ts.map +1 -1
  156. package/dist/plugins/code-block/locales/de.d.ts.map +1 -1
  157. package/dist/plugins/code-block/locales/es.d.ts.map +1 -1
  158. package/dist/plugins/code-block/locales/fr.d.ts.map +1 -1
  159. package/dist/plugins/code-block/locales/hi.d.ts.map +1 -1
  160. package/dist/plugins/code-block/locales/pt.d.ts.map +1 -1
  161. package/dist/plugins/code-block/locales/ru.d.ts.map +1 -1
  162. package/dist/plugins/code-block/locales/zh.d.ts.map +1 -1
  163. package/dist/plugins/code-block.mjs +1 -1
  164. package/dist/plugins/font/FontLocale.d.ts.map +1 -1
  165. package/dist/plugins/font-size/FontSizeLocale.d.ts.map +1 -1
  166. package/dist/plugins/font-size.mjs +1 -1
  167. package/dist/plugins/font.mjs +1 -1
  168. package/dist/plugins/gap-cursor/GapCursorLocale.d.ts.map +1 -1
  169. package/dist/plugins/gap-cursor.mjs +1 -1
  170. package/dist/plugins/hard-break.mjs +1 -1
  171. package/dist/plugins/heading/HeadingLocale.d.ts.map +1 -1
  172. package/dist/plugins/heading.mjs +1 -1
  173. package/dist/plugins/highlight/HighlightLocale.d.ts.map +1 -1
  174. package/dist/plugins/highlight.mjs +1 -1
  175. package/dist/plugins/horizontal-rule/HorizontalRuleLocale.d.ts.map +1 -1
  176. package/dist/plugins/horizontal-rule.mjs +1 -1
  177. package/dist/plugins/image/ImageLocale.d.ts.map +1 -1
  178. package/dist/plugins/image.mjs +1 -1
  179. package/dist/plugins/inline-code/InlineCodeLocale.d.ts.map +1 -1
  180. package/dist/plugins/inline-code.mjs +1 -1
  181. package/dist/plugins/language.mjs +1 -1
  182. package/dist/plugins/link/LinkLocale.d.ts.map +1 -1
  183. package/dist/plugins/link.mjs +1 -1
  184. package/dist/plugins/list/ListLocale.d.ts.map +1 -1
  185. package/dist/plugins/list.mjs +1 -1
  186. package/dist/plugins/print/PrintLocale.d.ts.map +1 -1
  187. package/dist/plugins/print.mjs +1 -1
  188. package/dist/plugins/shared/LocaleLoader.d.ts +49 -0
  189. package/dist/plugins/shared/LocaleLoader.d.ts.map +1 -0
  190. package/dist/plugins/shared/index.d.ts +1 -0
  191. package/dist/plugins/shared/index.d.ts.map +1 -1
  192. package/dist/plugins/shared.mjs +1 -1
  193. package/dist/plugins/smart-paste/SmartPasteLocale.d.ts.map +1 -1
  194. package/dist/plugins/smart-paste.mjs +1 -1
  195. package/dist/plugins/strikethrough/StrikethroughLocale.d.ts.map +1 -1
  196. package/dist/plugins/strikethrough.mjs +1 -1
  197. package/dist/plugins/super-sub/SuperSubLocale.d.ts.map +1 -1
  198. package/dist/plugins/super-sub.mjs +1 -1
  199. package/dist/plugins/table/TableCommands.d.ts.map +1 -1
  200. package/dist/plugins/table/TableLocale.d.ts.map +1 -1
  201. package/dist/plugins/table.mjs +1 -1
  202. package/dist/plugins/text-color/TextColorLocale.d.ts.map +1 -1
  203. package/dist/plugins/text-color.mjs +1 -1
  204. package/dist/plugins/text-direction/TextDirectionLocale.d.ts.map +1 -1
  205. package/dist/plugins/text-direction-advanced.mjs +1 -1
  206. package/dist/plugins/text-direction.mjs +1 -1
  207. package/dist/plugins/text-formatting/TextFormattingLocale.d.ts.map +1 -1
  208. package/dist/plugins/text-formatting.mjs +1 -1
  209. package/dist/plugins/toolbar/ToolbarLocale.d.ts.map +1 -1
  210. package/dist/plugins/toolbar.mjs +1 -1
  211. package/dist/presets/full.mjs +1 -1
  212. package/dist/presets/minimal.mjs +1 -1
  213. package/dist/presets.mjs +1 -1
  214. package/package.json +10 -10
  215. package/dist/chunks/AlignmentPlugin-CD11uRY3.mjs +0 -2
  216. package/dist/chunks/AlignmentPlugin-CD11uRY3.mjs.map +0 -1
  217. package/dist/chunks/BlockquotePlugin-DpMA33pk.mjs +0 -2
  218. package/dist/chunks/BlockquotePlugin-DpMA33pk.mjs.map +0 -1
  219. package/dist/chunks/CaretNavigationPlugin-BxU2lMwX.mjs +0 -2
  220. package/dist/chunks/CaretNavigationPlugin-BxU2lMwX.mjs.map +0 -1
  221. package/dist/chunks/CodeBlockPlugin-CSb6Fxce.mjs +0 -2
  222. package/dist/chunks/CodeBlockPlugin-CSb6Fxce.mjs.map +0 -1
  223. package/dist/chunks/Commands-C7zBYmhA.mjs +0 -2
  224. package/dist/chunks/Commands-C7zBYmhA.mjs.map +0 -1
  225. package/dist/chunks/FontPlugin-CUVcS-40.mjs +0 -2
  226. package/dist/chunks/FontPlugin-CUVcS-40.mjs.map +0 -1
  227. package/dist/chunks/FontSizePlugin-a8YyFsjf.mjs +0 -2
  228. package/dist/chunks/FontSizePlugin-a8YyFsjf.mjs.map +0 -1
  229. package/dist/chunks/GapCursorPlugin-9V0Ne0Sw.mjs +0 -2
  230. package/dist/chunks/GapCursorPlugin-9V0Ne0Sw.mjs.map +0 -1
  231. package/dist/chunks/HeadingPlugin-1BVn57NF.mjs +0 -2
  232. package/dist/chunks/HighlightPlugin-7S6Y_IFY.mjs +0 -2
  233. package/dist/chunks/HighlightPlugin-7S6Y_IFY.mjs.map +0 -1
  234. package/dist/chunks/HorizontalRulePlugin-bZ4nat7E.mjs +0 -2
  235. package/dist/chunks/HorizontalRulePlugin-bZ4nat7E.mjs.map +0 -1
  236. package/dist/chunks/ImagePlugin-wz0SBhFQ.mjs +0 -2
  237. package/dist/chunks/ImagePlugin-wz0SBhFQ.mjs.map +0 -1
  238. package/dist/chunks/InlineCodePlugin-DW5_oiac.mjs +0 -2
  239. package/dist/chunks/InlineCodePlugin-DW5_oiac.mjs.map +0 -1
  240. package/dist/chunks/LinkPlugin-pWzPs-dS.mjs +0 -2
  241. package/dist/chunks/LinkPlugin-pWzPs-dS.mjs.map +0 -1
  242. package/dist/chunks/ListPlugin-Datp4nPR.mjs +0 -2
  243. package/dist/chunks/NodeSelectionCommands-BFHLrE5I.mjs +0 -2
  244. package/dist/chunks/NodeSelectionCommands-BFHLrE5I.mjs.map +0 -1
  245. package/dist/chunks/PluginHelpers-Db50-BRE.mjs +0 -2
  246. package/dist/chunks/PluginHelpers-Db50-BRE.mjs.map +0 -1
  247. package/dist/chunks/PrintPlugin-Dv8_E40e.mjs +0 -2
  248. package/dist/chunks/PrintPlugin-Dv8_E40e.mjs.map +0 -1
  249. package/dist/chunks/SmartPastePlugin-PCLFN5yA.mjs +0 -2
  250. package/dist/chunks/SmartPastePlugin-PCLFN5yA.mjs.map +0 -1
  251. package/dist/chunks/StrikethroughPlugin-J5eDn_sY.mjs +0 -2
  252. package/dist/chunks/StrikethroughPlugin-J5eDn_sY.mjs.map +0 -1
  253. package/dist/chunks/SuperSubPlugin-uSLscUwN.mjs +0 -2
  254. package/dist/chunks/SuperSubPlugin-uSLscUwN.mjs.map +0 -1
  255. package/dist/chunks/TablePlugin-DJHHWTD2.mjs +0 -2
  256. package/dist/chunks/TablePlugin-DJHHWTD2.mjs.map +0 -1
  257. package/dist/chunks/TextColorPlugin-CawTv5pV.mjs +0 -2
  258. package/dist/chunks/TextColorPlugin-CawTv5pV.mjs.map +0 -1
  259. package/dist/chunks/TextDirectionLocale-Kh3r4XQS.mjs +0 -2
  260. package/dist/chunks/TextFormattingPlugin-DKgwX4Gy.mjs +0 -2
  261. package/dist/chunks/TextFormattingPlugin-DKgwX4Gy.mjs.map +0 -1
  262. package/dist/chunks/ToolbarPlugin-BipA0zez.mjs +0 -2
  263. package/dist/chunks/ToolbarPlugin-BipA0zez.mjs.map +0 -1
  264. package/dist/chunks/WordBoundary-DI0G6Wk2.mjs +0 -2
  265. package/dist/chunks/WordBoundary-DI0G6Wk2.mjs.map +0 -1
  266. package/dist/chunks/XmlSupport-UA-iNWTl.mjs +0 -2
  267. package/dist/chunks/XmlSupport-UA-iNWTl.mjs.map +0 -1
  268. package/dist/chunks/ar-DLxmSv7R.mjs +0 -2
  269. package/dist/chunks/de-BnhP65y3.mjs +0 -2
  270. package/dist/chunks/de-BnhP65y3.mjs.map +0 -1
  271. package/dist/chunks/es-BL7KuLOg.mjs.map +0 -1
  272. package/dist/chunks/fr-GSoPohxY.mjs +0 -2
  273. package/dist/chunks/full-DCZ8MMpe.mjs +0 -2
  274. package/dist/chunks/minimal-DmYfqOxb.mjs +0 -2
  275. package/dist/chunks/pt-BattAVOq.mjs.map +0 -1
  276. package/dist/chunks/shared-BLU27F7-.mjs.map +0 -1
  277. package/dist/chunks/src-CgbuJfYr.mjs +0 -2
  278. package/dist/chunks/src-CgbuJfYr.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"PrintLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/print/PrintLocale.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAIvE,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACtC;AAID,eAAO,MAAM,eAAe,EAAE,WAI7B,CAAC;AAQF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAUxE"}
1
+ {"version":3,"file":"PrintLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/print/PrintLocale.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAMvE,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACtC;AAID,eAAO,MAAM,eAAe,EAAE,WAI7B,CAAC;AAQF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAExE"}
@@ -1 +1 @@
1
- import{n as s,r,t as n}from"../chunks/PrintTypes-DTV3-mSe.mjs";import{n as t,r as a,t as m}from"../chunks/PrintPlugin-Dv8_E40e.mjs";export{n as AFTER_PRINT,s as BEFORE_PRINT,t as PRINT_LOCALE_EN,r as PRINT_SERVICE_KEY,m as PrintPlugin,a as loadPrintLocale};
1
+ import{n as s,r,t as n}from"../chunks/PrintTypes-DTV3-mSe.mjs";import{n as t,r as a,t as m}from"../chunks/PrintPlugin-DVRybXSN.mjs";export{n as AFTER_PRINT,s as BEFORE_PRINT,t as PRINT_LOCALE_EN,r as PRINT_SERVICE_KEY,m as PrintPlugin,a as loadPrintLocale};
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Shared helper for loading plugin locale bundles.
3
+ *
4
+ * Rationale:
5
+ * Every notectl plugin used to ship its own copy of a ~15-line locale
6
+ * loader: English shortcut, glob lookup, lazy import, try/catch fallback.
7
+ * The logic is identical across ~23 plugins — only the locale type and
8
+ * the default value change. This helper centralizes the pattern so each
9
+ * plugin's `XxxLocale.ts` shrinks to a handful of lines.
10
+ *
11
+ * Why the glob map still lives in the plugin:
12
+ * `import.meta.glob` is statically resolved by the bundler **relative to
13
+ * the file that calls it**. The helper therefore cannot build the glob
14
+ * itself — each plugin must pass in its own `import.meta.glob(...)`
15
+ * result, and the helper takes care of everything else.
16
+ */
17
+ /**
18
+ * Signature of a single locale loader as produced by `import.meta.glob`.
19
+ * The bundler wraps each matched module in a thunk returning a Promise
20
+ * that resolves to an ES module whose default export is the locale.
21
+ */
22
+ export type LocaleModuleLoader<TLocale> = () => Promise<{
23
+ default: TLocale;
24
+ }>;
25
+ /**
26
+ * Map from the path string emitted by `import.meta.glob` (e.g.
27
+ * `./locales/de.ts`) to its corresponding lazy loader.
28
+ */
29
+ export type LocaleModuleMap<TLocale> = Record<string, LocaleModuleLoader<TLocale>>;
30
+ /**
31
+ * Loads a plugin locale for the requested language with three fallbacks:
32
+ *
33
+ * 1. `lang === 'en'` — returns the default locale immediately, no import.
34
+ * 2. No matching module in the map — returns the default locale.
35
+ * 3. Module import throws — returns the default locale.
36
+ *
37
+ * This is the exact behavior every plugin needs; sharing it removes ~15
38
+ * lines of boilerplate per plugin and guarantees consistent fallback
39
+ * semantics across the entire editor.
40
+ *
41
+ * @param modules The `import.meta.glob('./locales/*.ts', ...)` map from
42
+ * the caller's module. Passing this in from the plugin
43
+ * is mandatory — globs are resolved at the call site.
44
+ * @param lang IETF-style language tag, e.g. `'de'`, `'zh'`, `'en'`.
45
+ * @param fallback English default locale to return when lookup or
46
+ * import fails. Must already be a fully-formed locale.
47
+ */
48
+ export declare function loadLocaleModule<TLocale>(modules: LocaleModuleMap<TLocale>, lang: string, fallback: TLocale): Promise<TLocale>;
49
+ //# sourceMappingURL=LocaleLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocaleLoader.d.ts","sourceRoot":"","sources":["../../../src/plugins/shared/LocaleLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAE9E;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAEnF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAC7C,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAYlB"}
@@ -9,5 +9,6 @@ export { attachGridKeyboard, attachListboxKeyboard, attachMenuKeyboard, type Gri
9
9
  export { PopupManager, PopupServiceKey, type PopupCloseOptions, type PopupConfig, type PopupHandle, type PopupServiceAPI, } from './PopupManager.js';
10
10
  export { appendToRoot, positionPopup, type PopupPosition, type PositionOptions, } from './PopupPositioning.js';
11
11
  export { formatShortcut } from './ShortcutFormatting.js';
12
+ export { loadLocaleModule, type LocaleModuleLoader, type LocaleModuleMap, } from './LocaleLoader.js';
12
13
  export { XML_ATTRS, XML_TAG_NAME } from './XmlPatterns.js';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,KAAK,eAAe,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,eAAe,GACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,YAAY,EACZ,YAAY,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,sBAAsB,EACtB,KAAK,iBAAiB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,aAAa,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,YAAY,EACZ,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,YAAY,EACZ,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,eAAe,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,eAAe,EACf,KAAK,eAAe,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,eAAe,GACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACN,YAAY,EACZ,YAAY,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,sBAAsB,EACtB,KAAK,iBAAiB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EACf,aAAa,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,GACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACN,UAAU,EACV,gBAAgB,EAChB,kBAAkB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,YAAY,EACZ,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,eAAe,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,YAAY,EACZ,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,eAAe,GACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACN,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- import{n as s,r,t as a}from"../chunks/PluginHelpers-Db50-BRE.mjs";import{t as o}from"../chunks/ShortcutFormatting-DE6B8iGs.mjs";import{n as m,r as t,t as n}from"../chunks/KeyboardNav-CsdlWnNl.mjs";import{r as i,t as p}from"../chunks/PopupPositioning-DRNwWB0U.mjs";import{n as u,t as c}from"../chunks/PopupManager-DaTySyZl.mjs";import{a as h,i as k,n as f,r as j,t as e}from"../chunks/ColorValidation-CiGxVsqd.mjs";import{n as l,t as P}from"../chunks/XmlPatterns-Dwmn4nrg.mjs";import{a as d,i as g,n as C,r as v,t as x}from"../chunks/ColorPickerPopup-BwU_WZHh.mjs";import{n as G,r as M,t as b}from"../chunks/ColorGrid-BNDaG3b2.mjs";import{n as w,r as y,t as z}from"../chunks/shared-BLU27F7-.mjs";export{c as PopupManager,u as PopupServiceKey,P as XML_ATTRS,l as XML_TAG_NAME,p as appendToRoot,C as applyColorMark,n as applyRovingTabindex,z as attachGridKeyboard,w as attachListboxKeyboard,y as attachMenuKeyboard,a as capitalize,m as findNextDropdownItem,o as formatShortcut,v as getActiveColor,G as getColorName,s as getSelectedBlock,r as getSelectedBlockId,g as isColorMarkActive,M as isLightColor,e as isValidCSSColor,f as isValidCSSFontFamily,j as isValidCSSFontSize,k as isValidHexColor,t as navigateGrid,i as positionPopup,d as removeColorMark,b as renderColorGrid,x as renderColorPickerPopup,h as resolveColors};
1
+ import{n as s,o as a,r,t as o}from"../chunks/PluginHelpers-D1QF-YaF.mjs";import{t as m}from"../chunks/ShortcutFormatting-DE6B8iGs.mjs";import{n as t,r as n,t as i}from"../chunks/KeyboardNav-CsdlWnNl.mjs";import{r as p,t as u}from"../chunks/PopupPositioning-DRNwWB0U.mjs";import{n as c,t as h}from"../chunks/PopupManager-DaTySyZl.mjs";import{a as k,i as f,n as j,r as e,t as P}from"../chunks/ColorValidation-CiGxVsqd.mjs";import{n as l,t as d}from"../chunks/XmlPatterns-Dwmn4nrg.mjs";import{n as g,r as C,t as b}from"../chunks/PopupKeyboardPatterns-DhcUe29m.mjs";import{a as v,i as x,n as y,r as G,t as H}from"../chunks/ColorPickerPopup-CvE90IAu.mjs";import{n as K,r as M,t as N}from"../chunks/ColorGrid-BUSIBKZH.mjs";export{h as PopupManager,c as PopupServiceKey,d as XML_ATTRS,l as XML_TAG_NAME,u as appendToRoot,y as applyColorMark,i as applyRovingTabindex,b as attachGridKeyboard,g as attachListboxKeyboard,C as attachMenuKeyboard,o as capitalize,t as findNextDropdownItem,m as formatShortcut,G as getActiveColor,K as getColorName,s as getSelectedBlock,r as getSelectedBlockId,x as isColorMarkActive,M as isLightColor,P as isValidCSSColor,j as isValidCSSFontFamily,e as isValidCSSFontSize,f as isValidHexColor,a as loadLocaleModule,n as navigateGrid,p as positionPopup,v as removeColorMark,N as renderColorGrid,H as renderColorPickerPopup,k as resolveColors};
@@ -1 +1 @@
1
- {"version":3,"file":"SmartPasteLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/smart-paste/SmartPasteLocale.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3D,QAAQ,CAAC,oBAAoB,EAAE,CAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,MAAM,EAAE,KACxB,MAAM,CAAC;CACZ;AAED,eAAO,MAAM,qBAAqB,EAAE,gBAcnC,CAAC;AAKF,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAUlF"}
1
+ {"version":3,"file":"SmartPasteLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/smart-paste/SmartPasteLocale.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAI5E,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3D,QAAQ,CAAC,oBAAoB,EAAE,CAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,SAAS,MAAM,EAAE,KACxB,MAAM,CAAC;CACZ;AAED,eAAO,MAAM,qBAAqB,EAAE,gBAcnC,CAAC;AAMF,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAElF"}
@@ -1 +1 @@
1
- import{n as s,r as a,t as r}from"../chunks/XmlDetector-DlRdJOIX.mjs";import{i as t,n as m,r as o,t as n}from"../chunks/SmartPastePlugin-PCLFN5yA.mjs";export{a as JavaDetector,s as JsonDetector,o as SMART_PASTE_LOCALE_EN,m as SMART_PASTE_SERVICE_KEY,n as SmartPastePlugin,r as XmlDetector,t as loadSmartPasteLocale};
1
+ import{n as s,r as a,t as r}from"../chunks/XmlDetector-DlRdJOIX.mjs";import{i as t,n as m,r as o,t as n}from"../chunks/SmartPastePlugin-i96yAnXZ.mjs";export{a as JavaDetector,s as JsonDetector,o as SMART_PASTE_LOCALE_EN,m as SMART_PASTE_SERVICE_KEY,n as SmartPastePlugin,r as XmlDetector,t as loadSmartPasteLocale};
@@ -1 +1 @@
1
- {"version":3,"file":"StrikethroughLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/strikethrough/StrikethroughLocale.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAID,eAAO,MAAM,uBAAuB,EAAE,mBAGrC,CAAC;AAOF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAUxF"}
1
+ {"version":3,"file":"StrikethroughLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/strikethrough/StrikethroughLocale.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAID,eAAO,MAAM,uBAAuB,EAAE,mBAGrC,CAAC;AAQF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAExF"}
@@ -1 +1 @@
1
- import{n as r,r as s,t}from"../chunks/StrikethroughPlugin-J5eDn_sY.mjs";export{r as STRIKETHROUGH_LOCALE_EN,t as StrikethroughPlugin,s as loadStrikethroughLocale};
1
+ import{n as r,r as s,t}from"../chunks/StrikethroughPlugin-RGZATXUZ.mjs";export{r as STRIKETHROUGH_LOCALE_EN,t as StrikethroughPlugin,s as loadStrikethroughLocale};
@@ -1 +1 @@
1
- {"version":3,"file":"SuperSubLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/super-sub/SuperSubLocale.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CACxD;AAID,eAAO,MAAM,mBAAmB,EAAE,cAKjC,CAAC;AAQF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAU9E"}
1
+ {"version":3,"file":"SuperSubLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/super-sub/SuperSubLocale.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CACxD;AAID,eAAO,MAAM,mBAAmB,EAAE,cAKjC,CAAC;AAQF,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAE9E"}
@@ -1 +1 @@
1
- import{n as r,r as s,t as u}from"../chunks/SuperSubPlugin-uSLscUwN.mjs";export{r as SUPER_SUB_LOCALE_EN,u as SuperSubPlugin,s as loadSuperSubLocale};
1
+ import{n as r,r as s,t as u}from"../chunks/SuperSubPlugin-BOWFP1Kr.mjs";export{r as SUPER_SUB_LOCALE_EN,u as SuperSubPlugin,s as loadSuperSubLocale};
@@ -1 +1 @@
1
- {"version":3,"file":"TableCommands.d.ts","sourceRoot":"","sources":["../../../src/plugins/table/TableCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,2BAA2B,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAUlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,sEAAsE;AACtE,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,GACd,WAAW,GAAG,IAAI,CAoBpB;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,GACd,WAAW,GAAG,IAAI,CAcpB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,SAAI,GACd,WAAW,GAAG,IAAI,CAmBpB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,SAAI,GACd,WAAW,GAAG,IAAI,CA2BpB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,GACd,WAAW,GAAG,IAAI,CAkCpB;AAQD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAiDvF;AAED,wCAAwC;AACxC,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAYhF;AAED,wCAAwC;AACxC,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAYhF;AAED,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAElF;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAEnF;AAiBD,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAiB9E;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAiBjF;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAUhF;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAsB3D;AAED,gEAAgE;AAChE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAUvF"}
1
+ {"version":3,"file":"TableCommands.d.ts","sourceRoot":"","sources":["../../../src/plugins/table/TableCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAgBH,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,2BAA2B,CAAC;AAEvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAUlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,sEAAsE;AACtE,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,GACd,WAAW,GAAG,IAAI,CAoBpB;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,GACd,WAAW,GAAG,IAAI,CAcpB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,SAAI,GACd,WAAW,GAAG,IAAI,CAmBpB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,YAAY,SAAI,GACd,WAAW,GAAG,IAAI,CA2BpB;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC3C,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,OAAO,GACd,WAAW,GAAG,IAAI,CAmCpB;AAQD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAiDvF;AAED,wCAAwC;AACxC,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAYhF;AAED,wCAAwC;AACxC,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAYhF;AAED,uDAAuD;AACvD,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAElF;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAEnF;AAiBD,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAiB9E;AAED,qFAAqF;AACrF,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAiBjF;AAED,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAUhF;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAsB3D;AAED,gEAAgE;AAChE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,CAUvF"}
@@ -1 +1 @@
1
- {"version":3,"file":"TableLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/table/TableLocale.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,WAAW;IAE3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAG7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAGlC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAG7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/D,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAG1D,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAGtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAG7B,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACtC;AAID,eAAO,MAAM,eAAe,EAAE,WA8C7B,CAAC;AAQF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAUxE"}
1
+ {"version":3,"file":"TableLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/table/TableLocale.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,WAAW;IAE3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAG7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAGlC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAG7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/D,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAG1D,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAGtC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAG7B,QAAQ,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;CACtC;AAID,eAAO,MAAM,eAAe,EAAE,WA8C7B,CAAC;AAQF,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAExE"}
@@ -1 +1 @@
1
- import{n as s,t as a}from"../chunks/TablePlugin-DJHHWTD2.mjs";export{a as TablePlugin,s as TableSelectionServiceKey};
1
+ import{n as s,t as a}from"../chunks/TablePlugin-DZTMBkyu.mjs";export{a as TablePlugin,s as TableSelectionServiceKey};
@@ -1 +1 @@
1
- {"version":3,"file":"TextColorLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/text-color/TextColorLocale.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAI3E,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CACjC;AAID,eAAO,MAAM,oBAAoB,EAAE,eAKlC,CAAC;AAOF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAUhF"}
1
+ {"version":3,"file":"TextColorLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/text-color/TextColorLocale.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAM3E,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CACjC;AAID,eAAO,MAAM,oBAAoB,EAAE,eAKlC,CAAC;AAQF,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAEhF"}
@@ -1 +1 @@
1
- import{n as o,r,t as s}from"../chunks/TextColorPlugin-CawTv5pV.mjs";export{o as TEXT_COLOR_LOCALE_EN,s as TextColorPlugin,r as loadTextColorLocale};
1
+ import{n as o,r,t as s}from"../chunks/TextColorPlugin-CB3RpTSQ.mjs";export{o as TEXT_COLOR_LOCALE_EN,s as TextColorPlugin,r as loadTextColorLocale};
@@ -1 +1 @@
1
- {"version":3,"file":"TextDirectionLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/text-direction/TextDirectionLocale.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACpC;AAID,eAAO,MAAM,wBAAwB,EAAE,mBAetC,CAAC;AAOF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAUxF"}
1
+ {"version":3,"file":"TextDirectionLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/text-direction/TextDirectionLocale.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAI/E,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACpC;AAID,eAAO,MAAM,wBAAwB,EAAE,mBAetC,CAAC;AAQF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAExF"}
@@ -1 +1 @@
1
- import{a,i as s,n as t,o as e,t as i}from"../chunks/TextDirectionLocale-Kh3r4XQS.mjs";import{n,t as o}from"../chunks/text-direction-advanced-CkFu0K_I.mjs";export{o as DIRECTION_ICONS,i as TEXT_DIRECTION_LOCALE_EN,n as TextDirectionAdvancedPlugin,s as detectTextDirection,a as findSiblingDirection,e as getBlockDir,t as loadTextDirectionLocale};
1
+ import{a,i as s,n as t,o as e,t as i}from"../chunks/TextDirectionLocale-_AUfZu9j.mjs";import{n,t as o}from"../chunks/text-direction-advanced-S4MgVMLX.mjs";export{o as DIRECTION_ICONS,i as TEXT_DIRECTION_LOCALE_EN,n as TextDirectionAdvancedPlugin,s as detectTextDirection,a as findSiblingDirection,e as getBlockDir,t as loadTextDirectionLocale};
@@ -1 +1 @@
1
- import{a as s,i,n as o,o as t,t as a}from"../chunks/TextDirectionLocale-Kh3r4XQS.mjs";import{n as e,t as n}from"../chunks/TextDirectionCorePlugin-CXCxX532.mjs";export{n as DIRECTION_ICONS,a as TEXT_DIRECTION_LOCALE_EN,e as TextDirectionPlugin,i as detectTextDirection,s as findSiblingDirection,t as getBlockDir,o as loadTextDirectionLocale};
1
+ import{a as s,i,n as o,o as t,t as a}from"../chunks/TextDirectionLocale-_AUfZu9j.mjs";import{n as e,t as n}from"../chunks/TextDirectionCorePlugin-tNecTcrX.mjs";export{n as DIRECTION_ICONS,a as TEXT_DIRECTION_LOCALE_EN,e as TextDirectionPlugin,i as detectTextDirection,s as findSiblingDirection,t as getBlockDir,o as loadTextDirectionLocale};
@@ -1 +1 @@
1
- {"version":3,"file":"TextFormattingLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/text-formatting/TextFormattingLocale.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CAChC;AAID,eAAO,MAAM,yBAAyB,EAAE,oBAIvC,CAAC;AAOF,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAU1F"}
1
+ {"version":3,"file":"TextFormattingLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/text-formatting/TextFormattingLocale.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CAChC;AAID,eAAO,MAAM,yBAAyB,EAAE,oBAIvC,CAAC;AAQF,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAE1F"}
@@ -1 +1 @@
1
- import{n as t,r,t as s}from"../chunks/TextFormattingPlugin-DKgwX4Gy.mjs";export{t as TEXT_FORMATTING_LOCALE_EN,s as TextFormattingPlugin,r as loadTextFormattingLocale};
1
+ import{n as t,r,t as s}from"../chunks/TextFormattingPlugin-CZ6D-luc.mjs";export{t as TEXT_FORMATTING_LOCALE_EN,s as TextFormattingPlugin,r as loadTextFormattingLocale};
@@ -1 +1 @@
1
- {"version":3,"file":"ToolbarLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/toolbar/ToolbarLocale.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAIzE,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjE;AAID,eAAO,MAAM,iBAAiB,EAAE,aAI/B,CAAC;AAQF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAU5E"}
1
+ {"version":3,"file":"ToolbarLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/toolbar/ToolbarLocale.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAMzE,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACjE;AAID,eAAO,MAAM,iBAAiB,EAAE,aAI/B,CAAC;AAQF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAE5E"}
@@ -1 +1 @@
1
- import{a,i as s,n as o,o as r,r as i,t as m}from"../chunks/ToolbarPlugin-BipA0zez.mjs";export{s as TOOLBAR_LOCALE_EN,i as ToolbarOverflowBehavior,m as ToolbarPlugin,r as ToolbarRegistry,o as ToolbarServiceKey,a as loadToolbarLocale};
1
+ import{a,i as s,n as o,o as r,r as i,t as m}from"../chunks/ToolbarPlugin-2K96zYut.mjs";export{s as TOOLBAR_LOCALE_EN,i as ToolbarOverflowBehavior,m as ToolbarPlugin,r as ToolbarRegistry,o as ToolbarServiceKey,a as loadToolbarLocale};
@@ -1 +1 @@
1
- import{t as m}from"../chunks/full-DCZ8MMpe.mjs";export{m as createFullPreset};
1
+ import{t as m}from"../chunks/full-B9IqlP6u.mjs";export{m as createFullPreset};
@@ -1 +1 @@
1
- import{t as m}from"../chunks/minimal-DmYfqOxb.mjs";export{m as createMinimalPreset};
1
+ import{t as m}from"../chunks/minimal-J-u7e_pr.mjs";export{m as createMinimalPreset};
package/dist/presets.mjs CHANGED
@@ -1 +1 @@
1
- import{t as m}from"./chunks/minimal-DmYfqOxb.mjs";import{t as s}from"./chunks/full-DCZ8MMpe.mjs";export{s as createFullPreset,m as createMinimalPreset};
1
+ import{t as m}from"./chunks/minimal-J-u7e_pr.mjs";import{t as s}from"./chunks/full-B9IqlP6u.mjs";export{s as createFullPreset,m as createMinimalPreset};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@notectl/core",
3
- "version": "2.0.7",
3
+ "version": "2.0.8",
4
4
  "description": "A modern and accessible rich text editor shipped as a single Web Component. Immutable state, transaction-based architecture, and a plugin system that powers every feature.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -185,7 +185,7 @@
185
185
  {
186
186
  "name": "Core (main entry)",
187
187
  "path": "dist/notectl-core.mjs",
188
- "limit": "75 KB",
188
+ "limit": "76 KB",
189
189
  "gzip": true
190
190
  },
191
191
  {
@@ -197,7 +197,7 @@
197
197
  {
198
198
  "name": "Presets (full)",
199
199
  "path": "dist/presets/full.mjs",
200
- "limit": "68 KB",
200
+ "limit": "88 KB",
201
201
  "gzip": true
202
202
  },
203
203
  {
@@ -251,13 +251,13 @@
251
251
  {
252
252
  "name": "Plugin: Code Block",
253
253
  "path": "dist/plugins/code-block.mjs",
254
- "limit": "15 KB",
254
+ "limit": "18 KB",
255
255
  "gzip": true
256
256
  },
257
257
  {
258
258
  "name": "Plugin: Smart Paste",
259
259
  "path": "dist/plugins/smart-paste.mjs",
260
- "limit": "5 KB",
260
+ "limit": "6 KB",
261
261
  "gzip": true
262
262
  },
263
263
  {
@@ -335,7 +335,7 @@
335
335
  {
336
336
  "name": "Plugin: Print",
337
337
  "path": "dist/plugins/print.mjs",
338
- "limit": "5 KB",
338
+ "limit": "16 KB",
339
339
  "gzip": true
340
340
  },
341
341
  {
@@ -353,7 +353,7 @@
353
353
  {
354
354
  "name": "Plugin: Caret Navigation",
355
355
  "path": "dist/plugins/caret-navigation.mjs",
356
- "limit": "5 KB",
356
+ "limit": "7 KB",
357
357
  "gzip": true
358
358
  },
359
359
  {
@@ -365,13 +365,13 @@
365
365
  {
366
366
  "name": "Plugin: Text Direction Advanced",
367
367
  "path": "dist/plugins/text-direction-advanced.mjs",
368
- "limit": "5 KB",
368
+ "limit": "7 KB",
369
369
  "gzip": true
370
370
  },
371
371
  {
372
372
  "name": "Full (kitchen sink)",
373
373
  "path": "dist/full.mjs",
374
- "limit": "375 KB",
374
+ "limit": "390 KB",
375
375
  "gzip": true
376
376
  }
377
377
  ],
@@ -384,7 +384,7 @@
384
384
  "rollup-plugin-visualizer": "^7.0.1",
385
385
  "size-limit": "^12.0.1",
386
386
  "terser": "^5.46.1",
387
- "vite": "^8.0.3",
387
+ "vite": "^8.0.8",
388
388
  "vite-plugin-dts": "^4.5.4",
389
389
  "vitest": "^4.1.2"
390
390
  }
@@ -1,2 +0,0 @@
1
- import{s as t}from"./StyleRuntime-D3d1XFFe.mjs";import{i as e,n as s,r as i,t as n}from"./PluginHelpers-Db50-BRE.mjs";var a={alignStart:"Align Start",alignCenter:"Align Center",alignEnd:"Align End",justify:"Justify",toolbarLabel:"Alignment",toolbarTooltip:"Alignment"},l=/* @__PURE__ */Object.assign({"./locales/ar.ts":()=>import("./ar-ByNQ-o3t.mjs"),"./locales/de.ts":()=>import("./de-q2xHBWVU.mjs"),"./locales/es.ts":()=>import("./es-Bwy7v223.mjs"),"./locales/fr.ts":()=>import("./fr-hStmLXCS.mjs"),"./locales/hi.ts":()=>import("./hi-BE4pkSYX.mjs"),"./locales/pt.ts":()=>import("./pt-Bb3sODVO.mjs"),"./locales/ru.ts":()=>import("./ru-DftPghQ8.mjs"),"./locales/zh.ts":()=>import("./zh-DSfxjb4Y.mjs")});async function r(t){if("en"===t)return a;const e=l[`./locales/${t}.ts`];if(!e)return a;try{return(await e()).default}catch{return a}}var o={alignments:["start","center","end","justify"],alignableTypes:["paragraph","heading","title","subtitle","table_cell","image"],defaults:{image:"center"}},g={start:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15 15H3v2h12v-2zm0-8H3v2h12V7zM3 13h18v-2H3v2zm0 8h18v-2H3v2zM3 3v2h18V3H3z"/></svg>',center:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 15v2h10v-2H7zm-4 6h18v-2H3v2zm0-8h18v-2H3v2zm4-6v2h10V7H7zM3 3v2h18V3H3z"/></svg>',end:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 21h18v-2H3v2zm6-4h12v-2H9v2zm-6-4h18v-2H3v2zm6-4h12V7H9v2zM3 3v2h18V3H3z"/></svg>',justify:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 21h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18V7H3v2zM3 3v2h18V3H3z"/></svg>'},c=class{id="alignment";name="Alignment";priority=90;config;locale;alignableTypes;constructor(t){this.config={...o,...t,defaults:{...o.defaults,...t?.defaults}}}async init(t){this.locale=await e(t,this.config.locale,a,r),this.alignableTypes=new Set(this.config.alignableTypes),this.patchNodeSpecs(t),this.registerCommands(t),this.registerKeymaps(t),this.registerToolbarItem(t),this.registerMiddleware(t)}patchNodeSpecs(t){const e=t.getSchemaRegistry();for(const s of this.config.alignableTypes){const t=e.getNodeSpec(s);if(!t)continue;if(t.attrs?.align)continue;const i=t.toDOM,n=this.config.defaults[s]??"start";e.removeNodeSpec(s),e.registerNodeSpec({...t,attrs:{...t.attrs,align:{default:n}},toDOM(e){const s=i.call(t,e);return m(s,e),s}})}}registerCommands(t){for(const e of this.config.alignments)t.registerCommand(`align${n(e)}`,()=>this.setAlignment(t,e))}registerKeymaps(t){const e={};this.config.alignments.includes("start")&&(e["Mod-Shift-L"]=()=>t.executeCommand("alignStart")),this.config.alignments.includes("center")&&(e["Mod-Shift-E"]=()=>t.executeCommand("alignCenter")),this.config.alignments.includes("end")&&(e["Mod-Shift-R"]=()=>t.executeCommand("alignEnd")),this.config.alignments.includes("justify")&&(e["Mod-Shift-J"]=()=>t.executeCommand("alignJustify")),Object.keys(e).length>0&&t.registerKeymap(e)}registerToolbarItem(t){const e=this.config.alignments.map(t=>({label:this.getAlignmentLabel(t),command:`align${n(t)}`,icon:g[t]}));t.registerToolbarItem({id:"alignment",group:"block",icon:g.start,label:this.locale.toolbarLabel,tooltip:this.locale.toolbarTooltip,command:"alignStart",popupType:"dropdown",popupConfig:{items:e},isActive:t=>this.isNonDefaultAlignment(t),isEnabled:t=>this.isAlignable(t)})}getAlignmentLabel(t){return{start:this.locale.alignStart,center:this.locale.alignCenter,end:this.locale.alignEnd,justify:this.locale.justify}[t]}registerMiddleware(t){t.registerMiddleware((t,e,s)=>{let i=!1;const n=t.steps.map(t=>{if("setBlockType"!==t.type)return t;if(!this.alignableTypes.has(t.nodeType))return t;const e=t.previousAttrs?.align;return e&&"start"!==e?(i=!0,{...t,attrs:{...t.attrs,align:e}}):t});s(i?{...t,steps:n}:t)},{name:"alignment:preserve-align"})}setAlignment(t,e){const n=t.getState(),a=s(n);if(!a||!this.alignableTypes.has(a.type))return!1;const l=i(n);if(!l)return!1;const r=n.getNodePath(l);if(!r)return!1;const o={...a.attrs,align:e},g=n.transaction("command").setNodeAttr(r,o).setSelection(n.selection).build();return t.dispatch(g),!0}isNonDefaultAlignment(t){const e=s(t);if(!e||!this.alignableTypes.has(e.type))return!1;const i=e.attrs?.align,n=this.config.defaults[e.type]??"start";return null!=i&&i!==n}isAlignable(t){const e=s(t);return null!=e&&this.alignableTypes.has(e.type)}};function m(e,s){const i=s.attrs?.align;"string"==typeof i&&"start"!==i&&t(e,"textAlign",i)}export{r as i,c as n,a as r,g as t};
2
- //# sourceMappingURL=AlignmentPlugin-CD11uRY3.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AlignmentPlugin-CD11uRY3.mjs","names":[],"sources":["../../src/plugins/alignment/AlignmentLocale.ts","../../src/plugins/alignment/AlignmentPlugin.ts"],"sourcesContent":["/** Locale interface and default English locale for the AlignmentPlugin. */\n\nexport interface AlignmentLocale {\n\treadonly alignStart: string;\n\treadonly alignCenter: string;\n\treadonly alignEnd: string;\n\treadonly justify: string;\n\treadonly toolbarLabel: string;\n\treadonly toolbarTooltip: string;\n}\n\n// --- Default English Locale ---\n\nexport const ALIGNMENT_LOCALE_EN: AlignmentLocale = {\n\talignStart: 'Align Start',\n\talignCenter: 'Align Center',\n\talignEnd: 'Align End',\n\tjustify: 'Justify',\n\ttoolbarLabel: 'Alignment',\n\ttoolbarTooltip: 'Alignment',\n};\n\n// --- Lazy Locale Loader ---\n\nconst localeModules: Record<string, () => Promise<{ default: AlignmentLocale }>> =\n\timport.meta.glob<{ default: AlignmentLocale }>('./locales/*.ts', { eager: false });\n\nexport async function loadAlignmentLocale(lang: string): Promise<AlignmentLocale> {\n\tif (lang === 'en') return ALIGNMENT_LOCALE_EN;\n\tconst loader = localeModules[`./locales/${lang}.ts`];\n\tif (!loader) return ALIGNMENT_LOCALE_EN;\n\ttry {\n\t\tconst mod = await loader();\n\t\treturn mod.default;\n\t} catch {\n\t\treturn ALIGNMENT_LOCALE_EN;\n\t}\n}\n","/**\n * AlignmentPlugin: adds start/center/end/justify alignment as a block\n * attribute on paragraphs, headings, images, and other alignable types.\n * Uses logical values (`start`/`end`) instead of physical (`left`/`right`)\n * for correct behavior with RTL text direction. Patches NodeSpecs to render\n * the `align` attribute via inline `text-align` style and provides toggle\n * commands, keyboard shortcuts, and a toolbar dropdown.\n */\n\nimport type { BlockAlignment } from '../../model/BlockAlignment.js';\nimport type { BlockNode } from '../../model/Document.js';\nimport type { BlockId } from '../../model/TypeBrands.js';\nimport type { EditorState } from '../../state/EditorState.js';\nimport { setStyleProperty } from '../../style/StyleRuntime.js';\nimport type { Plugin, PluginContext } from '../Plugin.js';\nimport {\n\tcapitalize,\n\tgetSelectedBlock,\n\tgetSelectedBlockId,\n\tresolveLocale,\n} from '../shared/PluginHelpers.js';\nimport {\n\tALIGNMENT_LOCALE_EN,\n\ttype AlignmentLocale,\n\tloadAlignmentLocale,\n} from './AlignmentLocale.js';\n\n// --- Public Types ---\n\nexport interface AlignmentConfig {\n\t/** Which alignments to expose. Defaults to all four. */\n\treadonly alignments: readonly BlockAlignment[];\n\t/** Block types that support alignment. Defaults to paragraph + heading + title + subtitle + table_cell + image. */\n\treadonly alignableTypes: readonly string[];\n\t/** Per-type default alignment (e.g. `{ image: 'center' }`). Falls back to `'start'`. */\n\treadonly defaults: Readonly<Record<string, BlockAlignment>>;\n\treadonly locale?: AlignmentLocale;\n}\n\n// --- Constants ---\n\nconst DEFAULT_CONFIG: AlignmentConfig = {\n\talignments: ['start', 'center', 'end', 'justify'],\n\talignableTypes: ['paragraph', 'heading', 'title', 'subtitle', 'table_cell', 'image'],\n\tdefaults: { image: 'center' },\n};\n\nexport const ALIGNMENT_ICONS: Readonly<Record<BlockAlignment, string>> = {\n\tstart:\n\t\t'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M15 15H3v2h12v-2zm0-8H3v2h12V7zM3 13h18v-2H3v2zm0 8h18v-2H3v2zM3 3v2h18V3H3z\"/></svg>',\n\tcenter:\n\t\t'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M7 15v2h10v-2H7zm-4 6h18v-2H3v2zm0-8h18v-2H3v2zm4-6v2h10V7H7zM3 3v2h18V3H3z\"/></svg>',\n\tend: '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M3 21h18v-2H3v2zm6-4h12v-2H9v2zm-6-4h18v-2H3v2zm6-4h12V7H9v2zM3 3v2h18V3H3z\"/></svg>',\n\tjustify:\n\t\t'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M3 21h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18V7H3v2zM3 3v2h18V3H3z\"/></svg>',\n};\n\n// --- Plugin ---\n\nexport class AlignmentPlugin implements Plugin {\n\treadonly id = 'alignment';\n\treadonly name = 'Alignment';\n\treadonly priority = 90;\n\n\tprivate readonly config: AlignmentConfig;\n\tprivate locale!: AlignmentLocale;\n\tprivate alignableTypes!: ReadonlySet<string>;\n\n\tconstructor(config?: Partial<AlignmentConfig>) {\n\t\tthis.config = {\n\t\t\t...DEFAULT_CONFIG,\n\t\t\t...config,\n\t\t\tdefaults: { ...DEFAULT_CONFIG.defaults, ...config?.defaults },\n\t\t};\n\t}\n\n\tasync init(context: PluginContext): Promise<void> {\n\t\tthis.locale = await resolveLocale(\n\t\t\tcontext,\n\t\t\tthis.config.locale,\n\t\t\tALIGNMENT_LOCALE_EN,\n\t\t\tloadAlignmentLocale,\n\t\t);\n\n\t\tthis.alignableTypes = new Set(this.config.alignableTypes);\n\t\tthis.patchNodeSpecs(context);\n\t\tthis.registerCommands(context);\n\t\tthis.registerKeymaps(context);\n\t\tthis.registerToolbarItem(context);\n\t\tthis.registerMiddleware(context);\n\t}\n\n\t// --- NodeSpec Patching ---\n\n\t/**\n\t * Patches existing NodeSpecs for alignable block types to support the\n\t * `align` attribute and render it as an inline style. Skips types\n\t * that already define an `align` attribute in their spec.\n\t */\n\tprivate patchNodeSpecs(context: PluginContext): void {\n\t\tconst registry = context.getSchemaRegistry();\n\n\t\tfor (const type of this.config.alignableTypes) {\n\t\t\tconst spec = registry.getNodeSpec(type);\n\t\t\tif (!spec) continue;\n\n\t\t\t// Skip types that already declare an `align` attr (e.g. image)\n\t\t\tif (spec.attrs?.align) continue;\n\n\t\t\tconst originalToDOM = spec.toDOM;\n\t\t\tconst defaultAlign: BlockAlignment = this.config.defaults[type] ?? 'start';\n\n\t\t\tregistry.removeNodeSpec(type);\n\t\t\tregistry.registerNodeSpec({\n\t\t\t\t...spec,\n\t\t\t\tattrs: {\n\t\t\t\t\t...spec.attrs,\n\t\t\t\t\talign: { default: defaultAlign },\n\t\t\t\t},\n\t\t\t\ttoDOM(node) {\n\t\t\t\t\tconst el = originalToDOM.call(spec, node);\n\t\t\t\t\tapplyAlignment(el, node);\n\t\t\t\t\treturn el;\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n\n\t// --- Commands ---\n\n\tprivate registerCommands(context: PluginContext): void {\n\t\tfor (const alignment of this.config.alignments) {\n\t\t\tcontext.registerCommand(`align${capitalize(alignment)}`, () => {\n\t\t\t\treturn this.setAlignment(context, alignment);\n\t\t\t});\n\t\t}\n\t}\n\n\t// --- Keymaps ---\n\n\tprivate registerKeymaps(context: PluginContext): void {\n\t\tconst bindings: Record<string, () => boolean> = {};\n\n\t\tif (this.config.alignments.includes('start')) {\n\t\t\tbindings['Mod-Shift-L'] = () => context.executeCommand('alignStart');\n\t\t}\n\t\tif (this.config.alignments.includes('center')) {\n\t\t\tbindings['Mod-Shift-E'] = () => context.executeCommand('alignCenter');\n\t\t}\n\t\tif (this.config.alignments.includes('end')) {\n\t\t\tbindings['Mod-Shift-R'] = () => context.executeCommand('alignEnd');\n\t\t}\n\t\tif (this.config.alignments.includes('justify')) {\n\t\t\tbindings['Mod-Shift-J'] = () => context.executeCommand('alignJustify');\n\t\t}\n\n\t\tif (Object.keys(bindings).length > 0) {\n\t\t\tcontext.registerKeymap(bindings);\n\t\t}\n\t}\n\n\t// --- Toolbar ---\n\n\tprivate registerToolbarItem(context: PluginContext): void {\n\t\tconst dropdownItems = this.config.alignments.map((alignment) => ({\n\t\t\tlabel: this.getAlignmentLabel(alignment),\n\t\t\tcommand: `align${capitalize(alignment)}`,\n\t\t\ticon: ALIGNMENT_ICONS[alignment],\n\t\t}));\n\n\t\tcontext.registerToolbarItem({\n\t\t\tid: 'alignment',\n\t\t\tgroup: 'block',\n\t\t\ticon: ALIGNMENT_ICONS.start,\n\t\t\tlabel: this.locale.toolbarLabel,\n\t\t\ttooltip: this.locale.toolbarTooltip,\n\t\t\tcommand: 'alignStart',\n\t\t\tpopupType: 'dropdown',\n\t\t\tpopupConfig: { items: dropdownItems },\n\t\t\tisActive: (state) => this.isNonDefaultAlignment(state),\n\t\t\tisEnabled: (state) => this.isAlignable(state),\n\t\t});\n\t}\n\n\tprivate getAlignmentLabel(alignment: BlockAlignment): string {\n\t\tconst labels: Record<BlockAlignment, string> = {\n\t\t\tstart: this.locale.alignStart,\n\t\t\tcenter: this.locale.alignCenter,\n\t\t\tend: this.locale.alignEnd,\n\t\t\tjustify: this.locale.justify,\n\t\t};\n\t\treturn labels[alignment];\n\t}\n\n\t// --- Middleware ---\n\n\t/**\n\t * Preserves the `align` attribute when other plugins change the block\n\t * type (e.g. paragraph → heading) via `setBlockType`, which replaces attrs.\n\t */\n\tprivate registerMiddleware(context: PluginContext): void {\n\t\tcontext.registerMiddleware(\n\t\t\t(tr, _state, next) => {\n\t\t\t\tlet patched = false;\n\n\t\t\t\tconst patchedSteps = tr.steps.map((step) => {\n\t\t\t\t\tif (step.type !== 'setBlockType') return step;\n\t\t\t\t\tif (!this.alignableTypes.has(step.nodeType)) return step;\n\n\t\t\t\t\tconst prevAlign = step.previousAttrs?.align;\n\t\t\t\t\tif (!prevAlign || prevAlign === 'start') return step;\n\n\t\t\t\t\t// Carry forward align into new attrs\n\t\t\t\t\tpatched = true;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...step,\n\t\t\t\t\t\tattrs: { ...step.attrs, align: prevAlign },\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\tnext(patched ? { ...tr, steps: patchedSteps } : tr);\n\t\t\t},\n\t\t\t{ name: 'alignment:preserve-align' },\n\t\t);\n\t}\n\n\t// --- Alignment Logic ---\n\n\tprivate setAlignment(context: PluginContext, alignment: BlockAlignment): boolean {\n\t\tconst state = context.getState();\n\t\tconst block = getSelectedBlock(state);\n\t\tif (!block || !this.alignableTypes.has(block.type)) return false;\n\n\t\tconst id = getSelectedBlockId(state);\n\t\tif (!id) return false;\n\n\t\tconst path = state.getNodePath(id);\n\t\tif (!path) return false;\n\n\t\tconst newAttrs = { ...block.attrs, align: alignment };\n\n\t\tconst tr = state\n\t\t\t.transaction('command')\n\t\t\t.setNodeAttr(path as BlockId[], newAttrs)\n\t\t\t.setSelection(state.selection)\n\t\t\t.build();\n\n\t\tcontext.dispatch(tr);\n\t\treturn true;\n\t}\n\n\tprivate isNonDefaultAlignment(state: EditorState): boolean {\n\t\tconst block = getSelectedBlock(state);\n\t\tif (!block || !this.alignableTypes.has(block.type)) return false;\n\t\tconst align = block.attrs?.align;\n\t\tconst defaultAlign: BlockAlignment = this.config.defaults[block.type] ?? 'start';\n\t\treturn align != null && align !== defaultAlign;\n\t}\n\n\tprivate isAlignable(state: EditorState): boolean {\n\t\tconst block = getSelectedBlock(state);\n\t\treturn block != null && this.alignableTypes.has(block.type);\n\t}\n}\n\n// --- Helpers ---\n\nfunction applyAlignment(el: HTMLElement, node: BlockNode): void {\n\tconst align = node.attrs?.align;\n\tif (typeof align === 'string' && align !== 'start') {\n\t\tsetStyleProperty(el, 'textAlign', align);\n\t}\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{c as t,d as e}from"./Document-_qdGR4vh.mjs";import{o,t as r,u as c}from"./Selection-aeiSsvhe.mjs";import{a as n}from"./TypeBrands-BZDKMjR-.mjs";import{n as s}from"./DomUtils-RKbAVBQz.mjs";import{i as l}from"./PluginHelpers-Db50-BRE.mjs";import{t as i}from"./ShortcutFormatting-DE6B8iGs.mjs";function a(t,e){const r=t.getState();if(!c(r.selection))return!1;const n=r.selection;if(!o(n))return!1;const s=r.getBlock(n.anchor.blockId);return!(!s||"blockquote"!==s.type)&&e({state:r,block:s,blockId:n.anchor.blockId,offset:n.anchor.offset})}var u={label:"Blockquote",tooltip:t=>`Blockquote (${t})`},p=/* @__PURE__ */Object.assign({"./locales/ar.ts":()=>import("./ar-jsznaXQ0.mjs"),"./locales/de.ts":()=>import("./de-e7G64WBM.mjs"),"./locales/es.ts":()=>import("./es-B2B0W46I.mjs"),"./locales/fr.ts":()=>import("./fr-DOcFqSiX.mjs"),"./locales/hi.ts":()=>import("./hi-BFBRjxgB.mjs"),"./locales/pt.ts":()=>import("./pt-6uTV9TBd.mjs"),"./locales/ru.ts":()=>import("./ru-CmLLEJJV.mjs"),"./locales/zh.ts":()=>import("./zh-tpUU3oJa.mjs")});async function m(t){if("en"===t)return u;const e=p[`./locales/${t}.ts`];if(!e)return u;try{return(await e()).default}catch{return u}}var d={},g=class{id="blockquote";name="Blockquote";priority=35;config;locale;constructor(t){this.config={...d,...t}}async init(t){this.locale=await l(t,this.config.locale,u,m),t.registerStyleSheet("\n.notectl-content blockquote {\n\tmargin: 0;\n\tpadding: 2px 0;\n\tpadding-inline-start: 16px;\n\tborder-inline-start: 3px solid var(--notectl-border);\n\tmin-height: 1.6em;\n}\n"),this.registerNodeSpec(t),this.registerCommands(t),this.registerKeymap(t),this.registerInputRule(t),this.registerToolbarItem(t)}registerNodeSpec(t){t.registerNodeSpec({type:"blockquote",group:"block",content:{allow:["text"]},toDOM:t=>s("blockquote",t.id),toHTML:(t,e)=>`<blockquote>${e||"<br>"}</blockquote>`,parseHTML:[{tag:"blockquote"}],sanitize:{tags:["blockquote"]}})}registerCommands(t){t.registerCommand("toggleBlockquote",()=>this.toggleBlockquote(t)),t.registerCommand("setBlockquote",()=>this.setBlockType(t,n("blockquote")))}registerKeymap(o){o.registerKeymap({"Mod-Shift->":()=>o.executeCommand("toggleBlockquote")}),function(o){o.registerKeymap({ArrowDown:()=>function(o){return a(o,({state:c,block:s,blockId:l,offset:i})=>{if(i!==e(s))return!1;const a=c.getBlockOrder(),u=a.indexOf(l);if(u<a.length-1){const t=a[u+1],e=c.transaction("command").setSelection(r(t,0)).build();o.dispatch(e)}else!function(o,c){const s=o.getState(),l=s.getBlock(c);if(!l)return;const i=e(l),a=t(),u=s.transaction("command").splitBlock(c,i,a).setBlockType(a,n("paragraph")).setSelection(r(a,0)).build();o.dispatch(u)}(o,l);return!0})}(o),ArrowUp:()=>function(t){return a(t,({state:o,blockId:c,offset:n})=>{if(0!==n)return!1;const s=o.getBlockOrder(),l=s.indexOf(c);if(l>0){const c=s[l-1],n=o.getBlock(c),i=n?e(n):0,a=o.transaction("command").setSelection(r(c,i)).build();return t.dispatch(a),!0}return!1})}(o),Enter:()=>function(t){return a(t,({state:o,block:c,blockId:s})=>{if(e(c)>0)return!1;const l=o.transaction("command").setBlockType(s,n("paragraph")).setSelection(r(s,0)).build();return t.dispatch(l),!0})}(o),Backspace:()=>function(t){return a(t,({state:e,blockId:o,offset:r})=>{if(0!==r)return!1;const c=e.transaction("input").setBlockType(o,n("paragraph")).setSelection(e.selection).build();return t.dispatch(c),!0})}(o)},{priority:"context"})}(o)}registerInputRule(t){t.registerInputRule({pattern:/^> $/,handler(t,e,r,s){const l=t.selection;if(!c(l))return null;if(!o(l))return null;const i=t.getBlock(l.anchor.blockId);return i&&"paragraph"===i.type?t.transaction("input").deleteTextAt(l.anchor.blockId,r,r+2).setBlockType(l.anchor.blockId,n("blockquote")).setSelection(l).build():null}})}registerToolbarItem(t){t.registerToolbarItem({id:"blockquote",group:"block",icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z"/></svg>',label:this.locale.label,tooltip:this.locale.tooltip(i("Mod-Shift->")),command:"toggleBlockquote",isActive:t=>!!c(t.selection)&&"blockquote"===t.getBlock(t.selection.anchor.blockId)?.type})}toggleBlockquote(t){const e=t.getState();if(!c(e.selection))return!1;const o=e.getBlock(e.selection.anchor.blockId);return!!o&&("blockquote"===o.type?this.setBlockType(t,n("paragraph")):this.setBlockType(t,n("blockquote")))}setBlockType(t,e,o){const r=t.getState(),n=r.selection;if(!c(n))return!1;const s=r.transaction("command").setBlockType(n.anchor.blockId,e,o).setSelection(n).build();return t.dispatch(s),!0}};export{u as n,m as r,g as t};
2
- //# sourceMappingURL=BlockquotePlugin-DpMA33pk.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BlockquotePlugin-DpMA33pk.mjs","names":[],"sources":["../../src/plugins/blockquote/BlockquoteKeyboardHandlers.ts","../../src/plugins/blockquote/BlockquoteLocale.ts","../../src/plugins/blockquote/BlockquoteStyles.ts","../../src/plugins/blockquote/BlockquotePlugin.ts"],"sourcesContent":["/**\n * Keyboard handlers for blockquote boundary navigation and escape.\n *\n * Handles ArrowDown/ArrowUp at block boundaries, Enter on empty blockquote\n * (converts to paragraph), and Backspace at offset 0 (reverts to paragraph).\n */\n\nimport type { BlockNode } from '../../model/Document.js';\nimport { generateBlockId, getBlockLength } from '../../model/Document.js';\nimport { createCollapsedSelection, isCollapsed, isTextSelection } from '../../model/Selection.js';\nimport type { BlockId } from '../../model/TypeBrands.js';\nimport { nodeType } from '../../model/TypeBrands.js';\nimport type { EditorState } from '../../state/EditorState.js';\nimport type { Transaction } from '../../state/Transaction.js';\nimport type { PluginContext } from '../Plugin.js';\n\n// --- Context Guard ---\n\ninterface BlockquoteContext {\n\treadonly state: EditorState;\n\treadonly block: BlockNode;\n\treadonly blockId: BlockId;\n\treadonly offset: number;\n}\n\n/**\n * Guards against non-blockquote contexts.\n * Returns false (not handled) if the cursor is not inside a blockquote.\n */\nfunction withBlockquoteContext(\n\tcontext: PluginContext,\n\thandler: (ctx: BlockquoteContext) => boolean,\n): boolean {\n\tconst state: EditorState = context.getState();\n\tif (!isTextSelection(state.selection)) return false;\n\n\tconst sel = state.selection;\n\tif (!isCollapsed(sel)) return false;\n\n\tconst block: BlockNode | undefined = state.getBlock(sel.anchor.blockId);\n\tif (!block || block.type !== 'blockquote') return false;\n\n\treturn handler({\n\t\tstate,\n\t\tblock,\n\t\tblockId: sel.anchor.blockId,\n\t\toffset: sel.anchor.offset,\n\t});\n}\n\n/** Registers blockquote keyboard handlers at context priority. */\nexport function registerBlockquoteKeymaps(context: PluginContext): void {\n\tcontext.registerKeymap(\n\t\t{\n\t\t\tArrowDown: () => handleArrowDown(context),\n\t\t\tArrowUp: () => handleArrowUp(context),\n\t\t\tEnter: () => handleEnterOnEmpty(context),\n\t\t\tBackspace: () => handleBackspaceAtStart(context),\n\t\t},\n\t\t{ priority: 'context' },\n\t);\n}\n\n// --- Handler Functions ---\n\n/**\n * Moves cursor to the next block when at the end of the blockquote text.\n * If no next block exists, inserts a new paragraph after the blockquote.\n */\nfunction handleArrowDown(context: PluginContext): boolean {\n\treturn withBlockquoteContext(context, ({ state, block, blockId, offset }) => {\n\t\tconst textLength: number = getBlockLength(block);\n\t\tif (offset !== textLength) return false;\n\n\t\tconst blockOrder: readonly BlockId[] = state.getBlockOrder();\n\t\tconst idx: number = blockOrder.indexOf(blockId);\n\n\t\tif (idx < blockOrder.length - 1) {\n\t\t\tconst nextId: BlockId = blockOrder[idx + 1] as BlockId;\n\t\t\tconst tr: Transaction = state\n\t\t\t\t.transaction('command')\n\t\t\t\t.setSelection(createCollapsedSelection(nextId, 0))\n\t\t\t\t.build();\n\t\t\tcontext.dispatch(tr);\n\t\t} else {\n\t\t\tinsertParagraphAfter(context, blockId);\n\t\t}\n\n\t\treturn true;\n\t});\n}\n\n/**\n * Moves cursor to the previous block when at the start of the blockquote text.\n * Returns false if no previous block exists.\n */\nfunction handleArrowUp(context: PluginContext): boolean {\n\treturn withBlockquoteContext(context, ({ state, blockId, offset }) => {\n\t\tif (offset !== 0) return false;\n\n\t\tconst blockOrder: readonly BlockId[] = state.getBlockOrder();\n\t\tconst idx: number = blockOrder.indexOf(blockId);\n\n\t\tif (idx > 0) {\n\t\t\tconst prevId: BlockId = blockOrder[idx - 1] as BlockId;\n\t\t\tconst prevBlock: BlockNode | undefined = state.getBlock(prevId);\n\t\t\tconst prevLen: number = prevBlock ? getBlockLength(prevBlock) : 0;\n\t\t\tconst tr: Transaction = state\n\t\t\t\t.transaction('command')\n\t\t\t\t.setSelection(createCollapsedSelection(prevId, prevLen))\n\t\t\t\t.build();\n\t\t\tcontext.dispatch(tr);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t});\n}\n\n/**\n * Converts an empty blockquote to a paragraph on Enter.\n * Returns false for non-empty blockquotes, letting splitBlock handle them.\n */\nfunction handleEnterOnEmpty(context: PluginContext): boolean {\n\treturn withBlockquoteContext(context, ({ state, block, blockId }) => {\n\t\tif (getBlockLength(block) > 0) return false;\n\n\t\tconst tr: Transaction = state\n\t\t\t.transaction('command')\n\t\t\t.setBlockType(blockId, nodeType('paragraph'))\n\t\t\t.setSelection(createCollapsedSelection(blockId, 0))\n\t\t\t.build();\n\t\tcontext.dispatch(tr);\n\t\treturn true;\n\t});\n}\n\n/**\n * Converts a blockquote to a paragraph when Backspace is pressed at offset 0.\n */\nfunction handleBackspaceAtStart(context: PluginContext): boolean {\n\treturn withBlockquoteContext(context, ({ state, blockId, offset }) => {\n\t\tif (offset !== 0) return false;\n\n\t\tconst tr: Transaction = state\n\t\t\t.transaction('input')\n\t\t\t.setBlockType(blockId, nodeType('paragraph'))\n\t\t\t.setSelection(state.selection)\n\t\t\t.build();\n\t\tcontext.dispatch(tr);\n\t\treturn true;\n\t});\n}\n\n// --- Shared Helpers ---\n\nfunction insertParagraphAfter(context: PluginContext, bid: BlockId): void {\n\tconst state: EditorState = context.getState();\n\tconst block: BlockNode | undefined = state.getBlock(bid);\n\tif (!block) return;\n\n\tconst blockLength: number = getBlockLength(block);\n\tconst newId: BlockId = generateBlockId();\n\n\tconst tr: Transaction = state\n\t\t.transaction('command')\n\t\t.splitBlock(bid, blockLength, newId)\n\t\t.setBlockType(newId, nodeType('paragraph'))\n\t\t.setSelection(createCollapsedSelection(newId, 0))\n\t\t.build();\n\n\tcontext.dispatch(tr);\n}\n","/**\n * Locale interface and default English locale for the BlockquotePlugin.\n */\n\n// --- Locale Interface ---\n\nexport interface BlockquoteLocale {\n\treadonly label: string;\n\treadonly tooltip: (shortcut: string) => string;\n}\n\n// --- Default English Locale ---\n\nexport const BLOCKQUOTE_LOCALE_EN: BlockquoteLocale = {\n\tlabel: 'Blockquote',\n\ttooltip: (shortcut: string) => `Blockquote (${shortcut})`,\n};\n\n// --- Lazy Locale Loader ---\n\nconst localeModules: Record<string, () => Promise<{ default: BlockquoteLocale }>> =\n\timport.meta.glob<{ default: BlockquoteLocale }>('./locales/*.ts', { eager: false });\n\nexport async function loadBlockquoteLocale(lang: string): Promise<BlockquoteLocale> {\n\tif (lang === 'en') return BLOCKQUOTE_LOCALE_EN;\n\tconst loader = localeModules[`./locales/${lang}.ts`];\n\tif (!loader) return BLOCKQUOTE_LOCALE_EN;\n\ttry {\n\t\tconst mod = await loader();\n\t\treturn mod.default;\n\t} catch {\n\t\treturn BLOCKQUOTE_LOCALE_EN;\n\t}\n}\n","/** Blockquote styles using CSS logical properties for RTL support. */\nexport const BLOCKQUOTE_CSS = `\n.notectl-content blockquote {\n\tmargin: 0;\n\tpadding: 2px 0;\n\tpadding-inline-start: 16px;\n\tborder-inline-start: 3px solid var(--notectl-border);\n\tmin-height: 1.6em;\n}\n`;\n","/**\n * BlockquotePlugin: registers a blockquote block type with NodeSpec,\n * toggle command, keyboard shortcut, input rule, and a toolbar button.\n */\n\nimport { isCollapsed, isTextSelection } from '../../model/Selection.js';\nimport { type NodeTypeName, nodeType } from '../../model/TypeBrands.js';\nimport { createBlockElement } from '../../view/DomUtils.js';\nimport type { Plugin, PluginContext } from '../Plugin.js';\nimport { resolveLocale } from '../shared/PluginHelpers.js';\nimport { formatShortcut } from '../shared/ShortcutFormatting.js';\nimport { registerBlockquoteKeymaps } from './BlockquoteKeyboardHandlers.js';\nimport {\n\tBLOCKQUOTE_LOCALE_EN,\n\ttype BlockquoteLocale,\n\tloadBlockquoteLocale,\n} from './BlockquoteLocale.js';\nimport { BLOCKQUOTE_CSS } from './BlockquoteStyles.js';\n\n// --- Attribute Registry Augmentation ---\n\ndeclare module '../../model/AttrRegistry.js' {\n\tinterface NodeAttrRegistry {\n\t\tblockquote: Record<string, never>;\n\t}\n}\n\n// --- Configuration ---\n\nexport interface BlockquoteConfig {\n\treadonly locale?: BlockquoteLocale;\n}\n\nconst DEFAULT_CONFIG: BlockquoteConfig = {};\n\n// --- Plugin ---\n\nexport class BlockquotePlugin implements Plugin {\n\treadonly id = 'blockquote';\n\treadonly name = 'Blockquote';\n\treadonly priority = 35;\n\n\tprivate readonly config: BlockquoteConfig;\n\tprivate locale!: BlockquoteLocale;\n\n\tconstructor(config?: Partial<BlockquoteConfig>) {\n\t\tthis.config = { ...DEFAULT_CONFIG, ...config };\n\t}\n\n\tasync init(context: PluginContext): Promise<void> {\n\t\tthis.locale = await resolveLocale(\n\t\t\tcontext,\n\t\t\tthis.config.locale,\n\t\t\tBLOCKQUOTE_LOCALE_EN,\n\t\t\tloadBlockquoteLocale,\n\t\t);\n\t\tcontext.registerStyleSheet(BLOCKQUOTE_CSS);\n\t\tthis.registerNodeSpec(context);\n\t\tthis.registerCommands(context);\n\t\tthis.registerKeymap(context);\n\t\tthis.registerInputRule(context);\n\t\tthis.registerToolbarItem(context);\n\t}\n\n\tprivate registerNodeSpec(context: PluginContext): void {\n\t\tcontext.registerNodeSpec({\n\t\t\ttype: 'blockquote',\n\t\t\tgroup: 'block',\n\t\t\tcontent: { allow: ['text'] },\n\t\t\ttoDOM(node) {\n\t\t\t\treturn createBlockElement('blockquote', node.id);\n\t\t\t},\n\t\t\ttoHTML(_node, content) {\n\t\t\t\treturn `<blockquote>${content || '<br>'}</blockquote>`;\n\t\t\t},\n\t\t\tparseHTML: [{ tag: 'blockquote' }],\n\t\t\tsanitize: { tags: ['blockquote'] },\n\t\t});\n\t}\n\n\tprivate registerCommands(context: PluginContext): void {\n\t\tcontext.registerCommand('toggleBlockquote', () => {\n\t\t\treturn this.toggleBlockquote(context);\n\t\t});\n\n\t\tcontext.registerCommand('setBlockquote', () => {\n\t\t\treturn this.setBlockType(context, nodeType('blockquote'));\n\t\t});\n\t}\n\n\tprivate registerKeymap(context: PluginContext): void {\n\t\tcontext.registerKeymap({\n\t\t\t'Mod-Shift->': () => context.executeCommand('toggleBlockquote'),\n\t\t});\n\t\tregisterBlockquoteKeymaps(context);\n\t}\n\n\tprivate registerInputRule(context: PluginContext): void {\n\t\tcontext.registerInputRule({\n\t\t\tpattern: /^> $/,\n\t\t\thandler(state, _match, start, _end) {\n\t\t\t\tconst sel = state.selection;\n\t\t\t\tif (!isTextSelection(sel)) return null;\n\t\t\t\tif (!isCollapsed(sel)) return null;\n\n\t\t\t\tconst block = state.getBlock(sel.anchor.blockId);\n\t\t\t\tif (!block || block.type !== 'paragraph') return null;\n\n\t\t\t\treturn state\n\t\t\t\t\t.transaction('input')\n\t\t\t\t\t.deleteTextAt(sel.anchor.blockId, start, start + 2)\n\t\t\t\t\t.setBlockType(sel.anchor.blockId, nodeType('blockquote'))\n\t\t\t\t\t.setSelection(sel)\n\t\t\t\t\t.build();\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate registerToolbarItem(context: PluginContext): void {\n\t\tconst icon =\n\t\t\t'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\"><path d=\"M6 17h3l2-4V7H5v6h3zm8 0h3l2-4V7h-6v6h3z\"/></svg>';\n\n\t\tcontext.registerToolbarItem({\n\t\t\tid: 'blockquote',\n\t\t\tgroup: 'block',\n\t\t\ticon,\n\t\t\tlabel: this.locale.label,\n\t\t\ttooltip: this.locale.tooltip(formatShortcut('Mod-Shift->')),\n\t\t\tcommand: 'toggleBlockquote',\n\t\t\tisActive: (state) => {\n\t\t\t\tif (!isTextSelection(state.selection)) return false;\n\t\t\t\tconst block = state.getBlock(state.selection.anchor.blockId);\n\t\t\t\treturn block?.type === 'blockquote';\n\t\t\t},\n\t\t});\n\t}\n\n\t/**\n\t * Toggles between blockquote and paragraph.\n\t * If the block is already a blockquote, resets to paragraph.\n\t */\n\tprivate toggleBlockquote(context: PluginContext): boolean {\n\t\tconst state = context.getState();\n\t\tif (!isTextSelection(state.selection)) return false;\n\t\tconst block = state.getBlock(state.selection.anchor.blockId);\n\t\tif (!block) return false;\n\n\t\tif (block.type === 'blockquote') {\n\t\t\treturn this.setBlockType(context, nodeType('paragraph'));\n\t\t}\n\n\t\treturn this.setBlockType(context, nodeType('blockquote'));\n\t}\n\n\tprivate setBlockType(\n\t\tcontext: PluginContext,\n\t\ttype: NodeTypeName,\n\t\tattrs?: Record<string, string | number | boolean>,\n\t): boolean {\n\t\tconst state = context.getState();\n\t\tconst sel = state.selection;\n\t\tif (!isTextSelection(sel)) return false;\n\n\t\tconst tr = state\n\t\t\t.transaction('command')\n\t\t\t.setBlockType(sel.anchor.blockId, type, attrs)\n\t\t\t.setSelection(sel)\n\t\t\t.build();\n\n\t\tcontext.dispatch(tr);\n\t\treturn true;\n\t}\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{d as t,h as n,m as e,n as o}from"./Document-_qdGR4vh.mjs";import{a as r,c as i,i as l,l as c,o as s,u as a}from"./Selection-aeiSsvhe.mjs";import{t as f}from"./TypeBrands-BZDKMjR-.mjs";import{r as u,t as d}from"./DomUtils-RKbAVBQz.mjs";import{i as h,n as m,r as g}from"./GapCursorNavigation-PhJeqELx.mjs";import{i as w,t as k}from"./NavigationQueries-_xQtPALX.mjs";import{n as b,t as p}from"./WordBoundary-DI0G6Wk2.mjs";import{r as I,t as v}from"./Platform-D9TRT4Mn.mjs";import{i as N}from"./PluginHelpers-Db50-BRE.mjs";var y="undefined"!=typeof Intl&&"Segmenter"in Intl?new Intl.Segmenter(void 0,{granularity:"grapheme"}):null;function x(t,n){if(n>=t.length||0===t.length)return 0;if(y){for(const e of y.segment(t))if(e.index>=n)return e.segment.length;return 0}return 1}function C(t,n){if(n<=0||0===t.length)return 0;if(y){let e=1;for(const o of y.segment(t)){if(o.index+o.segment.length>=n){e=o.segment.length;break}e=o.segment.length}return e}return 1}function E(t){const n=t.selection;if(!a(n))return null;const e=s(n)?n.anchor.blockId:n.head.blockId;return 0===(s(n)?n.anchor.offset:n.head.offset)?null:g(t,e,0)}function T(n){const e=n.selection;if(!a(e))return null;const o=s(e)?e.anchor.blockId:e.head.blockId,r=n.getBlock(o);if(!r)return null;const i=t(r);return(s(e)?e.anchor.offset:e.head.offset)===i?null:g(n,o,i)}function A(t){const n=t.selection;return a(n)?{blockId:n.head.blockId,offset:n.head.offset}:null}function B(t,n,e){const o=t.getBlockOrder(),r=o.indexOf(n);if(r<0)return null;const i="forward"===e?r+1:r-1;return i<0||i>=o.length?null:o[i]??null}function O(r){const i=r.selection;if(!a(i))return null;if(!s(i))return g(r,i.head.blockId,i.head.offset);const l=i.anchor.blockId,c=r.getBlock(l);if(!c)return null;const f=i.anchor.offset;if(f<t(c))return"inline"===n(c,f)?.kind?g(r,l,f+1):g(r,l,f+(x(e(c),o(c,f))||1));const u=B(r,l,"forward");return u&&k(r,l,u)?w(r,u)?h(r,u):g(r,u,0):null}function M(r){const i=r.selection;if(!a(i))return null;if(!s(i))return g(r,i.head.blockId,i.head.offset);const l=i.anchor.blockId,c=r.getBlock(l);if(!c)return null;const f=i.anchor.offset;if(f>0)return"inline"===n(c,f-1)?.kind?g(r,l,f-1):g(r,l,f-(C(e(c),o(c,f))||1));const u=B(r,l,"backward");if(!u)return null;if(!k(r,l,u))return null;if(w(r,u))return h(r,u);const d=r.getBlock(u);return d?g(r,u,t(d)):null}function S(t){const n=t.selection;if(!a(n))return null;const e=t.getBlockOrder()[0];return e?w(t,e)?h(t,e):g(t,e,0):null}function R(n){const e=n.selection;if(!a(e))return null;const o=n.getBlockOrder(),r=o[o.length-1];if(!r)return null;if(w(n,r))return h(n,r);const i=n.getBlock(r);return i?g(n,r,t(i)):null}function L(r){const i=A(r);if(!i)return null;const l=r.selection;if(!a(l))return null;const c=r.getBlock(i.blockId);if(!c)return null;const s=t(c);if(i.offset<s){const t="inline"===n(c,i.offset)?.kind?1:x(e(c),o(c,i.offset))||1;return m(r,l.anchor.blockId,l.anchor.offset,i.blockId,i.offset+t)}const f=B(r,i.blockId,"forward");return f&&k(r,i.blockId,f)?m(r,l.anchor.blockId,l.anchor.offset,f,0):null}function H(r){const i=A(r);if(!i)return null;const l=r.selection;if(!a(l))return null;if(i.offset>0){const t=r.getBlock(i.blockId);if(!t)return null;const c="inline"===n(t,i.offset-1)?.kind?1:C(e(t),o(t,i.offset))||1;return m(r,l.anchor.blockId,l.anchor.offset,i.blockId,i.offset-c)}const c=B(r,i.blockId,"backward");if(!c)return null;if(!k(r,i.blockId,c))return null;const s=r.getBlock(c);return s?m(r,l.anchor.blockId,l.anchor.offset,c,t(s)):null}function V(t){const n=A(t);if(!n)return null;const e=t.selection;return a(e)?0===n.offset?null:m(t,e.anchor.blockId,e.anchor.offset,n.blockId,0):null}function j(n){const e=A(n);if(!e)return null;const o=n.selection;if(!a(o))return null;const r=n.getBlock(e.blockId);if(!r)return null;const i=t(r);return e.offset===i?null:m(n,o.anchor.blockId,o.anchor.offset,e.blockId,i)}function D(t){const n=t.selection;if(!a(n))return null;const e=t.getBlockOrder()[0];return e?n.head.blockId===e&&0===n.head.offset?null:m(t,n.anchor.blockId,n.anchor.offset,e,0):null}function _(n){const e=n.selection;if(!a(e))return null;const o=n.getBlockOrder(),r=o[o.length-1];if(!r)return null;const i=n.getBlock(r);if(!i)return null;const l=t(i);return e.head.blockId===r&&e.head.offset===l?null:m(n,e.anchor.blockId,e.anchor.offset,r,l)}function F(t,n,e){if("caretPositionFromPoint"in t){const o=t.caretPositionFromPoint(n,e);if(o)return{node:o.offsetNode,offset:o.offset}}if("caretRangeFromPoint"in t){const o=t.caretRangeFromPoint(n,e);if(o)return{node:o.startContainer,offset:o.startOffset}}return null}function P(t,n,e,o){return F(t,n,e)??(o&&t!==o?F(o,n,e):null)}function z(){return window.getSelection()}function q(t,n){const e=t.getRootNode();if(!(e instanceof ShadowRoot))return null;if(!("getComposedRanges"in n))return null;let o;try{o=n.getComposedRanges({shadowRoots:[e]})}catch{try{o=n.getComposedRanges(e)}catch{return null}}const r=o[0];if(!r)return null;const i="direction"in n&&"backward"===n.direction;return{anchorNode:i?r.endContainer:r.startContainer,anchorOffset:i?r.endOffset:r.startOffset,focusNode:i?r.startContainer:r.endContainer,focusOffset:i?r.startOffset:r.endOffset}}function $(t,n){const e=q(t,n);if(e)return e;const o=n.anchorNode;if(!o)return null;const r=n.focusNode;return r?{anchorNode:o,anchorOffset:n.anchorOffset,focusNode:r,focusOffset:n.focusOffset}:null}function X(t,n){const e=z();if(!e)return;if(i(n))return void e.removeAllRanges();if(c(n)){const o=t.querySelector(`[data-block-id="${n.nodeId}"]`);if(!o)return;const r=o.parentNode;if(!r)return;const i=G(r,o);try{e.setBaseAndExtent(r,i,r,i+1)}catch{}return}const o=W(t,n.anchor),r=W(t,n.head);if(o&&r)try{e.setBaseAndExtent(o.node,o.offset,r.node,r.offset)}catch{}}function U(t){const n=z();if(!n||0===n.rangeCount)return null;const e=$(t,n);if(!e)return null;if(!t.contains(e.anchorNode)||!t.contains(e.focusNode))return null;const o=K(t,e.anchorNode,e.anchorOffset),i=K(t,e.focusNode,e.focusOffset);return o&&i?r(o,i):null}function W(t,n){let e=null;if(n.path&&n.path.length>0){let o=t;for(const t of n.path){const n=o.querySelector(`:scope [data-block-id="${t}"]`);if(!n)break;o=n}o!==t&&o.getAttribute("data-block-id")===n.blockId&&(e=o)}if(e??=t.querySelector(`[data-block-id="${n.blockId}"]`),!e)return null;const o=J(e);if(1===o.childNodes.length&&"BR"===o.firstChild?.nodeName)return{node:o,offset:0};let r=n.offset;const i=Q(o);let l=i.nextNode();for(;l;){if(l.nodeType===Node.TEXT_NODE){const t=l.textContent?.length??0;if(r<=t)return{node:l,offset:r};r-=t}else if(l instanceof HTMLElement&&"false"===l.getAttribute("contenteditable")){if(0===r){const t=l.parentNode;if(t)return{node:t,offset:G(t,l)}}r-=1}l=i.nextNode()}const c=o.lastChild;return c?c.nodeType===Node.TEXT_NODE?{node:c,offset:c.textContent?.length??0}:{node:o,offset:o.childNodes.length}:{node:o,offset:0}}function K(t,n,e){const o=u(t,n);if(!o)return null;const r=o.getAttribute("data-block-id");if(!r)return null;const i=f(r),c=d(t,o),s=J(o);if(n===o||n===s){const t=n===s?s:o;let r=0,a=0;for(const n of Array.from(t.childNodes)){if(a>=e)break;r+=Y(n),a++}return l(i,r,c.length>1?c:void 0)}if(s!==o&&!s.contains(n))return l(i,0,c.length>1?c:void 0);let a=0;const h=Q(s);let m=h.nextNode();for(;m;){if(m===n)return m.nodeType===Node.TEXT_NODE?l(i,a+e,c.length>1?c:void 0):l(i,a,c.length>1?c:void 0);m.nodeType===Node.TEXT_NODE?a+=m.textContent?.length??0:m instanceof HTMLElement&&"false"===m.getAttribute("contenteditable")&&(a+=1),m=h.nextNode()}if(n.nodeType===Node.ELEMENT_NODE){const t=function(t,n){let e=0,o=0;for(const r of Array.from(t.childNodes)){if(o>=n)break;e+=Y(r),o++}return e}(n,e),o=function(t,n){let e=0,o=n;for(;o&&o!==t;){const t=o.parentNode;if(!t)return null;for(const n of Array.from(t.childNodes)){if(n===o)break;e+=Y(n)}o=t}return o===t?e:null}(s,n);return l(i,null===o?t:o+t,c.length>1?c:void 0)}return l(i,0,c.length>1?c:void 0)}function Q(t){return document.createTreeWalker(t,NodeFilter.SHOW_ALL,{acceptNode:n=>n instanceof HTMLElement&&n.hasAttribute("data-cursor-wrapper")||function(t,n){let e=t.parentNode;for(;e&&e!==n;){if(e instanceof HTMLElement&&"false"===e.getAttribute("contenteditable"))return!0;e=e.parentNode}return!1}(n,t)||n instanceof HTMLElement&&n.hasAttribute("data-block-id")&&n!==t?NodeFilter.FILTER_REJECT:n.nodeType===Node.TEXT_NODE||n instanceof HTMLElement&&"false"===n.getAttribute("contenteditable")?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP})}function G(t,n){let e=0;for(const o of Array.from(t.childNodes)){if(o===n)return e;e++}return e}function J(t){return t.querySelector("[data-content-dom]")??t}function Y(t){if(t.nodeType===Node.TEXT_NODE)return t.textContent?.length??0;if(t instanceof HTMLElement&&"false"===t.getAttribute("contenteditable"))return 1;let n=0;for(const e of Array.from(t.childNodes))n+=Y(e);return n}function Z(n,e,o,r){const i=e.selection;if(!a(i))return!1;if(!s(i))return!1;const l=e.getBlock(i.anchor.blockId);if(!l)return!1;const c=i.anchor.offset,f=t(l),d=n.querySelector(`[data-block-id="${i.anchor.blockId}"]`),h=d instanceof HTMLElement&&"rtl"===v(d);if("left"===o)return h?c===f:0===c;if("right"===o)return h?0===c:c===f;if("up"===o&&0===c)return!0;if("down"===o&&c===f)return!0;const m=z();return m&&m.modify?function(t,n,e,o){const r=$(t,n);if(!r)return!1;const i=o??ot(n,t),l="up"===e?"backward":"forward";try{n.modify("move",l,"line");const e=$(t,n);if(!e)return!1;if(u(t,r.focusNode)!==u(t,e.focusNode))return!0;if(e.anchorNode===r.anchorNode&&e.anchorOffset===r.anchorOffset&&e.focusNode===r.focusNode&&e.focusOffset===r.focusOffset)return!0;if(i){const e=ot(n,t);if(e&&Math.abs(e.top-i.top)<1)return!0}return!1}finally{try{n.setBaseAndExtent(r.anchorNode,r.anchorOffset,r.focusNode,r.focusOffset)}catch{}}}(n,m,o,r):"up"===o?0===c:c===f}function tt(n,e){const o=rt(n,e);if(!o)return null;if(o.isVoid)return h(n,o.targetId);const r=n.getBlock(o.targetId);if(!r)return null;const i="right"===e||"down"===e?0:t(r);return g(n,o.targetId,i)}function nt(n,e,o,r){const i=rt(e,o);if(!i)return null;if(i.isVoid)return h(e,i.targetId);const l=e.getBlock(i.targetId);if(!l)return null;const c=t(l);if(null!==r){const t=function(t,n,e,o){const r=t.querySelector(`[data-block-id="${n}"]`);if(!r)return null;const i=r.getBoundingClientRect(),l=function(t,n,e){if(!(t instanceof HTMLElement))return"down"===e?n.top+2:n.bottom-2;const o=getComputedStyle(t),r=Number.parseFloat(o.paddingTop)||0,i=Number.parseFloat(o.paddingBottom)||0;return"down"===e?n.top+r+2:n.bottom-i-2}(r,i,e),c=Math.min(Math.max(o,i.left),i.right-1),s=P(t.getRootNode(),c,l,t.ownerDocument);if(!s)return null;if(!r.contains(s.node))return null;const a=K(t,s.node,s.offset);return a?a.blockId!==n?null:a:null}(n,i.targetId,o,r);if(t)return g(e,t.blockId,t.offset)}if(a(e.selection)&&s(e.selection)){const t=e.selection.anchor.offset,n=Math.min(t,c);return g(e,i.targetId,n)}const f="down"===o?0:c;return g(e,i.targetId,f)}function et(t,e){if("up"===e||"down"===e)return null;const o=t.selection;if(!a(o))return null;if(!s(o))return null;const r=o.anchor.blockId,i=t.getBlock(r);if(!i)return null;const l=o.anchor.offset;return"right"===e?function(t,e,o,r){const i=n(o,r);return i&&"inline"===i.kind?g(t,e,r+1):null}(t,r,i,l):function(t,e,o,r){if(0===r)return null;const i=n(o,r-1);return i&&"inline"===i.kind?g(t,e,r-1):null}(t,r,i,l)}function ot(t,n){if(t.rangeCount>0){const e=t.getRangeAt(0);if(!n||n.contains(e.startContainer)){const t=e.getClientRects();if(t.length>0)return t[0]??null;const n=e.getBoundingClientRect();if(n.height>0)return n}}if(n){const e=$(n,t);if(e)try{const t=document.createRange();t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset);const n=t.getClientRects();return n.length>0?n[0]??null:t.getBoundingClientRect()}catch{}}return null}function rt(t,n){const e=t.getBlockOrder(),o=t.selection;if(!a(o))return null;const r=e.indexOf(o.anchor.blockId);if(r<0)return null;const i="left"===n||"up"===n?r-1:r+1;if(i<0||i>=e.length)return null;const l=e[i];return l&&k(t,o.anchor.blockId,l)?{targetId:l,isVoid:w(t,l)}:null}function it(t,n,e,o){return ct(t,n,"move",e,o)}function lt(t,n,e,o){return ct(t,n,"extend",e,o)}function ct(e,o,r,i,l){const c=o.selection;if(!a(c))return null;const s="move"===r?st:at,f=z();if(!f?.modify)return s(o,i,l);const u=$(e,f);if(!u)return s(o,i,l);try{f.modify(r,i,l);const s=U(e);if(!s)return null;const a="move"===r?c.anchor.blockId:c.head.blockId,u="move"===r?s.anchor:s.head,d=u.blockId;if(d!==a&&!k(o,a,d))return null;let b=u.offset;const p=o.getBlock(d);return p&&"inline"===n(p,b)?.kind&&"forward"===i&&(b=Math.min(b+1,t(p))),"move"===r?w(o,d)?h(o,d):g(o,d,b):m(o,c.anchor.blockId,c.anchor.offset,d,b)}finally{try{f.setBaseAndExtent(u.anchorNode,u.anchorOffset,u.focusNode,u.focusOffset)}catch{}}}function st(n,e,o){return"word"===o?function(n,e){const o=n.selection;if(!a(o))return null;const r=s(o)?o.anchor.blockId:o.head.blockId,i=s(o)?o.anchor.offset:o.head.offset,l=n.getBlock(r);if(!l)return null;const c="forward"===e?b(l,i):p(l,i);return c===i?function(n,e,o){const r=n.getBlockOrder(),i=r.indexOf(e),l="forward"===o?i+1:i-1;if(l<0||l>=r.length)return null;const c=r[l];if(!c)return null;if(!k(n,e,c))return null;if(w(n,c))return h(n,c);const s=n.getBlock(c);return s?g(n,c,"forward"===o?0:t(s)):null}(n,r,e):g(n,r,c)}(n,e):"lineboundary"===o?"forward"===e?T(n):E(n):tt(n,"forward"===e?"down":"up")}function at(n,e,o){const r=n.selection;if(!a(r))return null;const i=r.head,l=n.getBlock(i.blockId);if(!l)return null;let c=i.offset;if("word"===o)c="forward"===e?b(l,i.offset):p(l,i.offset);else{if("lineboundary"!==o){const o=n.getBlockOrder(),l=o.indexOf(i.blockId),c="forward"===e?l+1:l-1;if(c<0||c>=o.length)return null;const s=o[c];if(!s)return null;if(!k(n,i.blockId,s))return null;if(w(n,s))return null;const a=n.getBlock(s);if(!a)return null;const f="forward"===e?0:t(a);return m(n,r.anchor.blockId,r.anchor.offset,s,f)}c="forward"===e?t(l):0}return m(n,r.anchor.blockId,r.anchor.offset,i.blockId,c)}function ft(t,n){return it(t,n,"forward","word")}function ut(t,n){return it(t,n,"backward","word")}function dt(t,n){return it(t,n,"backward","lineboundary")}function ht(t,n){return it(t,n,"forward","lineboundary")}function mt(t,n){return it(t,n,"backward","line")}function gt(t,n){return it(t,n,"forward","line")}function wt(t,n){return lt(t,n,"forward","word")}function kt(t,n){return lt(t,n,"backward","word")}function bt(t,n){return lt(t,n,"backward","lineboundary")}function pt(t,n){return lt(t,n,"forward","lineboundary")}function It(t,n){return lt(t,n,"backward","line")}function vt(t,n){return lt(t,n,"forward","line")}var Nt={paragraph:"Paragraph",heading1:"Heading 1",heading2:"Heading 2",heading3:"Heading 3",heading4:"Heading 4",heading5:"Heading 5",heading6:"Heading 6",codeBlock:"Code Block",blockquote:"Block Quote",listItem:"List Item",horizontalRule:"Horizontal Rule",image:"Image",table:"Table"},yt={paragraph:"paragraph",code_block:"codeBlock",blockquote:"blockquote",list_item:"listItem",horizontal_rule:"horizontalRule",image:"image",table:"table"},xt=/* @__PURE__ */Object.assign({"./locales/ar.ts":()=>import("./ar-C9AnO0uV.mjs"),"./locales/de.ts":()=>import("./de-DAPQek-i.mjs"),"./locales/es.ts":()=>import("./es-BjomAlG3.mjs"),"./locales/fr.ts":()=>import("./fr-Bb-xVkAd.mjs"),"./locales/hi.ts":()=>import("./hi-D-r5tA_n.mjs"),"./locales/pt.ts":()=>import("./pt-hgZhGt5D.mjs"),"./locales/ru.ts":()=>import("./ru-BHZdR6yk.mjs"),"./locales/zh.ts":()=>import("./zh-qo4_i9Vd.mjs")});async function Ct(t){if("en"===t)return Nt;const n=xt[`./locales/${t}.ts`];if(!n)return Nt;try{return(await n()).default}catch{return Nt}}var Et={"word:forward":ft,"word:backward":ut,"lineboundary:forward":ht,"lineboundary:backward":dt,"line:forward":gt,"line:backward":mt},Tt={"word:forward":wt,"word:backward":kt,"lineboundary:forward":pt,"lineboundary:backward":bt,"line:forward":vt,"line:backward":It},At=class{id="caret-navigation";name="Caret Navigation";priority=4;context=null;lastAnnouncedBlockId=null;announceTimer=null;announce=null;locale=Nt;async init(t){this.locale=await N(t,void 0,Nt,Ct),this.context=t,this.announce=n=>t.announce(n);const n=I(),e={"Shift-ArrowRight":()=>this.extendCharacterVisual("right"),"Shift-ArrowLeft":()=>this.extendCharacterVisual("left"),"Shift-ArrowUp":()=>this.viewExtendCommand("backward","line"),"Shift-ArrowDown":()=>this.viewExtendCommand("forward","line"),...n?{"Alt-ArrowRight":()=>this.viewMoveVisual("right","word"),"Alt-ArrowLeft":()=>this.viewMoveVisual("left","word"),"Shift-Alt-ArrowRight":()=>this.viewExtendVisual("right","word"),"Shift-Alt-ArrowLeft":()=>this.viewExtendVisual("left","word")}:{"Mod-ArrowRight":()=>this.viewMoveVisual("right","word"),"Mod-ArrowLeft":()=>this.viewMoveVisual("left","word"),"Mod-Shift-ArrowRight":()=>this.viewExtendVisual("right","word"),"Mod-Shift-ArrowLeft":()=>this.viewExtendVisual("left","word")},...n?{"Mod-ArrowLeft":()=>this.viewMoveVisual("left","lineboundary"),"Mod-ArrowRight":()=>this.viewMoveVisual("right","lineboundary"),"Mod-Shift-ArrowLeft":()=>this.viewExtendVisual("left","lineboundary"),"Mod-Shift-ArrowRight":()=>this.viewExtendVisual("right","lineboundary")}:{Home:()=>this.viewMoveCommand("backward","lineboundary"),End:()=>this.viewMoveCommand("forward","lineboundary"),"Shift-Home":()=>this.viewExtendCommand("backward","lineboundary"),"Shift-End":()=>this.viewExtendCommand("forward","lineboundary")},...n?{"Mod-ArrowUp":()=>this.modelCommand(S),"Mod-ArrowDown":()=>this.modelCommand(R),"Mod-Shift-ArrowUp":()=>this.modelCommand(D),"Mod-Shift-ArrowDown":()=>this.modelCommand(_)}:{"Mod-Home":()=>this.modelCommand(S),"Mod-End":()=>this.modelCommand(R),"Mod-Shift-Home":()=>this.modelCommand(D),"Mod-Shift-End":()=>this.modelCommand(_)}};t.registerKeymap(e,{priority:"navigation"})}onStateChange(t,n,e){const o=n.selection;if(!s(o)||!a(o))return null!==this.announceTimer&&(clearTimeout(this.announceTimer),this.announceTimer=null),void(this.lastAnnouncedBlockId=null);const r=o.anchor.blockId;r!==this.lastAnnouncedBlockId&&(null!==this.lastAnnouncedBlockId?(this.lastAnnouncedBlockId=r,null!==this.announceTimer&&clearTimeout(this.announceTimer),this.announceTimer=setTimeout(()=>{if(this.announceTimer=null,this.context?.hasAnnouncement())return;const t=n.getBlock(r);if(!t)return;const e=function(t,n,e){if("heading"===n&&e?.level){const n=`heading${e.level}`;if(n in t)return t[n]}const o=yt[n];return o?t[o]:n}(this.locale,t.type,t.attrs);this.announce?.(e)},150)):this.lastAnnouncedBlockId=r)}destroy(){null!==this.announceTimer&&clearTimeout(this.announceTimer),this.announceTimer=null,this.announce=null,this.context=null}modelCommand(t){if(!this.context)return!1;const n=t(this.context.getState());return!!n&&(this.context.dispatch(n),!0)}extendCharacterVisual(t){if(!this.context)return!1;const n=this.context.getState(),e="forward"===this.resolveLogicalHorizontalDirection(n,t)?L(n):H(n);return!!e&&(this.context.dispatch(e),!0)}viewMoveCommand(t,n){return this.dispatchViewCommand(Et,t,n)}viewMoveVisual(t,n){if(!this.context)return!1;const e=this.resolveLogicalHorizontalDirection(this.context.getState(),t);return this.viewMoveCommand(e,n)}viewExtendCommand(t,n){return this.dispatchViewCommand(Tt,t,n)}dispatchViewCommand(t,n,e){if(!this.context)return!1;const o=t[`${e}:${n}`];if(!o)return!1;const r=o(this.context.getContainer(),this.context.getState());return!!r&&(this.context.dispatch(r),!0)}viewExtendVisual(t,n){if(!this.context)return!1;const e=this.resolveLogicalHorizontalDirection(this.context.getState(),t);return this.viewExtendCommand(e,n)}resolveLogicalHorizontalDirection(t,n){const e=t.selection;if(!a(e))return"left"===n?"backward":"forward";const o=this.context?.getContainer();if(!o)return"left"===n?"backward":"forward";const r=o.querySelector(`[data-block-id="${e.head.blockId}"]`);return r instanceof HTMLElement&&"rtl"===v(r)?"left"===n?"forward":"backward":"left"===n?"backward":"forward"}};export{L as A,E as B,K as C,X as D,U as E,M as F,C as H,O as I,R as L,V as M,_ as N,P as O,D as P,S as R,et as S,q as T,x as V,it as _,It as a,tt as b,kt as c,mt as d,ht as f,lt as g,ft as h,vt as i,j,H as k,wt as l,ut as m,Nt as n,pt as o,dt as p,Ct as r,bt as s,At as t,gt as u,Z as v,z as w,nt as x,ot as y,T as z};
2
- //# sourceMappingURL=CaretNavigationPlugin-BxU2lMwX.mjs.map