@notectl/core 1.0.5 → 1.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 (250) hide show
  1. package/README.md +78 -55
  2. package/custom-elements.json +344 -0
  3. package/dist/chunks/{AttrRegistry-DTsHyDVA.mjs → AttrRegistry-D-przlzb.mjs} +4 -4
  4. package/dist/chunks/{AttrRegistry-DTsHyDVA.mjs.map → AttrRegistry-D-przlzb.mjs.map} +1 -1
  5. package/dist/chunks/ColorNames-iaWsSZx1.mjs +35 -0
  6. package/dist/chunks/ColorNames-iaWsSZx1.mjs.map +1 -0
  7. package/dist/chunks/ColorValidation-Dyy4Bye8.mjs +140 -0
  8. package/dist/chunks/ColorValidation-Dyy4Bye8.mjs.map +1 -0
  9. package/dist/chunks/{Commands-DLP85Mp5.mjs → Commands-CSpSwGXv.mjs} +13 -13
  10. package/dist/chunks/{Commands-DLP85Mp5.mjs.map → Commands-CSpSwGXv.mjs.map} +1 -1
  11. package/dist/chunks/ToolbarKeyboardNav-B32OMv8r.mjs +46 -0
  12. package/dist/chunks/ToolbarKeyboardNav-B32OMv8r.mjs.map +1 -0
  13. package/dist/chunks/{ToolbarPlugin-D5VqeBPT.mjs → ToolbarPlugin-DY2xaJiu.mjs} +63 -93
  14. package/dist/chunks/ToolbarPlugin-DY2xaJiu.mjs.map +1 -0
  15. package/dist/chunks/index-BAk1EG1x.mjs +541 -0
  16. package/dist/chunks/index-BAk1EG1x.mjs.map +1 -0
  17. package/dist/chunks/index-BRYzYOYC.mjs +63 -0
  18. package/dist/chunks/index-BRYzYOYC.mjs.map +1 -0
  19. package/dist/chunks/index-BSFLNveF.mjs +953 -0
  20. package/dist/chunks/index-BSFLNveF.mjs.map +1 -0
  21. package/dist/chunks/index-BYgspns5.mjs +209 -0
  22. package/dist/chunks/index-BYgspns5.mjs.map +1 -0
  23. package/dist/chunks/index-B_3qDrUN.mjs +64 -0
  24. package/dist/chunks/index-B_3qDrUN.mjs.map +1 -0
  25. package/dist/chunks/index-Bsp4LC5t.mjs +130 -0
  26. package/dist/chunks/index-Bsp4LC5t.mjs.map +1 -0
  27. package/dist/chunks/index-C-YWHOcC.mjs +100 -0
  28. package/dist/chunks/index-C-YWHOcC.mjs.map +1 -0
  29. package/dist/chunks/index-C2GQoHot.mjs +92 -0
  30. package/dist/chunks/index-C2GQoHot.mjs.map +1 -0
  31. package/dist/chunks/index-CT3HGdQt.mjs +39 -0
  32. package/dist/chunks/index-CT3HGdQt.mjs.map +1 -0
  33. package/dist/chunks/index-Ct0ivLhO.mjs +407 -0
  34. package/dist/chunks/index-Ct0ivLhO.mjs.map +1 -0
  35. package/dist/chunks/index-CxiWyUho.mjs +191 -0
  36. package/dist/chunks/index-CxiWyUho.mjs.map +1 -0
  37. package/dist/chunks/index-D3CQWJiw.mjs +200 -0
  38. package/dist/chunks/index-D3CQWJiw.mjs.map +1 -0
  39. package/dist/chunks/index-DC1EK22F.mjs +41 -0
  40. package/dist/chunks/index-DC1EK22F.mjs.map +1 -0
  41. package/dist/chunks/index-Dh76rR13.mjs +196 -0
  42. package/dist/chunks/index-Dh76rR13.mjs.map +1 -0
  43. package/dist/chunks/index-o6hDR07y.mjs +41 -0
  44. package/dist/chunks/index-o6hDR07y.mjs.map +1 -0
  45. package/dist/chunks/index-uTnc9y7M.mjs +62 -0
  46. package/dist/chunks/index-uTnc9y7M.mjs.map +1 -0
  47. package/dist/chunks/resolvePluginLocale-B4w1OkPy.mjs +34 -0
  48. package/dist/chunks/resolvePluginLocale-B4w1OkPy.mjs.map +1 -0
  49. package/dist/editor/EditorDOM.d.ts.map +1 -1
  50. package/dist/editor/NotectlEditor.d.ts +15 -1
  51. package/dist/editor/NotectlEditor.d.ts.map +1 -1
  52. package/dist/editor/PaperLayoutController.d.ts +27 -0
  53. package/dist/editor/PaperLayoutController.d.ts.map +1 -0
  54. package/dist/editor/PaperSize.d.ts +35 -0
  55. package/dist/editor/PaperSize.d.ts.map +1 -0
  56. package/dist/editor/styles/color-picker.d.ts +1 -1
  57. package/dist/editor/styles/color-picker.d.ts.map +1 -1
  58. package/dist/editor/styles/paper.d.ts +3 -0
  59. package/dist/editor/styles/paper.d.ts.map +1 -0
  60. package/dist/editor/styles/table.d.ts +1 -1
  61. package/dist/editor/styles/table.d.ts.map +1 -1
  62. package/dist/editor/styles/toolbar.d.ts +1 -1
  63. package/dist/editor/styles/toolbar.d.ts.map +1 -1
  64. package/dist/editor/styles.d.ts.map +1 -1
  65. package/dist/i18n/Locale.d.ts +17 -0
  66. package/dist/i18n/Locale.d.ts.map +1 -0
  67. package/dist/i18n/LocaleService.d.ts +8 -0
  68. package/dist/i18n/LocaleService.d.ts.map +1 -0
  69. package/dist/i18n/index.d.ts +4 -0
  70. package/dist/i18n/index.d.ts.map +1 -0
  71. package/dist/i18n/resolvePluginLocale.d.ts +3 -0
  72. package/dist/i18n/resolvePluginLocale.d.ts.map +1 -0
  73. package/dist/index.d.ts +44 -0
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/input/ClipboardHandler.d.ts.map +1 -1
  76. package/dist/input/InputHandler.d.ts.map +1 -1
  77. package/dist/input/KeyboardHandler.d.ts.map +1 -1
  78. package/dist/input/PasteHandler.d.ts.map +1 -1
  79. package/dist/notectl-core.mjs +1145 -837
  80. package/dist/notectl-core.mjs.map +1 -1
  81. package/dist/notectl-core.umd.js +2368 -1826
  82. package/dist/notectl-core.umd.js.map +1 -1
  83. package/dist/plugins/PluginManager.d.ts +8 -1
  84. package/dist/plugins/PluginManager.d.ts.map +1 -1
  85. package/dist/plugins/alignment/AlignmentLocale.d.ts +19 -0
  86. package/dist/plugins/alignment/AlignmentLocale.d.ts.map +1 -0
  87. package/dist/plugins/alignment/AlignmentPlugin.d.ts +4 -0
  88. package/dist/plugins/alignment/AlignmentPlugin.d.ts.map +1 -1
  89. package/dist/plugins/alignment.mjs +3 -89
  90. package/dist/plugins/alignment.mjs.map +1 -1
  91. package/dist/plugins/blockquote/BlockquoteLocale.d.ts +17 -0
  92. package/dist/plugins/blockquote/BlockquoteLocale.d.ts.map +1 -0
  93. package/dist/plugins/blockquote/BlockquotePlugin.d.ts +3 -0
  94. package/dist/plugins/blockquote/BlockquotePlugin.d.ts.map +1 -1
  95. package/dist/plugins/blockquote.mjs +2 -55
  96. package/dist/plugins/blockquote.mjs.map +1 -1
  97. package/dist/plugins/code-block/CodeBlockCommands.d.ts +5 -0
  98. package/dist/plugins/code-block/CodeBlockCommands.d.ts.map +1 -0
  99. package/dist/plugins/code-block/CodeBlockKeyboardHandlers.d.ts +10 -0
  100. package/dist/plugins/code-block/CodeBlockKeyboardHandlers.d.ts.map +1 -0
  101. package/dist/plugins/code-block/CodeBlockLocale.d.ts +17 -0
  102. package/dist/plugins/code-block/CodeBlockLocale.d.ts.map +1 -0
  103. package/dist/plugins/code-block/CodeBlockNodeView.d.ts +1 -1
  104. package/dist/plugins/code-block/CodeBlockNodeView.d.ts.map +1 -1
  105. package/dist/plugins/code-block/CodeBlockPlugin.d.ts +4 -111
  106. package/dist/plugins/code-block/CodeBlockPlugin.d.ts.map +1 -1
  107. package/dist/plugins/code-block/CodeBlockService.d.ts +5 -0
  108. package/dist/plugins/code-block/CodeBlockService.d.ts.map +1 -0
  109. package/dist/plugins/code-block/CodeBlockTypes.d.ts +71 -0
  110. package/dist/plugins/code-block/CodeBlockTypes.d.ts.map +1 -0
  111. package/dist/plugins/code-block.mjs +3 -3
  112. package/dist/plugins/font/FontLocale.d.ts +15 -0
  113. package/dist/plugins/font/FontLocale.d.ts.map +1 -0
  114. package/dist/plugins/font/FontPlugin.d.ts +3 -0
  115. package/dist/plugins/font/FontPlugin.d.ts.map +1 -1
  116. package/dist/plugins/font-size/FontSizeLocale.d.ts +17 -0
  117. package/dist/plugins/font-size/FontSizeLocale.d.ts.map +1 -0
  118. package/dist/plugins/font-size/FontSizeOperations.d.ts +22 -0
  119. package/dist/plugins/font-size/FontSizeOperations.d.ts.map +1 -0
  120. package/dist/plugins/font-size/FontSizePlugin.d.ts +4 -10
  121. package/dist/plugins/font-size/FontSizePlugin.d.ts.map +1 -1
  122. package/dist/plugins/font-size/FontSizePopup.d.ts +11 -0
  123. package/dist/plugins/font-size/FontSizePopup.d.ts.map +1 -0
  124. package/dist/plugins/font-size.mjs +2 -217
  125. package/dist/plugins/font-size.mjs.map +1 -1
  126. package/dist/plugins/font.mjs +2 -183
  127. package/dist/plugins/font.mjs.map +1 -1
  128. package/dist/plugins/hard-break.mjs +1 -1
  129. package/dist/plugins/heading/HeadingLocale.d.ts +26 -0
  130. package/dist/plugins/heading/HeadingLocale.d.ts.map +1 -0
  131. package/dist/plugins/heading/HeadingPlugin.d.ts +4 -0
  132. package/dist/plugins/heading/HeadingPlugin.d.ts.map +1 -1
  133. package/dist/plugins/heading.mjs +1 -184
  134. package/dist/plugins/heading.mjs.map +1 -1
  135. package/dist/plugins/highlight/HighlightLocale.d.ts +17 -0
  136. package/dist/plugins/highlight/HighlightLocale.d.ts.map +1 -0
  137. package/dist/plugins/highlight/HighlightPlugin.d.ts +3 -5
  138. package/dist/plugins/highlight/HighlightPlugin.d.ts.map +1 -1
  139. package/dist/plugins/highlight.mjs +2 -123
  140. package/dist/plugins/highlight.mjs.map +1 -1
  141. package/dist/plugins/horizontal-rule/HorizontalRuleLocale.d.ts +15 -0
  142. package/dist/plugins/horizontal-rule/HorizontalRuleLocale.d.ts.map +1 -0
  143. package/dist/plugins/horizontal-rule/HorizontalRulePlugin.d.ts +4 -0
  144. package/dist/plugins/horizontal-rule/HorizontalRulePlugin.d.ts.map +1 -1
  145. package/dist/plugins/horizontal-rule.mjs +2 -56
  146. package/dist/plugins/horizontal-rule.mjs.map +1 -1
  147. package/dist/plugins/image/ImageLocale.d.ts +25 -0
  148. package/dist/plugins/image/ImageLocale.d.ts.map +1 -0
  149. package/dist/plugins/image/ImageNodeView.d.ts.map +1 -1
  150. package/dist/plugins/image/ImagePlugin.d.ts +1 -0
  151. package/dist/plugins/image/ImagePlugin.d.ts.map +1 -1
  152. package/dist/plugins/image/ImageUpload.d.ts +3 -0
  153. package/dist/plugins/image/ImageUpload.d.ts.map +1 -1
  154. package/dist/plugins/image.mjs +4 -378
  155. package/dist/plugins/image.mjs.map +1 -1
  156. package/dist/plugins/link/LinkLocale.d.ts +23 -0
  157. package/dist/plugins/link/LinkLocale.d.ts.map +1 -0
  158. package/dist/plugins/link/LinkPlugin.d.ts +3 -0
  159. package/dist/plugins/link/LinkPlugin.d.ts.map +1 -1
  160. package/dist/plugins/link.mjs +2 -124
  161. package/dist/plugins/link.mjs.map +1 -1
  162. package/dist/plugins/list/ListLocale.d.ts +18 -0
  163. package/dist/plugins/list/ListLocale.d.ts.map +1 -0
  164. package/dist/plugins/list/ListPlugin.d.ts +4 -0
  165. package/dist/plugins/list/ListPlugin.d.ts.map +1 -1
  166. package/dist/plugins/list.mjs +2 -190
  167. package/dist/plugins/list.mjs.map +1 -1
  168. package/dist/plugins/print/PrintContentPreparer.d.ts +12 -0
  169. package/dist/plugins/print/PrintContentPreparer.d.ts.map +1 -0
  170. package/dist/plugins/print/PrintLocale.d.ts +16 -0
  171. package/dist/plugins/print/PrintLocale.d.ts.map +1 -0
  172. package/dist/plugins/print/PrintPlugin.d.ts +13 -0
  173. package/dist/plugins/print/PrintPlugin.d.ts.map +1 -0
  174. package/dist/plugins/print/PrintServiceImpl.d.ts +7 -0
  175. package/dist/plugins/print/PrintServiceImpl.d.ts.map +1 -0
  176. package/dist/plugins/print/PrintStyleCollector.d.ts +17 -0
  177. package/dist/plugins/print/PrintStyleCollector.d.ts.map +1 -0
  178. package/dist/plugins/print/PrintTypes.d.ts +61 -0
  179. package/dist/plugins/print/PrintTypes.d.ts.map +1 -0
  180. package/dist/plugins/shared/ColorMarkOperations.d.ts +28 -0
  181. package/dist/plugins/shared/ColorMarkOperations.d.ts.map +1 -0
  182. package/dist/plugins/shared/ColorNames.d.ts +22 -0
  183. package/dist/plugins/shared/ColorNames.d.ts.map +1 -0
  184. package/dist/plugins/shared/ColorPickerPopup.d.ts +31 -0
  185. package/dist/plugins/shared/ColorPickerPopup.d.ts.map +1 -0
  186. package/dist/plugins/shared/ColorValidation.d.ts +14 -0
  187. package/dist/plugins/shared/ColorValidation.d.ts.map +1 -0
  188. package/dist/plugins/strikethrough/StrikethroughLocale.d.ts +17 -0
  189. package/dist/plugins/strikethrough/StrikethroughLocale.d.ts.map +1 -0
  190. package/dist/plugins/strikethrough/StrikethroughPlugin.d.ts +3 -0
  191. package/dist/plugins/strikethrough/StrikethroughPlugin.d.ts.map +1 -1
  192. package/dist/plugins/strikethrough.mjs +2 -32
  193. package/dist/plugins/strikethrough.mjs.map +1 -1
  194. package/dist/plugins/super-sub/SuperSubLocale.d.ts +19 -0
  195. package/dist/plugins/super-sub/SuperSubLocale.d.ts.map +1 -0
  196. package/dist/plugins/super-sub/SuperSubPlugin.d.ts +3 -0
  197. package/dist/plugins/super-sub/SuperSubPlugin.d.ts.map +1 -1
  198. package/dist/plugins/super-sub.mjs +2 -78
  199. package/dist/plugins/super-sub.mjs.map +1 -1
  200. package/dist/plugins/table/TableBorderColor.d.ts +24 -0
  201. package/dist/plugins/table/TableBorderColor.d.ts.map +1 -0
  202. package/dist/plugins/table/TableCommands.d.ts +9 -8
  203. package/dist/plugins/table/TableCommands.d.ts.map +1 -1
  204. package/dist/plugins/table/TableContextMenu.d.ts +14 -0
  205. package/dist/plugins/table/TableContextMenu.d.ts.map +1 -0
  206. package/dist/plugins/table/TableControls.d.ts +3 -1
  207. package/dist/plugins/table/TableControls.d.ts.map +1 -1
  208. package/dist/plugins/table/TableControlsDOM.d.ts +13 -1
  209. package/dist/plugins/table/TableControlsDOM.d.ts.map +1 -1
  210. package/dist/plugins/table/TableLocale.d.ts +48 -0
  211. package/dist/plugins/table/TableLocale.d.ts.map +1 -0
  212. package/dist/plugins/table/TableNavigation.d.ts +2 -1
  213. package/dist/plugins/table/TableNavigation.d.ts.map +1 -1
  214. package/dist/plugins/table/TableNodeViews.d.ts +3 -1
  215. package/dist/plugins/table/TableNodeViews.d.ts.map +1 -1
  216. package/dist/plugins/table/TablePlugin.d.ts +7 -1
  217. package/dist/plugins/table/TablePlugin.d.ts.map +1 -1
  218. package/dist/plugins/table/index.d.ts +3 -0
  219. package/dist/plugins/table/index.d.ts.map +1 -1
  220. package/dist/plugins/table.mjs +18 -660
  221. package/dist/plugins/table.mjs.map +1 -1
  222. package/dist/plugins/text-color/TextColorLocale.d.ts +17 -0
  223. package/dist/plugins/text-color/TextColorLocale.d.ts.map +1 -0
  224. package/dist/plugins/text-color/TextColorPlugin.d.ts +3 -5
  225. package/dist/plugins/text-color/TextColorPlugin.d.ts.map +1 -1
  226. package/dist/plugins/text-color.mjs +2 -123
  227. package/dist/plugins/text-color.mjs.map +1 -1
  228. package/dist/plugins/text-formatting/TextFormattingLocale.d.ts +18 -0
  229. package/dist/plugins/text-formatting/TextFormattingLocale.d.ts.map +1 -0
  230. package/dist/plugins/text-formatting/TextFormattingPlugin.d.ts +4 -0
  231. package/dist/plugins/text-formatting/TextFormattingPlugin.d.ts.map +1 -1
  232. package/dist/plugins/text-formatting.mjs +2 -49
  233. package/dist/plugins/text-formatting.mjs.map +1 -1
  234. package/dist/plugins/toolbar/ToolbarLocale.d.ts +14 -0
  235. package/dist/plugins/toolbar/ToolbarLocale.d.ts.map +1 -0
  236. package/dist/plugins/toolbar/ToolbarPlugin.d.ts +1 -0
  237. package/dist/plugins/toolbar/ToolbarPlugin.d.ts.map +1 -1
  238. package/dist/plugins/toolbar.mjs +1 -1
  239. package/dist/state/EditorState.d.ts +4 -1
  240. package/dist/state/EditorState.d.ts.map +1 -1
  241. package/dist/view/EditorView.d.ts.map +1 -1
  242. package/dist/view/Reconciler.d.ts.map +1 -1
  243. package/package.json +3 -2
  244. package/dist/chunks/Plugin-B9OZ6Y4c.mjs +0 -15
  245. package/dist/chunks/Plugin-B9OZ6Y4c.mjs.map +0 -1
  246. package/dist/chunks/ToolbarPlugin-D5VqeBPT.mjs.map +0 -1
  247. package/dist/chunks/color-picker-Csf0wx5a.mjs +0 -5
  248. package/dist/chunks/color-picker-Csf0wx5a.mjs.map +0 -1
  249. package/dist/chunks/index-CPPb-Jah.mjs +0 -569
  250. package/dist/chunks/index-CPPb-Jah.mjs.map +0 -1
@@ -0,0 +1,17 @@
1
+ /** Locale interface and default English locale for the HighlightPlugin. */
2
+ export interface HighlightLocale {
3
+ readonly label: string;
4
+ readonly tooltip: string;
5
+ readonly resetLabel: string;
6
+ readonly ariaLabelPrefix: string;
7
+ }
8
+ export declare const HIGHLIGHT_LOCALE_EN: HighlightLocale;
9
+ export declare const HIGHLIGHT_LOCALE_DE: HighlightLocale;
10
+ export declare const HIGHLIGHT_LOCALE_ES: HighlightLocale;
11
+ export declare const HIGHLIGHT_LOCALE_FR: HighlightLocale;
12
+ export declare const HIGHLIGHT_LOCALE_ZH: HighlightLocale;
13
+ export declare const HIGHLIGHT_LOCALE_RU: HighlightLocale;
14
+ export declare const HIGHLIGHT_LOCALE_AR: HighlightLocale;
15
+ export declare const HIGHLIGHT_LOCALE_HI: HighlightLocale;
16
+ export declare const HIGHLIGHT_LOCALES: Record<string, HighlightLocale>;
17
+ //# sourceMappingURL=HighlightLocale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HighlightLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/highlight/HighlightLocale.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,mBAAmB,EAAE,eAKjC,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAC;AAIF,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAC;AAIF,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAS7D,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Plugin, PluginContext } from '../Plugin.js';
2
+ import { HighlightLocale } from './HighlightLocale.js';
2
3
  declare module '../../model/AttrRegistry.js' {
3
4
  interface MarkAttrRegistry {
4
5
  highlight: {
@@ -16,6 +17,7 @@ export interface HighlightConfig {
16
17
  readonly colors?: readonly string[];
17
18
  /** When true, a separator is rendered after the highlight toolbar item. */
18
19
  readonly separatorAfter?: boolean;
20
+ readonly locale?: HighlightLocale;
19
21
  }
20
22
  export declare class HighlightPlugin implements Plugin {
21
23
  readonly id = "highlight";
@@ -23,15 +25,11 @@ export declare class HighlightPlugin implements Plugin {
23
25
  readonly priority = 24;
24
26
  private readonly config;
25
27
  private readonly colors;
28
+ private locale;
26
29
  constructor(config?: Partial<HighlightConfig>);
27
30
  init(context: PluginContext): void;
28
31
  private registerMarkSpec;
29
32
  private registerCommands;
30
33
  private registerToolbarItem;
31
- private isHighlightActive;
32
- private getActiveColor;
33
- private applyHighlight;
34
- private removeHighlight;
35
- private renderHighlightPopup;
36
34
  }
37
35
  //# sourceMappingURL=HighlightPlugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HighlightPlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/highlight/HighlightPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI1D,OAAO,QAAQ,6BAA6B,CAAC;IAC5C,UAAU,gBAAgB;QACzB,SAAS,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7B;CACD;AAID,MAAM,WAAW,eAAe;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CAClC;AA0GD,qBAAa,eAAgB,YAAW,MAAM;IAC7C,QAAQ,CAAC,EAAE,eAAe;IAC1B,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,QAAQ,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;gBAE/B,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAK7C,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAOlC,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,mBAAmB;IA+B3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,cAAc;IAmCtB,OAAO,CAAC,eAAe;IAmCvB,OAAO,CAAC,oBAAoB;CA6C5B"}
1
+ {"version":3,"file":"HighlightPlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/highlight/HighlightPlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI1D,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAI/E,OAAO,QAAQ,6BAA6B,CAAC;IAC5C,UAAU,gBAAgB;QACzB,SAAS,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7B;CACD;AAID,MAAM,WAAW,eAAe;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC;CAClC;AAgED,qBAAa,eAAgB,YAAW,MAAM;IAC7C,QAAQ,CAAC,EAAE,eAAe;IAC1B,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,QAAQ,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAK7C,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IASlC,OAAO,CAAC,gBAAgB;IA+BxB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,mBAAmB;CAoC3B"}
@@ -1,126 +1,5 @@
1
- import { t } from "../chunks/Commands-DLP85Mp5.mjs";
2
- import { C as e } from "../chunks/color-picker-Csf0wx5a.mjs";
3
- import { b as o } from "../chunks/AttrRegistry-DTsHyDVA.mjs";
4
- import { e as r, h as i } from "../chunks/Document-CI3iCwEP.mjs";
5
- import { i as s, a as n, s as c } from "../chunks/Selection-D5ZjXoB7.mjs";
6
- import { m as a } from "../chunks/TypeBrands-C09nE2qO.mjs";
7
- const l = {}, h = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;
8
- const f = ["#fff176", "#aed581", "#4dd0e1", "#64b5f6", "#ce93d8", "#f48fb1", "#ffab91", "#ff8a65", "#e6ee9c", "#80cbc4", "#fff9c4", "#dcedc8", "#e0f7fa", "#e3f2fd", "#f3e5f5", "#fce4ec", "#fff3e0", "#fbe9e7", "#f9fbe7", "#e0f2f1", "#fff59d", "#c5e1a5", "#80deea", "#90caf9", "#e1bee7", "#f8bbd0", "#ffcc80", "#ffab91", "#e6ee9c", "#a5d6a7", "#ffee58", "#9ccc65", "#26c6da", "#42a5f5", "#ab47bc", "#ec407a", "#ffa726", "#ff7043", "#d4e157", "#66bb6a", "#ffffff", "#fafafa", "#f5f5f5", "#eeeeee", "#e0e0e0", "#bdbdbd", "#e8eaf6", "#efebe9", "#eceff1", "#fafafa"];
9
- class g {
10
- id = "highlight";
11
- name = "Highlight";
12
- priority = 24;
13
- config;
14
- colors;
15
- constructor(t2) {
16
- this.config = { ...l, ...t2 }, this.colors = (function(t3) {
17
- if (!t3 || 0 === t3.length) return f;
18
- const e2 = t3.filter((t4) => {
19
- return e3 = t4, !h.test(e3);
20
- var e3;
21
- });
22
- if (e2.length > 0) throw new Error(`HighlightPlugin: invalid hex color(s): ${e2.join(", ")}. Expected format: #RGB or #RRGGBB.`);
23
- const o2 = /* @__PURE__ */ new Set(), r2 = [];
24
- for (const e3 of t3) {
25
- const t4 = e3.toLowerCase();
26
- o2.has(t4) || (o2.add(t4), r2.push(t4));
27
- }
28
- return r2;
29
- })(t2?.colors);
30
- }
31
- init(t2) {
32
- t2.registerStyleSheet(e), this.registerMarkSpec(t2), this.registerCommands(t2), this.registerToolbarItem(t2);
33
- }
34
- registerMarkSpec(t2) {
35
- t2.registerMarkSpec({ type: "highlight", rank: 4, attrs: { color: { default: "" } }, toDOM(t3) {
36
- const e2 = document.createElement("span"), o2 = t3.attrs?.color ?? "";
37
- return e2.style.backgroundColor = o2, e2;
38
- }, toHTMLString: (t3, e2) => `<span style="background-color: ${String(t3.attrs?.color ?? "")}">${e2}</span>`, parseHTML: [{ tag: "span", getAttrs: (t3) => {
39
- const e2 = t3.style.backgroundColor;
40
- return !!e2 && { color: e2 };
41
- } }], sanitize: { tags: ["span"] } });
42
- }
43
- registerCommands(t2) {
44
- t2.registerCommand("removeHighlight", () => {
45
- const e2 = t2.getState();
46
- return this.removeHighlight(t2, e2);
47
- });
48
- }
49
- registerToolbarItem(t2) {
50
- const e2 = ['<svg xmlns="http://www.w3.org/2000/svg"', ' viewBox="0 0 24 24">', '<path d="M11 3L5.5 17h2.25l1.12-3h6.25l1.12 3h2.25L13 3h-2zm-1.38 9L12 5.67 14.38 12H9.62z"/>', '<rect x="3" y="17" width="18" height="6"', ' rx="0.5" fill="#fff176"/>', "</svg>"].join("");
51
- t2.registerToolbarItem({ id: "highlight", group: "format", icon: e2, label: "Highlight", tooltip: "Highlight Color", command: "removeHighlight", priority: 46, popupType: "custom", separatorAfter: this.config.separatorAfter, renderPopup: (t3, e3) => {
52
- this.renderHighlightPopup(t3, e3);
53
- }, isActive: (t3) => this.isHighlightActive(t3) });
54
- }
55
- isHighlightActive(t2) {
56
- return null !== this.getActiveColor(t2);
57
- }
58
- getActiveColor(t2) {
59
- const e2 = t2.selection;
60
- if (s(e2)) return null;
61
- if (n(e2)) {
62
- if (t2.storedMarks) {
63
- const e3 = t2.storedMarks.find((t3) => "highlight" === t3.type);
64
- return e3 && o(e3, "highlight") ? e3.attrs.color ?? null : null;
65
- }
66
- const i3 = t2.getBlock(e2.anchor.blockId);
67
- if (!i3) return null;
68
- const s2 = r(i3, e2.anchor.offset).find((t3) => "highlight" === t3.type);
69
- return s2 && o(s2, "highlight") ? s2.attrs.color ?? null : null;
70
- }
71
- const i2 = t2.getBlock(e2.anchor.blockId);
72
- if (!i2) return null;
73
- const c2 = r(i2, e2.anchor.offset).find((t3) => "highlight" === t3.type);
74
- return c2 && o(c2, "highlight") ? c2.attrs.color ?? null : null;
75
- }
76
- applyHighlight(e2, o2, i2) {
77
- const l2 = o2.selection;
78
- if (s(l2)) return false;
79
- if (n(l2)) {
80
- const t2 = o2.getBlock(l2.anchor.blockId);
81
- if (!t2) return false;
82
- const s2 = [...(o2.storedMarks ?? r(t2, l2.anchor.offset)).filter((t3) => "highlight" !== t3.type), { type: a("highlight"), attrs: { color: i2 } }], n2 = o2.transaction("command").setStoredMarks(s2, o2.storedMarks).setSelection(l2).build();
83
- return e2.dispatch(n2), true;
84
- }
85
- const h2 = c(l2, o2.getBlockOrder()), f2 = o2.transaction("command"), g2 = { type: a("highlight"), attrs: { color: i2 } };
86
- return t(o2, h2, (t2, e3, o3) => {
87
- f2.removeMark(t2, e3, o3, { type: a("highlight") }), f2.addMark(t2, e3, o3, g2);
88
- }), f2.setSelection(l2), e2.dispatch(f2.build()), true;
89
- }
90
- removeHighlight(e2, o2) {
91
- const l2 = o2.selection;
92
- if (s(l2)) return false;
93
- if (n(l2)) {
94
- const t2 = o2.getBlock(l2.anchor.blockId);
95
- if (!t2) return false;
96
- const s2 = o2.storedMarks ?? r(t2, l2.anchor.offset);
97
- if (!i(s2, a("highlight"))) return false;
98
- const n2 = s2.filter((t3) => "highlight" !== t3.type), c2 = o2.transaction("command").setStoredMarks(n2, o2.storedMarks).setSelection(l2).build();
99
- return e2.dispatch(c2), true;
100
- }
101
- const h2 = c(l2, o2.getBlockOrder()), f2 = o2.transaction("command");
102
- return t(o2, h2, (t2, e3, o3) => {
103
- f2.removeMark(t2, e3, o3, { type: a("highlight") });
104
- }), f2.setSelection(l2), e2.dispatch(f2.build()), true;
105
- }
106
- renderHighlightPopup(t2, e2) {
107
- t2.classList.add("notectl-color-picker");
108
- const o2 = e2.getState(), r2 = this.getActiveColor(o2), i2 = document.createElement("button");
109
- i2.type = "button", i2.className = "notectl-color-picker__default", i2.textContent = "None", i2.addEventListener("mousedown", (t3) => {
110
- t3.preventDefault(), t3.stopPropagation(), e2.executeCommand("removeHighlight");
111
- }), t2.appendChild(i2);
112
- const s2 = document.createElement("div");
113
- s2.className = "notectl-color-picker__grid";
114
- for (const t3 of this.colors) {
115
- const o3 = document.createElement("button");
116
- o3.type = "button", o3.className = "notectl-color-picker__swatch", r2 && r2.toLowerCase() === t3.toLowerCase() && o3.classList.add("notectl-color-picker__swatch--active"), o3.style.backgroundColor = t3, "#ffffff" === t3 && (o3.style.border = "1px solid #d0d0d0"), o3.title = t3, o3.setAttribute("aria-label", `Highlight color ${t3}`), o3.addEventListener("mousedown", (o4) => {
117
- o4.preventDefault(), o4.stopPropagation(), this.applyHighlight(e2, e2.getState(), t3);
118
- }), s2.appendChild(o3);
119
- }
120
- t2.appendChild(s2);
121
- }
122
- }
1
+ import { b } from "../chunks/index-o6hDR07y.mjs";
123
2
  export {
124
- g as HighlightPlugin
3
+ b as HighlightPlugin
125
4
  };
126
5
  //# sourceMappingURL=highlight.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"highlight.mjs","sources":["../../src/plugins/highlight/HighlightPlugin.ts"],"sourcesContent":["/**\n * HighlightPlugin: registers a highlight (background-color) mark with attrs,\n * toolbar button with a color picker popup, and removeHighlight command.\n */\n\nimport { forEachBlockInRange } from '../../commands/Commands.js';\nimport { COLOR_PICKER_CSS } from '../../editor/styles/color-picker.js';\nimport { isMarkOfType } from '../../model/AttrRegistry.js';\nimport { getBlockMarksAtOffset, hasMark } from '../../model/Document.js';\nimport { isCollapsed, isNodeSelection, selectionRange } from '../../model/Selection.js';\nimport { markType } from '../../model/TypeBrands.js';\nimport type { EditorState } from '../../state/EditorState.js';\nimport type { Plugin, PluginContext } from '../Plugin.js';\n\n// --- Attribute Registry Augmentation ---\n\ndeclare module '../../model/AttrRegistry.js' {\n\tinterface MarkAttrRegistry {\n\t\thighlight: { color: string };\n\t}\n}\n\n// --- Configuration ---\n\nexport interface HighlightConfig {\n\t/**\n\t * Restricts the color picker to a specific set of hex colors.\n\t * Each value must be a valid hex color code (`#RGB` or `#RRGGBB`).\n\t * Duplicates are removed automatically (case-insensitive).\n\t * When omitted, the full default palette is shown.\n\t */\n\treadonly colors?: readonly string[];\n\t/** When true, a separator is rendered after the highlight toolbar item. */\n\treadonly separatorAfter?: boolean;\n}\n\nconst DEFAULT_CONFIG: HighlightConfig = {};\n\n// --- Color Validation ---\n\nconst HEX_COLOR_PATTERN: RegExp = /^#([0-9a-f]{3}|[0-9a-f]{6})$/i;\n\nfunction isValidHexColor(value: string): boolean {\n\treturn HEX_COLOR_PATTERN.test(value);\n}\n\n/**\n * Validates, deduplicates, and normalizes the user-supplied color list.\n * Returns the default palette when no custom colors are provided.\n *\n * @throws {Error} if any value is not a valid hex color code.\n */\nfunction resolveColors(colors: readonly string[] | undefined): readonly string[] {\n\tif (!colors || colors.length === 0) return HIGHLIGHT_PALETTE;\n\n\tconst invalid: string[] = colors.filter((c) => !isValidHexColor(c));\n\tif (invalid.length > 0) {\n\t\tthrow new Error(\n\t\t\t`HighlightPlugin: invalid hex color(s): ${invalid.join(', ')}. Expected format: #RGB or #RRGGBB.`,\n\t\t);\n\t}\n\n\tconst seen: Set<string> = new Set();\n\tconst unique: string[] = [];\n\tfor (const color of colors) {\n\t\tconst normalized: string = color.toLowerCase();\n\t\tif (!seen.has(normalized)) {\n\t\t\tseen.add(normalized);\n\t\t\tunique.push(normalized);\n\t\t}\n\t}\n\treturn unique;\n}\n\n// --- Color Palette (Highlight-optimized: 10 columns x 5 rows) ---\n\nconst HIGHLIGHT_PALETTE: readonly string[] = [\n\t// Row 1 — Classic highlighter colors (bright, vivid)\n\t'#fff176',\n\t'#aed581',\n\t'#4dd0e1',\n\t'#64b5f6',\n\t'#ce93d8',\n\t'#f48fb1',\n\t'#ffab91',\n\t'#ff8a65',\n\t'#e6ee9c',\n\t'#80cbc4',\n\n\t// Row 2 — Light pastels\n\t'#fff9c4',\n\t'#dcedc8',\n\t'#e0f7fa',\n\t'#e3f2fd',\n\t'#f3e5f5',\n\t'#fce4ec',\n\t'#fff3e0',\n\t'#fbe9e7',\n\t'#f9fbe7',\n\t'#e0f2f1',\n\n\t// Row 3 — Medium pastels\n\t'#fff59d',\n\t'#c5e1a5',\n\t'#80deea',\n\t'#90caf9',\n\t'#e1bee7',\n\t'#f8bbd0',\n\t'#ffcc80',\n\t'#ffab91',\n\t'#e6ee9c',\n\t'#a5d6a7',\n\n\t// Row 4 — Bold pastels\n\t'#ffee58',\n\t'#9ccc65',\n\t'#26c6da',\n\t'#42a5f5',\n\t'#ab47bc',\n\t'#ec407a',\n\t'#ffa726',\n\t'#ff7043',\n\t'#d4e157',\n\t'#66bb6a',\n\n\t// Row 5 — Grays and neutral highlights\n\t'#ffffff',\n\t'#fafafa',\n\t'#f5f5f5',\n\t'#eeeeee',\n\t'#e0e0e0',\n\t'#bdbdbd',\n\t'#e8eaf6',\n\t'#efebe9',\n\t'#eceff1',\n\t'#fafafa',\n];\n\n// --- Plugin ---\n\nexport class HighlightPlugin implements Plugin {\n\treadonly id = 'highlight';\n\treadonly name = 'Highlight';\n\treadonly priority = 24;\n\n\tprivate readonly config: HighlightConfig;\n\tprivate readonly colors: readonly string[];\n\n\tconstructor(config?: Partial<HighlightConfig>) {\n\t\tthis.config = { ...DEFAULT_CONFIG, ...config };\n\t\tthis.colors = resolveColors(config?.colors);\n\t}\n\n\tinit(context: PluginContext): void {\n\t\tcontext.registerStyleSheet(COLOR_PICKER_CSS);\n\t\tthis.registerMarkSpec(context);\n\t\tthis.registerCommands(context);\n\t\tthis.registerToolbarItem(context);\n\t}\n\n\tprivate registerMarkSpec(context: PluginContext): void {\n\t\tcontext.registerMarkSpec({\n\t\t\ttype: 'highlight',\n\t\t\trank: 4,\n\t\t\tattrs: {\n\t\t\t\tcolor: { default: '' },\n\t\t\t},\n\t\t\ttoDOM(mark) {\n\t\t\t\tconst span = document.createElement('span');\n\t\t\t\tconst color = mark.attrs?.color ?? '';\n\t\t\t\tspan.style.backgroundColor = color;\n\t\t\t\treturn span;\n\t\t\t},\n\t\t\ttoHTMLString: (mark, content) => {\n\t\t\t\tconst color: string = String(mark.attrs?.color ?? '');\n\t\t\t\treturn `<span style=\"background-color: ${color}\">${content}</span>`;\n\t\t\t},\n\t\t\tparseHTML: [\n\t\t\t\t{\n\t\t\t\t\ttag: 'span',\n\t\t\t\t\tgetAttrs: (el) => {\n\t\t\t\t\t\tconst color: string = el.style.backgroundColor;\n\t\t\t\t\t\tif (!color) return false;\n\t\t\t\t\t\treturn { color };\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t\tsanitize: { tags: ['span'] },\n\t\t});\n\t}\n\n\tprivate registerCommands(context: PluginContext): void {\n\t\tcontext.registerCommand('removeHighlight', () => {\n\t\t\tconst state = context.getState();\n\t\t\treturn this.removeHighlight(context, state);\n\t\t});\n\t}\n\n\tprivate registerToolbarItem(context: PluginContext): void {\n\t\tconst pathD =\n\t\t\t'M11 3L5.5 17h2.25l1.12-3h6.25l1.12 3h2.25L13 3h-2z' + 'm-1.38 9L12 5.67 14.38 12H9.62z';\n\t\tconst icon: string = [\n\t\t\t'<svg xmlns=\"http://www.w3.org/2000/svg\"',\n\t\t\t' viewBox=\"0 0 24 24\">',\n\t\t\t`<path d=\"${pathD}\"/>`,\n\t\t\t'<rect x=\"3\" y=\"17\" width=\"18\" height=\"6\"',\n\t\t\t' rx=\"0.5\" fill=\"#fff176\"/>',\n\t\t\t'</svg>',\n\t\t].join('');\n\n\t\tcontext.registerToolbarItem({\n\t\t\tid: 'highlight',\n\t\t\tgroup: 'format',\n\t\t\ticon,\n\t\t\tlabel: 'Highlight',\n\t\t\ttooltip: 'Highlight Color',\n\t\t\tcommand: 'removeHighlight',\n\t\t\tpriority: 46,\n\t\t\tpopupType: 'custom',\n\t\t\tseparatorAfter: this.config.separatorAfter,\n\t\t\trenderPopup: (container, ctx) => {\n\t\t\t\tthis.renderHighlightPopup(container, ctx);\n\t\t\t},\n\t\t\tisActive: (state) => this.isHighlightActive(state),\n\t\t});\n\t}\n\n\t// --- State Queries ---\n\n\tprivate isHighlightActive(state: EditorState): boolean {\n\t\treturn this.getActiveColor(state) !== null;\n\t}\n\n\tprivate getActiveColor(state: EditorState): string | null {\n\t\tconst sel = state.selection;\n\t\tif (isNodeSelection(sel)) return null;\n\n\t\tif (isCollapsed(sel)) {\n\t\t\tif (state.storedMarks) {\n\t\t\t\tconst mark = state.storedMarks.find((m) => m.type === 'highlight');\n\t\t\t\treturn mark && isMarkOfType(mark, 'highlight') ? (mark.attrs.color ?? null) : null;\n\t\t\t}\n\t\t\tconst block = state.getBlock(sel.anchor.blockId);\n\t\t\tif (!block) return null;\n\t\t\tconst marks = getBlockMarksAtOffset(block, sel.anchor.offset);\n\t\t\tconst mark = marks.find((m) => m.type === 'highlight');\n\t\t\treturn mark && isMarkOfType(mark, 'highlight') ? (mark.attrs.color ?? null) : null;\n\t\t}\n\n\t\tconst block = state.getBlock(sel.anchor.blockId);\n\t\tif (!block) return null;\n\t\tconst marks = getBlockMarksAtOffset(block, sel.anchor.offset);\n\t\tconst mark = marks.find((m) => m.type === 'highlight');\n\t\treturn mark && isMarkOfType(mark, 'highlight') ? (mark.attrs.color ?? null) : null;\n\t}\n\n\t// --- Highlight Application ---\n\n\tprivate applyHighlight(context: PluginContext, state: EditorState, color: string): boolean {\n\t\tconst sel = state.selection;\n\t\tif (isNodeSelection(sel)) return false;\n\n\t\tif (isCollapsed(sel)) {\n\t\t\tconst anchorBlock = state.getBlock(sel.anchor.blockId);\n\t\t\tif (!anchorBlock) return false;\n\t\t\tconst currentMarks =\n\t\t\t\tstate.storedMarks ?? getBlockMarksAtOffset(anchorBlock, sel.anchor.offset);\n\t\t\tconst withoutHighlight = currentMarks.filter((m) => m.type !== 'highlight');\n\t\t\tconst newMarks = [...withoutHighlight, { type: markType('highlight'), attrs: { color } }];\n\n\t\t\tconst tr = state\n\t\t\t\t.transaction('command')\n\t\t\t\t.setStoredMarks(newMarks, state.storedMarks)\n\t\t\t\t.setSelection(sel)\n\t\t\t\t.build();\n\t\t\tcontext.dispatch(tr);\n\t\t\treturn true;\n\t\t}\n\n\t\tconst range = selectionRange(sel, state.getBlockOrder());\n\t\tconst builder = state.transaction('command');\n\t\tconst mark = { type: markType('highlight'), attrs: { color } };\n\n\t\tforEachBlockInRange(state, range, (blockId, from, to) => {\n\t\t\tbuilder.removeMark(blockId, from, to, { type: markType('highlight') });\n\t\t\tbuilder.addMark(blockId, from, to, mark);\n\t\t});\n\n\t\tbuilder.setSelection(sel);\n\t\tcontext.dispatch(builder.build());\n\t\treturn true;\n\t}\n\n\tprivate removeHighlight(context: PluginContext, state: EditorState): boolean {\n\t\tconst sel = state.selection;\n\t\tif (isNodeSelection(sel)) return false;\n\n\t\tif (isCollapsed(sel)) {\n\t\t\tconst anchorBlock = state.getBlock(sel.anchor.blockId);\n\t\t\tif (!anchorBlock) return false;\n\t\t\tconst currentMarks =\n\t\t\t\tstate.storedMarks ?? getBlockMarksAtOffset(anchorBlock, sel.anchor.offset);\n\t\t\tif (!hasMark(currentMarks, markType('highlight'))) return false;\n\n\t\t\tconst newMarks = currentMarks.filter((m) => m.type !== 'highlight');\n\t\t\tconst tr = state\n\t\t\t\t.transaction('command')\n\t\t\t\t.setStoredMarks(newMarks, state.storedMarks)\n\t\t\t\t.setSelection(sel)\n\t\t\t\t.build();\n\t\t\tcontext.dispatch(tr);\n\t\t\treturn true;\n\t\t}\n\n\t\tconst range = selectionRange(sel, state.getBlockOrder());\n\t\tconst builder = state.transaction('command');\n\n\t\tforEachBlockInRange(state, range, (blockId, from, to) => {\n\t\t\tbuilder.removeMark(blockId, from, to, { type: markType('highlight') });\n\t\t});\n\n\t\tbuilder.setSelection(sel);\n\t\tcontext.dispatch(builder.build());\n\t\treturn true;\n\t}\n\n\t// --- Popup Rendering ---\n\n\tprivate renderHighlightPopup(container: HTMLElement, context: PluginContext): void {\n\t\tcontainer.classList.add('notectl-color-picker');\n\n\t\tconst state = context.getState();\n\t\tconst activeColor = this.getActiveColor(state);\n\n\t\tconst defaultBtn = document.createElement('button');\n\t\tdefaultBtn.type = 'button';\n\t\tdefaultBtn.className = 'notectl-color-picker__default';\n\t\tdefaultBtn.textContent = 'None';\n\t\tdefaultBtn.addEventListener('mousedown', (e) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tcontext.executeCommand('removeHighlight');\n\t\t});\n\t\tcontainer.appendChild(defaultBtn);\n\n\t\tconst grid = document.createElement('div');\n\t\tgrid.className = 'notectl-color-picker__grid';\n\n\t\tfor (const color of this.colors) {\n\t\t\tconst swatch = document.createElement('button');\n\t\t\tswatch.type = 'button';\n\t\t\tswatch.className = 'notectl-color-picker__swatch';\n\t\t\tif (activeColor && activeColor.toLowerCase() === color.toLowerCase()) {\n\t\t\t\tswatch.classList.add('notectl-color-picker__swatch--active');\n\t\t\t}\n\t\t\tswatch.style.backgroundColor = color;\n\t\t\tif (color === '#ffffff') {\n\t\t\t\tswatch.style.border = '1px solid #d0d0d0';\n\t\t\t}\n\t\t\tswatch.title = color;\n\t\t\tswatch.setAttribute('aria-label', `Highlight color ${color}`);\n\n\t\t\tswatch.addEventListener('mousedown', (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\te.stopPropagation();\n\t\t\t\tthis.applyHighlight(context, context.getState(), color);\n\t\t\t});\n\n\t\t\tgrid.appendChild(swatch);\n\t\t}\n\n\t\tcontainer.appendChild(grid);\n\t}\n}\n"],"names":["DEFAULT_CONFIG","HEX_COLOR_PATTERN","HIGHLIGHT_PALETTE","HighlightPlugin","id","name","priority","config","colors","this","length","invalid","filter","c","value","test","Error","join","seen","Set","unique","color","normalized","toLowerCase","has","add","push","context","registerStyleSheet","COLOR_PICKER_CSS","registerMarkSpec","registerCommands","registerToolbarItem","type","rank","attrs","default","mark","span","document","createElement","style","backgroundColor","toHTMLString","content","String","parseHTML","tag","getAttrs","el","sanitize","tags","registerCommand","state","getState","removeHighlight","icon","group","label","tooltip","command","popupType","separatorAfter","renderPopup","container","ctx","renderHighlightPopup","isActive","isHighlightActive","getActiveColor","sel","selection","isNodeSelection","isCollapsed","storedMarks","find","m","isMarkOfType","block","getBlock","anchor","blockId","getBlockMarksAtOffset","offset","anchorBlock","newMarks","markType","tr","transaction","setStoredMarks","setSelection","build","dispatch","range","selectionRange","getBlockOrder","builder","forEachBlockInRange","from","to","removeMark","addMark","currentMarks","hasMark","classList","activeColor","defaultBtn","className","textContent","addEventListener","e","preventDefault","stopPropagation","executeCommand","appendChild","grid","swatch","border","title","setAttribute","applyHighlight"],"mappings":"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"}
1
+ {"version":3,"file":"highlight.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,15 @@
1
+ /** Locale interface and default English locale for the HorizontalRulePlugin. */
2
+ export interface HorizontalRuleLocale {
3
+ readonly label: string;
4
+ readonly tooltip: (shortcut: string) => string;
5
+ }
6
+ export declare const HORIZONTAL_RULE_LOCALE_EN: HorizontalRuleLocale;
7
+ export declare const HORIZONTAL_RULE_LOCALE_DE: HorizontalRuleLocale;
8
+ export declare const HORIZONTAL_RULE_LOCALE_ES: HorizontalRuleLocale;
9
+ export declare const HORIZONTAL_RULE_LOCALE_FR: HorizontalRuleLocale;
10
+ export declare const HORIZONTAL_RULE_LOCALE_ZH: HorizontalRuleLocale;
11
+ export declare const HORIZONTAL_RULE_LOCALE_RU: HorizontalRuleLocale;
12
+ export declare const HORIZONTAL_RULE_LOCALE_AR: HorizontalRuleLocale;
13
+ export declare const HORIZONTAL_RULE_LOCALE_HI: HorizontalRuleLocale;
14
+ export declare const HORIZONTAL_RULE_LOCALES: Record<string, HorizontalRuleLocale>;
15
+ //# sourceMappingURL=HorizontalRuleLocale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HorizontalRuleLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/horizontal-rule/HorizontalRuleLocale.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAIhF,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAID,eAAO,MAAM,yBAAyB,EAAE,oBAGvC,CAAC;AAIF,eAAO,MAAM,yBAAyB,EAAE,oBAGvC,CAAC;AAIF,eAAO,MAAM,yBAAyB,EAAE,oBAGvC,CAAC;AAIF,eAAO,MAAM,yBAAyB,EAAE,oBAGvC,CAAC;AAIF,eAAO,MAAM,yBAAyB,EAAE,oBAGvC,CAAC;AAIF,eAAO,MAAM,yBAAyB,EAAE,oBAGvC,CAAC;AAIF,eAAO,MAAM,yBAAyB,EAAE,oBAGvC,CAAC;AAIF,eAAO,MAAM,yBAAyB,EAAE,oBAGvC,CAAC;AAIF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CASxE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { Plugin, PluginContext } from '../Plugin.js';
2
+ import { HorizontalRuleLocale } from './HorizontalRuleLocale.js';
2
3
  declare module '../../model/AttrRegistry.js' {
3
4
  interface NodeAttrRegistry {
4
5
  horizontal_rule: Record<string, never>;
@@ -7,12 +8,15 @@ declare module '../../model/AttrRegistry.js' {
7
8
  export interface HorizontalRuleConfig {
8
9
  /** When true, a separator is rendered after the toolbar item. */
9
10
  readonly separatorAfter?: boolean;
11
+ /** Locale override for user-facing strings. */
12
+ readonly locale?: HorizontalRuleLocale;
10
13
  }
11
14
  export declare class HorizontalRulePlugin implements Plugin {
12
15
  readonly id = "horizontal-rule";
13
16
  readonly name = "Horizontal Rule";
14
17
  readonly priority = 40;
15
18
  private readonly config;
19
+ private locale;
16
20
  constructor(config?: Partial<HorizontalRuleConfig>);
17
21
  init(context: PluginContext): void;
18
22
  private registerNodeSpec;
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalRulePlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/horizontal-rule/HorizontalRulePlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK1D,OAAO,QAAQ,6BAA6B,CAAC;IAC5C,UAAU,gBAAgB;QACzB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACvC;CACD;AAID,MAAM,WAAW,oBAAoB;IACpC,iEAAiE;IACjE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CAClC;AAeD,qBAAa,oBAAqB,YAAW,MAAM;IAClD,QAAQ,CAAC,EAAE,qBAAqB;IAChC,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,QAAQ,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAIlD,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAQlC,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,mBAAmB;IAiB3B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAmB5B"}
1
+ {"version":3,"file":"HorizontalRulePlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/horizontal-rule/HorizontalRulePlugin.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,EAA2B,KAAK,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAI/F,OAAO,QAAQ,6BAA6B,CAAC;IAC5C,UAAU,gBAAgB;QACzB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;KACvC;CACD;AAID,MAAM,WAAW,oBAAoB;IACpC,iEAAiE;IACjE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,oBAAoB,CAAC;CACvC;AAeD,qBAAa,oBAAqB,YAAW,MAAM;IAClD,QAAQ,CAAC,EAAE,qBAAqB;IAChC,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,QAAQ,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,MAAM,CAAwB;gBAE1B,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAIlD,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IASlC,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,mBAAmB;IAiB3B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAmB5B"}
@@ -1,59 +1,5 @@
1
- import { c as e } from "../chunks/Document-CI3iCwEP.mjs";
2
- import { c as t } from "../chunks/NodeSpec-NZVvcCuH.mjs";
3
- import { i as r, a as o, c as i } from "../chunks/Selection-D5ZjXoB7.mjs";
4
- import { n } from "../chunks/TypeBrands-C09nE2qO.mjs";
5
- import { f as s } from "../chunks/ToolbarItem-ugDymuXi.mjs";
6
- const a = {};
7
- function l(e2) {
8
- const t2 = e2.selection;
9
- return r(t2) ? -1 : e2.doc.children.findIndex((e3) => e3.id === t2.anchor.blockId);
10
- }
11
- class c {
12
- id = "horizontal-rule";
13
- name = "Horizontal Rule";
14
- priority = 40;
15
- config;
16
- constructor(e2) {
17
- this.config = { ...a, ...e2 };
18
- }
19
- init(e2) {
20
- this.registerNodeSpec(e2), this.registerCommands(e2), this.registerKeymap(e2), this.registerInputRule(e2), this.registerToolbarItem(e2);
21
- }
22
- registerNodeSpec(e2) {
23
- e2.registerNodeSpec({ type: "horizontal_rule", group: "block", isVoid: true, toDOM: (e3) => t("hr", e3.id), toHTML: () => "<hr>", parseHTML: [{ tag: "hr" }], sanitize: { tags: ["hr"] } });
24
- }
25
- registerCommands(e2) {
26
- e2.registerCommand("insertHorizontalRule", () => this.insertHorizontalRule(e2));
27
- }
28
- registerKeymap(e2) {
29
- e2.registerKeymap({ "Mod-Shift-H": () => e2.executeCommand("insertHorizontalRule") });
30
- }
31
- registerInputRule(t2) {
32
- t2.registerInputRule({ pattern: /^-{3,} $/, handler(t3, s2, a2, c2) {
33
- const u = t3.selection;
34
- if (r(u)) return null;
35
- if (!o(u)) return null;
36
- const p = t3.getBlock(u.anchor.blockId);
37
- if (!p || "paragraph" !== p.type) return null;
38
- const d = l(t3);
39
- if (-1 === d) return null;
40
- const h = e(n("paragraph"));
41
- return t3.transaction("input").deleteTextAt(u.anchor.blockId, 0, c2).setBlockType(u.anchor.blockId, n("horizontal_rule")).insertNode([], d + 1, h).setSelection(i(h.id, 0)).build();
42
- } });
43
- }
44
- registerToolbarItem(e2) {
45
- e2.registerToolbarItem({ id: "horizontal-rule", group: "block", icon: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11h16v2H4z"/></svg>', label: "Horizontal Rule", tooltip: `Horizontal Rule (${s("Mod-Shift-H")})`, command: "insertHorizontalRule", priority: 60, separatorAfter: this.config.separatorAfter, isActive: () => false });
46
- }
47
- insertHorizontalRule(t2) {
48
- const o2 = t2.getState();
49
- if (r(o2.selection)) return false;
50
- const s2 = l(o2);
51
- if (-1 === s2) return false;
52
- const a2 = e(n("horizontal_rule")), c2 = e(n("paragraph")), u = o2.transaction("command").insertNode([], s2 + 1, a2).insertNode([], s2 + 2, c2).setSelection(i(c2.id, 0)).build();
53
- return t2.dispatch(u), true;
54
- }
55
- }
1
+ import { b } from "../chunks/index-BRYzYOYC.mjs";
56
2
  export {
57
- c as HorizontalRulePlugin
3
+ b as HorizontalRulePlugin
58
4
  };
59
5
  //# sourceMappingURL=horizontal-rule.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"horizontal-rule.mjs","sources":["../../src/plugins/horizontal-rule/HorizontalRulePlugin.ts"],"sourcesContent":["/**\n * HorizontalRulePlugin: registers a horizontal rule (divider) void block type\n * with NodeSpec, insert command, input rule, keyboard shortcut, and toolbar button.\n */\n\nimport { createBlockNode } from '../../model/Document.js';\nimport { createBlockElement } from '../../model/NodeSpec.js';\nimport { createCollapsedSelection, isCollapsed, isNodeSelection } from '../../model/Selection.js';\nimport { nodeType } from '../../model/TypeBrands.js';\nimport type { EditorState } from '../../state/EditorState.js';\nimport type { Plugin, PluginContext } from '../Plugin.js';\nimport { formatShortcut } from '../toolbar/ToolbarItem.js';\n\n// --- Attribute Registry Augmentation ---\n\ndeclare module '../../model/AttrRegistry.js' {\n\tinterface NodeAttrRegistry {\n\t\thorizontal_rule: Record<string, never>;\n\t}\n}\n\n// --- Configuration ---\n\nexport interface HorizontalRuleConfig {\n\t/** When true, a separator is rendered after the toolbar item. */\n\treadonly separatorAfter?: boolean;\n}\n\nconst DEFAULT_CONFIG: HorizontalRuleConfig = {};\n\n// --- Helpers ---\n\n/** Finds the index of the cursor's block among top-level document children. */\nfunction findBlockIndexForCursor(state: EditorState): number {\n\tconst sel = state.selection;\n\tif (isNodeSelection(sel)) return -1;\n\treturn state.doc.children.findIndex((b) => b.id === sel.anchor.blockId);\n}\n\n// --- Plugin ---\n\nexport class HorizontalRulePlugin implements Plugin {\n\treadonly id = 'horizontal-rule';\n\treadonly name = 'Horizontal Rule';\n\treadonly priority = 40;\n\n\tprivate readonly config: HorizontalRuleConfig;\n\n\tconstructor(config?: Partial<HorizontalRuleConfig>) {\n\t\tthis.config = { ...DEFAULT_CONFIG, ...config };\n\t}\n\n\tinit(context: PluginContext): void {\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: 'horizontal_rule',\n\t\t\tgroup: 'block',\n\t\t\tisVoid: true,\n\t\t\ttoDOM(node) {\n\t\t\t\treturn createBlockElement('hr', node.id);\n\t\t\t},\n\t\t\ttoHTML() {\n\t\t\t\treturn '<hr>';\n\t\t\t},\n\t\t\tparseHTML: [{ tag: 'hr' }],\n\t\t\tsanitize: { tags: ['hr'] },\n\t\t});\n\t}\n\n\tprivate registerCommands(context: PluginContext): void {\n\t\tcontext.registerCommand('insertHorizontalRule', () => {\n\t\t\treturn this.insertHorizontalRule(context);\n\t\t});\n\t}\n\n\tprivate registerKeymap(context: PluginContext): void {\n\t\tcontext.registerKeymap({\n\t\t\t'Mod-Shift-H': () => context.executeCommand('insertHorizontalRule'),\n\t\t});\n\t}\n\n\tprivate registerInputRule(context: PluginContext): void {\n\t\tcontext.registerInputRule({\n\t\t\tpattern: /^-{3,} $/,\n\t\t\thandler(state, _match, _start, end) {\n\t\t\t\tconst sel = state.selection;\n\t\t\t\tif (isNodeSelection(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\tconst blockIndex: number = findBlockIndexForCursor(state);\n\t\t\t\tif (blockIndex === -1) return null;\n\n\t\t\t\tconst newParagraph = createBlockNode(nodeType('paragraph'));\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, 0, end)\n\t\t\t\t\t.setBlockType(sel.anchor.blockId, nodeType('horizontal_rule'))\n\t\t\t\t\t.insertNode([], blockIndex + 1, newParagraph)\n\t\t\t\t\t.setSelection(createCollapsedSelection(newParagraph.id, 0))\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=\"M4 11h16v2H4z\"/></svg>';\n\n\t\tcontext.registerToolbarItem({\n\t\t\tid: 'horizontal-rule',\n\t\t\tgroup: 'block',\n\t\t\ticon,\n\t\t\tlabel: 'Horizontal Rule',\n\t\t\ttooltip: `Horizontal Rule (${formatShortcut('Mod-Shift-H')})`,\n\t\t\tcommand: 'insertHorizontalRule',\n\t\t\tpriority: 60,\n\t\t\tseparatorAfter: this.config.separatorAfter,\n\t\t\tisActive: () => false,\n\t\t});\n\t}\n\n\t/**\n\t * Inserts a horizontal rule after the current block,\n\t * followed by a new paragraph for continued editing.\n\t */\n\tprivate insertHorizontalRule(context: PluginContext): boolean {\n\t\tconst state: EditorState = context.getState();\n\t\tif (isNodeSelection(state.selection)) return false;\n\t\tconst blockIndex: number = findBlockIndexForCursor(state);\n\t\tif (blockIndex === -1) return false;\n\n\t\tconst hrBlock = createBlockNode(nodeType('horizontal_rule'));\n\t\tconst newParagraph = createBlockNode(nodeType('paragraph'));\n\n\t\tconst tr = state\n\t\t\t.transaction('command')\n\t\t\t.insertNode([], blockIndex + 1, hrBlock)\n\t\t\t.insertNode([], blockIndex + 2, newParagraph)\n\t\t\t.setSelection(createCollapsedSelection(newParagraph.id, 0))\n\t\t\t.build();\n\n\t\tcontext.dispatch(tr);\n\t\treturn true;\n\t}\n}\n"],"names":["DEFAULT_CONFIG","findBlockIndexForCursor","state","sel","selection","isNodeSelection","doc","children","findIndex","b","id","anchor","blockId","HorizontalRulePlugin","name","priority","config","this","context","registerNodeSpec","registerCommands","registerKeymap","registerInputRule","registerToolbarItem","type","group","isVoid","toDOM","node","createBlockElement","toHTML","parseHTML","tag","sanitize","tags","registerCommand","insertHorizontalRule","executeCommand","pattern","_match","_start","end","isCollapsed","block","getBlock","blockIndex","newParagraph","createBlockNode","nodeType","transaction","deleteTextAt","setBlockType","insertNode","setSelection","createCollapsedSelection","build","icon","label","tooltip","formatShortcut","command","separatorAfter","isActive","getState","hrBlock","tr","dispatch"],"mappings":"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"}
1
+ {"version":3,"file":"horizontal-rule.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -0,0 +1,25 @@
1
+ /** Locale interface and default English locale for the ImagePlugin. */
2
+ export interface ImageLocale {
3
+ readonly insertImage: string;
4
+ readonly insertImageTooltip: string;
5
+ readonly uploadFromComputer: string;
6
+ readonly uploadAria: string;
7
+ readonly separator: string;
8
+ readonly urlPlaceholder: string;
9
+ readonly urlAria: string;
10
+ readonly insertButton: string;
11
+ readonly insertAria: string;
12
+ readonly imageAria: (alt: string, width?: number, height?: number) => string;
13
+ readonly resetToNaturalSize: string;
14
+ readonly uploadFailed: string;
15
+ }
16
+ export declare const IMAGE_LOCALE_EN: ImageLocale;
17
+ export declare const IMAGE_LOCALE_DE: ImageLocale;
18
+ export declare const IMAGE_LOCALE_ES: ImageLocale;
19
+ export declare const IMAGE_LOCALE_FR: ImageLocale;
20
+ export declare const IMAGE_LOCALE_ZH: ImageLocale;
21
+ export declare const IMAGE_LOCALE_RU: ImageLocale;
22
+ export declare const IMAGE_LOCALE_AR: ImageLocale;
23
+ export declare const IMAGE_LOCALE_HI: ImageLocale;
24
+ export declare const IMAGE_LOCALES: Record<string, ImageLocale>;
25
+ //# sourceMappingURL=ImageLocale.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageLocale.d.ts","sourceRoot":"","sources":["../../../src/plugins/image/ImageLocale.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAIvE,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7E,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC9B;AAID,eAAO,MAAM,eAAe,EAAE,WAmB7B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,WAmB7B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,WAmB7B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,WAmB7B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,WAmB7B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,WAmB7B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,WAmB7B,CAAC;AAIF,eAAO,MAAM,eAAe,EAAE,WAmB7B,CAAC;AAIF,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CASrD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImageNodeView.d.ts","sourceRoot":"","sources":["../../../src/plugins/image/ImageNodeView.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAY,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA8DpF,kDAAkD;AAClD,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,EACvC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,GACjE,eAAe,CAiTjB"}
1
+ {"version":3,"file":"ImageNodeView.d.ts","sourceRoot":"","sources":["../../../src/plugins/image/ImageNodeView.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGzD,OAAO,KAAK,EAAY,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AA8DpF,kDAAkD;AAClD,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,EACvC,cAAc,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC,GACjE,eAAe,CAkTjB"}
@@ -22,6 +22,7 @@ export declare class ImagePlugin implements Plugin {
22
22
  private readonly uploadStates;
23
23
  private readonly blobUrls;
24
24
  private context;
25
+ private locale;
25
26
  constructor(config?: Partial<ImagePluginConfig>);
26
27
  init(context: PluginContext): void;
27
28
  destroy(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ImagePlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/image/ImagePlugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAS1D,OAAO,EAKN,KAAK,iBAAiB,EAEtB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,QAAQ,6BAA6B,CAAC;IAC5C,UAAU,gBAAgB;QACzB,KAAK,EAAE;YACN,GAAG,EAAE,MAAM,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;SACnC,CAAC;KACF;CACD;AAID,qBAAa,WAAY,YAAW,MAAM;IACzC,QAAQ,CAAC,EAAE,WAAW;IACtB,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,QAAQ,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqD;IACpF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,OAAO,CAA8B;gBAEjC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAK/C,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAYlC,OAAO,IAAI,IAAI;IASf,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI;IAmBnF,OAAO,CAAC,gBAAgB;IA4GxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,sBAAsB;IAoC9B,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;YA8BV,UAAU;IAwCxB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,gBAAgB;IA0GxB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,mBAAmB;CAc3B"}
1
+ {"version":3,"file":"ImagePlugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/image/ImagePlugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAU1D,OAAO,EAKN,KAAK,iBAAiB,EAEtB,MAAM,kBAAkB,CAAC;AAI1B,OAAO,QAAQ,6BAA6B,CAAC;IAC5C,UAAU,gBAAgB;QACzB,KAAK,EAAE;YACN,GAAG,EAAE,MAAM,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;SACnC,CAAC;KACF;CACD;AAID,qBAAa,WAAY,YAAW,MAAM;IACzC,QAAQ,CAAC,EAAE,WAAW;IACtB,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,QAAQ,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqD;IACpF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;IAC9C,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAK/C,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAalC,OAAO,IAAI,IAAI;IASf,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI;IAmBnF,OAAO,CAAC,gBAAgB;IAyGxB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,sBAAsB;IAoC9B,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;YA8BV,UAAU;IAwCxB,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,gBAAgB;IA0GxB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,sBAAsB;IA2B9B,OAAO,CAAC,mBAAmB;CAc3B"}
@@ -1,4 +1,5 @@
1
1
  import { ServiceKey } from '../Plugin.js';
2
+ import { ImageLocale } from './ImageLocale.js';
2
3
  export interface ImageAttrs {
3
4
  readonly src: string;
4
5
  readonly alt: string;
@@ -43,6 +44,8 @@ export interface ImagePluginConfig {
43
44
  readonly resizeStepLarge?: number;
44
45
  /** Customize keyboard bindings for image resize actions. */
45
46
  readonly keymap?: ImageKeymap;
47
+ /** Locale override for user-facing strings. */
48
+ readonly locale?: ImageLocale;
46
49
  }
47
50
  export declare const DEFAULT_IMAGE_CONFIG: ImagePluginConfig;
48
51
  //# sourceMappingURL=ImageUpload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImageUpload.d.ts","sourceRoot":"","sources":["../../../src/plugins/image/ImageUpload.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC5C;AAID,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IAClC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/C;AAED,eAAO,MAAM,oBAAoB,gCAAqD,CAAC;AAEvF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAItE;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,WAAW,EAAE,MAAM,CAAC,CAM5E,CAAC;AAIF,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAOlC,CAAC"}
1
+ {"version":3,"file":"ImageUpload.d.ts","sourceRoot":"","sources":["../../../src/plugins/image/ImageUpload.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAIpD,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC5C;AAID,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IAClC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/C;AAED,eAAO,MAAM,oBAAoB,gCAAqD,CAAC;AAEvF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAItE;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,WAAW,EAAE,MAAM,CAAC,CAM5E,CAAC;AAIF,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,+DAA+D;IAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC9B;AAED,eAAO,MAAM,oBAAoB,EAAE,iBAOlC,CAAC"}