@erag/text-editor-vue 0.0.2

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 (205) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/index.d.ts +2 -0
  4. package/dist/src/commands/clipboardCommands.d.ts +2 -0
  5. package/dist/src/commands/clipboardCommands.d.ts.map +1 -0
  6. package/dist/src/commands/commandRegistry.d.ts +5 -0
  7. package/dist/src/commands/commandRegistry.d.ts.map +1 -0
  8. package/dist/src/commands/formatCommands.d.ts +3 -0
  9. package/dist/src/commands/formatCommands.d.ts.map +1 -0
  10. package/dist/src/commands/historyCommands.d.ts +3 -0
  11. package/dist/src/commands/historyCommands.d.ts.map +1 -0
  12. package/dist/src/commands/insertCommands.d.ts +6 -0
  13. package/dist/src/commands/insertCommands.d.ts.map +1 -0
  14. package/dist/src/commands/listCommands.d.ts +2 -0
  15. package/dist/src/commands/listCommands.d.ts.map +1 -0
  16. package/dist/src/commands/printCommands.d.ts +2 -0
  17. package/dist/src/commands/printCommands.d.ts.map +1 -0
  18. package/dist/src/commands/tableCommands.d.ts +4 -0
  19. package/dist/src/commands/tableCommands.d.ts.map +1 -0
  20. package/dist/src/components/Editor.vue.d.ts +59 -0
  21. package/dist/src/components/Editor.vue.d.ts.map +1 -0
  22. package/dist/src/components/EditorContent.vue.d.ts +37 -0
  23. package/dist/src/components/EditorContent.vue.d.ts.map +1 -0
  24. package/dist/src/components/EditorDialogs.vue.d.ts +29 -0
  25. package/dist/src/components/EditorDialogs.vue.d.ts.map +1 -0
  26. package/dist/src/components/EditorMenuBar.vue.d.ts +39 -0
  27. package/dist/src/components/EditorMenuBar.vue.d.ts.map +1 -0
  28. package/dist/src/components/EditorStatusBar.vue.d.ts +26 -0
  29. package/dist/src/components/EditorStatusBar.vue.d.ts.map +1 -0
  30. package/dist/src/components/EditorToolbar.vue.d.ts +29 -0
  31. package/dist/src/components/EditorToolbar.vue.d.ts.map +1 -0
  32. package/dist/src/components/dialogs/BaseDialog.vue.d.ts +28 -0
  33. package/dist/src/components/dialogs/BaseDialog.vue.d.ts.map +1 -0
  34. package/dist/src/components/dialogs/ColorDialog.vue.d.ts +14 -0
  35. package/dist/src/components/dialogs/ColorDialog.vue.d.ts.map +1 -0
  36. package/dist/src/components/dialogs/EmojiDialog.vue.d.ts +10 -0
  37. package/dist/src/components/dialogs/EmojiDialog.vue.d.ts.map +1 -0
  38. package/dist/src/components/dialogs/FindReplaceDialog.vue.d.ts +13 -0
  39. package/dist/src/components/dialogs/FindReplaceDialog.vue.d.ts.map +1 -0
  40. package/dist/src/components/dialogs/InfoDialog.vue.d.ts +11 -0
  41. package/dist/src/components/dialogs/InfoDialog.vue.d.ts.map +1 -0
  42. package/dist/src/components/dialogs/LinkDialog.vue.d.ts +18 -0
  43. package/dist/src/components/dialogs/LinkDialog.vue.d.ts.map +1 -0
  44. package/dist/src/components/dialogs/MediaDialog.vue.d.ts +14 -0
  45. package/dist/src/components/dialogs/MediaDialog.vue.d.ts.map +1 -0
  46. package/dist/src/components/dialogs/PreviewDialog.vue.d.ts +12 -0
  47. package/dist/src/components/dialogs/PreviewDialog.vue.d.ts.map +1 -0
  48. package/dist/src/components/dialogs/SourceDialog.vue.d.ts +13 -0
  49. package/dist/src/components/dialogs/SourceDialog.vue.d.ts.map +1 -0
  50. package/dist/src/components/dialogs/SpecialCharacterDialog.vue.d.ts +10 -0
  51. package/dist/src/components/dialogs/SpecialCharacterDialog.vue.d.ts.map +1 -0
  52. package/dist/src/components/dialogs/TableDialog.vue.d.ts +13 -0
  53. package/dist/src/components/dialogs/TableDialog.vue.d.ts.map +1 -0
  54. package/dist/src/components/dialogs/TablePropertiesDialog.vue.d.ts +10 -0
  55. package/dist/src/components/dialogs/TablePropertiesDialog.vue.d.ts.map +1 -0
  56. package/dist/src/components/dialogs/TemplateDialog.vue.d.ts +15 -0
  57. package/dist/src/components/dialogs/TemplateDialog.vue.d.ts.map +1 -0
  58. package/dist/src/components/dialogs/WordCountDialog.vue.d.ts +12 -0
  59. package/dist/src/components/dialogs/WordCountDialog.vue.d.ts.map +1 -0
  60. package/dist/src/components/icons/EditorIcon.vue.d.ts +8 -0
  61. package/dist/src/components/icons/EditorIcon.vue.d.ts.map +1 -0
  62. package/dist/src/components/images/ImageResizeOverlay.vue.d.ts +17 -0
  63. package/dist/src/components/images/ImageResizeOverlay.vue.d.ts.map +1 -0
  64. package/dist/src/components/images/InlineImageUpload.vue.d.ts +20 -0
  65. package/dist/src/components/images/InlineImageUpload.vue.d.ts.map +1 -0
  66. package/dist/src/components/images/InlineImageUploadPortal.vue.d.ts +19 -0
  67. package/dist/src/components/images/InlineImageUploadPortal.vue.d.ts.map +1 -0
  68. package/dist/src/components/mentions/MentionDropdown.vue.d.ts +45 -0
  69. package/dist/src/components/mentions/MentionDropdown.vue.d.ts.map +1 -0
  70. package/dist/src/components/mentions/MentionHoverCard.vue.d.ts +14 -0
  71. package/dist/src/components/mentions/MentionHoverCard.vue.d.ts.map +1 -0
  72. package/dist/src/components/mentions/MentionItem.vue.d.ts +28 -0
  73. package/dist/src/components/mentions/MentionItem.vue.d.ts.map +1 -0
  74. package/dist/src/components/menus/FloatingMenu.vue.d.ts +19 -0
  75. package/dist/src/components/menus/FloatingMenu.vue.d.ts.map +1 -0
  76. package/dist/src/components/merge-tags/MergeTagDropdown.vue.d.ts +20 -0
  77. package/dist/src/components/merge-tags/MergeTagDropdown.vue.d.ts.map +1 -0
  78. package/dist/src/components/merge-tags/MergeTagSidebar.vue.d.ts +16 -0
  79. package/dist/src/components/merge-tags/MergeTagSidebar.vue.d.ts.map +1 -0
  80. package/dist/src/components/toolbar/CaseChangeMenu.vue.d.ts +14 -0
  81. package/dist/src/components/toolbar/CaseChangeMenu.vue.d.ts.map +1 -0
  82. package/dist/src/components/toolbar/ColorPalette.vue.d.ts +13 -0
  83. package/dist/src/components/toolbar/ColorPalette.vue.d.ts.map +1 -0
  84. package/dist/src/components/toolbar/ToolbarButton.vue.d.ts +15 -0
  85. package/dist/src/components/toolbar/ToolbarButton.vue.d.ts.map +1 -0
  86. package/dist/src/composables/useEditor.d.ts +15 -0
  87. package/dist/src/composables/useEditor.d.ts.map +1 -0
  88. package/dist/src/composables/useEditorConfig.d.ts +4 -0
  89. package/dist/src/composables/useEditorConfig.d.ts.map +1 -0
  90. package/dist/src/composables/useEditorHistory.d.ts +8 -0
  91. package/dist/src/composables/useEditorHistory.d.ts.map +1 -0
  92. package/dist/src/composables/useEditorResize.d.ts +8 -0
  93. package/dist/src/composables/useEditorResize.d.ts.map +1 -0
  94. package/dist/src/composables/useEditorSelection.d.ts +10 -0
  95. package/dist/src/composables/useEditorSelection.d.ts.map +1 -0
  96. package/dist/src/composables/useEditorUpload.d.ts +14 -0
  97. package/dist/src/composables/useEditorUpload.d.ts.map +1 -0
  98. package/dist/src/composables/useFloatingPosition.d.ts +6 -0
  99. package/dist/src/composables/useFloatingPosition.d.ts.map +1 -0
  100. package/dist/src/composables/useFullscreen.d.ts +6 -0
  101. package/dist/src/composables/useFullscreen.d.ts.map +1 -0
  102. package/dist/src/composables/useImageResize.d.ts +15 -0
  103. package/dist/src/composables/useImageResize.d.ts.map +1 -0
  104. package/dist/src/composables/useInlineImageUpload.d.ts +19 -0
  105. package/dist/src/composables/useInlineImageUpload.d.ts.map +1 -0
  106. package/dist/src/composables/useLinkInitial.d.ts +7 -0
  107. package/dist/src/composables/useLinkInitial.d.ts.map +1 -0
  108. package/dist/src/composables/useMentions.d.ts +28 -0
  109. package/dist/src/composables/useMentions.d.ts.map +1 -0
  110. package/dist/src/composables/useMergeTagSidebar.d.ts +10 -0
  111. package/dist/src/composables/useMergeTagSidebar.d.ts.map +1 -0
  112. package/dist/src/composables/useMergeTags.d.ts +21 -0
  113. package/dist/src/composables/useMergeTags.d.ts.map +1 -0
  114. package/dist/src/composables/useToolbarOverflow.d.ts +6 -0
  115. package/dist/src/composables/useToolbarOverflow.d.ts.map +1 -0
  116. package/dist/src/composables/useWordCount.d.ts +4 -0
  117. package/dist/src/composables/useWordCount.d.ts.map +1 -0
  118. package/dist/src/config/defaultConfig.d.ts +3 -0
  119. package/dist/src/config/defaultConfig.d.ts.map +1 -0
  120. package/dist/src/config/mentionConfig.d.ts +4 -0
  121. package/dist/src/config/mentionConfig.d.ts.map +1 -0
  122. package/dist/src/config/menuConfig.d.ts +3 -0
  123. package/dist/src/config/menuConfig.d.ts.map +1 -0
  124. package/dist/src/config/menuIcons.d.ts +3 -0
  125. package/dist/src/config/menuIcons.d.ts.map +1 -0
  126. package/dist/src/config/mergeTagConfig.d.ts +4 -0
  127. package/dist/src/config/mergeTagConfig.d.ts.map +1 -0
  128. package/dist/src/config/templateConfig.d.ts +3 -0
  129. package/dist/src/config/templateConfig.d.ts.map +1 -0
  130. package/dist/src/config/toolbarConfig.d.ts +5 -0
  131. package/dist/src/config/toolbarConfig.d.ts.map +1 -0
  132. package/dist/src/constants/editorCommands.d.ts +2 -0
  133. package/dist/src/constants/editorCommands.d.ts.map +1 -0
  134. package/dist/src/constants/editorDefaults.d.ts +44 -0
  135. package/dist/src/constants/editorDefaults.d.ts.map +1 -0
  136. package/dist/src/constants/emojis.d.ts +4 -0
  137. package/dist/src/constants/emojis.d.ts.map +1 -0
  138. package/dist/src/constants/imageResize.d.ts +3 -0
  139. package/dist/src/constants/imageResize.d.ts.map +1 -0
  140. package/dist/src/constants/keyboardShortcuts.d.ts +2 -0
  141. package/dist/src/constants/keyboardShortcuts.d.ts.map +1 -0
  142. package/dist/src/constants/packageInfo.d.ts +2 -0
  143. package/dist/src/constants/packageInfo.d.ts.map +1 -0
  144. package/dist/src/constants/printStyles.d.ts +2 -0
  145. package/dist/src/constants/printStyles.d.ts.map +1 -0
  146. package/dist/src/constants/specialCharacters.d.ts +4 -0
  147. package/dist/src/constants/specialCharacters.d.ts.map +1 -0
  148. package/dist/src/index.d.ts +5 -0
  149. package/dist/src/index.d.ts.map +1 -0
  150. package/dist/src/types/commands.d.ts +17 -0
  151. package/dist/src/types/commands.d.ts.map +1 -0
  152. package/dist/src/types/config.d.ts +101 -0
  153. package/dist/src/types/config.d.ts.map +1 -0
  154. package/dist/src/types/count.d.ts +10 -0
  155. package/dist/src/types/count.d.ts.map +1 -0
  156. package/dist/src/types/dialog.d.ts +41 -0
  157. package/dist/src/types/dialog.d.ts.map +1 -0
  158. package/dist/src/types/editor.d.ts +49 -0
  159. package/dist/src/types/editor.d.ts.map +1 -0
  160. package/dist/src/types/emoji.d.ts +8 -0
  161. package/dist/src/types/emoji.d.ts.map +1 -0
  162. package/dist/src/types/events.d.ts +26 -0
  163. package/dist/src/types/events.d.ts.map +1 -0
  164. package/dist/src/types/image.d.ts +22 -0
  165. package/dist/src/types/image.d.ts.map +1 -0
  166. package/dist/src/types/index.d.ts +16 -0
  167. package/dist/src/types/index.d.ts.map +1 -0
  168. package/dist/src/types/mention.d.ts +63 -0
  169. package/dist/src/types/mention.d.ts.map +1 -0
  170. package/dist/src/types/menu.d.ts +21 -0
  171. package/dist/src/types/menu.d.ts.map +1 -0
  172. package/dist/src/types/mergeTag.d.ts +47 -0
  173. package/dist/src/types/mergeTag.d.ts.map +1 -0
  174. package/dist/src/types/specialCharacter.d.ts +10 -0
  175. package/dist/src/types/specialCharacter.d.ts.map +1 -0
  176. package/dist/src/types/template.d.ts +19 -0
  177. package/dist/src/types/template.d.ts.map +1 -0
  178. package/dist/src/types/toolbar.d.ts +15 -0
  179. package/dist/src/types/toolbar.d.ts.map +1 -0
  180. package/dist/src/types/upload.d.ts +16 -0
  181. package/dist/src/types/upload.d.ts.map +1 -0
  182. package/dist/src/utils/config.d.ts +4 -0
  183. package/dist/src/utils/config.d.ts.map +1 -0
  184. package/dist/src/utils/dateTime.d.ts +4 -0
  185. package/dist/src/utils/dateTime.d.ts.map +1 -0
  186. package/dist/src/utils/dom.d.ts +4 -0
  187. package/dist/src/utils/dom.d.ts.map +1 -0
  188. package/dist/src/utils/html.d.ts +11 -0
  189. package/dist/src/utils/html.d.ts.map +1 -0
  190. package/dist/src/utils/mention.d.ts +11 -0
  191. package/dist/src/utils/mention.d.ts.map +1 -0
  192. package/dist/src/utils/mergeTag.d.ts +11 -0
  193. package/dist/src/utils/mergeTag.d.ts.map +1 -0
  194. package/dist/src/utils/sanitizer.d.ts +8 -0
  195. package/dist/src/utils/sanitizer.d.ts.map +1 -0
  196. package/dist/src/utils/selection.d.ts +6 -0
  197. package/dist/src/utils/selection.d.ts.map +1 -0
  198. package/dist/src/utils/units.d.ts +3 -0
  199. package/dist/src/utils/units.d.ts.map +1 -0
  200. package/dist/src/utils/url.d.ts +10 -0
  201. package/dist/src/utils/url.d.ts.map +1 -0
  202. package/dist/style.css +2 -0
  203. package/dist/text-editor-vue.js +6428 -0
  204. package/dist/text-editor-vue.js.map +1 -0
  205. package/package.json +102 -0
@@ -0,0 +1,63 @@
1
+ import { ComputedRef, Ref } from 'vue';
2
+ export interface MentionItem {
3
+ id: string | number;
4
+ label: string;
5
+ description?: string;
6
+ avatar?: string;
7
+ value?: string;
8
+ }
9
+ export interface MentionConfig {
10
+ enabled?: boolean;
11
+ minimumCharacters?: number;
12
+ debounce?: number;
13
+ limit?: number;
14
+ items?: MentionItem[] | ((query: string, signal: AbortSignal) => MentionItem[] | Promise<MentionItem[]>);
15
+ }
16
+ export interface ResolvedMentionConfig {
17
+ enabled: boolean;
18
+ minimumCharacters: number;
19
+ debounce: number;
20
+ limit: number;
21
+ items?: MentionConfig['items'];
22
+ }
23
+ export interface MentionSearchEvent {
24
+ query: string;
25
+ }
26
+ export interface MentionSelectEvent {
27
+ item: MentionItem;
28
+ query: string;
29
+ }
30
+ export interface MentionRemoveEvent {
31
+ item: MentionItem;
32
+ }
33
+ export interface MentionQueryMatch {
34
+ query: string;
35
+ range: Range;
36
+ }
37
+ export interface MentionPosition {
38
+ left: number;
39
+ top: number;
40
+ }
41
+ export type MentionDropdownState = 'loading' | 'empty' | 'error' | 'results';
42
+ export interface MentionCallbacks {
43
+ search(event: MentionSearchEvent): void;
44
+ select(event: MentionSelectEvent): void;
45
+ remove(event: MentionRemoveEvent): void;
46
+ change(): void;
47
+ }
48
+ export interface MentionComposableSources {
49
+ root: Ref<HTMLElement | null>;
50
+ config: ComputedRef<ResolvedMentionConfig>;
51
+ locked: ComputedRef<boolean>;
52
+ }
53
+ export interface MentionItemSlotProps {
54
+ item: MentionItem;
55
+ active: boolean;
56
+ }
57
+ export interface MentionQuerySlotProps {
58
+ query: string;
59
+ }
60
+ export interface MentionErrorSlotProps extends MentionQuerySlotProps {
61
+ retry: () => void;
62
+ }
63
+ //# sourceMappingURL=mention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention.d.ts","sourceRoot":"","sources":["../../../src/types/mention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE5C,MAAM,WAAW,WAAW;IACxB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EACA,WAAW,EAAE,GACb,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,WAAW,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;CAC1F;AAED,MAAM,WAAW,qBAAqB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7E,MAAM,WAAW,gBAAgB;IAC7B,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,MAAM,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAC3C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IAClC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,qBAAqB;IAChE,KAAK,EAAE,MAAM,IAAI,CAAC;CACrB"}
@@ -0,0 +1,21 @@
1
+ import { EditorMenuName, EditorPluginName } from './config';
2
+ export interface MenuItemDefinition {
3
+ id: string;
4
+ label: string;
5
+ icon?: string;
6
+ shortcut?: string;
7
+ command?: string;
8
+ value?: string;
9
+ dialog?: string;
10
+ plugin?: EditorPluginName;
11
+ tableOnly?: boolean;
12
+ separator?: boolean;
13
+ children?: MenuItemDefinition[];
14
+ }
15
+ export interface MenuDefinition {
16
+ name: EditorMenuName;
17
+ label: string;
18
+ icon: string;
19
+ items: MenuItemDefinition[];
20
+ }
21
+ //# sourceMappingURL=menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../src/types/menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjE,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACnC;AACD,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC/B"}
@@ -0,0 +1,47 @@
1
+ import { ComputedRef, Ref } from 'vue';
2
+ export interface MergeTagItem {
3
+ value: string;
4
+ group?: string;
5
+ }
6
+ export interface MergeTagConfig {
7
+ enabled?: boolean;
8
+ limit?: number;
9
+ items?: MergeTagItem[];
10
+ }
11
+ export interface ResolvedMergeTagConfig {
12
+ enabled: boolean;
13
+ limit: number;
14
+ items: MergeTagItem[];
15
+ }
16
+ export interface MergeTagQueryMatch {
17
+ query: string;
18
+ range: Range;
19
+ }
20
+ export interface MergeTagSelectEvent {
21
+ item: MergeTagItem;
22
+ query: string;
23
+ }
24
+ export interface MergeTagRemoveEvent {
25
+ item: MergeTagItem;
26
+ }
27
+ export interface MergeTagCallbacks {
28
+ select(event: MergeTagSelectEvent): void;
29
+ remove(event: MergeTagRemoveEvent): void;
30
+ change(): void;
31
+ }
32
+ export interface MergeTagComposableSources {
33
+ root: Ref<HTMLElement | null>;
34
+ config: ComputedRef<ResolvedMergeTagConfig>;
35
+ locked: ComputedRef<boolean>;
36
+ }
37
+ export interface MergeTagSidebarSources {
38
+ config: ComputedRef<ResolvedMergeTagConfig>;
39
+ disabled: ComputedRef<boolean>;
40
+ locked: ComputedRef<boolean>;
41
+ }
42
+ export interface MergeTagSidebarCallbacks {
43
+ restoreSelection(): boolean;
44
+ saveSelection(): void;
45
+ insert(item: MergeTagItem): void;
46
+ }
47
+ //# sourceMappingURL=mergeTag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeTag.d.ts","sourceRoot":"","sources":["../../../src/types/mergeTag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE5C,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAC9B,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACzC,MAAM,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACtC,IAAI,EAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9B,MAAM,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC5C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAC;IAC5C,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,wBAAwB;IACrC,gBAAgB,IAAI,OAAO,CAAC;IAC5B,aAAa,IAAI,IAAI,CAAC;IACtB,MAAM,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC;CACpC"}
@@ -0,0 +1,10 @@
1
+ export interface SpecialCharacterItem {
2
+ value: string;
3
+ label: string;
4
+ }
5
+ export interface SpecialCharacterCategory {
6
+ name: string;
7
+ items: SpecialCharacterItem[];
8
+ }
9
+ export type TextCaseMode = 'lowercase' | 'uppercase' | 'titlecase';
10
+ //# sourceMappingURL=specialCharacter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"specialCharacter.d.ts","sourceRoot":"","sources":["../../../src/types/specialCharacter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,wBAAwB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,WAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ export interface EditorTemplateItem {
2
+ id: string | number;
3
+ label: string;
4
+ content: string;
5
+ group?: string;
6
+ description?: string;
7
+ }
8
+ export interface EditorTemplatesConfig {
9
+ enabled?: boolean;
10
+ items?: EditorTemplateItem[];
11
+ }
12
+ export interface ResolvedEditorTemplatesConfig {
13
+ enabled: boolean;
14
+ items: EditorTemplateItem[];
15
+ }
16
+ export interface TemplateInsertEvent {
17
+ item: EditorTemplateItem;
18
+ }
19
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/types/template.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,kBAAkB,CAAC;CAC5B"}
@@ -0,0 +1,15 @@
1
+ export type EditorToolbarItemName = 'undo' | 'redo' | 'blocks' | 'fontfamily' | 'fontsize' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'superscript' | 'subscript' | 'casechange' | 'forecolor' | 'backcolor' | 'alignleft' | 'aligncenter' | 'alignright' | 'alignjustify' | 'bullist' | 'numlist' | 'outdent' | 'indent' | 'link' | 'image' | 'media' | 'table' | 'hr' | 'removeformat' | 'code' | 'preview' | 'fullscreen' | 'more';
2
+ export interface EditorToolbarGroup {
3
+ name?: string;
4
+ items: EditorToolbarItemName[];
5
+ }
6
+ export interface ToolbarItemDefinition {
7
+ name: EditorToolbarItemName;
8
+ label: string;
9
+ icon?: string;
10
+ command?: string;
11
+ dialog?: string;
12
+ select?: 'blocks' | 'fontfamily' | 'fontsize';
13
+ plugin?: string;
14
+ }
15
+ //# sourceMappingURL=toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../../src/types/toolbar.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAC3B,MAAM,GACN,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,MAAM,GACN,QAAQ,GACR,WAAW,GACX,eAAe,GACf,aAAa,GACb,WAAW,GACX,YAAY,GACZ,WAAW,GACX,WAAW,GACX,WAAW,GACX,aAAa,GACb,YAAY,GACZ,cAAc,GACd,SAAS,GACT,SAAS,GACT,SAAS,GACT,QAAQ,GACR,MAAM,GACN,OAAO,GACP,OAAO,GACP,OAAO,GACP,IAAI,GACJ,cAAc,GACd,MAAM,GACN,SAAS,GACT,YAAY,GACZ,MAAM,CAAC;AACb,MAAM,WAAW,kBAAkB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,qBAAqB,EAAE,CAAC;CAClC;AACD,MAAM,WAAW,qBAAqB;IAClC,IAAI,EAAE,qBAAqB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,16 @@
1
+ export interface ImageBlobInfo {
2
+ id(): string;
3
+ name(): string;
4
+ filename(): string;
5
+ blob(): Blob;
6
+ base64(): string;
7
+ blobUri(): string;
8
+ }
9
+ export type ImagesUploadHandler = (blobInfo: ImageBlobInfo, progress: (percentage: number) => void) => Promise<string>;
10
+ export interface UploadState {
11
+ progress: number;
12
+ loading: boolean;
13
+ error: string;
14
+ previewUrl: string;
15
+ }
16
+ //# sourceMappingURL=upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/types/upload.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC1B,EAAE,IAAI,MAAM,CAAC;IACb,IAAI,IAAI,MAAM,CAAC;IACf,QAAQ,IAAI,MAAM,CAAC;IACnB,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,IAAI,MAAM,CAAC;IACjB,OAAO,IAAI,MAAM,CAAC;CACrB;AACD,MAAM,MAAM,mBAAmB,GAAG,CAC9B,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,KACrC,OAAO,CAAC,MAAM,CAAC,CAAC;AACrB,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,4 @@
1
+ import { EditorInit, ResolvedEditorInit } from '../types';
2
+ export declare function deepMerge<T extends object>(base: T, override: Partial<T>): T;
3
+ export declare function normalizeEditorConfig(init?: EditorInit): ResolvedEditorInit;
4
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/utils/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAgB/D,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAY5E;AAqBD,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAkB3E"}
@@ -0,0 +1,4 @@
1
+ import { DateTimeFormatOption } from '../types';
2
+ export declare function mergeDateTimeFormats(dateFormats: DateTimeFormatOption[], timeFormats: DateTimeFormatOption[]): DateTimeFormatOption[];
3
+ export declare function formatDateTime(option: DateTimeFormatOption, date: Date): string;
4
+ //# sourceMappingURL=dateTime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dateTime.d.ts","sourceRoot":"","sources":["../../../src/utils/dateTime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErD,wBAAgB,oBAAoB,CAChC,WAAW,EAAE,oBAAoB,EAAE,EACnC,WAAW,EAAE,oBAAoB,EAAE,GACpC,oBAAoB,EAAE,CAUxB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,CAQ/E"}
@@ -0,0 +1,4 @@
1
+ export declare function closestElement<T extends keyof HTMLElementTagNameMap>(root: HTMLElement, tag: T, range?: Range | null): HTMLElementTagNameMap[T] | null;
2
+ export declare function focusableElements(container: HTMLElement): HTMLElement[];
3
+ export declare function replaceTextInElement(element: HTMLElement, search: RegExp, replacement: string, replaceAll: boolean): void;
4
+ //# sourceMappingURL=dom.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/utils/dom.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,qBAAqB,EAChE,IAAI,EAAE,WAAW,EACjB,GAAG,EAAE,CAAC,EACN,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,GACrB,qBAAqB,CAAC,CAAC,CAAC,GAAG,IAAI,CAKjC;AACD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,WAAW,GAAG,WAAW,EAAE,CAMvE;AACD,wBAAgB,oBAAoB,CAChC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,OAAO,GACpB,IAAI,CAYN"}
@@ -0,0 +1,11 @@
1
+ import { TextCountStatistics } from '../types';
2
+ export declare function getPersistentHtml(root: HTMLElement): string;
3
+ export declare function getPersistentText(root: HTMLElement): string;
4
+ export declare function getTextCounts(root: HTMLElement): {
5
+ words: number;
6
+ characters: number;
7
+ };
8
+ export declare function getDetailedTextCounts(value: string): TextCountStatistics;
9
+ export declare function escapeHtml(value: string): string;
10
+ export declare function insertAtSelection(root: HTMLElement, html: string): boolean;
11
+ //# sourceMappingURL=html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../../src/utils/html.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAIpD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAK3D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAK3D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAKtF;AACD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,CAQxE;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIhD;AACD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAqB1E"}
@@ -0,0 +1,11 @@
1
+ import { MentionItem, MentionQueryMatch } from '../types';
2
+ export declare function closestMentionElement(target: EventTarget | null, root: HTMLElement): HTMLElement | null;
3
+ export declare function detectMentionQuery(root: HTMLElement): MentionQueryMatch | null;
4
+ export declare function createMentionElement(item: MentionItem): HTMLSpanElement;
5
+ export declare function insertMentionAtRange(root: HTMLElement, range: Range, item: MentionItem): boolean;
6
+ export declare function parseMentionElement(element: Element): MentionItem | null;
7
+ export declare function isValidMentionElement(element: Element): boolean;
8
+ export declare function isMentionCandidate(element: Element): boolean;
9
+ export declare function normalizeMentionElement(element: Element): boolean;
10
+ export declare function removeAdjacentMention(root: HTMLElement, direction: 'backward' | 'forward'): MentionItem | null;
11
+ //# sourceMappingURL=mention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mention.d.ts","sourceRoot":"","sources":["../../../src/utils/mention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAK/D,wBAAgB,qBAAqB,CACjC,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,IAAI,EAAE,WAAW,GAClB,WAAW,GAAG,IAAI,CAIpB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB,GAAG,IAAI,CAsB9E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,eAAe,CAUvE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CA4BhG;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAYxE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAO/D;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAM5D;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAMjE;AAED,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,UAAU,GAAG,SAAS,GAClC,WAAW,GAAG,IAAI,CAuBpB"}
@@ -0,0 +1,11 @@
1
+ import { MergeTagItem, MergeTagQueryMatch } from '../types';
2
+ export declare function detectMergeTagQuery(root: HTMLElement): MergeTagQueryMatch | null;
3
+ export declare function insertMergeTagAtRange(root: HTMLElement, range: Range, item: MergeTagItem): boolean;
4
+ export declare function createMergeTagElement(item: MergeTagItem): HTMLSpanElement;
5
+ export declare function parseMergeTagElement(element: Element): MergeTagItem | null;
6
+ export declare function isMergeTagCandidate(element: Element): boolean;
7
+ export declare function normalizeMergeTagElement(element: Element): boolean;
8
+ export declare function removeAdjacentMergeTag(root: HTMLElement, direction: 'backward' | 'forward'): MergeTagItem | null;
9
+ export declare function normalizeMergeTagValue(value: string): string;
10
+ export declare function formatMergeTagValue(value: string): string;
11
+ //# sourceMappingURL=mergeTag.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeTag.d.ts","sourceRoot":"","sources":["../../../src/utils/mergeTag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAMjE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,kBAAkB,GAAG,IAAI,CAsBhF;AAED,wBAAgB,qBAAqB,CACjC,IAAI,EAAE,WAAW,EACjB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,YAAY,GACnB,OAAO,CAsBT;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,eAAe,CAQzE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAK1E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAQ7D;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAKlE;AAED,wBAAgB,sBAAsB,CAClC,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,UAAU,GAAG,SAAS,GAClC,YAAY,GAAG,IAAI,CAoBrB;AAUD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,8 @@
1
+ export interface SanitizerOptions {
2
+ allowedTags: string[];
3
+ allowedAttributes: Record<string, string[]>;
4
+ allowRelativeUrls: boolean;
5
+ }
6
+ export declare function canSanitizeHtml(): boolean;
7
+ export declare function sanitizeHtml(html: string, options: SanitizerOptions): string;
8
+ //# sourceMappingURL=sanitizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../../src/utils/sanitizer.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC7B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,iBAAiB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,eAAe,IAAI,OAAO,CAMzC;AA0BD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAY5E"}
@@ -0,0 +1,6 @@
1
+ export declare function saveSelection(root: HTMLElement): Range | null;
2
+ export declare function restoreSelection(range: Range | null, root: HTMLElement): boolean;
3
+ export declare function selectionElement(root: HTMLElement): HTMLElement | null;
4
+ export declare function elementPath(root: HTMLElement): string;
5
+ export declare function getCaretRect(range: Range): DOMRect;
6
+ //# sourceMappingURL=selection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../src/utils/selection.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,KAAK,GAAG,IAAI,CAK7D;AACD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAYhF;AACD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,IAAI,CAItE;AACD,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAQrD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAYlD"}
@@ -0,0 +1,3 @@
1
+ export declare function cssUnit(value: number | string | undefined): string | undefined;
2
+ export declare function pixelValue(value: number | string | undefined, fallback: number): number;
3
+ //# sourceMappingURL=units.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"units.d.ts","sourceRoot":"","sources":["../../../src/utils/units.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG9E;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAIvF"}
@@ -0,0 +1,10 @@
1
+ export declare function isSafeUrl(value: string, options: {
2
+ allowRelative: boolean;
3
+ allowDataImage?: boolean;
4
+ }): boolean;
5
+ export declare function normalizeUrl(value: string, options: {
6
+ relativeUrls: boolean;
7
+ removeScriptHost: boolean;
8
+ convertUrls: boolean;
9
+ }): string;
10
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../src/utils/url.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,aAAa,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D,OAAO,CAUT;AACD,wBAAgB,YAAY,CACxB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAE,GACpF,MAAM,CAgBR"}
package/dist/style.css ADDED
@@ -0,0 +1,2 @@
1
+ .erag-editor{--erag-editor-border-color:#d9dce1;--erag-editor-active-color:#2563eb;--erag-editor-active-bg:#eaf2ff;--erag-editor-text-color:#1f2937;--erag-editor-muted-color:#6b7280;--erag-editor-surface:#fff;--erag-editor-panel:#f8fafc;--erag-editor-shadow:0 10px 28px #0f172a24;--erag-editor-radius:9px;--erag-editor-height:420px;box-sizing:border-box;width:100%;min-width:260px;height:var(--erag-editor-height);color:var(--erag-editor-text-color);background:var(--erag-editor-surface);border:1px solid var(--erag-editor-border-color);border-radius:var(--erag-editor-radius);flex-direction:column;font:14px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex;position:relative;overflow:visible}.erag-editor,.erag-editor *,.erag-dialog,.erag-dialog *{box-sizing:border-box}.erag-editor:focus-within{border-color:#9dbcf8;box-shadow:0 0 0 2px #2563eb17}.erag-editor.erag-is-disabled{opacity:.64;background:#f8fafc}.erag-editor.erag-is-readonly .erag-editor__content{background:#fbfcfe}.erag-editor__content-wrap{flex:auto;min-height:80px;position:relative;overflow:hidden}.erag-editor__canvas{background:var(--erag-editor-surface);width:100%;height:100%;overflow:auto}.erag-editor__content{overflow-wrap:anywhere;min-height:100%;color:var(--erag-editor-text-color);background:var(--erag-editor-surface);outline:none;padding:22px 24px}.erag-editor__content:empty:before{color:#9ca3af;pointer-events:none;content:attr(data-erag-placeholder)}.erag-editor__content a{color:#2563eb}.erag-editor__content h1,.erag-editor__content h2,.erag-editor__content h3,.erag-editor__content h4,.erag-editor__content h5,.erag-editor__content h6{margin-block:.65em .4em;font-weight:600;line-height:1.25}.erag-editor__content h1{font-size:2em}.erag-editor__content h2{font-size:1.75em}.erag-editor__content h3{font-size:1.5em}.erag-editor__content h4{font-size:1.25em}.erag-editor__content h5{font-size:1.1em}.erag-editor__content h6{font-size:1em}.erag-editor__content p{margin-block:.5em}.erag-editor__content ul,.erag-editor__content ol{margin-block:.5em;padding-inline-start:1.75em;list-style-position:outside}.erag-editor__content ul{list-style-type:disc}.erag-editor__content ol{list-style-type:decimal}.erag-editor__content ul ul{list-style-type:circle}.erag-editor__content ul ul ul{list-style-type:square}.erag-editor__content ol ol{list-style-type:lower-alpha}.erag-editor__content ol ol ol{list-style-type:lower-roman}.erag-editor__content li{margin-block:.2em;display:list-item}.erag-editor__content li>ul,.erag-editor__content li>ol{margin-block:.2em}.erag-editor__content img,.erag-editor__content video,.erag-editor__content iframe{max-width:100%}.erag-editor__content table{border-spacing:0;border-collapse:collapse;width:100%}.erag-editor__content td,.erag-editor__content th{vertical-align:top;border:1px solid #cbd5e1;min-width:36px;height:34px;padding:8px}.erag-editor__content [data-erag-selected]{outline:2px solid var(--erag-editor-active-color)}.erag-editor__content blockquote{color:#475569;border-inline-start:3px solid #cbd5e1;margin-inline:0;padding-inline-start:16px}.erag-editor__content pre{background:#f1f5f9;border-radius:5px;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;overflow:auto}.erag-editor__empty{z-index:1;color:#9ca3af;pointer-events:none;position:absolute;inset:22px 24px auto}.erag-statusbar{min-height:28px;color:var(--erag-editor-muted-color);background:var(--erag-editor-panel);border-radius:0 0 var(--erag-editor-radius) var(--erag-editor-radius);border-top:1px solid #edf0f4;flex:none;align-items:center;padding-inline-start:10px;font-size:11px;display:flex;overflow:hidden}.erag-statusbar__path{text-overflow:ellipsis;white-space:nowrap;max-width:42%;overflow:hidden}.erag-statusbar__count{white-space:nowrap;margin-inline-start:14px}.erag-statusbar__help{white-space:nowrap;margin-inline-start:auto}.erag-statusbar__slot{margin-inline-end:8px;display:inline-flex}.erag-statusbar__resize{color:#94a3b8;cursor:nwse-resize;background:0 0;border:0;width:24px;height:27px;padding:0;position:relative}.erag-statusbar__resize:before,.erag-statusbar__resize:after,.erag-statusbar__resize span:after{content:"";transform-origin:100%;background:currentColor;width:7px;height:1px;position:absolute;bottom:4px;right:4px;transform:rotate(-45deg)}.erag-statusbar__resize:after{width:4px;bottom:3px}.erag-statusbar__resize span:after{width:10px;bottom:5px}.erag-editor--fullscreen{z-index:2147483000!important;border-radius:0!important;width:100vw!important;max-width:none!important;height:100vh!important;max-height:none!important;position:fixed!important;inset:0!important}@media (width<=560px){.erag-editor__content{padding:16px}.erag-statusbar__help,.erag-statusbar__path{display:none}.erag-statusbar__count:first-of-type{margin-inline-start:0}}.erag-toolbar{background:var(--erag-editor-surface);border-bottom:1px solid #e7eaf0;flex:none;align-items:center;width:100%;min-width:0;max-width:100%;min-height:40px;padding:2px 8px;display:flex;position:relative;overflow:visible}.erag-toolbar__group{border-inline-end:1px solid #e7eaf0;flex:none;align-items:center;gap:2px;min-width:0;padding-inline:5px;display:inline-flex}.erag-toolbar__group:first-of-type{padding-inline-start:0}.erag-toolbar__group:last-of-type{border-inline-end:0}.erag-toolbar__button{color:#273142;cursor:pointer;background:0 0;border:0;border-radius:5px;justify-content:center;align-items:center;width:34px;height:34px;padding:0;display:inline-flex}.erag-toolbar__button:hover:not(:disabled){background:#f0f3f7}.erag-toolbar__button:focus-visible{outline-offset:1px;outline:2px solid #93b4f5}.erag-toolbar__button.erag-is-active,.erag-toolbar__button.erag-is-available:not(.erag-is-disabled){color:var(--erag-editor-active-color);background:var(--erag-editor-active-bg)}.erag-toolbar__button.erag-is-disabled,.erag-toolbar__button:disabled{color:#a8b0bc;cursor:not-allowed}.erag-toolbar__select{color:#273142;background:#fff;border:0;border-radius:5px;outline:none;width:auto;max-width:112px;height:34px;padding:0 24px 0 8px}.erag-toolbar__select:hover:not(:disabled){background:#f0f3f7}.erag-toolbar__select:focus-visible{outline:2px solid #93b4f5}.erag-toolbar__overflow{flex:0 0 34px;width:34px;min-width:34px;margin-inline-start:auto;display:inline-flex;position:relative}.erag-toolbar__overflow>.erag-toolbar__button{flex:0 0 34px}.erag-toolbar__overflow-menu{z-index:70;width:max-content;max-width:min(320px,100vw - 16px);box-shadow:var(--erag-editor-shadow);background:#fff;border:1px solid #e2e7ee;border-radius:8px;flex-direction:column;gap:3px;padding:8px;display:flex;position:absolute;top:calc(100% + 7px);right:0}.erag-toolbar__overflow-group{border-bottom:1px solid #e7eaf0;flex-wrap:wrap;gap:3px;max-width:304px;padding-bottom:3px;display:flex}.erag-toolbar__overflow-group:last-child{border-bottom:0;padding-bottom:0}.erag-toolbar__select--overflow{flex:112px}.erag-toolbar__popover{z-index:75;max-width:calc(100% - 16px);position:absolute;top:calc(100% + 7px)}.erag-case-menu{width:164px;box-shadow:var(--erag-editor-shadow);background:#fff;border:1px solid #e2e7ee;border-radius:8px;gap:2px;padding:4px;display:grid}.erag-case-menu__item{color:#273142;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:8px;width:100%;min-height:32px;padding:5px 8px;font-size:13px;display:flex}.erag-case-menu__item:hover,.erag-case-menu__item:focus-visible,.erag-case-menu__item.erag-is-active{color:#fff;background:var(--erag-editor-active-color);outline:none}.erag-case-menu__label{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.erag-case-menu__check{text-align:center;flex:0 0 14px;width:14px;font-size:14px}.erag-toolbar__slot{flex:none;align-items:center;display:inline-flex}.erag-toolbar__slot--end{margin-inline-start:auto}.erag-icon{pointer-events:none;flex:none;display:block}.erag-color-palette{width:236px;box-shadow:var(--erag-editor-shadow);background:#fff;border:1px solid #e2e7ee;border-radius:8px;grid-template-columns:repeat(8,24px);gap:4px;padding:10px;display:grid}.erag-color-palette__remove{color:#475569;cursor:pointer;background:#f8fafc;border:0;border-radius:4px;grid-column:1/-1;padding:6px}.erag-color-palette__swatch{cursor:pointer;border:1px solid #d5dae2;border-radius:3px;width:24px;height:24px;padding:0}.erag-color-palette__swatch.erag-is-active{outline:2px solid var(--erag-editor-active-color);outline-offset:1px}.erag-color-palette__swatch:focus-visible{outline:2px solid var(--erag-editor-active-color)}.erag-color-palette__custom{color:#475569;grid-column:1/-1;justify-content:space-between;align-items:center;display:flex}.erag-color-palette__custom input{border:1px solid #d5dae2;border-radius:4px;width:42px;height:28px;padding:1px}.erag-menubar{border-radius:var(--erag-editor-radius) var(--erag-editor-radius) 0 0;background:#fff;border-bottom:1px solid #edf0f4;flex:none;align-items:center;gap:4px;min-height:30px;padding:3px 7px;display:flex}.erag-menubar__entry{position:relative}.erag-menubar__button{color:#374151;white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:5px;padding:6px 9px;display:inline-flex}.erag-menubar__icon{flex:none}.erag-menubar__label{line-height:1}.erag-menubar__button:hover:not(:disabled),.erag-menubar__button.erag-is-active{color:var(--erag-editor-active-color);background:var(--erag-editor-active-bg)}.erag-menubar__button:focus-visible{outline:2px solid #93b4f5}.erag-menubar__end{align-items:center;margin-inline-start:auto;display:flex}.erag-menu{z-index:80;width:max-content;min-width:168px;max-width:min(310px,100vw - 16px);box-shadow:var(--erag-editor-shadow);background:#fff;border:1px solid #e2e7ee;border-radius:8px;padding:6px;position:absolute;top:calc(100% + 4px);left:0}.erag-menu--nested{visibility:hidden;opacity:0;top:-7px;left:calc(100% - 2px)}.erag-menu__entry{position:relative}.erag-menu__item{color:#273142;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:7px;width:100%;min-height:32px;padding:5px 9px 5px 5px;display:flex}.erag-menu__item:hover:not([aria-disabled=true]),.erag-menu__item:focus-visible,.erag-menu__item.erag-is-active{color:var(--erag-editor-active-color);background:var(--erag-editor-active-bg);outline:none}.erag-menu__entry:hover>.erag-menu--nested,.erag-menu__entry:focus-within>.erag-menu--nested{visibility:visible;opacity:1}.erag-menu__item[aria-disabled=true]{color:#a8b0bc;cursor:not-allowed}.erag-menu__check{width:12px;color:var(--erag-editor-active-color);text-align:center;flex:0 0 12px;font-size:11px}.erag-menu__icon{flex:0 0 16px}.erag-menu__label{white-space:nowrap;flex:1}.erag-menu__shortcut{color:#8a94a3;margin-inline-start:16px;font-size:11px}.erag-menu__arrow{margin-inline-start:12px;font-size:18px}.erag-menu__separator{background:#edf0f4;height:1px;margin:5px 7px}@media (width<=680px){.erag-menubar{overflow-x:auto}.erag-menu{position:fixed;top:48px;left:8px}.erag-menu--nested{top:0;left:min(210px,32vw)}}.erag-dialog-backdrop{z-index:2147483100;background:#0f172a61;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.erag-dialog{color:#1f2937;background:#fff;border:1px solid #dbe1e8;border-radius:10px;flex-direction:column;width:min(480px,100%);max-height:min(760px,100vh - 40px);font:14px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex;overflow:hidden;box-shadow:0 22px 55px #0f172a40}.erag-dialog--wide{width:min(800px,100%)}.erag-dialog__header{align-items:center;padding:16px 20px;display:flex}.erag-dialog__title{margin:0;font-size:17px;font-weight:600}.erag-dialog__close{color:#64748b;cursor:pointer;background:0 0;border:0;border-radius:5px;width:32px;height:32px;margin-inline-start:auto;font-size:24px;line-height:1}.erag-dialog__close:hover{background:#f1f5f9}.erag-dialog__body{padding:20px;overflow:auto}.erag-dialog__footer{background:#f8fafc;justify-content:flex-end;align-items:center;gap:8px;padding:13px 20px;display:flex}.erag-dialog__footer--divided{border-top:1px solid #edf0f4}.erag-dialog__spacer{flex:1}.erag-dialog__form{flex-direction:column;gap:14px;display:flex}.erag-dialog__form--grid{grid-template-columns:1fr 1fr;display:grid}.erag-field{flex-direction:column;gap:5px;min-width:0;display:flex}.erag-field--wide{grid-column:1/-1}.erag-field__label{color:#475569;font-size:12px;font-weight:600}.erag-field__input{color:#1f2937;background:#fff;border:1px solid #cfd6df;border-radius:6px;outline:none;width:100%;min-height:38px;padding:8px 10px}.erag-field__input:focus{border-color:#6d9df4;box-shadow:0 0 0 2px #2563eb1a}.erag-field__file{cursor:pointer;opacity:0;width:100%;height:100%;position:absolute;inset:0}.erag-field__row{gap:12px;display:flex}.erag-field__row>.erag-field{flex:1}.erag-field__check{color:#475569;align-items:center;gap:7px;display:inline-flex}.erag-field__error{color:#b42318;margin:0;font-size:12px}.erag-button{color:#334155;cursor:pointer;background:#fff;border:1px solid #cfd6df;border-radius:6px;min-height:36px;padding:7px 14px}.erag-button:hover:not(:disabled){background:#f1f5f9}.erag-button:focus-visible{outline-offset:1px;outline:2px solid #93b4f5}.erag-button:disabled{opacity:.55;cursor:not-allowed}.erag-button--primary{color:#fff;background:#2563eb;border-color:#2563eb}.erag-button--primary:hover:not(:disabled){background:#1d4ed8}.erag-button--danger{color:#b42318;border-color:#f1b4ae}.erag-info__heading{margin:0}.erag-info__product{align-items:center;gap:10px;margin-bottom:6px;display:flex}.erag-info__version{color:#1d4ed8;background:#eaf2ff;border:1px solid #cfe0ff;border-radius:999px;padding:2px 7px;font-size:11px;font-weight:600;line-height:1.5}.erag-word-count__table{border-spacing:0;border-collapse:collapse;width:100%}.erag-word-count__heading,.erag-word-count__label,.erag-word-count__value{text-align:left;padding:9px 8px}.erag-word-count__heading{color:#1f2937;font-weight:700}.erag-word-count__heading--label,.erag-word-count__label{width:54%}.erag-word-count__label{color:#334155;font-weight:400}.erag-word-count__value{color:#334155;width:23%}.erag-word-count__row:not(:last-child) .erag-word-count__label,.erag-word-count__row:not(:last-child) .erag-word-count__value{border-bottom:1px solid #9ca3af}.erag-info__description,.erag-info__author{margin:0}.erag-info__author{color:#64748b;margin-top:8px}.erag-info__links{gap:8px;margin-top:18px;display:grid}.erag-info__link{color:#1e293b;background:#f8fafc;border:1px solid #e2e8f0;border-radius:7px;align-items:center;gap:11px;padding:10px 12px;text-decoration:none;display:flex}.erag-info__link:hover{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.erag-info__link:focus-visible{outline-offset:1px;outline:2px solid #93b4f5}.erag-info__link-icon{flex:0 0 20px}.erag-info__link-content,.erag-info__link-label,.erag-info__link-url{min-width:0;display:block}.erag-info__link-url{color:#64748b;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:12px;overflow:hidden}.erag-table-grid{grid-template-columns:repeat(10,24px);justify-content:center;gap:3px;display:grid}.erag-table-grid__cell{cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:2px;width:24px;height:24px;padding:0}.erag-table-grid__cell.erag-is-active{background:#bfdbfe;border-color:#3b82f6}.erag-table-grid__label{text-align:center;margin:12px 0 0}.erag-character-dialog{grid-template-columns:126px minmax(0,1fr);gap:16px;display:grid}.erag-character-dialog__categories{flex-direction:column;align-items:stretch;display:flex}.erag-emoji-dialog{grid-template-columns:140px minmax(0,1fr);gap:18px;display:grid}.erag-emoji-dialog__categories{flex-direction:column;align-items:stretch;display:flex}.erag-emoji-dialog__category{color:#64748b;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:0;padding:5px 0;font-size:13px;overflow:hidden}.erag-emoji-dialog__category:hover,.erag-emoji-dialog__category.erag-is-active{color:#1d4ed8}.erag-emoji-dialog__category.erag-is-active{text-underline-offset:4px;text-decoration:underline}.erag-emoji-dialog__content{min-width:0}.erag-emoji-dialog__grid{grid-template-columns:repeat(7,minmax(30px,1fr));gap:3px;max-height:270px;margin-top:10px;display:grid;overflow-y:auto}.erag-emoji-dialog__emoji{cursor:pointer;background:0 0;border:1px solid #0000;border-radius:5px;place-items:center;min-width:0;height:34px;padding:0;font-size:20px;display:grid}.erag-emoji-dialog__emoji:hover,.erag-emoji-dialog__emoji:focus-visible{background:#eff6ff;border-color:#bfdbfe;outline:none}.erag-emoji-dialog__empty{color:#64748b;text-align:center;margin:24px 0}@media (width<=520px){.erag-emoji-dialog{grid-template-columns:1fr}.erag-emoji-dialog__categories{flex-flow:wrap;gap:2px 12px}}.erag-character-dialog__category{color:#475569;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;background:0 0;border:0;padding:5px 0;font-size:13px;overflow:hidden}.erag-character-dialog__category:hover,.erag-character-dialog__category.erag-is-active{color:#1d4ed8}.erag-character-dialog__category.erag-is-active{text-underline-offset:4px;text-decoration:underline}.erag-character-dialog__content{min-width:0}.erag-character-dialog__search{display:block}.erag-character-dialog__search-label{color:#64748b;margin-bottom:4px;font-size:12px;display:block}.erag-character-dialog__grid{grid-template-columns:repeat(10,minmax(28px,1fr));gap:2px;max-height:280px;margin-top:8px;display:grid;overflow-y:auto}.erag-character-dialog__symbol{aspect-ratio:1;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;min-width:28px;padding:0;font-size:17px}.erag-character-dialog__symbol:hover,.erag-character-dialog__symbol:focus-visible{color:#1d4ed8;background:#eff6ff;border-color:#93c5fd;outline:none}.erag-character-dialog__empty{color:#64748b;text-align:center;grid-column:1/-1;margin:24px 0}.erag-source-editor{resize:vertical;color:#172033;tab-size:4;background:#f8fafc;border:1px solid #cfd6df;border-radius:6px;outline:none;width:100%;min-height:430px;padding:14px;font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}.erag-source-editor:focus{border-color:#6d9df4;box-shadow:0 0 0 2px #2563eb1a}.erag-preview{overflow-wrap:anywhere;border:1px solid #e2e8f0;border-radius:6px;min-height:420px;padding:24px}.erag-preview ul,.erag-preview ol{margin-block:.5em;padding-inline-start:1.75em;list-style-position:outside}.erag-preview ul{list-style-type:disc}.erag-preview ol{list-style-type:decimal}.erag-preview li{display:list-item}.erag-preview img,.erag-preview video,.erag-preview iframe{max-width:100%}.erag-preview table{border-collapse:collapse;width:100%}.erag-preview td,.erag-preview th{border:1px solid #cbd5e1;padding:8px}.erag-find__count{color:#64748b;margin:0;font-size:12px}.erag-shortcuts{grid-template-columns:1fr auto;gap:10px 24px;margin:0;display:grid}.erag-shortcuts dt,.erag-shortcuts dd{margin:0}.erag-shortcuts dd{color:#64748b;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.erag-info__heading{margin-top:0}@media (width<=560px){.erag-dialog-backdrop{padding:8px}.erag-dialog{max-height:calc(100vh - 16px)}.erag-dialog__form--grid{grid-template-columns:1fr}.erag-field--wide{grid-column:auto}.erag-table-grid{grid-template-columns:repeat(10,minmax(18px,1fr))}.erag-table-grid__cell{width:auto}.erag-character-dialog__grid{grid-template-columns:repeat(6,1fr)}.erag-character-dialog{grid-template-columns:1fr}.erag-character-dialog__categories{flex-flow:wrap;gap:2px 12px}}.erag-editor{--erag-mention-dropdown-width:280px;--erag-mention-dropdown-max-height:320px;--erag-mention-active-background:#1677e8;--erag-mention-active-color:#fff;--erag-mention-border-color:#d6d9de;--erag-mention-shadow:0 8px 24px #0000001f;--erag-mention-chip-background:#eaf2ff;--erag-mention-chip-color:#1659a7;--erag-mention-hover-card-width:240px;--erag-mention-hover-card-min-height:68px}.erag-editor .erag-mention-dropdown{z-index:1000;width:min(var(--erag-mention-dropdown-width), calc(100vw - 24px));min-width:min(240px,100vw - 24px);max-width:min(320px,100vw - 24px);max-height:var(--erag-mention-dropdown-max-height);color:#273142;border:1px solid var(--erag-mention-border-color);box-shadow:var(--erag-mention-shadow);background:#fff;border-radius:10px;position:fixed;overflow:hidden}.erag-editor .erag-mention-dropdown__list{max-height:var(--erag-mention-dropdown-max-height);overflow-y:auto}.erag-editor .erag-mention-dropdown__item{width:100%;min-height:56px;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:8px 12px;display:flex}.erag-editor .erag-mention-dropdown__item.erag-is-active{color:var(--erag-mention-active-color);background:var(--erag-mention-active-background)}.erag-editor .erag-mention-dropdown__avatar,.erag-editor .erag-mention-dropdown__avatar-fallback{border-radius:9999px;flex:0 0 40px;width:40px;height:40px}.erag-editor .erag-mention-dropdown__avatar{object-fit:cover}.erag-editor .erag-mention-dropdown__avatar-fallback{color:#475569;background:#e2e8f0;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:inline-flex}.erag-editor .erag-mention-dropdown__item.erag-is-active .erag-mention-dropdown__avatar-fallback{color:#fff;background:#ffffff3d}.erag-editor .erag-mention-dropdown__content{min-width:0;display:block}.erag-editor .erag-mention-dropdown__label,.erag-editor .erag-mention-dropdown__description{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.erag-editor .erag-mention-dropdown__label{font-weight:650}.erag-editor .erag-mention-dropdown__description{color:#64748b;margin-top:2px;font-size:12px}.erag-editor .erag-mention-dropdown__item.erag-is-active .erag-mention-dropdown__description{color:#ffffffe0}.erag-editor .erag-mention-dropdown__loading,.erag-editor .erag-mention-dropdown__empty,.erag-editor .erag-mention-dropdown__error{color:#64748b;text-align:center;min-height:62px;padding:20px}.erag-editor .erag-mention-dropdown__error{color:#b42318;flex-direction:column;align-items:center;gap:10px;display:flex}.erag-editor .erag-mention-dropdown__retry{color:#1659a7;cursor:pointer;background:#fff;border:1px solid #93b4f5;border-radius:5px;padding:5px 10px}.erag-editor .erag-mention-dropdown__status{white-space:nowrap;clip-path:inset(50%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.erag-editor .erag-mention{color:var(--erag-mention-chip-color);white-space:nowrap;cursor:default;background:var(--erag-mention-chip-background);-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:4px;padding:1px 5px;display:inline}.erag-editor .erag-mention__label{display:inline}.erag-editor .erag-mention__remove{color:inherit;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin-inline-start:3px;padding:0;display:inline-flex}.erag-editor .erag-mention-hover-card{z-index:1001;width:min(var(--erag-mention-hover-card-width), calc(100vw - 24px));min-height:var(--erag-mention-hover-card-min-height);color:#273142;pointer-events:none;border:1px solid var(--erag-mention-border-color);box-shadow:var(--erag-mention-shadow);background:#fff;border-radius:8px;align-items:center;gap:9px;padding:8px 10px;display:flex;position:fixed}.erag-editor .erag-mention-hover-card__avatar,.erag-editor .erag-mention-hover-card__avatar-fallback{border-radius:9999px;flex:0 0 36px;width:36px;height:36px}.erag-editor .erag-mention-hover-card__avatar{object-fit:cover}.erag-editor .erag-mention-hover-card__avatar-fallback{color:#475569;background:#e2e8f0;justify-content:center;align-items:center;font-size:13px;font-weight:700;display:inline-flex}.erag-editor .erag-mention-hover-card__content{min-width:0;display:block}.erag-editor .erag-mention-hover-card__label,.erag-editor .erag-mention-hover-card__description,.erag-editor .erag-mention-hover-card__value{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.erag-editor .erag-mention-hover-card__label{font-size:13px;font-weight:650}.erag-editor .erag-mention-hover-card__description{color:#64748b;margin-top:2px;font-size:11px}.erag-editor .erag-mention-hover-card__value{color:#2563eb;margin-top:2px;font-size:11px}.erag-editor{--erag-image-resize-color:#2563eb;--erag-image-resize-handle-size:12px;--erag-image-delete-background:#dc2626}.erag-editor .erag-image-resize{z-index:4;pointer-events:none;border:2px solid var(--erag-image-resize-color);position:absolute}.erag-editor .erag-image-resize__handle{width:var(--erag-image-resize-handle-size);height:var(--erag-image-resize-handle-size);touch-action:none;pointer-events:auto;border:2px solid var(--erag-image-resize-color);background:#fff;border-radius:2px;padding:0;position:absolute}.erag-editor .erag-image-resize__handle--north-west{top:calc(var(--erag-image-resize-handle-size) / -2);left:calc(var(--erag-image-resize-handle-size) / -2);cursor:nwse-resize}.erag-editor .erag-image-resize__handle--north-east{top:calc(var(--erag-image-resize-handle-size) / -2);right:calc(var(--erag-image-resize-handle-size) / -2);cursor:nesw-resize}.erag-editor .erag-image-resize__handle--south-west{bottom:calc(var(--erag-image-resize-handle-size) / -2);left:calc(var(--erag-image-resize-handle-size) / -2);cursor:nesw-resize}.erag-editor .erag-image-resize__handle--south-east{right:calc(var(--erag-image-resize-handle-size) / -2);bottom:calc(var(--erag-image-resize-handle-size) / -2);cursor:nwse-resize}.erag-editor .erag-image-resize__delete{z-index:2;color:#fff;cursor:pointer;pointer-events:auto;background:var(--erag-image-delete-background);border:0;border-radius:6px;place-items:center;width:32px;height:32px;padding:0;display:grid;position:absolute;top:8px;right:8px;box-shadow:0 3px 10px #0f172a3d}.erag-editor .erag-image-resize__delete:hover,.erag-editor .erag-image-resize__delete:focus-visible{outline-offset:1px;background:#b91c1c;outline:2px solid #fff}.erag-editor .erag-image-resize__delete:after{color:#fff;pointer-events:none;visibility:hidden;content:attr(data-erag-tooltip);opacity:0;background:#111827;border-radius:5px;width:max-content;max-width:190px;padding:6px 8px;font-size:11px;font-weight:500;line-height:1.2;transition:opacity .12s,transform .12s;position:absolute;bottom:calc(100% + 7px);right:0;transform:translateY(2px);box-shadow:0 4px 12px #0f172a2e}.erag-editor .erag-image-resize__delete:hover:after,.erag-editor .erag-image-resize__delete:focus-visible:after{visibility:visible;opacity:1;transform:translateY(0)}.erag-editor .erag-image-resize__delete.erag-is-loading{cursor:wait;opacity:.72}.erag-editor .erag-image-resize__delete.erag-is-loading .erag-icon{animation:.8s ease-in-out infinite alternate erag-image-delete-pulse}.erag-editor .erag-image-resize__delete.erag-has-error{background:#991b1b}@keyframes erag-image-delete-pulse{to{opacity:.35}}.erag-editor{--erag-image-upload-actions-space:46px;--erag-image-upload-z-index:60;--erag-image-upload-color:#3974e8;--erag-image-upload-background:#f8fbff;--erag-image-upload-border:#8bb0f8;--erag-image-upload-shadow:0 7px 20px #0f172a29}.erag-editor .erag-inline-image-upload-anchor{pointer-events:none;-webkit-user-select:none;user-select:none;vertical-align:text-bottom;width:0;height:1em;margin:0;padding:0;display:inline-block}.erag-editor .erag-inline-image-upload-portal{z-index:var(--erag-image-upload-z-index);width:min(340px,100vw - 16px);padding-bottom:var(--erag-image-upload-actions-space);will-change:left, top;display:block}.erag-editor .erag-inline-image-upload{color:#334155;background:var(--erag-image-upload-background);border:2px solid var(--erag-image-upload-border);border-radius:5px;outline:none;flex-direction:column;justify-content:center;align-items:stretch;width:100%;min-height:95px;margin:0;padding:0;display:flex;position:relative}.erag-editor .erag-inline-image-upload.erag-is-dragging{color:var(--erag-image-upload-color);border-color:var(--erag-image-upload-color);background:#eff6ff}.erag-editor .erag-inline-image-upload__file{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.erag-editor .erag-inline-image-upload__dropzone{min-height:94px;color:inherit;cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:5px;padding:6px;display:flex}.erag-editor .erag-inline-image-upload__dropzone:disabled{cursor:default}.erag-editor .erag-inline-image-upload__illustration{width:52px;height:44px;color:var(--erag-image-upload-color);background:#e8f0ff;border-radius:10px;place-items:center;display:grid}.erag-editor .erag-inline-image-upload__title{font-size:14px;font-weight:600}.erag-editor .erag-inline-image-upload__progress-label{color:#64748b;font-size:12px}.erag-editor .erag-inline-image-upload__progress{width:100%;height:5px;accent-color:var(--erag-image-upload-color);margin-top:7px}.erag-editor .erag-inline-image-upload__error{color:#b42318;text-align:center;margin-top:7px;font-size:12px}.erag-editor .erag-inline-image-upload__actions{box-shadow:var(--erag-image-upload-shadow);background:#fff;border:1px solid #d8dee8;border-radius:6px;gap:2px;padding:4px;display:inline-flex;position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%)}.erag-editor .erag-inline-image-upload__action{color:#475569;cursor:pointer;background:0 0;border:0;border-radius:4px;place-items:center;width:32px;height:30px;padding:0;display:inline-grid}.erag-editor .erag-inline-image-upload__action:hover,.erag-editor .erag-inline-image-upload__action:focus-visible,.erag-editor .erag-inline-image-upload__action.erag-is-active{color:#fff;background:var(--erag-image-upload-color);outline:none}.erag-editor .erag-inline-image-upload__action:disabled{cursor:not-allowed;opacity:.5}.erag-editor .erag-inline-image-upload__action--close:hover,.erag-editor .erag-inline-image-upload__action--close:focus-visible{background:#dc2626}.erag-editor .erag-inline-image-upload__url-form{flex-direction:column;gap:8px;width:100%;display:flex}.erag-editor .erag-inline-image-upload__url-label{font-size:13px;font-weight:600}.erag-editor .erag-inline-image-upload__url-row{gap:8px;display:flex}.erag-editor .erag-inline-image-upload__url-input{color:#1f2937;background:#fff;border:1px solid #cbd5e1;border-radius:5px;outline:none;flex:auto;min-width:0;height:36px;padding:0 10px}.erag-editor .erag-inline-image-upload__url-input:focus{border-color:var(--erag-image-upload-color);box-shadow:0 0 0 2px #3974e824}.erag-editor .erag-inline-image-upload__insert{color:#fff;cursor:pointer;background:var(--erag-image-upload-color);white-space:nowrap;border:0;border-radius:5px;height:36px;padding:0 14px;font-weight:600}.erag-editor .erag-inline-image-upload__insert:disabled{cursor:not-allowed;opacity:.55}@media (width<=560px){.erag-editor .erag-inline-image-upload{min-height:112px;padding:10px}.erag-editor .erag-inline-image-upload__url-row{flex-direction:column}}.erag-editor{--erag-merge-tag-dropdown-width:190px;--erag-merge-tag-active-background:#1677e8;--erag-merge-tag-active-color:#fff;--erag-merge-tag-chip-background:#eef2ff;--erag-merge-tag-chip-color:#3730a3}.erag-editor .erag-merge-tag-dropdown{z-index:1000;width:min(var(--erag-merge-tag-dropdown-width), calc(100vw - 24px));color:#273142;background:#fff;border:1px solid #d6d9de;border-radius:7px;max-height:220px;position:fixed;overflow:hidden;box-shadow:0 8px 24px #0000001f}.erag-editor .erag-merge-tag-dropdown__list{max-height:220px;overflow-y:auto}.erag-editor .erag-merge-tag-dropdown__section+.erag-merge-tag-dropdown__section{border-top:1px solid #edf0f4}.erag-editor .erag-merge-tag-dropdown__section-title{color:#64748b;letter-spacing:.06em;text-transform:uppercase;padding:6px 10px 3px;font-size:10px;font-weight:700;display:block}.erag-editor .erag-merge-tag-dropdown__item{width:100%;height:34px;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;justify-content:flex-start;align-items:center;padding:0 10px;display:flex}.erag-editor .erag-merge-tag-dropdown__item.erag-is-active{color:var(--erag-merge-tag-active-color);background:var(--erag-merge-tag-active-background)}.erag-editor .erag-merge-tag-dropdown__label{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;font-weight:600;line-height:1.2;overflow:hidden}.erag-editor .erag-merge-tag-dropdown__empty{color:#64748b;text-align:center;padding:16px}.erag-editor .erag-merge-tag-dropdown__status{white-space:nowrap;clip-path:inset(50%);width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.erag-editor .erag-merge-tag{color:var(--erag-merge-tag-chip-color);white-space:nowrap;cursor:default;background:var(--erag-merge-tag-chip-background);-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:4px;padding:0 3px;font-size:.92em;display:inline}.erag-editor .erag-merge-tag-sidebar{z-index:20;background:#fff;border-inline-start:1px solid #e2e7ee;flex-direction:column;width:min(320px,100%);display:flex;position:absolute;inset-block:0;inset-inline-end:0;overflow:hidden;box-shadow:-8px 0 24px #0f172a1a}.erag-editor .erag-merge-tag-sidebar__header{background:#fff;border-bottom:1px solid #edf0f4;flex:none;justify-content:space-between;align-items:center;min-height:48px;padding:8px 10px 8px 16px;display:flex}.erag-editor .erag-merge-tag-sidebar__title{color:#1f2937;font-size:15px;font-weight:650}.erag-editor .erag-merge-tag-sidebar__close{color:#64748b;cursor:pointer;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;display:inline-flex}.erag-editor .erag-merge-tag-sidebar__close:hover,.erag-editor .erag-merge-tag-sidebar__close:focus-visible{color:var(--erag-editor-active-color);background:var(--erag-editor-active-bg);outline:none}.erag-editor .erag-merge-tag-sidebar__body{overscroll-behavior:contain;flex:auto;padding:12px;overflow-y:auto}.erag-editor .erag-merge-tag-sidebar__group+.erag-merge-tag-sidebar__group{margin-top:18px}.erag-editor .erag-merge-tag-sidebar__group-title{color:#64748b;letter-spacing:.06em;text-transform:uppercase;margin:0 0 7px;font-size:11px;font-weight:700}.erag-editor .erag-merge-tag-sidebar__list{gap:4px;display:grid}.erag-editor .erag-merge-tag-sidebar__item{color:#273142;text-align:left;cursor:pointer;background:#fff;border:1px solid #0000;border-radius:7px;align-items:center;gap:10px;width:100%;min-width:0;height:34px;padding:0 10px;display:flex}.erag-editor .erag-merge-tag-sidebar__item:hover:not(:disabled),.erag-editor .erag-merge-tag-sidebar__item:focus-visible{color:var(--erag-editor-active-color);background:var(--erag-editor-active-bg);border-color:#d8e5ff;outline:none}.erag-editor .erag-merge-tag-sidebar__item:disabled{color:#9ca3af;cursor:not-allowed}.erag-editor .erag-merge-tag-sidebar__item-value{min-width:0;color:inherit;text-overflow:ellipsis;white-space:nowrap;flex:auto;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:600;line-height:1.2;overflow:hidden}.erag-editor .erag-merge-tag-sidebar__empty{color:#64748b;text-align:center;margin:0;padding:24px 12px}.erag-template-dialog{grid-template-columns:minmax(190px,34%) minmax(0,1fr);gap:12px;min-height:420px;display:grid}.erag-template-dialog__sidebar,.erag-template-dialog__preview{border:1px solid #e2e7ee;border-radius:8px;min-width:0;overflow:hidden}.erag-template-dialog__sidebar{background:#fff;flex-direction:column;display:flex}.erag-template-dialog__search{padding:10px;display:block}.erag-template-dialog__search-label{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.erag-template-dialog__search-input{color:#1f2937;background:#fff;border:1px solid #cbd5e1;border-radius:6px;outline:none;width:100%;min-height:36px;padding:7px 10px}.erag-template-dialog__search-input:focus{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1a}.erag-template-dialog__groups{overscroll-behavior:contain;flex:auto;padding:0 8px 10px;overflow-y:auto}.erag-template-dialog__group+.erag-template-dialog__group{margin-top:10px}.erag-template-dialog__group-title{color:#475569;margin:0 4px 4px;font-size:12px;font-weight:700}.erag-template-dialog__item{color:#334155;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;width:100%;padding:7px 9px;display:block}.erag-template-dialog__item.erag-is-active{color:#fff;background:#2563eb;outline:none}.erag-template-dialog__item:hover:not(.erag-is-active),.erag-template-dialog__item:focus-visible:not(.erag-is-active){color:#1d4ed8;background:#eff6ff;outline:none}.erag-template-dialog__item-label,.erag-template-dialog__item-description{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.erag-template-dialog__item-label{font-weight:600}.erag-template-dialog__item-description{color:#64748b;margin-top:1px;font-size:11px}.erag-template-dialog__item.erag-is-active .erag-template-dialog__item-description{color:#ffffffd1}.erag-template-dialog__item:hover:not(.erag-is-active) .erag-template-dialog__item-description,.erag-template-dialog__item:focus-visible:not(.erag-is-active) .erag-template-dialog__item-description{color:#3b82f6}.erag-template-dialog__preview{background:#f8fafc;overflow-y:auto}.erag-template-dialog__preview-content{color:#273142;background:#fff;min-height:100%;padding:20px 24px}.erag-template-dialog__empty{color:#64748b;text-align:center;margin:0;padding:20px 12px}@media (width<=640px){.erag-template-dialog{grid-template-rows:minmax(190px,42%) minmax(0,1fr);grid-template-columns:1fr;min-height:500px}}
2
+ /*$vite$:1*/