suneditor 3.0.0-alpha.2 → 3.0.0-alpha.20

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 (306) hide show
  1. package/.eslintrc.json +4 -3
  2. package/CONTRIBUTING.md +4 -2
  3. package/README.md +19 -11
  4. package/README_V3_TEMP.md +705 -0
  5. package/dist/suneditor.min.css +1 -0
  6. package/dist/suneditor.min.js +1 -0
  7. package/example.md +587 -0
  8. package/package.json +15 -9
  9. package/src/assets/icons/_default.js +166 -131
  10. package/src/assets/{suneditor-content.css → suneditor-contents.css} +182 -45
  11. package/src/assets/suneditor.css +1195 -556
  12. package/src/assets/variables.css +138 -0
  13. package/src/core/base/eventHandlers/handler_toolbar.js +35 -14
  14. package/src/core/base/eventHandlers/handler_ww_clipboard.js +29 -4
  15. package/src/core/base/eventHandlers/handler_ww_dragDrop.js +59 -15
  16. package/src/core/base/eventHandlers/handler_ww_key_input.js +426 -212
  17. package/src/core/base/eventHandlers/handler_ww_mouse.js +108 -32
  18. package/src/core/base/eventManager.js +540 -209
  19. package/src/core/base/events.js +616 -320
  20. package/src/core/base/history.js +93 -39
  21. package/src/core/class/char.js +29 -13
  22. package/src/core/class/component.js +332 -145
  23. package/src/core/class/format.js +671 -509
  24. package/src/core/class/html.js +504 -290
  25. package/src/core/class/menu.js +114 -47
  26. package/src/core/class/nodeTransform.js +111 -66
  27. package/src/core/class/offset.js +409 -105
  28. package/src/core/class/selection.js +220 -108
  29. package/src/core/class/shortcuts.js +68 -8
  30. package/src/core/class/toolbar.js +106 -116
  31. package/src/core/class/ui.js +330 -0
  32. package/src/core/class/viewer.js +178 -74
  33. package/src/core/editor.js +489 -384
  34. package/src/core/section/actives.js +118 -22
  35. package/src/core/section/constructor.js +504 -170
  36. package/src/core/section/context.js +28 -23
  37. package/src/core/section/documentType.js +561 -0
  38. package/src/editorInjector/_classes.js +19 -5
  39. package/src/editorInjector/_core.js +71 -7
  40. package/src/editorInjector/index.js +63 -1
  41. package/src/helper/converter.js +137 -19
  42. package/src/helper/dom/domCheck.js +294 -0
  43. package/src/helper/dom/domQuery.js +609 -0
  44. package/src/helper/dom/domUtils.js +533 -0
  45. package/src/helper/dom/index.js +12 -0
  46. package/src/helper/env.js +42 -19
  47. package/src/helper/index.js +7 -4
  48. package/src/helper/keyCodeMap.js +183 -0
  49. package/src/helper/numbers.js +8 -8
  50. package/src/helper/unicode.js +5 -5
  51. package/src/langs/ckb.js +69 -3
  52. package/src/langs/cs.js +67 -1
  53. package/src/langs/da.js +68 -2
  54. package/src/langs/de.js +68 -3
  55. package/src/langs/en.js +29 -1
  56. package/src/langs/es.js +68 -3
  57. package/src/langs/fa.js +70 -2
  58. package/src/langs/fr.js +68 -2
  59. package/src/langs/he.js +68 -3
  60. package/src/langs/hu.js +226 -0
  61. package/src/langs/index.js +3 -2
  62. package/src/langs/it.js +65 -0
  63. package/src/langs/ja.js +68 -3
  64. package/src/langs/ko.js +66 -1
  65. package/src/langs/lv.js +68 -3
  66. package/src/langs/nl.js +68 -3
  67. package/src/langs/pl.js +68 -3
  68. package/src/langs/pt_br.js +65 -0
  69. package/src/langs/ro.js +69 -4
  70. package/src/langs/ru.js +68 -3
  71. package/src/langs/se.js +68 -3
  72. package/src/langs/tr.js +68 -0
  73. package/src/langs/ua.js +68 -3
  74. package/src/langs/ur.js +71 -6
  75. package/src/langs/zh_cn.js +69 -4
  76. package/src/modules/ApiManager.js +77 -54
  77. package/src/modules/Browser.js +667 -0
  78. package/src/modules/ColorPicker.js +162 -102
  79. package/src/modules/Controller.js +233 -136
  80. package/src/modules/Figure.js +913 -489
  81. package/src/modules/FileManager.js +141 -72
  82. package/src/modules/HueSlider.js +113 -61
  83. package/src/modules/Modal.js +292 -113
  84. package/src/modules/ModalAnchorEditor.js +380 -230
  85. package/src/modules/SelectMenu.js +270 -168
  86. package/src/modules/_DragHandle.js +2 -1
  87. package/src/modules/index.js +3 -3
  88. package/src/plugins/browser/audioGallery.js +83 -0
  89. package/src/plugins/browser/fileBrowser.js +103 -0
  90. package/src/plugins/browser/fileGallery.js +83 -0
  91. package/src/plugins/browser/imageGallery.js +81 -0
  92. package/src/plugins/browser/videoGallery.js +103 -0
  93. package/src/plugins/command/blockquote.js +40 -27
  94. package/src/plugins/command/exportPDF.js +134 -0
  95. package/src/plugins/command/fileUpload.js +226 -158
  96. package/src/plugins/command/list_bulleted.js +93 -47
  97. package/src/plugins/command/list_numbered.js +93 -47
  98. package/src/plugins/dropdown/align.js +66 -54
  99. package/src/plugins/dropdown/backgroundColor.js +76 -45
  100. package/src/plugins/dropdown/font.js +71 -47
  101. package/src/plugins/dropdown/fontColor.js +78 -46
  102. package/src/plugins/dropdown/formatBlock.js +74 -33
  103. package/src/plugins/dropdown/hr.js +102 -51
  104. package/src/plugins/dropdown/layout.js +37 -26
  105. package/src/plugins/dropdown/lineHeight.js +54 -38
  106. package/src/plugins/dropdown/list.js +60 -45
  107. package/src/plugins/dropdown/paragraphStyle.js +51 -30
  108. package/src/plugins/dropdown/table.js +1269 -777
  109. package/src/plugins/dropdown/template.js +38 -26
  110. package/src/plugins/dropdown/textStyle.js +43 -31
  111. package/src/plugins/field/mention.js +144 -82
  112. package/src/plugins/index.js +32 -6
  113. package/src/plugins/input/fontSize.js +161 -108
  114. package/src/plugins/input/pageNavigator.js +70 -0
  115. package/src/plugins/modal/audio.js +341 -169
  116. package/src/plugins/modal/drawing.js +530 -0
  117. package/src/plugins/modal/embed.js +886 -0
  118. package/src/plugins/modal/image.js +673 -358
  119. package/src/plugins/modal/link.js +100 -71
  120. package/src/plugins/modal/math.js +384 -168
  121. package/src/plugins/modal/video.js +693 -336
  122. package/src/plugins/popup/anchor.js +222 -0
  123. package/src/suneditor.js +54 -12
  124. package/src/themes/dark.css +85 -0
  125. package/src/typedef.js +86 -0
  126. package/types/assets/icons/_default.d.ts +152 -0
  127. package/types/core/base/eventHandlers/handler_toolbar.d.ts +41 -0
  128. package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +40 -0
  129. package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +35 -0
  130. package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +45 -0
  131. package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +39 -0
  132. package/types/core/base/eventManager.d.ts +377 -0
  133. package/types/core/base/events.d.ts +297 -0
  134. package/types/core/base/history.d.ts +81 -0
  135. package/types/core/class/char.d.ts +60 -0
  136. package/types/core/class/component.d.ts +259 -0
  137. package/types/core/class/format.d.ts +615 -0
  138. package/types/core/class/html.d.ts +377 -0
  139. package/types/core/class/menu.d.ts +118 -0
  140. package/types/core/class/nodeTransform.d.ts +93 -0
  141. package/types/core/class/offset.d.ts +512 -0
  142. package/types/core/class/selection.d.ts +188 -0
  143. package/types/core/class/shortcuts.d.ts +142 -0
  144. package/types/core/class/toolbar.d.ts +189 -0
  145. package/types/core/class/ui.d.ts +144 -0
  146. package/types/core/class/viewer.d.ts +140 -0
  147. package/types/core/editor.d.ts +606 -0
  148. package/types/core/section/actives.d.ts +46 -0
  149. package/types/core/section/constructor.d.ts +748 -0
  150. package/types/core/section/context.d.ts +45 -0
  151. package/types/core/section/documentType.d.ts +178 -0
  152. package/types/editorInjector/_classes.d.ts +41 -0
  153. package/types/editorInjector/_core.d.ts +92 -0
  154. package/types/editorInjector/index.d.ts +71 -0
  155. package/types/helper/converter.d.ts +150 -0
  156. package/types/helper/dom/domCheck.d.ts +182 -0
  157. package/types/helper/dom/domQuery.d.ts +214 -0
  158. package/types/helper/dom/domUtils.d.ts +211 -0
  159. package/types/helper/dom/index.d.ts +9 -0
  160. package/types/helper/env.d.ts +149 -0
  161. package/types/helper/index.d.ts +163 -0
  162. package/types/helper/keyCodeMap.d.ts +110 -0
  163. package/types/helper/numbers.d.ts +43 -0
  164. package/types/helper/unicode.d.ts +28 -0
  165. package/types/index.d.ts +0 -0
  166. package/{typings/Lang.d.ts → types/langs/_Lang.d.ts} +170 -103
  167. package/types/langs/ckb.d.ts +384 -0
  168. package/types/langs/cs.d.ts +384 -0
  169. package/types/langs/da.d.ts +384 -0
  170. package/types/langs/de.d.ts +384 -0
  171. package/types/langs/en.d.ts +384 -0
  172. package/types/langs/es.d.ts +384 -0
  173. package/types/langs/fa.d.ts +384 -0
  174. package/types/langs/fr.d.ts +384 -0
  175. package/types/langs/he.d.ts +384 -0
  176. package/types/langs/hu.d.ts +384 -0
  177. package/types/langs/index.d.ts +48 -0
  178. package/types/langs/it.d.ts +384 -0
  179. package/types/langs/ja.d.ts +384 -0
  180. package/types/langs/ko.d.ts +384 -0
  181. package/types/langs/lv.d.ts +384 -0
  182. package/types/langs/nl.d.ts +384 -0
  183. package/types/langs/pl.d.ts +384 -0
  184. package/types/langs/pt_br.d.ts +384 -0
  185. package/types/langs/ro.d.ts +384 -0
  186. package/types/langs/ru.d.ts +384 -0
  187. package/types/langs/se.d.ts +384 -0
  188. package/types/langs/tr.d.ts +384 -0
  189. package/types/langs/ua.d.ts +384 -0
  190. package/types/langs/ur.d.ts +384 -0
  191. package/types/langs/zh_cn.d.ts +384 -0
  192. package/types/modules/ApiManager.d.ts +125 -0
  193. package/types/modules/Browser.d.ts +326 -0
  194. package/types/modules/ColorPicker.d.ts +131 -0
  195. package/types/modules/Controller.d.ts +231 -0
  196. package/types/modules/Figure.d.ts +504 -0
  197. package/types/modules/FileManager.d.ts +202 -0
  198. package/types/modules/HueSlider.d.ts +136 -0
  199. package/types/modules/Modal.d.ts +117 -0
  200. package/types/modules/ModalAnchorEditor.d.ts +236 -0
  201. package/types/modules/SelectMenu.d.ts +194 -0
  202. package/types/modules/_DragHandle.d.ts +7 -0
  203. package/types/modules/index.d.ts +26 -0
  204. package/types/plugins/browser/audioGallery.d.ts +55 -0
  205. package/types/plugins/browser/fileBrowser.d.ts +64 -0
  206. package/types/plugins/browser/fileGallery.d.ts +55 -0
  207. package/types/plugins/browser/imageGallery.d.ts +51 -0
  208. package/types/plugins/browser/videoGallery.d.ts +57 -0
  209. package/types/plugins/command/blockquote.d.ts +28 -0
  210. package/types/plugins/command/exportPDF.d.ts +46 -0
  211. package/types/plugins/command/fileUpload.d.ts +156 -0
  212. package/types/plugins/command/list_bulleted.d.ts +56 -0
  213. package/types/plugins/command/list_numbered.d.ts +56 -0
  214. package/types/plugins/dropdown/align.d.ts +60 -0
  215. package/types/plugins/dropdown/backgroundColor.d.ts +63 -0
  216. package/types/plugins/dropdown/font.d.ts +54 -0
  217. package/types/plugins/dropdown/fontColor.d.ts +63 -0
  218. package/types/plugins/dropdown/formatBlock.d.ts +58 -0
  219. package/types/plugins/dropdown/hr.d.ts +81 -0
  220. package/types/plugins/dropdown/layout.d.ts +40 -0
  221. package/types/plugins/dropdown/lineHeight.d.ts +50 -0
  222. package/types/plugins/dropdown/list.d.ts +39 -0
  223. package/types/plugins/dropdown/paragraphStyle.d.ts +54 -0
  224. package/types/plugins/dropdown/table.d.ts +579 -0
  225. package/types/plugins/dropdown/template.d.ts +40 -0
  226. package/types/plugins/dropdown/textStyle.d.ts +41 -0
  227. package/types/plugins/field/mention.d.ts +102 -0
  228. package/types/plugins/index.d.ts +107 -0
  229. package/types/plugins/input/fontSize.d.ts +170 -0
  230. package/types/plugins/input/pageNavigator.d.ts +28 -0
  231. package/types/plugins/modal/audio.d.ts +269 -0
  232. package/types/plugins/modal/drawing.d.ts +246 -0
  233. package/types/plugins/modal/embed.d.ts +387 -0
  234. package/types/plugins/modal/image.d.ts +451 -0
  235. package/types/plugins/modal/link.d.ts +128 -0
  236. package/types/plugins/modal/math.d.ts +193 -0
  237. package/types/plugins/modal/video.d.ts +485 -0
  238. package/types/plugins/popup/anchor.d.ts +56 -0
  239. package/types/suneditor.d.ts +51 -0
  240. package/types/typedef-global.d.ts +144 -0
  241. package/src/core/class/notice.js +0 -42
  242. package/src/helper/domUtils.js +0 -1177
  243. package/src/modules/FileBrowser.js +0 -271
  244. package/src/plugins/command/exportPdf.js +0 -168
  245. package/src/plugins/fileBrowser/imageGallery.js +0 -81
  246. package/src/themes/test.css +0 -61
  247. package/typings/CommandPlugin.d.ts +0 -8
  248. package/typings/DialogPlugin.d.ts +0 -20
  249. package/typings/FileBrowserPlugin.d.ts +0 -30
  250. package/typings/Module.d.ts +0 -15
  251. package/typings/Plugin.d.ts +0 -42
  252. package/typings/SubmenuPlugin.d.ts +0 -8
  253. package/typings/_classes.d.ts +0 -17
  254. package/typings/_colorPicker.d.ts +0 -60
  255. package/typings/_core.d.ts +0 -55
  256. package/typings/align.d.ts +0 -5
  257. package/typings/audio.d.ts +0 -5
  258. package/typings/backgroundColor.d.ts +0 -5
  259. package/typings/blockquote.d.ts +0 -5
  260. package/typings/char.d.ts +0 -39
  261. package/typings/component.d.ts +0 -38
  262. package/typings/context.d.ts +0 -39
  263. package/typings/converter.d.ts +0 -33
  264. package/typings/dialog.d.ts +0 -28
  265. package/typings/domUtils.d.ts +0 -361
  266. package/typings/editor.d.ts +0 -7
  267. package/typings/editor.ts +0 -542
  268. package/typings/env.d.ts +0 -70
  269. package/typings/eventManager.d.ts +0 -37
  270. package/typings/events.d.ts +0 -262
  271. package/typings/fileBrowser.d.ts +0 -42
  272. package/typings/fileManager.d.ts +0 -67
  273. package/typings/font.d.ts +0 -5
  274. package/typings/fontColor.d.ts +0 -5
  275. package/typings/fontSize.d.ts +0 -5
  276. package/typings/format.d.ts +0 -191
  277. package/typings/formatBlock.d.ts +0 -5
  278. package/typings/history.d.ts +0 -48
  279. package/typings/horizontalRule.d.ts +0 -5
  280. package/typings/image.d.ts +0 -5
  281. package/typings/imageGallery.d.ts +0 -5
  282. package/typings/index.d.ts +0 -21
  283. package/typings/index.modules.d.ts +0 -11
  284. package/typings/index.plugins.d.ts +0 -58
  285. package/typings/lineHeight.d.ts +0 -5
  286. package/typings/link.d.ts +0 -5
  287. package/typings/list.d.ts +0 -5
  288. package/typings/math.d.ts +0 -5
  289. package/typings/mediaContainer.d.ts +0 -25
  290. package/typings/mention.d.ts +0 -5
  291. package/typings/node.d.ts +0 -57
  292. package/typings/notice.d.ts +0 -16
  293. package/typings/numbers.d.ts +0 -29
  294. package/typings/offset.d.ts +0 -24
  295. package/typings/options.d.ts +0 -589
  296. package/typings/paragraphStyle.d.ts +0 -5
  297. package/typings/resizing.d.ts +0 -141
  298. package/typings/selection.d.ts +0 -94
  299. package/typings/shortcuts.d.ts +0 -13
  300. package/typings/suneditor.d.ts +0 -9
  301. package/typings/table.d.ts +0 -5
  302. package/typings/template.d.ts +0 -5
  303. package/typings/textStyle.d.ts +0 -5
  304. package/typings/toolbar.d.ts +0 -32
  305. package/typings/unicode.d.ts +0 -25
  306. package/typings/video.d.ts +0 -5
@@ -0,0 +1,102 @@
1
+ export default Mention;
2
+ /**
3
+ * @class
4
+ * @description Mention Plugin
5
+ * - A plugin that provides a mention feature using `@` or a custom trigger character.
6
+ * - Displays a mention list when the trigger character is typed.
7
+ * - Supports fetching mention data from an API or a predefined data array.
8
+ * - Uses caching for optimized performance.
9
+ */
10
+ declare class Mention extends EditorInjector {
11
+ static key: string;
12
+ static type: string;
13
+ static className: string;
14
+ /**
15
+ * @constructor
16
+ * @param {__se__EditorCore} editor - The root editor instance
17
+ * @param {Object} pluginOptions
18
+ * @param {string=} [pluginOptions.triggerText="@"] The character that triggers the mention list. Default is '@'.
19
+ * @param {number=} [pluginOptions.limitSize=5] The number of items to display in the mention list. Default is 5.
20
+ * @param {number=} [pluginOptions.searchStartLength=0] The number of characters to start searching for the mention list. Default is 0.
21
+ * @param {number=} [pluginOptions.delayTime=200] The time to wait before displaying the mention list. Default is 200ms.
22
+ * @param {Array<{key: string, name: string, url: string}>=} pluginOptions.data Use data without using API.
23
+ * @param {string=} pluginOptions.apiUrl The URL to call the mention list. Default is ''.
24
+ * @param {Object<string, string>=} pluginOptions.apiHeaders The headers to send with the API call. Default is {}.
25
+ * @param {boolean=} [pluginOptions.useCachingData=true] Whether to cache the mention list data. Default is true.
26
+ * @param {boolean=} [pluginOptions.useCachingFieldData=true] Whether to cache the mention list data in the field. Default is true.
27
+ */
28
+ constructor(
29
+ editor: __se__EditorCore,
30
+ pluginOptions: {
31
+ triggerText?: string | undefined;
32
+ limitSize?: number | undefined;
33
+ searchStartLength?: number | undefined;
34
+ delayTime?: number | undefined;
35
+ data?:
36
+ | Array<{
37
+ key: string;
38
+ name: string;
39
+ url: string;
40
+ }>
41
+ | undefined;
42
+ apiUrl?: string | undefined;
43
+ apiHeaders?:
44
+ | {
45
+ [x: string]: string;
46
+ }
47
+ | undefined;
48
+ useCachingData?: boolean | undefined;
49
+ useCachingFieldData?: boolean | undefined;
50
+ }
51
+ );
52
+ title: any;
53
+ icon: string;
54
+ triggerText: string;
55
+ limitSize: number;
56
+ searchStartLength: number;
57
+ delayTime: number;
58
+ directData: {
59
+ key: string;
60
+ name: string;
61
+ url: string;
62
+ }[];
63
+ apiUrl: string;
64
+ _delay: number;
65
+ _lastAtPos: number;
66
+ _anchorOffset: number;
67
+ _anchorNode: Node;
68
+ apiManager: ApiManager;
69
+ cachingData: Map<any, any>;
70
+ cachingFieldData: Map<string, any[]>;
71
+ selectMenu: SelectMenu;
72
+ controller: Controller;
73
+ /**
74
+ * @editorMethod Editor.EventManager
75
+ * @description Executes the event function of "input".
76
+ * @returns {Promise<boolean>}
77
+ */
78
+ onInput(): Promise<boolean>;
79
+ /**
80
+ * @private
81
+ * @description Generates the mention list based on user input.
82
+ * - Fetches data from cache, direct data, or an API.
83
+ * - Creates and opens the mention dropdown.
84
+ * - Caches the fetched data for future use.
85
+ * @param {string} value - The mention query text.
86
+ * @param {Node} targetNode - The node where the mention is triggered.
87
+ * @returns {Promise<boolean>} - Returns `true` if the mention list is displayed, `false` otherwise.
88
+ */
89
+ private _createMentionList;
90
+ /**
91
+ * @private
92
+ * @description Constructs the API request URL with the mention query.
93
+ * @param {string} key - The mention query text.
94
+ * @returns {string} - The formatted API request URL.
95
+ */
96
+ private _createUrl;
97
+ #private;
98
+ }
99
+ import EditorInjector from '../../editorInjector';
100
+ import { ApiManager } from '../../modules';
101
+ import { SelectMenu } from '../../modules';
102
+ import { Controller } from '../../modules';
@@ -0,0 +1,107 @@
1
+ declare namespace _default {
2
+ export { blockquote };
3
+ export { exportPDF };
4
+ export { fileUpload };
5
+ export { list_bulleted };
6
+ export { list_numbered };
7
+ export { mention };
8
+ export { align };
9
+ export { font };
10
+ export { fontColor };
11
+ export { backgroundColor };
12
+ export { list };
13
+ export { table };
14
+ export { formatBlock };
15
+ export { hr };
16
+ export { layout };
17
+ export { lineHeight };
18
+ export { template };
19
+ export { paragraphStyle };
20
+ export { textStyle };
21
+ export { link };
22
+ export { image };
23
+ export { video };
24
+ export { audio };
25
+ export { embed };
26
+ export { math };
27
+ export { drawing };
28
+ export { imageGallery };
29
+ export { videoGallery };
30
+ export { audioGallery };
31
+ export { fileGallery };
32
+ export { fileBrowser };
33
+ export { fontSize };
34
+ export { pageNavigator };
35
+ export { anchor };
36
+ }
37
+ export default _default;
38
+ import blockquote from './command/blockquote';
39
+ import exportPDF from './command/exportPDF';
40
+ import fileUpload from './command/fileUpload';
41
+ import list_bulleted from './command/list_bulleted';
42
+ import list_numbered from './command/list_numbered';
43
+ import mention from './field/mention';
44
+ import align from './dropdown/align';
45
+ import font from './dropdown/font';
46
+ import fontColor from './dropdown/fontColor';
47
+ import backgroundColor from './dropdown/backgroundColor';
48
+ import list from './dropdown/list';
49
+ import table from './dropdown/table';
50
+ import formatBlock from './dropdown/formatBlock';
51
+ import hr from './dropdown/hr';
52
+ import layout from './dropdown/layout';
53
+ import lineHeight from './dropdown/lineHeight';
54
+ import template from './dropdown/template';
55
+ import paragraphStyle from './dropdown/paragraphStyle';
56
+ import textStyle from './dropdown/textStyle';
57
+ import link from './modal/link';
58
+ import image from './modal/image';
59
+ import video from './modal/video';
60
+ import audio from './modal/audio';
61
+ import embed from './modal/embed';
62
+ import math from './modal/math';
63
+ import drawing from './modal/drawing';
64
+ import imageGallery from './browser/imageGallery';
65
+ import videoGallery from './browser/videoGallery';
66
+ import audioGallery from './browser/audioGallery';
67
+ import fileGallery from './browser/fileGallery';
68
+ import fileBrowser from './browser/fileBrowser';
69
+ import fontSize from './input/fontSize';
70
+ import pageNavigator from './input/pageNavigator';
71
+ import anchor from './popup/anchor';
72
+ export {
73
+ blockquote,
74
+ exportPDF,
75
+ fileUpload,
76
+ list_bulleted,
77
+ list_numbered,
78
+ mention,
79
+ align,
80
+ font,
81
+ fontColor,
82
+ backgroundColor,
83
+ list,
84
+ table,
85
+ formatBlock,
86
+ hr,
87
+ layout,
88
+ lineHeight,
89
+ template,
90
+ paragraphStyle,
91
+ textStyle,
92
+ link,
93
+ image,
94
+ video,
95
+ audio,
96
+ embed,
97
+ math,
98
+ drawing,
99
+ imageGallery,
100
+ videoGallery,
101
+ audioGallery,
102
+ fileGallery,
103
+ fileBrowser,
104
+ fontSize,
105
+ pageNavigator,
106
+ anchor
107
+ };
@@ -0,0 +1,170 @@
1
+ export default FontSize;
2
+ /**
3
+ * @class
4
+ * @description FontSize Plugin
5
+ * - This plugin enables users to modify the font size of selected text within the editor.
6
+ * - It supports various measurement units (e.g., 'px', 'pt', 'em', 'rem', 'vw', 'vh', '%') and
7
+ * - provides multiple interfaces: dropdown menus, direct input, and optional increment/decrement buttons.
8
+ */
9
+ declare class FontSize extends EditorInjector {
10
+ static key: string;
11
+ static type: string;
12
+ static className: string;
13
+ /**
14
+ * @constructor
15
+ * @param {__se__EditorCore} editor - The root editor instance
16
+ * @param {Object} pluginOptions - Configuration options for the FontSize plugin.
17
+ * @param {string=} [pluginOptions.sizeUnit='px'] - The unit for the font size.
18
+ * - Accepted values include: 'px', 'pt', 'em', 'rem', 'vw', 'vh', '%' or 'text'.
19
+ * - If 'text' is used, a text-based font size list is applied.
20
+ * @param {boolean=} [pluginOptions.showDefaultSizeLabel=true] - Determines whether the default size label is displayed in the dropdown menu.
21
+ * @param {boolean=} [pluginOptions.showIncDecControls=false] - When true, displays increase and decrease buttons for font size adjustments.
22
+ * @param {boolean=} [pluginOptions.disableInput=true] - When true, disables the direct font size input box.
23
+ * @param {Object<string, {default: number, inc: number, min: number, max: number, list: Array<number>}>} [pluginOptions.unitMap={}] - Optional object to override or extend the default unit mapping for font sizes.
24
+ */
25
+ constructor(
26
+ editor: __se__EditorCore,
27
+ pluginOptions: {
28
+ sizeUnit?: string | undefined;
29
+ showDefaultSizeLabel?: boolean | undefined;
30
+ showIncDecControls?: boolean | undefined;
31
+ disableInput?: boolean | undefined;
32
+ unitMap?: {
33
+ [x: string]: {
34
+ default: number;
35
+ inc: number;
36
+ min: number;
37
+ max: number;
38
+ list: Array<number>;
39
+ };
40
+ };
41
+ }
42
+ );
43
+ unitMap: {
44
+ text: {
45
+ default: string;
46
+ list: {
47
+ title: string;
48
+ size: string;
49
+ }[];
50
+ };
51
+ px: {
52
+ default: number;
53
+ inc: number;
54
+ min: number;
55
+ max: number;
56
+ list: number[];
57
+ };
58
+ pt: {
59
+ default: number;
60
+ inc: number;
61
+ min: number;
62
+ max: number;
63
+ list: number[];
64
+ };
65
+ em: {
66
+ default: number;
67
+ inc: number;
68
+ min: number;
69
+ max: number;
70
+ list: number[];
71
+ };
72
+ rem: {
73
+ default: number;
74
+ inc: number;
75
+ min: number;
76
+ max: number;
77
+ list: number[];
78
+ };
79
+ vw: {
80
+ inc: number;
81
+ min: number;
82
+ max: number;
83
+ list: number[];
84
+ };
85
+ vh: {
86
+ default: number;
87
+ inc: number;
88
+ min: number;
89
+ max: number;
90
+ list: number[];
91
+ };
92
+ '%': {
93
+ default: number;
94
+ inc: number;
95
+ min: number;
96
+ max: number;
97
+ list: number[];
98
+ };
99
+ };
100
+ sizeUnit: any;
101
+ title: any;
102
+ inner: string | boolean;
103
+ beforeItem: HTMLElement;
104
+ afterItem: HTMLElement;
105
+ replaceButton: HTMLElement;
106
+ currentSize: string;
107
+ sizeList: NodeListOf<Element>;
108
+ hasInputFocus: boolean;
109
+ isInputActive: boolean;
110
+ _disableInput: boolean;
111
+ /**
112
+ * @editorMethod Editor.EventManager
113
+ * @description Executes the method that is called whenever the cursor position changes.
114
+ * @param {?HTMLElement=} element - Node element where the cursor is currently located
115
+ * @param {?HTMLElement=} target - The plugin's toolbar button element
116
+ * @returns {boolean} - Whether the plugin is active
117
+ */
118
+ active(element?: (HTMLElement | null) | undefined, target?: (HTMLElement | null) | undefined): boolean;
119
+ /**
120
+ * @editorMethod Editor.Toolbar
121
+ * @description Executes the event function of toolbar's input tag - "keydown".
122
+ * @param {Object} params
123
+ * @param {HTMLElement} params.target Input element
124
+ * @param {KeyboardEvent} params.event Event object
125
+ */
126
+ onInputKeyDown({ target, event }: { target: HTMLElement; event: KeyboardEvent }): void;
127
+ /**
128
+ * @editorMethod Editor.Toolbar
129
+ * @description Executes the event function of toolbar's input tag - "change".
130
+ * @param {__se__PluginToolbarInputChangeEventInfo} params
131
+ */
132
+ onInputChange({ target, value: changeValue, event }: __se__PluginToolbarInputChangeEventInfo): void;
133
+ /**
134
+ * @editorMethod Modules.Dropdown
135
+ * @description Executes the method that is called when a plugin's dropdown menu is opened.
136
+ * @param {HTMLElement} target Line element at the current cursor position
137
+ */
138
+ on(target: HTMLElement): void;
139
+ /**
140
+ * @editorMethod Editor.core
141
+ * @description Executes the main execution method of the plugin.
142
+ * - Called when an item in the "dropdown" menu is clicked.
143
+ * @param {HTMLElement} target - The plugin's toolbar button element
144
+ */
145
+ action(target: HTMLElement): void;
146
+ /**
147
+ * @private
148
+ * @description Retrieves the default font size of the editor.
149
+ * @returns {string} - The computed font size from the editor.
150
+ */
151
+ private _getDefaultSize;
152
+ /**
153
+ * @private
154
+ * @description Extracts the font size and unit from the given element or input value.
155
+ * @param {string|Element} target - The target input or element.
156
+ * @returns {{ unit: string, value: number|string }} - An object containing:
157
+ * - `unit` (string): The detected font size unit.
158
+ * - `value` (number|string): The numeric font size value or text-based size.
159
+ */
160
+ private _getSize;
161
+ /**
162
+ * @private
163
+ * @description Sets the font size in the toolbar input field or button label.
164
+ * @param {HTMLElement} target - The target element in the toolbar.
165
+ * @param {string|number} value - The font size value.
166
+ * @returns {string|number} - The applied font size.
167
+ */
168
+ private _setSize;
169
+ }
170
+ import EditorInjector from '../../editorInjector';
@@ -0,0 +1,28 @@
1
+ export default PageNavigator;
2
+ /**
3
+ * @class
4
+ * @description PageNavigator Plugin
5
+ * - This plugin provides functionality for navigating between pages within the editor's document.
6
+ * - It features an input field for entering the desired page number and a display element showing
7
+ * - the total number of pages. When the user changes the value in the input field, the plugin triggers
8
+ * - a page navigation event through the editor's document context.
9
+ */
10
+ declare class PageNavigator extends EditorInjector {
11
+ static key: string;
12
+ static type: string;
13
+ static className: string;
14
+ title: any;
15
+ inner: HTMLInputElement;
16
+ afterItem: HTMLElement;
17
+ pageNum: number;
18
+ totalPages: number;
19
+ /**
20
+ * @editorMethod Editor.documentType
21
+ * @description Updates the displayed page number and total pages in the navigator.
22
+ * @param {number} pageNum - The current page number to display.
23
+ * @param {number} totalPages - The total number of pages in the document.
24
+ */
25
+ display(pageNum: number, totalPages: number): void;
26
+ #private;
27
+ }
28
+ import EditorInjector from '../../editorInjector';
@@ -0,0 +1,269 @@
1
+ export default Audio_;
2
+ export type AudioInfo = import('../../core/base/events').AudioInfo;
3
+ export type AudioPluginOptions = {
4
+ /**
5
+ * - The default width of the audio tag (e.g., "300px").
6
+ */
7
+ defaultWidth?: string;
8
+ /**
9
+ * - The default height of the audio tag (e.g., "150px").
10
+ */
11
+ defaultHeight?: string;
12
+ /**
13
+ * - Whether to create a file input element.
14
+ */
15
+ createFileInput?: boolean;
16
+ /**
17
+ * - Whether to create a URL input element (default is true if file input is not created).
18
+ */
19
+ createUrlInput?: boolean;
20
+ /**
21
+ * - The URL to which files will be uploaded.
22
+ */
23
+ uploadUrl?: string;
24
+ /**
25
+ * - Headers to include in the file upload request.
26
+ */
27
+ uploadHeaders?: {
28
+ [x: string]: string;
29
+ };
30
+ /**
31
+ * - The total upload size limit in bytes.
32
+ */
33
+ uploadSizeLimit?: number;
34
+ /**
35
+ * - The single file size limit in bytes.
36
+ */
37
+ uploadSingleSizeLimit?: number;
38
+ /**
39
+ * - Whether to allow multiple file uploads.
40
+ */
41
+ allowMultiple?: boolean;
42
+ /**
43
+ * - Accepted file formats (default is "audio/*").
44
+ */
45
+ acceptedFormats?: string;
46
+ /**
47
+ * - Additional attributes to set on the audio tag.
48
+ */
49
+ audioTagAttributes?: {
50
+ [x: string]: string;
51
+ };
52
+ };
53
+ /**
54
+ * @typedef {import('../../core/base/events').AudioInfo} AudioInfo
55
+ */
56
+ /**
57
+ * @typedef {Object} AudioPluginOptions
58
+ * @property {string} [defaultWidth="300px"] - The default width of the audio tag (e.g., "300px").
59
+ * @property {string} [defaultHeight="150px"] - The default height of the audio tag (e.g., "150px").
60
+ * @property {boolean} [createFileInput] - Whether to create a file input element.
61
+ * @property {boolean} [createUrlInput] - Whether to create a URL input element (default is true if file input is not created).
62
+ * @property {string} [uploadUrl] - The URL to which files will be uploaded.
63
+ * @property {Object<string, string>} [uploadHeaders] - Headers to include in the file upload request.
64
+ * @property {number} [uploadSizeLimit] - The total upload size limit in bytes.
65
+ * @property {number} [uploadSingleSizeLimit] - The single file size limit in bytes.
66
+ * @property {boolean} [allowMultiple] - Whether to allow multiple file uploads.
67
+ * @property {string} [acceptedFormats="audio/*"] - Accepted file formats (default is "audio/*").
68
+ * @property {Object<string, string>} [audioTagAttributes] - Additional attributes to set on the audio tag.
69
+ */
70
+ /**
71
+ * @class
72
+ * @description Audio modal plugin.
73
+ */
74
+ declare class Audio_ extends EditorInjector {
75
+ static key: string;
76
+ static type: string;
77
+ static className: string;
78
+ /**
79
+ * @this {Audio_}
80
+ * @param {HTMLElement} node - The node to check.
81
+ * @returns {HTMLElement|null} Returns a node if the node is a valid component.
82
+ */
83
+ static component(this: Audio_, node: HTMLElement): HTMLElement | null;
84
+ /**
85
+ * @constructor
86
+ * @param {__se__EditorCore} editor - The root editor instance
87
+ * @param {AudioPluginOptions} pluginOptions
88
+ */
89
+ constructor(editor: __se__EditorCore, pluginOptions: AudioPluginOptions);
90
+ title: any;
91
+ icon: string;
92
+ pluginOptions: {
93
+ defaultWidth: string;
94
+ defaultHeight: string;
95
+ createFileInput: boolean;
96
+ createUrlInput: boolean;
97
+ uploadUrl: string;
98
+ uploadHeaders: {
99
+ [x: string]: string;
100
+ };
101
+ uploadSizeLimit: number;
102
+ uploadSingleSizeLimit: number;
103
+ allowMultiple: boolean;
104
+ acceptedFormats: string;
105
+ audioTagAttributes: {
106
+ [x: string]: string;
107
+ };
108
+ };
109
+ modal: Modal;
110
+ controller: Controller;
111
+ fileManager: FileManager;
112
+ figure: Figure;
113
+ /** @type {HTMLElement} */
114
+ fileModalWrapper: HTMLElement;
115
+ /** @type {HTMLInputElement} */
116
+ audioInputFile: HTMLInputElement;
117
+ /** @type {HTMLInputElement} */
118
+ audioUrlFile: HTMLInputElement;
119
+ /** @type {HTMLElement} */
120
+ preview: HTMLElement;
121
+ /** @type {HTMLAudioElement} */
122
+ _element: HTMLAudioElement;
123
+ defaultWidth: string;
124
+ defaultHeight: string;
125
+ urlValue: string;
126
+ /**
127
+ * @editorMethod Modules.Modal
128
+ * @description Executes the method that is called when a "Modal" module's is opened.
129
+ */
130
+ open(): void;
131
+ /**
132
+ * @editorMethod Modules.Modal
133
+ * @description Executes the method that is called when a plugin's modal is opened.
134
+ * @param {boolean} isUpdate "Indicates whether the modal is for editing an existing component (true) or registering a new one (false)."
135
+ */
136
+ on(isUpdate: boolean): void;
137
+ /**
138
+ * @editorMethod Editor.EventManager
139
+ * @description Executes the event function of "paste" or "drop".
140
+ * @param {Object} params { frameContext, event, file }
141
+ * @param {__se__FrameContext} params.frameContext Frame context
142
+ * @param {ClipboardEvent} params.event Event object
143
+ * @param {File} params.file File object
144
+ * @returns {boolean} - If return false, the file upload will be canceled
145
+ */
146
+ onPastAndDrop({ file }: { frameContext: __se__FrameContext; event: ClipboardEvent; file: File }): boolean;
147
+ /**
148
+ * @editorMethod Modules.Modal
149
+ * @description This function is called when a form within a modal window is "submit".
150
+ * @returns {Promise<boolean>} Success or failure
151
+ */
152
+ modalAction(): Promise<boolean>;
153
+ /**
154
+ * @editorMethod Modules.Modal
155
+ * @description This function is called before the modal window is opened, but before it is closed.
156
+ */
157
+ init(): void;
158
+ /**
159
+ * @editorMethod Modules.Controller
160
+ * @description Executes the method that is called when a button is clicked in the "controller".
161
+ * @param {HTMLButtonElement} target Target button element
162
+ */
163
+ controllerAction(target: HTMLButtonElement): void;
164
+ /**
165
+ * @editorMethod Editor.core
166
+ * @description This method is used to validate and preserve the format of the component within the editor.
167
+ * - It ensures that the structure and attributes of the element are maintained and secure.
168
+ * - The method checks if the element is already wrapped in a valid container and updates its attributes if necessary.
169
+ * - If the element isn't properly contained, a new container is created to retain the format.
170
+ * @returns {{query: string, method: (element: HTMLAudioElement) => void}} The format retention object containing the query and method to process the element.
171
+ * - query: The selector query to identify the relevant elements (in this case, 'audio').
172
+ * - method:The function to execute on the element to validate and preserve its format.
173
+ * - The function takes the element as an argument, checks if it is contained correctly, and applies necessary adjustments.
174
+ */
175
+ retainFormat(): {
176
+ query: string;
177
+ method: (element: HTMLAudioElement) => void;
178
+ };
179
+ /**
180
+ * @editorMethod Editor.Component
181
+ * @description Executes the method that is called when a component of a plugin is selected.
182
+ * @param {HTMLElement} target Target component element
183
+ */
184
+ select(target: HTMLElement): void;
185
+ /**
186
+ * @private
187
+ * @description Prepares the component for selection.
188
+ * - Ensures that the controller is properly positioned and initialized.
189
+ * - Prevents duplicate event handling if the component is already selected.
190
+ * @param {HTMLElement} target - The selected element.
191
+ */
192
+ private _ready;
193
+ /**
194
+ * @editorMethod Editor.Component
195
+ * @description Method to delete a component of a plugin, called by the "FileManager", "Controller" module.
196
+ * @param {HTMLElement=} target Target element, if null current selected element
197
+ * @returns {Promise<void>}
198
+ */
199
+ destroy(target?: HTMLElement | undefined): Promise<void>;
200
+ /**
201
+ * @private
202
+ * @description Registers uploaded audio files and creates the corresponding audio elements.
203
+ * - Iterates through the uploaded files and inserts them into the editor.
204
+ * @param {AudioInfo} info - Upload metadata, including `isUpdate` flag and `element`.
205
+ * @param {Object<string, *>} response - Server response containing uploaded file details.
206
+ */
207
+ private _register;
208
+ /**
209
+ * @description Create an "audio" component using the provided files.
210
+ * @param {FileList|File[]} fileList File object list
211
+ * @returns {Promise<boolean>} If return false, the file upload will be canceled
212
+ */
213
+ submitFile(fileList: FileList | File[]): Promise<boolean>;
214
+ /**
215
+ * @description Create an "audio" component using the provided url.
216
+ * @param {string} url File url
217
+ * @returns {Promise<boolean>}
218
+ */
219
+ submitURL(url: string): Promise<boolean>;
220
+ /**
221
+ * @private
222
+ * @description Creates or updates an audio component within the editor.
223
+ * - If `isUpdate` is `true`, updates the existing element's `src`.
224
+ * - Otherwise, inserts a new audio component with the given file.
225
+ * @param {HTMLAudioElement} element - The target audio element.
226
+ * @param {string} src - The source URL of the audio file.
227
+ * @param {{name: string, size: number}} file - The file metadata (name, size).
228
+ * @param {boolean} isUpdate - Whether to update an existing element.
229
+ */
230
+ private _createComp;
231
+ /**
232
+ * @private
233
+ * @description Creates a new `<audio>` element with default attributes.
234
+ * - Applies width, height, and additional attributes from plugin options.
235
+ * @returns {HTMLAudioElement} - The newly created `<audio>` element.
236
+ */
237
+ private _createAudioTag;
238
+ /**
239
+ * @private
240
+ * @description Sets attributes on an audio element based on plugin options.
241
+ * - Adds the `controls` attribute and applies any custom attributes.
242
+ * @param {HTMLElement} element - The `<audio>` element to modify.
243
+ */
244
+ private _setTagAttrs;
245
+ /**
246
+ * @private
247
+ * @description Uploads audio files to the server.
248
+ * - Sends a request to the configured upload URL and processes the response.
249
+ * @param {AudioInfo} info - Upload metadata, including `files` and `isUpdate`.
250
+ * @param {FileList|File[]} files - The files to be uploaded.
251
+ */
252
+ private _serverUpload;
253
+ /**
254
+ * @private
255
+ * @description Handles errors that occur during the audio upload process.
256
+ * - Triggers the `onAudioUploadError` event to allow custom handling of errors.
257
+ * - Displays an error message in the editor's UI.
258
+ * - Logs the error to the console for debugging.
259
+ * @param {Object<string, *>} response - The error response object from the server or upload process.
260
+ * @returns {Promise<void>}
261
+ */
262
+ private _error;
263
+ #private;
264
+ }
265
+ import EditorInjector from '../../editorInjector';
266
+ import { Modal } from '../../modules';
267
+ import { Controller } from '../../modules';
268
+ import { FileManager } from '../../modules';
269
+ import { Figure } from '../../modules';