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
@@ -1,4 +1,5 @@
1
- import { domUtils, converter } from '../helper';
1
+ import { dom, converter } from '../helper';
2
+ import { isElement } from '../helper/dom/domCheck';
2
3
  import CoreInjector from '../editorInjector/_core';
3
4
  import { HueSlider } from '../modules';
4
5
 
@@ -62,71 +63,83 @@ const DEFAULT_COLOR_LIST = [
62
63
  const DEFAULLT_COLOR_SPLITNUM = 9;
63
64
 
64
65
  /**
65
- * @description Create a color picker element and register for related events. (this.target)
66
- * When calling the color selection, "submit", and "remove" buttons, the "action" method of the instance is called with the "color" value as an argument.
67
- * @param {Object} inst The "this" object of the calling function.
68
- * @param {string} styles style property ("color", "backgroundColor"..)
69
- * @param {Array.<string>} colorList color list
70
- * @param {string} _defaultColor default color
66
+ * @typedef {import('./HueSlider').HueSliderParams} HueSliderParams
71
67
  */
72
- const ColorPicker = function (inst, styles, params) {
73
- const editor = inst.editor;
74
- CoreInjector.call(this, editor);
75
-
76
- // members
77
- this.kind = inst.constructor.key || inst.constructor.name;
78
- this.inst = inst;
79
- this.target = CreateHTML(editor, params);
80
- this.targetButton = null;
81
- this.inputElement = this.target.querySelector('.se-color-input');
82
- this.styleProperties = styles;
83
- this.splitNum = params.splitNum || 0;
84
- this.defaultColor = params.defaultColor;
85
- this.hueSliderOptions = params.hueSliderOptions;
86
- this.parentDisplay = '';
87
- this.currentColor = '';
88
- this.parentForm = null;
89
- this.colorList = this.target.querySelectorAll('li button') || [];
90
- this.hueSlider = null;
91
-
92
- // modules - hex, hue slider
93
- if (!params.disableHEXInput) {
94
- this.hueSlider = new HueSlider(this, params.hueSliderOptions, 'se-dropdown');
95
- this.parentFormDisplay = [];
96
- this.parentForm = params.hueSliderOptions?.controllerOptions?.parents?.length > 0 && !params.hueSliderOptions?.controllerOptions?.isInsideForm ? params.hueSliderOptions.controllerOptions.parents : null;
97
- // hue open
98
- this.eventManager.addEvent(this.target.querySelector('.se-btn-info'), 'click', OnColorPalette.bind(this));
99
- this.eventManager.addEvent(this.inputElement, 'input', OnChangeInput.bind(this));
100
- this.eventManager.addEvent(this.target.querySelector('form'), 'submit', Submit.bind(this));
101
- }
102
68
 
103
- // remove style
104
- if (!params.disableRemove) {
105
- this.eventManager.addEvent(this.target.querySelector('.__se_remove'), 'click', Remove.bind(this));
106
- }
69
+ /**
70
+ * @typedef {import('./HueSlider').HueSliderColor} HueSliderColor
71
+ */
107
72
 
108
- this.eventManager.addEvent(this.target, 'click', OnClickColor.bind(this));
109
- };
73
+ /**
74
+ * @typedef {Object} ColorPickerParams
75
+ * @property {Array<string|{value: string, name: string}>=} [colorList=[]] color list
76
+ * @property {number=} [splitNum=0] Number of colors to be displayed in one line
77
+ * @property {string=} [defaultColor] Default color
78
+ * @property {boolean=} [disableHEXInput=false] Disable HEX input
79
+ * @property {boolean=} [disableRemove=false] Disable remove button
80
+ * @property {HueSliderParams=} [hueSliderOptions] hue slider options
81
+ */
110
82
 
111
- ColorPicker.prototype = {
112
- hueSliderAction(color) {
113
- this._setInputText(color.hex);
114
- },
83
+ /**
84
+ * @class
85
+ * @description Create a color picker element and register for related events. (this.target)
86
+ * - When calling the color selection, "submit", and "remove" buttons, the "action" method of the instance is called with the "color" value as an argument.
87
+ */
88
+ class ColorPicker extends CoreInjector {
89
+ /**
90
+ * @constructor
91
+ * @param {*} inst The instance object that called the constructor.
92
+ * @param {string} styles style property ("color", "backgroundColor"..)
93
+ * @param {ColorPickerParams} params Color picker options
94
+ */
95
+ constructor(inst, styles, params) {
96
+ const editor = inst.editor;
97
+ super(editor);
98
+
99
+ // members
100
+ this.kind = inst.constructor.key || inst.constructor.name;
101
+ this.inst = inst;
102
+ this.target = CreateHTML(editor, params);
103
+ this.targetButton = null;
104
+ this.inputElement = /** @type {HTMLInputElement} */ (this.target.querySelector('.se-color-input'));
105
+ this.styleProperties = styles;
106
+ this.splitNum = params.splitNum || 0;
107
+ this.defaultColor = params.defaultColor;
108
+ this.hueSliderOptions = params.hueSliderOptions;
109
+ this.parentDisplay = '';
110
+ this.currentColor = '';
111
+ this.parentForm = null;
112
+ this.colorList = this.target.querySelectorAll('li button') || [];
113
+ this.hueSlider = null;
114
+
115
+ // check icon
116
+ const parser = new DOMParser();
117
+ const svgDoc = parser.parseFromString(this.icons.color_checked, 'image/svg+xml');
118
+ this.checkedIcon = svgDoc.documentElement;
119
+
120
+ // modules - hex, hue slider
121
+ if (!params.disableHEXInput) {
122
+ this.hueSlider = new HueSlider(this, params.hueSliderOptions, 'se-dropdown');
123
+ this.parentFormDisplay = [];
124
+ this.parentForm = params.hueSliderOptions?.controllerOptions?.parents?.length > 0 && !params.hueSliderOptions?.controllerOptions?.isInsideForm ? params.hueSliderOptions.controllerOptions.parents : null;
125
+ // hue open
126
+ this.eventManager.addEvent(this.target.querySelector('.se-btn-info'), 'click', this.#OnColorPalette.bind(this));
127
+ this.eventManager.addEvent(this.inputElement, 'input', this.#OnChangeInput.bind(this));
128
+ this.eventManager.addEvent(this.target.querySelector('form'), 'submit', this.#Submit.bind(this));
129
+ }
115
130
 
116
- hueSliderCancelAction() {
117
- if (this.parentForm?.length > 0) {
118
- this.parentFormDisplay.forEach((e) => (e[0].style.display = e[1]));
131
+ // remove style
132
+ if (!params.disableRemove) {
133
+ this.eventManager.addEvent(this.target.querySelector('.__se_remove'), 'click', this.#Remove.bind(this));
119
134
  }
120
- },
121
135
 
122
- hueSliderClose() {
123
- this.hueSlider.off();
124
- },
136
+ this.eventManager.addEvent(this.target, 'click', this.#OnClickColor.bind(this));
137
+ }
125
138
 
126
139
  /**
127
140
  * @description Displays or resets the currently selected color at color list.
128
- * @param {Node|String} nodeOrColor Current Selected node
129
- * @param {string|null} target target
141
+ * @param {Node|string} nodeOrColor Current Selected node
142
+ * @param {Node} target target
130
143
  */
131
144
  init(nodeOrColor, target) {
132
145
  this.targetButton = target;
@@ -138,16 +151,19 @@ ColorPicker.prototype = {
138
151
  fillColor = converter.isHexColor(fillColor) ? fillColor : converter.rgb2hex(fillColor) || fillColor || '';
139
152
 
140
153
  const colorList = this.colorList;
141
- for (let i = 0, len = colorList.length; i < len; i++) {
142
- if (fillColor.toLowerCase() === colorList[i].getAttribute('data-value').toLowerCase()) {
143
- domUtils.addClass(colorList[i], 'active');
154
+ for (let i = 0, len = colorList.length, c; i < len; i++) {
155
+ c = colorList[i];
156
+ if (fillColor.toLowerCase() === c.getAttribute('data-value').toLowerCase()) {
157
+ c.appendChild(this.checkedIcon);
158
+ dom.utils.addClass(c, 'active');
144
159
  } else {
145
- domUtils.removeClass(colorList[i], 'active');
160
+ dom.utils.removeClass(c, 'active');
161
+ if (c.contains(this.checkedIcon)) dom.utils.removeItem(this.checkedIcon);
146
162
  }
147
163
  }
148
164
 
149
165
  this._setInputText(this._colorName2hex(fillColor));
150
- },
166
+ }
151
167
 
152
168
  /**
153
169
  * @description Store color values
@@ -156,92 +172,136 @@ ColorPicker.prototype = {
156
172
  setHexColor(hexColorStr) {
157
173
  this.currentColor = hexColorStr;
158
174
  this.inputElement.style.borderColor = hexColorStr;
159
- },
175
+ }
176
+
177
+ /**
178
+ * @description Close hue slider
179
+ */
180
+ hueSliderClose() {
181
+ this.hueSlider.off();
182
+ }
160
183
 
161
184
  /**
185
+ * @private
162
186
  * @description Set color at input element
163
187
  * @param {string} hexColorStr Hax color value
164
- * @private
165
188
  */
166
189
  _setInputText(hexColorStr) {
167
190
  hexColorStr = /^#/.test(hexColorStr) ? hexColorStr : '#' + hexColorStr;
168
191
  this.inputElement.value = hexColorStr;
169
192
  this.setHexColor.call(this, hexColorStr);
170
- },
193
+ }
171
194
 
172
195
  /**
196
+ * @private
173
197
  * @description Gets color value at color property of node
174
198
  * @param {Node} node Selected node
175
199
  * @returns {string}
176
- * @private
177
200
  */
178
201
  _getColorInNode(node) {
179
202
  let findColor = '';
180
203
  const sp = this.styleProperties;
181
204
 
182
- while (node && !domUtils.isWysiwygFrame(node) && findColor.length === 0) {
183
- if (node.nodeType === 1 && node.style[sp]) findColor = node.style[sp];
205
+ while (node && !dom.check.isWysiwygFrame(node) && findColor.length === 0) {
206
+ if (isElement(node) && node.style[sp]) findColor = node.style[sp];
184
207
  node = node.parentNode;
185
208
  }
186
209
 
187
210
  return findColor;
188
- },
211
+ }
189
212
 
190
213
  /**
214
+ * @private
191
215
  * @description Converts color values of other formats to hex color values and returns.
192
216
  * @param {string} colorName Color value
193
217
  * @returns {string}
194
218
  */
195
219
  _colorName2hex(colorName) {
196
220
  if (/^#/.test(colorName)) return colorName;
197
- const temp = domUtils.createElement('div', { style: 'display: none; color: ' + colorName });
221
+ const temp = dom.utils.createElement('div', { style: 'display: none; color: ' + colorName });
198
222
  const colors = this._w
199
223
  .getComputedStyle(this._d.body.appendChild(temp))
200
224
  .color.match(/\d+/g)
201
225
  .map(function (a) {
202
226
  return parseInt(a, 10);
203
227
  });
204
- domUtils.removeItem(temp);
205
- return colors.length >= 3 ? '#' + ((1 << 24) + (colors[0] << 16) + (colors[1] << 8) + colors[2]).toString(16).substr(1) : false;
206
- },
207
-
208
- constructor: ColorPicker
209
- };
210
-
211
- function OnColorPalette() {
212
- if (this.parentForm?.length > 0) {
213
- this.parentForm.forEach((e) => {
214
- this.parentFormDisplay.push([e, e.style.display]);
215
- e.style.display = 'none';
216
- });
228
+ dom.utils.removeItem(temp);
229
+ return colors.length >= 3 ? '#' + ((1 << 24) + (colors[0] << 16) + (colors[1] << 8) + colors[2]).toString(16).substring(1) : '';
217
230
  }
218
- this.hueSlider.open(this.targetButton);
219
- }
220
231
 
221
- function Submit(e) {
222
- e.preventDefault();
232
+ /**
233
+ * @editorMethod Modules.HueSlider
234
+ * @description This method is called when the color is selected in the hue slider.
235
+ * @param {HueSliderColor} color - Color object
236
+ */
237
+ hueSliderAction(color) {
238
+ this._setInputText(color.hex);
239
+ }
223
240
 
224
- if (typeof this.inst.colorPickerAction !== 'function') return;
225
- this.inst.colorPickerAction(this.currentColor);
226
- }
241
+ /**
242
+ * @editorMethod Modules.HueSlider
243
+ * @description This method is called when the hue slider is closed.
244
+ */
245
+ hueSliderCancelAction() {
246
+ if (this.parentForm?.length > 0) {
247
+ this.parentFormDisplay.forEach((e) => (e[0].style.display = e[1]));
248
+ }
249
+ }
227
250
 
228
- function OnClickColor(e) {
229
- const color = e.target.getAttribute('data-value');
230
- if (!color) return;
251
+ #OnColorPalette() {
252
+ if (this.parentForm?.length > 0) {
253
+ this.parentForm.forEach((e) => {
254
+ this.parentFormDisplay.push([e, e.style.display]);
255
+ e.style.display = 'none';
256
+ });
257
+ }
258
+ this.hueSlider.open(this.targetButton);
259
+ }
231
260
 
232
- if (typeof this.inst.colorPickerAction !== 'function') return;
233
- this.inst.colorPickerAction(color);
234
- }
261
+ /**
262
+ * @param {SubmitEvent} e Event object
263
+ */
264
+ #Submit(e) {
265
+ e.preventDefault();
235
266
 
236
- function Remove() {
237
- if (typeof this.inst.colorPickerAction !== 'function') return;
238
- this.inst.colorPickerAction(null);
239
- }
267
+ if (typeof this.inst.colorPickerAction !== 'function') return;
268
+ this.inst.colorPickerAction(this.currentColor);
269
+ }
240
270
 
241
- function OnChangeInput(e) {
242
- this.setHexColor(e.target.value);
271
+ /**
272
+ * @param {MouseEvent} e Event object
273
+ */
274
+ #OnClickColor(e) {
275
+ const eventTarget = dom.query.getEventTarget(e);
276
+ const color = eventTarget.getAttribute('data-value');
277
+ if (!color) return;
278
+
279
+ if (typeof this.inst.colorPickerAction !== 'function') return;
280
+ this.inst.colorPickerAction(color);
281
+ }
282
+
283
+ #Remove() {
284
+ if (typeof this.inst.colorPickerAction !== 'function') return;
285
+ this.inst.colorPickerAction(null);
286
+ }
287
+
288
+ /**
289
+ * @param {InputEvent} e Event object
290
+ */
291
+ #OnChangeInput(e) {
292
+ /** @type {HTMLInputElement} */
293
+ const eventTarget = dom.query.getEventTarget(e);
294
+ this.setHexColor(eventTarget.value);
295
+ }
243
296
  }
244
297
 
298
+ /**
299
+ * @private
300
+ * @description Create a color picker element
301
+ * @param {*} param0
302
+ * @param {*} param1
303
+ * @returns
304
+ */
245
305
  function CreateHTML({ lang, icons }, { colorList, disableHEXInput, disableRemove, splitNum }) {
246
306
  colorList = colorList || DEFAULT_COLOR_LIST;
247
307
  splitNum = colorList === DEFAULT_COLOR_LIST ? DEFAULLT_COLOR_SPLITNUM : splitNum;
@@ -271,7 +331,7 @@ function CreateHTML({ lang, icons }, { colorList, disableHEXInput, disableRemove
271
331
  ${disableRemove ? '' : `<button type="button" class="se-btn __se_remove" title="${lang.remove}" aria-label="${lang.remove}">${icons.remove_color}</button>`}
272
332
  </form>`;
273
333
 
274
- return domUtils.createElement('DIV', { class: 'se-list-inner' }, list);
334
+ return dom.utils.createElement('DIV', { class: 'se-list-inner' }, list);
275
335
  }
276
336
 
277
337
  function _makeColor(colorList, splitNum) {