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
@@ -1,55 +1,81 @@
1
1
  import EditorInjector from '../../editorInjector';
2
2
  import { Modal, Controller, ModalAnchorEditor } from '../../modules';
3
- import { domUtils, numbers } from '../../helper';
4
-
5
- const Link = function (editor, pluginOptions) {
6
- // plugin bisic properties
7
- EditorInjector.call(this, editor);
8
- this.title = this.lang.link;
9
- this.icon = 'link';
10
-
11
- // define plugin options
12
- pluginOptions.textToDisplay = true;
13
- pluginOptions.title = true;
14
-
15
- // create HTML
16
- const modalEl = CreateHTML_modal(editor);
17
- const controllerEl = CreateHTML_controller(editor);
18
-
19
- // members
20
- const uploadUrl = typeof pluginOptions.uploadUrl === 'string' ? pluginOptions.uploadUrl : null;
21
- this.isUpdateState = false;
22
- this.pluginOptions = {
23
- ...pluginOptions,
24
- uploadUrl,
25
- uploadHeaders: pluginOptions.uploadHeaders || null,
26
- uploadSizeLimit: /\d+/.test(pluginOptions.uploadSizeLimit) ? numbers.get(pluginOptions.uploadSizeLimit, 0) : null,
27
- uploadSingleSizeLimit: /\d+/.test(pluginOptions.uploadSingleSizeLimit) ? numbers.get(pluginOptions.uploadSingleSizeLimit, 0) : null,
28
- acceptedFormats: typeof pluginOptions.acceptedFormats === 'string' ? pluginOptions.acceptedFormats.trim() : null,
29
- enableFileUpload: !!uploadUrl
30
- };
31
-
32
- // modules
33
- this.anchor = new ModalAnchorEditor(this, modalEl, this.pluginOptions);
34
- this.modal = new Modal(this, modalEl);
35
- this.controller = new Controller(this, controllerEl, { position: 'bottom', disabled: false });
36
- };
37
-
38
- Link.key = 'link';
39
- Link.type = 'modal';
40
- Link.className = 'se-icon-flip-rtl';
41
- Link.prototype = {
3
+ import { dom, numbers } from '../../helper';
4
+
5
+ /**
6
+ * @typedef {Object} LinkPluginOptions
7
+ * @property {boolean} [textToDisplay=true] - Whether to display the link text.
8
+ * @property {boolean} [title=true] - Whether to display the link title.
9
+ * @property {string} [uploadUrl] - The URL endpoint for file uploads.
10
+ * @property {Object<string, string>} [uploadHeaders] - Additional headers for file upload requests.
11
+ * @property {number} [uploadSizeLimit] - The total file upload size limit in bytes.
12
+ * @property {number} [uploadSingleSizeLimit] - The single file upload size limit in bytes.
13
+ * @property {string} [acceptedFormats] - Accepted file formats for link uploads.
14
+ */
15
+
16
+ /**
17
+ * @class
18
+ * @description Link plugin.
19
+ * - This plugin provides link insertion and editing functionality within the editor.
20
+ * - It also supports file uploads if an upload URL is provided.
21
+ */
22
+ class Link extends EditorInjector {
23
+ static key = 'link';
24
+ static type = 'modal';
25
+ static className = 'se-icon-flip-rtl';
26
+
27
+ /**
28
+ * @constructor
29
+ * @param {__se__EditorCore} editor - The root editor instance
30
+ * @param {LinkPluginOptions} pluginOptions
31
+ */
32
+ constructor(editor, pluginOptions) {
33
+ // plugin bisic properties
34
+ super(editor);
35
+ this.title = this.lang.link;
36
+ this.icon = 'link';
37
+
38
+ // define plugin options
39
+ pluginOptions.textToDisplay = true;
40
+ pluginOptions.title = true;
41
+
42
+ // create HTML
43
+ const modalEl = CreateHTML_modal(editor);
44
+ const controllerEl = CreateHTML_controller(editor);
45
+
46
+ // members
47
+ const uploadUrl = typeof pluginOptions.uploadUrl === 'string' ? pluginOptions.uploadUrl : null;
48
+ this.isUpdateState = false;
49
+ this.pluginOptions = {
50
+ ...pluginOptions,
51
+ uploadUrl,
52
+ uploadHeaders: pluginOptions.uploadHeaders || null,
53
+ uploadSizeLimit: numbers.get(pluginOptions.uploadSizeLimit, 0),
54
+ uploadSingleSizeLimit: numbers.get(pluginOptions.uploadSingleSizeLimit, 0),
55
+ acceptedFormats: typeof pluginOptions.acceptedFormats === 'string' ? pluginOptions.acceptedFormats.trim() : null,
56
+ enableFileUpload: !!uploadUrl
57
+ };
58
+
59
+ // modules
60
+ this.anchor = new ModalAnchorEditor(this, modalEl, this.pluginOptions);
61
+ this.modal = new Modal(this, modalEl);
62
+ this.controller = new Controller(this, controllerEl, { position: 'bottom', disabled: false });
63
+ }
64
+
42
65
  /**
43
- * @override core
66
+ * @editorMethod Editor.EventManager
67
+ * @description Executes the method that is called whenever the cursor position changes.
68
+ * @param {?HTMLElement=} element - Node element where the cursor is currently located
69
+ * @returns {boolean} - Whether the plugin is active
44
70
  */
45
71
  active(element) {
46
- if (domUtils.isAnchor(element) && !element.hasAttribute('data-se-non-link')) {
72
+ if (dom.check.isAnchor(element) && !element.hasAttribute('data-se-non-link')) {
47
73
  const tempLink = this.controller.form.querySelector('a');
48
74
  tempLink.href = element.href;
49
75
  tempLink.title = element.textContent;
50
76
  tempLink.textContent = element.textContent;
51
77
 
52
- domUtils.addClass(element, 'on');
78
+ dom.utils.addClass(element, 'on');
53
79
 
54
80
  this.anchor.set(element);
55
81
  this.controller.open(element, null, { isWWTarget: false, initMethod: null, addOffset: null });
@@ -60,27 +86,30 @@ Link.prototype = {
60
86
  this.controller.close();
61
87
 
62
88
  return false;
63
- },
89
+ }
64
90
 
65
91
  /**
66
- * @override type = "modal"
92
+ * @editorMethod Modules.Modal
93
+ * @description Executes the method that is called when a "Modal" module's is opened.
67
94
  */
68
95
  open() {
69
96
  this.modal.open();
70
- },
97
+ }
71
98
 
72
99
  /**
73
- * @override modal
74
- * @param {boolean} isUpdate open state is update
100
+ * @editorMethod Modules.Modal
101
+ * @description Executes the method that is called when a plugin's modal is opened.
102
+ * @param {boolean} isUpdate "Indicates whether the modal is for editing an existing component (true) or registering a new one (false)."
75
103
  */
76
104
  on(isUpdate) {
77
105
  this.isUpdateState = isUpdate;
78
106
  this.anchor.on(isUpdate);
79
- },
107
+ }
80
108
 
81
109
  /**
82
- * @override modal
83
- * @returns {boolean | undefined}
110
+ * @editorMethod Modules.Modal
111
+ * @description This function is called when a form within a modal window is "submit".
112
+ * @returns {boolean} Success or failure
84
113
  */
85
114
  modalAction() {
86
115
  const oA = this.anchor.create(false);
@@ -89,9 +118,9 @@ Link.prototype = {
89
118
  if (!this.isUpdateState) {
90
119
  const selectedFormats = this.format.getLines();
91
120
  if (selectedFormats.length > 1) {
92
- if (!this.html.insertNode(domUtils.createElement(selectedFormats[0].nodeName, null, oA), null, false)) return true;
121
+ if (!this.html.insertNode(dom.utils.createElement(selectedFormats[0].nodeName, null, oA), { afterNode: null, skipCharCount: false })) return true;
93
122
  } else {
94
- if (!this.html.insertNode(oA, null, false)) return true;
123
+ if (!this.html.insertNode(oA, { afterNode: null, skipCharCount: false })) return true;
95
124
  }
96
125
 
97
126
  this.selection.setRange(oA.childNodes[0], 0, oA.childNodes[0], oA.textContent.length);
@@ -102,20 +131,21 @@ Link.prototype = {
102
131
  }
103
132
 
104
133
  return true;
105
- },
134
+ }
106
135
 
107
136
  /**
108
- * @override modal
137
+ * @editorMethod Modules.Modal
138
+ * @description This function is called before the modal window is opened, but before it is closed.
109
139
  */
110
140
  init() {
111
141
  this.controller.close();
112
142
  this.anchor.init();
113
- },
143
+ }
114
144
 
115
145
  /**
116
- * @override controller
117
- * @param {Element} target Target button element
118
- * @returns
146
+ * @editorMethod Modules.Controller
147
+ * @description Executes the method that is called when a button is clicked in the "controller".
148
+ * @param {HTMLButtonElement} target Target button element
119
149
  */
120
150
  controllerAction(target) {
121
151
  const command = target.getAttribute('data-command');
@@ -123,14 +153,14 @@ Link.prototype = {
123
153
  if (/update/.test(command)) {
124
154
  this.modal.open();
125
155
  } else if (/unlink/.test(command)) {
126
- const sc = domUtils.getEdgeChild(
156
+ const sc = dom.query.getEdgeChild(
127
157
  this.controller.currentTarget,
128
158
  function (current) {
129
159
  return current.childNodes.length === 0 || current.nodeType === 3;
130
160
  },
131
161
  false
132
162
  );
133
- const ec = domUtils.getEdgeChild(
163
+ const ec = dom.query.getEdgeChild(
134
164
  this.controller.currentTarget,
135
165
  function (current) {
136
166
  return current.childNodes.length === 0 || current.nodeType === 3;
@@ -138,25 +168,24 @@ Link.prototype = {
138
168
  true
139
169
  );
140
170
  this.selection.setRange(sc, 0, ec, ec.textContent.length);
141
- this.format.applyTextStyle(null, null, ['A'], false);
171
+ this.format.applyInlineElement(null, { stylesToModify: null, nodesToRemove: ['A'], strictRemove: false });
142
172
  } else {
143
173
  /** delete */
144
- domUtils.removeItem(this.controller.currentTarget);
174
+ dom.utils.removeItem(this.controller.currentTarget);
145
175
  this.controller.currentTarget = null;
146
176
  this.editor.focus();
147
177
  this.history.push(false);
148
178
  }
149
- },
179
+ }
150
180
 
151
181
  /**
152
- * @override controller
182
+ * @editorMethod Modules.Controller
183
+ * @description This function is called before the "controller" before it is closed.
153
184
  */
154
185
  close() {
155
- domUtils.removeClass(this.controller.currentTarget, 'on');
156
- },
157
-
158
- constructor: Link
159
- };
186
+ dom.utils.removeClass(this.controller.currentTarget, 'on');
187
+ }
188
+ }
160
189
 
161
190
  function CreateHTML_modal({ lang, icons }) {
162
191
  const html = /*html*/ `
@@ -175,7 +204,7 @@ function CreateHTML_modal({ lang, icons }) {
175
204
  </div>
176
205
  </form>`;
177
206
 
178
- return domUtils.createElement('DIV', { class: 'se-modal-content' }, html);
207
+ return dom.utils.createElement('DIV', { class: 'se-modal-content' }, html);
179
208
  }
180
209
 
181
210
  function CreateHTML_controller({ lang, icons }) {
@@ -205,7 +234,7 @@ function CreateHTML_controller({ lang, icons }) {
205
234
  </div>
206
235
  </div>`;
207
236
 
208
- return domUtils.createElement('DIV', { class: 'se-controller se-controller-link' }, html);
237
+ return dom.utils.createElement('DIV', { class: 'se-controller se-controller-link' }, html);
209
238
  }
210
239
 
211
240
  export default Link;