suneditor 3.0.0-alpha.9 → 3.0.0-beta.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 (315) hide show
  1. package/CONTRIBUTING.md +170 -22
  2. package/{LICENSE.txt → LICENSE} +9 -9
  3. package/README.md +168 -30
  4. package/dist/suneditor.min.css +1 -1
  5. package/dist/suneditor.min.js +1 -1
  6. package/package.json +47 -21
  7. package/src/assets/design/color.css +121 -0
  8. package/src/assets/design/index.css +3 -0
  9. package/src/assets/design/size.css +35 -0
  10. package/src/assets/design/typography.css +37 -0
  11. package/src/assets/icons/defaultIcons.js +232 -0
  12. package/src/assets/suneditor-contents.css +181 -46
  13. package/src/assets/suneditor.css +1403 -650
  14. package/src/core/base/eventHandlers/handler_toolbar.js +35 -14
  15. package/src/core/base/eventHandlers/handler_ww_clipboard.js +23 -4
  16. package/src/core/base/eventHandlers/handler_ww_dragDrop.js +49 -10
  17. package/src/core/base/eventHandlers/handler_ww_key_input.js +422 -224
  18. package/src/core/base/eventHandlers/handler_ww_mouse.js +83 -36
  19. package/src/core/base/eventManager.js +520 -179
  20. package/src/core/base/history.js +95 -41
  21. package/src/core/class/char.js +26 -11
  22. package/src/core/class/component.js +345 -137
  23. package/src/core/class/format.js +683 -519
  24. package/src/core/class/html.js +485 -305
  25. package/src/core/class/menu.js +133 -47
  26. package/src/core/class/nodeTransform.js +90 -71
  27. package/src/core/class/offset.js +408 -92
  28. package/src/core/class/selection.js +216 -106
  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 +422 -0
  32. package/src/core/class/viewer.js +178 -74
  33. package/src/core/editor.js +496 -389
  34. package/src/core/section/actives.js +123 -27
  35. package/src/core/section/constructor.js +615 -206
  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/events.js +622 -0
  42. package/src/helper/clipboard.js +59 -0
  43. package/src/helper/converter.js +202 -26
  44. package/src/helper/dom/domCheck.js +304 -0
  45. package/src/helper/dom/domQuery.js +669 -0
  46. package/src/helper/dom/domUtils.js +557 -0
  47. package/src/helper/dom/index.js +12 -0
  48. package/src/helper/env.js +46 -56
  49. package/src/helper/index.js +10 -4
  50. package/src/helper/keyCodeMap.js +183 -0
  51. package/src/helper/numbers.js +12 -8
  52. package/src/helper/unicode.js +9 -5
  53. package/src/langs/ckb.js +74 -4
  54. package/src/langs/cs.js +72 -2
  55. package/src/langs/da.js +73 -3
  56. package/src/langs/de.js +73 -4
  57. package/src/langs/en.js +23 -3
  58. package/src/langs/es.js +73 -4
  59. package/src/langs/fa.js +75 -3
  60. package/src/langs/fr.js +73 -3
  61. package/src/langs/he.js +73 -4
  62. package/src/langs/hu.js +230 -0
  63. package/src/langs/index.js +7 -3
  64. package/src/langs/it.js +70 -1
  65. package/src/langs/ja.js +72 -4
  66. package/src/langs/km.js +230 -0
  67. package/src/langs/ko.js +22 -2
  68. package/src/langs/lv.js +74 -5
  69. package/src/langs/nl.js +73 -4
  70. package/src/langs/pl.js +73 -4
  71. package/src/langs/pt_br.js +70 -1
  72. package/src/langs/ro.js +74 -5
  73. package/src/langs/ru.js +73 -4
  74. package/src/langs/se.js +73 -4
  75. package/src/langs/tr.js +73 -1
  76. package/src/langs/{ua.js → uk.js} +75 -6
  77. package/src/langs/ur.js +77 -8
  78. package/src/langs/zh_cn.js +74 -5
  79. package/src/modules/ApiManager.js +77 -54
  80. package/src/modules/Browser.js +667 -0
  81. package/src/modules/ColorPicker.js +162 -102
  82. package/src/modules/Controller.js +273 -142
  83. package/src/modules/Figure.js +925 -484
  84. package/src/modules/FileManager.js +121 -69
  85. package/src/modules/HueSlider.js +113 -61
  86. package/src/modules/Modal.js +291 -122
  87. package/src/modules/ModalAnchorEditor.js +383 -234
  88. package/src/modules/SelectMenu.js +270 -168
  89. package/src/modules/_DragHandle.js +2 -1
  90. package/src/modules/index.js +3 -3
  91. package/src/plugins/browser/audioGallery.js +83 -0
  92. package/src/plugins/browser/fileBrowser.js +103 -0
  93. package/src/plugins/browser/fileGallery.js +83 -0
  94. package/src/plugins/browser/imageGallery.js +81 -0
  95. package/src/plugins/browser/videoGallery.js +103 -0
  96. package/src/plugins/command/blockquote.js +40 -27
  97. package/src/plugins/command/exportPDF.js +134 -0
  98. package/src/plugins/command/fileUpload.js +229 -162
  99. package/src/plugins/command/list_bulleted.js +83 -47
  100. package/src/plugins/command/list_numbered.js +83 -47
  101. package/src/plugins/dropdown/align.js +66 -54
  102. package/src/plugins/dropdown/backgroundColor.js +63 -49
  103. package/src/plugins/dropdown/font.js +71 -47
  104. package/src/plugins/dropdown/fontColor.js +63 -48
  105. package/src/plugins/dropdown/formatBlock.js +70 -33
  106. package/src/plugins/dropdown/hr.js +92 -51
  107. package/src/plugins/dropdown/layout.js +37 -26
  108. package/src/plugins/dropdown/lineHeight.js +54 -38
  109. package/src/plugins/dropdown/list.js +60 -45
  110. package/src/plugins/dropdown/paragraphStyle.js +51 -30
  111. package/src/plugins/dropdown/table.js +2003 -813
  112. package/src/plugins/dropdown/template.js +38 -26
  113. package/src/plugins/dropdown/textStyle.js +43 -31
  114. package/src/plugins/field/mention.js +147 -86
  115. package/src/plugins/index.js +32 -6
  116. package/src/plugins/input/fontSize.js +161 -108
  117. package/src/plugins/input/pageNavigator.js +70 -0
  118. package/src/plugins/modal/audio.js +358 -173
  119. package/src/plugins/modal/drawing.js +531 -0
  120. package/src/plugins/modal/embed.js +886 -0
  121. package/src/plugins/modal/image.js +674 -362
  122. package/src/plugins/modal/link.js +100 -71
  123. package/src/plugins/modal/math.js +367 -167
  124. package/src/plugins/modal/video.js +691 -335
  125. package/src/plugins/popup/anchor.js +222 -0
  126. package/src/suneditor.js +50 -13
  127. package/src/themes/dark.css +122 -0
  128. package/src/typedef.js +130 -0
  129. package/types/assets/icons/defaultIcons.d.ts +153 -0
  130. package/types/core/base/eventHandlers/handler_toolbar.d.ts +41 -0
  131. package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +40 -0
  132. package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +35 -0
  133. package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +45 -0
  134. package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +39 -0
  135. package/types/core/base/eventManager.d.ts +385 -0
  136. package/types/core/base/history.d.ts +81 -0
  137. package/types/core/class/char.d.ts +60 -0
  138. package/types/core/class/component.d.ts +212 -0
  139. package/types/core/class/format.d.ts +616 -0
  140. package/types/core/class/html.d.ts +422 -0
  141. package/types/core/class/menu.d.ts +126 -0
  142. package/types/core/class/nodeTransform.d.ts +93 -0
  143. package/types/core/class/offset.d.ts +522 -0
  144. package/types/core/class/selection.d.ts +188 -0
  145. package/types/core/class/shortcuts.d.ts +142 -0
  146. package/types/core/class/toolbar.d.ts +189 -0
  147. package/types/core/class/ui.d.ts +164 -0
  148. package/types/core/class/viewer.d.ts +140 -0
  149. package/types/core/editor.d.ts +610 -0
  150. package/types/core/section/actives.d.ts +46 -0
  151. package/types/core/section/constructor.d.ts +777 -0
  152. package/types/core/section/context.d.ts +45 -0
  153. package/types/core/section/documentType.d.ts +178 -0
  154. package/types/editorInjector/_classes.d.ts +41 -0
  155. package/types/editorInjector/_core.d.ts +92 -0
  156. package/types/editorInjector/index.d.ts +71 -0
  157. package/types/events.d.ts +273 -0
  158. package/types/helper/clipboard.d.ts +12 -0
  159. package/types/helper/converter.d.ts +197 -0
  160. package/types/helper/dom/domCheck.d.ts +189 -0
  161. package/types/helper/dom/domQuery.d.ts +223 -0
  162. package/types/helper/dom/domUtils.d.ts +226 -0
  163. package/types/helper/dom/index.d.ts +9 -0
  164. package/types/helper/env.d.ts +132 -0
  165. package/types/helper/index.d.ts +174 -0
  166. package/types/helper/keyCodeMap.d.ts +110 -0
  167. package/types/helper/numbers.d.ts +46 -0
  168. package/types/helper/unicode.d.ts +28 -0
  169. package/types/index.d.ts +120 -0
  170. package/{typings/Lang.d.ts → types/langs/_Lang.d.ts} +173 -103
  171. package/types/langs/ckb.d.ts +3 -0
  172. package/types/langs/cs.d.ts +3 -0
  173. package/types/langs/da.d.ts +3 -0
  174. package/types/langs/de.d.ts +3 -0
  175. package/types/langs/en.d.ts +3 -0
  176. package/types/langs/es.d.ts +3 -0
  177. package/types/langs/fa.d.ts +3 -0
  178. package/types/langs/fr.d.ts +3 -0
  179. package/types/langs/he.d.ts +3 -0
  180. package/types/langs/hu.d.ts +3 -0
  181. package/types/langs/index.d.ts +54 -0
  182. package/types/langs/it.d.ts +3 -0
  183. package/types/langs/ja.d.ts +3 -0
  184. package/types/langs/km.d.ts +3 -0
  185. package/types/langs/ko.d.ts +3 -0
  186. package/types/langs/lv.d.ts +3 -0
  187. package/types/langs/nl.d.ts +3 -0
  188. package/types/langs/pl.d.ts +3 -0
  189. package/types/langs/pt_br.d.ts +3 -0
  190. package/types/langs/ro.d.ts +3 -0
  191. package/types/langs/ru.d.ts +3 -0
  192. package/types/langs/se.d.ts +3 -0
  193. package/types/langs/tr.d.ts +3 -0
  194. package/types/langs/uk.d.ts +3 -0
  195. package/types/langs/ur.d.ts +3 -0
  196. package/types/langs/zh_cn.d.ts +3 -0
  197. package/types/modules/ApiManager.d.ts +125 -0
  198. package/types/modules/Browser.d.ts +326 -0
  199. package/types/modules/ColorPicker.d.ts +131 -0
  200. package/types/modules/Controller.d.ts +251 -0
  201. package/types/modules/Figure.d.ts +517 -0
  202. package/types/modules/FileManager.d.ts +202 -0
  203. package/types/modules/HueSlider.d.ts +136 -0
  204. package/types/modules/Modal.d.ts +111 -0
  205. package/types/modules/ModalAnchorEditor.d.ts +236 -0
  206. package/types/modules/SelectMenu.d.ts +194 -0
  207. package/types/modules/_DragHandle.d.ts +7 -0
  208. package/types/modules/index.d.ts +26 -0
  209. package/types/plugins/browser/audioGallery.d.ts +55 -0
  210. package/types/plugins/browser/fileBrowser.d.ts +64 -0
  211. package/types/plugins/browser/fileGallery.d.ts +55 -0
  212. package/types/plugins/browser/imageGallery.d.ts +51 -0
  213. package/types/plugins/browser/videoGallery.d.ts +57 -0
  214. package/types/plugins/command/blockquote.d.ts +28 -0
  215. package/types/plugins/command/exportPDF.d.ts +46 -0
  216. package/types/plugins/command/fileUpload.d.ts +156 -0
  217. package/types/plugins/command/list_bulleted.d.ts +46 -0
  218. package/types/plugins/command/list_numbered.d.ts +46 -0
  219. package/types/plugins/dropdown/align.d.ts +60 -0
  220. package/types/plugins/dropdown/backgroundColor.d.ts +63 -0
  221. package/types/plugins/dropdown/font.d.ts +54 -0
  222. package/types/plugins/dropdown/fontColor.d.ts +63 -0
  223. package/types/plugins/dropdown/formatBlock.d.ts +54 -0
  224. package/types/plugins/dropdown/hr.d.ts +71 -0
  225. package/types/plugins/dropdown/layout.d.ts +40 -0
  226. package/types/plugins/dropdown/lineHeight.d.ts +50 -0
  227. package/types/plugins/dropdown/list.d.ts +39 -0
  228. package/types/plugins/dropdown/paragraphStyle.d.ts +54 -0
  229. package/types/plugins/dropdown/table.d.ts +627 -0
  230. package/types/plugins/dropdown/template.d.ts +40 -0
  231. package/types/plugins/dropdown/textStyle.d.ts +41 -0
  232. package/types/plugins/field/mention.d.ts +102 -0
  233. package/types/plugins/index.d.ts +107 -0
  234. package/types/plugins/input/fontSize.d.ts +170 -0
  235. package/types/plugins/input/pageNavigator.d.ts +28 -0
  236. package/types/plugins/modal/audio.d.ts +269 -0
  237. package/types/plugins/modal/drawing.d.ts +246 -0
  238. package/types/plugins/modal/embed.d.ts +387 -0
  239. package/types/plugins/modal/image.d.ts +451 -0
  240. package/types/plugins/modal/link.d.ts +128 -0
  241. package/types/plugins/modal/math.d.ts +193 -0
  242. package/types/plugins/modal/video.d.ts +485 -0
  243. package/types/plugins/popup/anchor.d.ts +56 -0
  244. package/types/suneditor.d.ts +51 -0
  245. package/types/typedef.d.ts +233 -0
  246. package/.eslintignore +0 -7
  247. package/.eslintrc.json +0 -64
  248. package/src/assets/icons/_default.js +0 -194
  249. package/src/core/base/events.js +0 -320
  250. package/src/core/class/notice.js +0 -42
  251. package/src/helper/domUtils.js +0 -1177
  252. package/src/modules/FileBrowser.js +0 -271
  253. package/src/plugins/command/exportPdf.js +0 -168
  254. package/src/plugins/fileBrowser/imageGallery.js +0 -81
  255. package/src/themes/test.css +0 -61
  256. package/typings/CommandPlugin.d.ts +0 -8
  257. package/typings/DialogPlugin.d.ts +0 -20
  258. package/typings/FileBrowserPlugin.d.ts +0 -30
  259. package/typings/Module.d.ts +0 -15
  260. package/typings/Plugin.d.ts +0 -42
  261. package/typings/SubmenuPlugin.d.ts +0 -8
  262. package/typings/_classes.d.ts +0 -17
  263. package/typings/_colorPicker.d.ts +0 -60
  264. package/typings/_core.d.ts +0 -55
  265. package/typings/align.d.ts +0 -5
  266. package/typings/audio.d.ts +0 -5
  267. package/typings/backgroundColor.d.ts +0 -5
  268. package/typings/blockquote.d.ts +0 -5
  269. package/typings/char.d.ts +0 -39
  270. package/typings/component.d.ts +0 -38
  271. package/typings/context.d.ts +0 -39
  272. package/typings/converter.d.ts +0 -33
  273. package/typings/dialog.d.ts +0 -28
  274. package/typings/domUtils.d.ts +0 -361
  275. package/typings/editor.d.ts +0 -7
  276. package/typings/editor.ts +0 -542
  277. package/typings/env.d.ts +0 -70
  278. package/typings/eventManager.d.ts +0 -37
  279. package/typings/events.d.ts +0 -262
  280. package/typings/fileBrowser.d.ts +0 -42
  281. package/typings/fileManager.d.ts +0 -67
  282. package/typings/font.d.ts +0 -5
  283. package/typings/fontColor.d.ts +0 -5
  284. package/typings/fontSize.d.ts +0 -5
  285. package/typings/format.d.ts +0 -191
  286. package/typings/formatBlock.d.ts +0 -5
  287. package/typings/history.d.ts +0 -48
  288. package/typings/horizontalRule.d.ts +0 -5
  289. package/typings/image.d.ts +0 -5
  290. package/typings/imageGallery.d.ts +0 -5
  291. package/typings/index.d.ts +0 -21
  292. package/typings/index.modules.d.ts +0 -11
  293. package/typings/index.plugins.d.ts +0 -58
  294. package/typings/lineHeight.d.ts +0 -5
  295. package/typings/link.d.ts +0 -5
  296. package/typings/list.d.ts +0 -5
  297. package/typings/math.d.ts +0 -5
  298. package/typings/mediaContainer.d.ts +0 -25
  299. package/typings/mention.d.ts +0 -5
  300. package/typings/node.d.ts +0 -57
  301. package/typings/notice.d.ts +0 -16
  302. package/typings/numbers.d.ts +0 -29
  303. package/typings/offset.d.ts +0 -24
  304. package/typings/options.d.ts +0 -589
  305. package/typings/paragraphStyle.d.ts +0 -5
  306. package/typings/resizing.d.ts +0 -141
  307. package/typings/selection.d.ts +0 -94
  308. package/typings/shortcuts.d.ts +0 -13
  309. package/typings/suneditor.d.ts +0 -9
  310. package/typings/table.d.ts +0 -5
  311. package/typings/template.d.ts +0 -5
  312. package/typings/textStyle.d.ts +0 -5
  313. package/typings/toolbar.d.ts +0 -32
  314. package/typings/unicode.d.ts +0 -25
  315. package/typings/video.d.ts +0 -5
@@ -0,0 +1,269 @@
1
+ export default Audio_;
2
+ export type AudioInfo_audio = import('../../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('../../events').AudioInfo} AudioInfo_audio
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
+ onFilePasteAndDrop({ 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_audio} 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_audio} 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';
@@ -0,0 +1,246 @@
1
+ export default Drawing;
2
+ export type DrawingPluginOptions = {
3
+ /**
4
+ * - The output format of the drawing. Options: "dataurl", "svg".
5
+ */
6
+ outputFormat?: string;
7
+ /**
8
+ * - Whether to enable format type selection (block vs inline).
9
+ */
10
+ useFormatType?: boolean;
11
+ /**
12
+ * - The default format type, either "block" or "inline".
13
+ */
14
+ defaultFormatType?: string;
15
+ /**
16
+ * - Whether to maintain the chosen format type after drawing.
17
+ */
18
+ keepFormatType?: boolean;
19
+ /**
20
+ * - The width of the drawing line.
21
+ */
22
+ lineWidth?: number;
23
+ /**
24
+ * - Whether to reconnect lines when drawing.
25
+ */
26
+ lineReconnect?: boolean;
27
+ /**
28
+ * - The style of the line cap ("butt", "round", or "square").
29
+ */
30
+ lineCap?: CanvasLineCap;
31
+ /**
32
+ * - The color of the drawing line.
33
+ */
34
+ lineColor?: string;
35
+ /**
36
+ * - Whether the modal form can be resized.
37
+ */
38
+ canResize?: boolean;
39
+ /**
40
+ * - Whether to maintain the aspect ratio when resizing.
41
+ */
42
+ maintainRatio?: boolean;
43
+ /**
44
+ * - The size configuration for the drawing modal form.
45
+ */
46
+ formSize?: {
47
+ width?: string;
48
+ height?: string;
49
+ maxWidth?: string;
50
+ maxHeight?: string;
51
+ minWidth?: string;
52
+ minHeight?: string;
53
+ };
54
+ };
55
+ /**
56
+ * @typedef {Object} DrawingPluginOptions
57
+ * @property {string} [outputFormat="dataurl"] - The output format of the drawing. Options: "dataurl", "svg".
58
+ * @property {boolean} [useFormatType=false] - Whether to enable format type selection (block vs inline).
59
+ * @property {string} [defaultFormatType="block"] - The default format type, either "block" or "inline".
60
+ * @property {boolean} [keepFormatType=false] - Whether to maintain the chosen format type after drawing.
61
+ * @property {number} [lineWidth=5] - The width of the drawing line.
62
+ * @property {boolean} [lineReconnect=false] - Whether to reconnect lines when drawing.
63
+ * @property {CanvasLineCap} [lineCap="round"] - The style of the line cap ("butt", "round", or "square").
64
+ * @property {string} [lineColor=""] - The color of the drawing line.
65
+ * @property {boolean} [canResize=true] - Whether the modal form can be resized.
66
+ * @property {boolean} [maintainRatio=true] - Whether to maintain the aspect ratio when resizing.
67
+ * @property {Object} [formSize={}] - The size configuration for the drawing modal form.
68
+ * @property {string} [formSize.width="750px"] - The width of the modal form.
69
+ * @property {string} [formSize.height="50vh"] - The height of the modal form.
70
+ * @property {string} [formSize.maxWidth=""] - The maximum width of the modal form.
71
+ * @property {string} [formSize.maxHeight=""] - The maximum height of the modal form.
72
+ * @property {string} [formSize.minWidth="150px"] - The minimum width of the modal form.
73
+ * @property {string} [formSize.minHeight="100px"] - The minimum height of the modal form.
74
+ */
75
+ /**
76
+ * @class
77
+ * @description Drawing modal plugin.
78
+ */
79
+ declare class Drawing extends EditorInjector {
80
+ static key: string;
81
+ static type: string;
82
+ static className: string;
83
+ /**
84
+ * @constructor
85
+ * @param {__se__EditorCore} editor - The root editor instance
86
+ * @param {DrawingPluginOptions} pluginOptions
87
+ */
88
+ constructor(editor: __se__EditorCore, pluginOptions: DrawingPluginOptions);
89
+ title: any;
90
+ icon: string;
91
+ pluginOptions: {
92
+ outputFormat: string;
93
+ useFormatType: boolean;
94
+ defaultFormatType: string;
95
+ keepFormatType: boolean;
96
+ lineWidth: number;
97
+ lineReconnect: boolean;
98
+ lineCap: CanvasLineCap;
99
+ lineColor: string;
100
+ formSize: {
101
+ /**
102
+ * - The width of the modal form.
103
+ */
104
+ width: string;
105
+ /**
106
+ * - The height of the modal form.
107
+ */
108
+ height: string;
109
+ /**
110
+ * - The maximum width of the modal form.
111
+ */
112
+ maxWidth: string;
113
+ /**
114
+ * - The maximum height of the modal form.
115
+ */
116
+ maxHeight: string;
117
+ /**
118
+ * - The minimum width of the modal form.
119
+ */
120
+ minWidth: string;
121
+ /**
122
+ * - The minimum height of the modal form.
123
+ */
124
+ minHeight: string;
125
+ };
126
+ canResize: boolean;
127
+ maintainRatio: boolean;
128
+ };
129
+ modal: Modal;
130
+ as: string;
131
+ asBlock: Element;
132
+ asInline: Element;
133
+ /**
134
+ * @type {HTMLCanvasElement}
135
+ */
136
+ canvas: HTMLCanvasElement;
137
+ ctx: CanvasRenderingContext2D;
138
+ isDrawing: boolean;
139
+ points: any[];
140
+ paths: any[];
141
+ resizeObserver: ResizeObserver;
142
+ __events: {
143
+ mousedown: any;
144
+ mousemove: any;
145
+ mouseup: any;
146
+ mouseleave: any;
147
+ mouseenter: any;
148
+ };
149
+ __eventsRegister: {
150
+ mousedown: any;
151
+ mousemove: any;
152
+ mouseup: any;
153
+ mouseleave: any;
154
+ mouseenter: any;
155
+ };
156
+ __eventNameMap: {
157
+ mousedown: string;
158
+ mousemove: string;
159
+ mouseup: string;
160
+ mouseleave: string;
161
+ mouseenter: string;
162
+ };
163
+ /**
164
+ * @editorMethod Modules.Modal
165
+ * @description Executes the method that is called when a "Modal" module's is opened.
166
+ */
167
+ open(): void;
168
+ /**
169
+ * @editorMethod Modules.Modal
170
+ * @description Executes the method that is called when a plugin's "modal" is closed.
171
+ */
172
+ off(): void;
173
+ /**
174
+ * @editorMethod Modules.Modal
175
+ * @description This function is called when a form within a modal window is "submit".
176
+ * @returns {boolean} Success or failure
177
+ */
178
+ modalAction(): boolean;
179
+ /**
180
+ * @private
181
+ * @description Initializes the drawing canvas, sets up event listeners, and configures resize handling.
182
+ */
183
+ private _initDrawing;
184
+ /**
185
+ * @private
186
+ * @description Destroys the drawing canvas, removes event listeners, and clears stored drawing data.
187
+ */
188
+ private _destroyDrawing;
189
+ /**
190
+ * @private
191
+ * @description Configures the drawing context (canvas settings like line width, color, etc.).
192
+ */
193
+ private _setCtx;
194
+ /**
195
+ * @private
196
+ * @description Draws the current stroke based on collected points.
197
+ */
198
+ private _draw;
199
+ /**
200
+ * @private
201
+ * @description Redraws all stored paths onto the canvas.
202
+ */
203
+ private _drawAll;
204
+ /**
205
+ * @private
206
+ * @description Adjusts all stored paths to fit new canvas dimensions after a resize event.
207
+ * @param {number} prevWidth - The previous width of the canvas.
208
+ * @param {number} prevHeight - The previous height of the canvas.
209
+ * @param {number} newWidth - The new width of the canvas.
210
+ * @param {number} newHeight - The new height of the canvas.
211
+ */
212
+ private _adjustPathsToNewDimensions;
213
+ /**
214
+ * @private
215
+ * @description Clears the canvas and resets stored drawing paths.
216
+ */
217
+ private _clearCanvas;
218
+ /**
219
+ * @private
220
+ * @description Generates an SVG representation of the drawn content.
221
+ * @returns {*} The generated SVG element.
222
+ */
223
+ private _getSVG;
224
+ /**
225
+ * @private
226
+ * @description Converts the SVG element into a downloadable file.
227
+ * @returns {FileList} A FileList containing the generated SVG file.
228
+ */
229
+ private _getSVGFileList;
230
+ /**
231
+ * @private
232
+ * @description Retrieves touch coordinates relative to the canvas.
233
+ * @param {TouchEvent} e - The touch event.
234
+ * @returns {{x: number, y: number}} An object containing the x and y coordinates.
235
+ */
236
+ private _getCanvasTouchPointer;
237
+ /**
238
+ * @private
239
+ * @description Activates either block or inline format mode for inserted drawings.
240
+ * @param {boolean} isInline - Whether the drawing should be inserted as an inline element.
241
+ */
242
+ private _activeAsInline;
243
+ #private;
244
+ }
245
+ import EditorInjector from '../../editorInjector';
246
+ import { Modal } from '../../modules';