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.
- package/.eslintrc.json +4 -3
- package/CONTRIBUTING.md +4 -2
- package/README.md +19 -11
- package/README_V3_TEMP.md +705 -0
- package/dist/suneditor.min.css +1 -0
- package/dist/suneditor.min.js +1 -0
- package/example.md +587 -0
- package/package.json +15 -9
- package/src/assets/icons/_default.js +166 -131
- package/src/assets/{suneditor-content.css → suneditor-contents.css} +182 -45
- package/src/assets/suneditor.css +1195 -556
- package/src/assets/variables.css +138 -0
- package/src/core/base/eventHandlers/handler_toolbar.js +35 -14
- package/src/core/base/eventHandlers/handler_ww_clipboard.js +29 -4
- package/src/core/base/eventHandlers/handler_ww_dragDrop.js +59 -15
- package/src/core/base/eventHandlers/handler_ww_key_input.js +426 -212
- package/src/core/base/eventHandlers/handler_ww_mouse.js +108 -32
- package/src/core/base/eventManager.js +540 -209
- package/src/core/base/events.js +616 -320
- package/src/core/base/history.js +93 -39
- package/src/core/class/char.js +29 -13
- package/src/core/class/component.js +332 -145
- package/src/core/class/format.js +671 -509
- package/src/core/class/html.js +504 -290
- package/src/core/class/menu.js +114 -47
- package/src/core/class/nodeTransform.js +111 -66
- package/src/core/class/offset.js +409 -105
- package/src/core/class/selection.js +220 -108
- package/src/core/class/shortcuts.js +68 -8
- package/src/core/class/toolbar.js +106 -116
- package/src/core/class/ui.js +330 -0
- package/src/core/class/viewer.js +178 -74
- package/src/core/editor.js +489 -384
- package/src/core/section/actives.js +118 -22
- package/src/core/section/constructor.js +504 -170
- package/src/core/section/context.js +28 -23
- package/src/core/section/documentType.js +561 -0
- package/src/editorInjector/_classes.js +19 -5
- package/src/editorInjector/_core.js +71 -7
- package/src/editorInjector/index.js +63 -1
- package/src/helper/converter.js +137 -19
- package/src/helper/dom/domCheck.js +294 -0
- package/src/helper/dom/domQuery.js +609 -0
- package/src/helper/dom/domUtils.js +533 -0
- package/src/helper/dom/index.js +12 -0
- package/src/helper/env.js +42 -19
- package/src/helper/index.js +7 -4
- package/src/helper/keyCodeMap.js +183 -0
- package/src/helper/numbers.js +8 -8
- package/src/helper/unicode.js +5 -5
- package/src/langs/ckb.js +69 -3
- package/src/langs/cs.js +67 -1
- package/src/langs/da.js +68 -2
- package/src/langs/de.js +68 -3
- package/src/langs/en.js +29 -1
- package/src/langs/es.js +68 -3
- package/src/langs/fa.js +70 -2
- package/src/langs/fr.js +68 -2
- package/src/langs/he.js +68 -3
- package/src/langs/hu.js +226 -0
- package/src/langs/index.js +3 -2
- package/src/langs/it.js +65 -0
- package/src/langs/ja.js +68 -3
- package/src/langs/ko.js +66 -1
- package/src/langs/lv.js +68 -3
- package/src/langs/nl.js +68 -3
- package/src/langs/pl.js +68 -3
- package/src/langs/pt_br.js +65 -0
- package/src/langs/ro.js +69 -4
- package/src/langs/ru.js +68 -3
- package/src/langs/se.js +68 -3
- package/src/langs/tr.js +68 -0
- package/src/langs/ua.js +68 -3
- package/src/langs/ur.js +71 -6
- package/src/langs/zh_cn.js +69 -4
- package/src/modules/ApiManager.js +77 -54
- package/src/modules/Browser.js +667 -0
- package/src/modules/ColorPicker.js +162 -102
- package/src/modules/Controller.js +233 -136
- package/src/modules/Figure.js +913 -489
- package/src/modules/FileManager.js +141 -72
- package/src/modules/HueSlider.js +113 -61
- package/src/modules/Modal.js +292 -113
- package/src/modules/ModalAnchorEditor.js +380 -230
- package/src/modules/SelectMenu.js +270 -168
- package/src/modules/_DragHandle.js +2 -1
- package/src/modules/index.js +3 -3
- package/src/plugins/browser/audioGallery.js +83 -0
- package/src/plugins/browser/fileBrowser.js +103 -0
- package/src/plugins/browser/fileGallery.js +83 -0
- package/src/plugins/browser/imageGallery.js +81 -0
- package/src/plugins/browser/videoGallery.js +103 -0
- package/src/plugins/command/blockquote.js +40 -27
- package/src/plugins/command/exportPDF.js +134 -0
- package/src/plugins/command/fileUpload.js +226 -158
- package/src/plugins/command/list_bulleted.js +93 -47
- package/src/plugins/command/list_numbered.js +93 -47
- package/src/plugins/dropdown/align.js +66 -54
- package/src/plugins/dropdown/backgroundColor.js +76 -45
- package/src/plugins/dropdown/font.js +71 -47
- package/src/plugins/dropdown/fontColor.js +78 -46
- package/src/plugins/dropdown/formatBlock.js +74 -33
- package/src/plugins/dropdown/hr.js +102 -51
- package/src/plugins/dropdown/layout.js +37 -26
- package/src/plugins/dropdown/lineHeight.js +54 -38
- package/src/plugins/dropdown/list.js +60 -45
- package/src/plugins/dropdown/paragraphStyle.js +51 -30
- package/src/plugins/dropdown/table.js +1269 -777
- package/src/plugins/dropdown/template.js +38 -26
- package/src/plugins/dropdown/textStyle.js +43 -31
- package/src/plugins/field/mention.js +144 -82
- package/src/plugins/index.js +32 -6
- package/src/plugins/input/fontSize.js +161 -108
- package/src/plugins/input/pageNavigator.js +70 -0
- package/src/plugins/modal/audio.js +341 -169
- package/src/plugins/modal/drawing.js +530 -0
- package/src/plugins/modal/embed.js +886 -0
- package/src/plugins/modal/image.js +673 -358
- package/src/plugins/modal/link.js +100 -71
- package/src/plugins/modal/math.js +384 -168
- package/src/plugins/modal/video.js +693 -336
- package/src/plugins/popup/anchor.js +222 -0
- package/src/suneditor.js +54 -12
- package/src/themes/dark.css +85 -0
- package/src/typedef.js +86 -0
- package/types/assets/icons/_default.d.ts +152 -0
- package/types/core/base/eventHandlers/handler_toolbar.d.ts +41 -0
- package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +40 -0
- package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +35 -0
- package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +45 -0
- package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +39 -0
- package/types/core/base/eventManager.d.ts +377 -0
- package/types/core/base/events.d.ts +297 -0
- package/types/core/base/history.d.ts +81 -0
- package/types/core/class/char.d.ts +60 -0
- package/types/core/class/component.d.ts +259 -0
- package/types/core/class/format.d.ts +615 -0
- package/types/core/class/html.d.ts +377 -0
- package/types/core/class/menu.d.ts +118 -0
- package/types/core/class/nodeTransform.d.ts +93 -0
- package/types/core/class/offset.d.ts +512 -0
- package/types/core/class/selection.d.ts +188 -0
- package/types/core/class/shortcuts.d.ts +142 -0
- package/types/core/class/toolbar.d.ts +189 -0
- package/types/core/class/ui.d.ts +144 -0
- package/types/core/class/viewer.d.ts +140 -0
- package/types/core/editor.d.ts +606 -0
- package/types/core/section/actives.d.ts +46 -0
- package/types/core/section/constructor.d.ts +748 -0
- package/types/core/section/context.d.ts +45 -0
- package/types/core/section/documentType.d.ts +178 -0
- package/types/editorInjector/_classes.d.ts +41 -0
- package/types/editorInjector/_core.d.ts +92 -0
- package/types/editorInjector/index.d.ts +71 -0
- package/types/helper/converter.d.ts +150 -0
- package/types/helper/dom/domCheck.d.ts +182 -0
- package/types/helper/dom/domQuery.d.ts +214 -0
- package/types/helper/dom/domUtils.d.ts +211 -0
- package/types/helper/dom/index.d.ts +9 -0
- package/types/helper/env.d.ts +149 -0
- package/types/helper/index.d.ts +163 -0
- package/types/helper/keyCodeMap.d.ts +110 -0
- package/types/helper/numbers.d.ts +43 -0
- package/types/helper/unicode.d.ts +28 -0
- package/types/index.d.ts +0 -0
- package/{typings/Lang.d.ts → types/langs/_Lang.d.ts} +170 -103
- package/types/langs/ckb.d.ts +384 -0
- package/types/langs/cs.d.ts +384 -0
- package/types/langs/da.d.ts +384 -0
- package/types/langs/de.d.ts +384 -0
- package/types/langs/en.d.ts +384 -0
- package/types/langs/es.d.ts +384 -0
- package/types/langs/fa.d.ts +384 -0
- package/types/langs/fr.d.ts +384 -0
- package/types/langs/he.d.ts +384 -0
- package/types/langs/hu.d.ts +384 -0
- package/types/langs/index.d.ts +48 -0
- package/types/langs/it.d.ts +384 -0
- package/types/langs/ja.d.ts +384 -0
- package/types/langs/ko.d.ts +384 -0
- package/types/langs/lv.d.ts +384 -0
- package/types/langs/nl.d.ts +384 -0
- package/types/langs/pl.d.ts +384 -0
- package/types/langs/pt_br.d.ts +384 -0
- package/types/langs/ro.d.ts +384 -0
- package/types/langs/ru.d.ts +384 -0
- package/types/langs/se.d.ts +384 -0
- package/types/langs/tr.d.ts +384 -0
- package/types/langs/ua.d.ts +384 -0
- package/types/langs/ur.d.ts +384 -0
- package/types/langs/zh_cn.d.ts +384 -0
- package/types/modules/ApiManager.d.ts +125 -0
- package/types/modules/Browser.d.ts +326 -0
- package/types/modules/ColorPicker.d.ts +131 -0
- package/types/modules/Controller.d.ts +231 -0
- package/types/modules/Figure.d.ts +504 -0
- package/types/modules/FileManager.d.ts +202 -0
- package/types/modules/HueSlider.d.ts +136 -0
- package/types/modules/Modal.d.ts +117 -0
- package/types/modules/ModalAnchorEditor.d.ts +236 -0
- package/types/modules/SelectMenu.d.ts +194 -0
- package/types/modules/_DragHandle.d.ts +7 -0
- package/types/modules/index.d.ts +26 -0
- package/types/plugins/browser/audioGallery.d.ts +55 -0
- package/types/plugins/browser/fileBrowser.d.ts +64 -0
- package/types/plugins/browser/fileGallery.d.ts +55 -0
- package/types/plugins/browser/imageGallery.d.ts +51 -0
- package/types/plugins/browser/videoGallery.d.ts +57 -0
- package/types/plugins/command/blockquote.d.ts +28 -0
- package/types/plugins/command/exportPDF.d.ts +46 -0
- package/types/plugins/command/fileUpload.d.ts +156 -0
- package/types/plugins/command/list_bulleted.d.ts +56 -0
- package/types/plugins/command/list_numbered.d.ts +56 -0
- package/types/plugins/dropdown/align.d.ts +60 -0
- package/types/plugins/dropdown/backgroundColor.d.ts +63 -0
- package/types/plugins/dropdown/font.d.ts +54 -0
- package/types/plugins/dropdown/fontColor.d.ts +63 -0
- package/types/plugins/dropdown/formatBlock.d.ts +58 -0
- package/types/plugins/dropdown/hr.d.ts +81 -0
- package/types/plugins/dropdown/layout.d.ts +40 -0
- package/types/plugins/dropdown/lineHeight.d.ts +50 -0
- package/types/plugins/dropdown/list.d.ts +39 -0
- package/types/plugins/dropdown/paragraphStyle.d.ts +54 -0
- package/types/plugins/dropdown/table.d.ts +579 -0
- package/types/plugins/dropdown/template.d.ts +40 -0
- package/types/plugins/dropdown/textStyle.d.ts +41 -0
- package/types/plugins/field/mention.d.ts +102 -0
- package/types/plugins/index.d.ts +107 -0
- package/types/plugins/input/fontSize.d.ts +170 -0
- package/types/plugins/input/pageNavigator.d.ts +28 -0
- package/types/plugins/modal/audio.d.ts +269 -0
- package/types/plugins/modal/drawing.d.ts +246 -0
- package/types/plugins/modal/embed.d.ts +387 -0
- package/types/plugins/modal/image.d.ts +451 -0
- package/types/plugins/modal/link.d.ts +128 -0
- package/types/plugins/modal/math.d.ts +193 -0
- package/types/plugins/modal/video.d.ts +485 -0
- package/types/plugins/popup/anchor.d.ts +56 -0
- package/types/suneditor.d.ts +51 -0
- package/types/typedef-global.d.ts +144 -0
- package/src/core/class/notice.js +0 -42
- package/src/helper/domUtils.js +0 -1177
- package/src/modules/FileBrowser.js +0 -271
- package/src/plugins/command/exportPdf.js +0 -168
- package/src/plugins/fileBrowser/imageGallery.js +0 -81
- package/src/themes/test.css +0 -61
- package/typings/CommandPlugin.d.ts +0 -8
- package/typings/DialogPlugin.d.ts +0 -20
- package/typings/FileBrowserPlugin.d.ts +0 -30
- package/typings/Module.d.ts +0 -15
- package/typings/Plugin.d.ts +0 -42
- package/typings/SubmenuPlugin.d.ts +0 -8
- package/typings/_classes.d.ts +0 -17
- package/typings/_colorPicker.d.ts +0 -60
- package/typings/_core.d.ts +0 -55
- package/typings/align.d.ts +0 -5
- package/typings/audio.d.ts +0 -5
- package/typings/backgroundColor.d.ts +0 -5
- package/typings/blockquote.d.ts +0 -5
- package/typings/char.d.ts +0 -39
- package/typings/component.d.ts +0 -38
- package/typings/context.d.ts +0 -39
- package/typings/converter.d.ts +0 -33
- package/typings/dialog.d.ts +0 -28
- package/typings/domUtils.d.ts +0 -361
- package/typings/editor.d.ts +0 -7
- package/typings/editor.ts +0 -542
- package/typings/env.d.ts +0 -70
- package/typings/eventManager.d.ts +0 -37
- package/typings/events.d.ts +0 -262
- package/typings/fileBrowser.d.ts +0 -42
- package/typings/fileManager.d.ts +0 -67
- package/typings/font.d.ts +0 -5
- package/typings/fontColor.d.ts +0 -5
- package/typings/fontSize.d.ts +0 -5
- package/typings/format.d.ts +0 -191
- package/typings/formatBlock.d.ts +0 -5
- package/typings/history.d.ts +0 -48
- package/typings/horizontalRule.d.ts +0 -5
- package/typings/image.d.ts +0 -5
- package/typings/imageGallery.d.ts +0 -5
- package/typings/index.d.ts +0 -21
- package/typings/index.modules.d.ts +0 -11
- package/typings/index.plugins.d.ts +0 -58
- package/typings/lineHeight.d.ts +0 -5
- package/typings/link.d.ts +0 -5
- package/typings/list.d.ts +0 -5
- package/typings/math.d.ts +0 -5
- package/typings/mediaContainer.d.ts +0 -25
- package/typings/mention.d.ts +0 -5
- package/typings/node.d.ts +0 -57
- package/typings/notice.d.ts +0 -16
- package/typings/numbers.d.ts +0 -29
- package/typings/offset.d.ts +0 -24
- package/typings/options.d.ts +0 -589
- package/typings/paragraphStyle.d.ts +0 -5
- package/typings/resizing.d.ts +0 -141
- package/typings/selection.d.ts +0 -94
- package/typings/shortcuts.d.ts +0 -13
- package/typings/suneditor.d.ts +0 -9
- package/typings/table.d.ts +0 -5
- package/typings/template.d.ts +0 -5
- package/typings/textStyle.d.ts +0 -5
- package/typings/toolbar.d.ts +0 -32
- package/typings/unicode.d.ts +0 -25
- package/typings/video.d.ts +0 -5
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
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
|
-
* @
|
|
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
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}
|
|
69
|
+
/**
|
|
70
|
+
* @typedef {import('./HueSlider').HueSliderColor} HueSliderColor
|
|
71
|
+
*/
|
|
107
72
|
|
|
108
|
-
|
|
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
|
-
|
|
112
|
-
|
|
113
|
-
|
|
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
|
-
|
|
117
|
-
if (
|
|
118
|
-
this.
|
|
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
|
-
|
|
123
|
-
|
|
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|
|
|
129
|
-
* @param {
|
|
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
|
-
|
|
143
|
-
|
|
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
|
-
|
|
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 && !
|
|
183
|
-
if (node
|
|
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 =
|
|
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
|
-
|
|
205
|
-
return colors.length >= 3 ? '#' + ((1 << 24) + (colors[0] << 16) + (colors[1] << 8) + colors[2]).toString(16).
|
|
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
|
-
|
|
222
|
-
|
|
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
|
-
|
|
225
|
-
|
|
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
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
261
|
+
/**
|
|
262
|
+
* @param {SubmitEvent} e Event object
|
|
263
|
+
*/
|
|
264
|
+
#Submit(e) {
|
|
265
|
+
e.preventDefault();
|
|
235
266
|
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
}
|
|
267
|
+
if (typeof this.inst.colorPickerAction !== 'function') return;
|
|
268
|
+
this.inst.colorPickerAction(this.currentColor);
|
|
269
|
+
}
|
|
240
270
|
|
|
241
|
-
|
|
242
|
-
|
|
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
|
|
334
|
+
return dom.utils.createElement('DIV', { class: 'se-list-inner' }, list);
|
|
275
335
|
}
|
|
276
336
|
|
|
277
337
|
function _makeColor(colorList, splitNum) {
|