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.
- package/CONTRIBUTING.md +170 -22
- package/{LICENSE.txt → LICENSE} +9 -9
- package/README.md +168 -30
- package/dist/suneditor.min.css +1 -1
- package/dist/suneditor.min.js +1 -1
- package/package.json +47 -21
- package/src/assets/design/color.css +121 -0
- package/src/assets/design/index.css +3 -0
- package/src/assets/design/size.css +35 -0
- package/src/assets/design/typography.css +37 -0
- package/src/assets/icons/defaultIcons.js +232 -0
- package/src/assets/suneditor-contents.css +181 -46
- package/src/assets/suneditor.css +1403 -650
- package/src/core/base/eventHandlers/handler_toolbar.js +35 -14
- package/src/core/base/eventHandlers/handler_ww_clipboard.js +23 -4
- package/src/core/base/eventHandlers/handler_ww_dragDrop.js +49 -10
- package/src/core/base/eventHandlers/handler_ww_key_input.js +422 -224
- package/src/core/base/eventHandlers/handler_ww_mouse.js +83 -36
- package/src/core/base/eventManager.js +520 -179
- package/src/core/base/history.js +95 -41
- package/src/core/class/char.js +26 -11
- package/src/core/class/component.js +345 -137
- package/src/core/class/format.js +683 -519
- package/src/core/class/html.js +485 -305
- package/src/core/class/menu.js +133 -47
- package/src/core/class/nodeTransform.js +90 -71
- package/src/core/class/offset.js +408 -92
- package/src/core/class/selection.js +216 -106
- package/src/core/class/shortcuts.js +68 -8
- package/src/core/class/toolbar.js +106 -116
- package/src/core/class/ui.js +422 -0
- package/src/core/class/viewer.js +178 -74
- package/src/core/editor.js +496 -389
- package/src/core/section/actives.js +123 -27
- package/src/core/section/constructor.js +615 -206
- 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/events.js +622 -0
- package/src/helper/clipboard.js +59 -0
- package/src/helper/converter.js +202 -26
- package/src/helper/dom/domCheck.js +304 -0
- package/src/helper/dom/domQuery.js +669 -0
- package/src/helper/dom/domUtils.js +557 -0
- package/src/helper/dom/index.js +12 -0
- package/src/helper/env.js +46 -56
- package/src/helper/index.js +10 -4
- package/src/helper/keyCodeMap.js +183 -0
- package/src/helper/numbers.js +12 -8
- package/src/helper/unicode.js +9 -5
- package/src/langs/ckb.js +74 -4
- package/src/langs/cs.js +72 -2
- package/src/langs/da.js +73 -3
- package/src/langs/de.js +73 -4
- package/src/langs/en.js +23 -3
- package/src/langs/es.js +73 -4
- package/src/langs/fa.js +75 -3
- package/src/langs/fr.js +73 -3
- package/src/langs/he.js +73 -4
- package/src/langs/hu.js +230 -0
- package/src/langs/index.js +7 -3
- package/src/langs/it.js +70 -1
- package/src/langs/ja.js +72 -4
- package/src/langs/km.js +230 -0
- package/src/langs/ko.js +22 -2
- package/src/langs/lv.js +74 -5
- package/src/langs/nl.js +73 -4
- package/src/langs/pl.js +73 -4
- package/src/langs/pt_br.js +70 -1
- package/src/langs/ro.js +74 -5
- package/src/langs/ru.js +73 -4
- package/src/langs/se.js +73 -4
- package/src/langs/tr.js +73 -1
- package/src/langs/{ua.js → uk.js} +75 -6
- package/src/langs/ur.js +77 -8
- package/src/langs/zh_cn.js +74 -5
- 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 +273 -142
- package/src/modules/Figure.js +925 -484
- package/src/modules/FileManager.js +121 -69
- package/src/modules/HueSlider.js +113 -61
- package/src/modules/Modal.js +291 -122
- package/src/modules/ModalAnchorEditor.js +383 -234
- 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 +229 -162
- package/src/plugins/command/list_bulleted.js +83 -47
- package/src/plugins/command/list_numbered.js +83 -47
- package/src/plugins/dropdown/align.js +66 -54
- package/src/plugins/dropdown/backgroundColor.js +63 -49
- package/src/plugins/dropdown/font.js +71 -47
- package/src/plugins/dropdown/fontColor.js +63 -48
- package/src/plugins/dropdown/formatBlock.js +70 -33
- package/src/plugins/dropdown/hr.js +92 -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 +2003 -813
- package/src/plugins/dropdown/template.js +38 -26
- package/src/plugins/dropdown/textStyle.js +43 -31
- package/src/plugins/field/mention.js +147 -86
- 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 +358 -173
- package/src/plugins/modal/drawing.js +531 -0
- package/src/plugins/modal/embed.js +886 -0
- package/src/plugins/modal/image.js +674 -362
- package/src/plugins/modal/link.js +100 -71
- package/src/plugins/modal/math.js +367 -167
- package/src/plugins/modal/video.js +691 -335
- package/src/plugins/popup/anchor.js +222 -0
- package/src/suneditor.js +50 -13
- package/src/themes/dark.css +122 -0
- package/src/typedef.js +130 -0
- package/types/assets/icons/defaultIcons.d.ts +153 -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 +385 -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 +212 -0
- package/types/core/class/format.d.ts +616 -0
- package/types/core/class/html.d.ts +422 -0
- package/types/core/class/menu.d.ts +126 -0
- package/types/core/class/nodeTransform.d.ts +93 -0
- package/types/core/class/offset.d.ts +522 -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 +164 -0
- package/types/core/class/viewer.d.ts +140 -0
- package/types/core/editor.d.ts +610 -0
- package/types/core/section/actives.d.ts +46 -0
- package/types/core/section/constructor.d.ts +777 -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/events.d.ts +273 -0
- package/types/helper/clipboard.d.ts +12 -0
- package/types/helper/converter.d.ts +197 -0
- package/types/helper/dom/domCheck.d.ts +189 -0
- package/types/helper/dom/domQuery.d.ts +223 -0
- package/types/helper/dom/domUtils.d.ts +226 -0
- package/types/helper/dom/index.d.ts +9 -0
- package/types/helper/env.d.ts +132 -0
- package/types/helper/index.d.ts +174 -0
- package/types/helper/keyCodeMap.d.ts +110 -0
- package/types/helper/numbers.d.ts +46 -0
- package/types/helper/unicode.d.ts +28 -0
- package/types/index.d.ts +120 -0
- package/{typings/Lang.d.ts → types/langs/_Lang.d.ts} +173 -103
- package/types/langs/ckb.d.ts +3 -0
- package/types/langs/cs.d.ts +3 -0
- package/types/langs/da.d.ts +3 -0
- package/types/langs/de.d.ts +3 -0
- package/types/langs/en.d.ts +3 -0
- package/types/langs/es.d.ts +3 -0
- package/types/langs/fa.d.ts +3 -0
- package/types/langs/fr.d.ts +3 -0
- package/types/langs/he.d.ts +3 -0
- package/types/langs/hu.d.ts +3 -0
- package/types/langs/index.d.ts +54 -0
- package/types/langs/it.d.ts +3 -0
- package/types/langs/ja.d.ts +3 -0
- package/types/langs/km.d.ts +3 -0
- package/types/langs/ko.d.ts +3 -0
- package/types/langs/lv.d.ts +3 -0
- package/types/langs/nl.d.ts +3 -0
- package/types/langs/pl.d.ts +3 -0
- package/types/langs/pt_br.d.ts +3 -0
- package/types/langs/ro.d.ts +3 -0
- package/types/langs/ru.d.ts +3 -0
- package/types/langs/se.d.ts +3 -0
- package/types/langs/tr.d.ts +3 -0
- package/types/langs/uk.d.ts +3 -0
- package/types/langs/ur.d.ts +3 -0
- package/types/langs/zh_cn.d.ts +3 -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 +251 -0
- package/types/modules/Figure.d.ts +517 -0
- package/types/modules/FileManager.d.ts +202 -0
- package/types/modules/HueSlider.d.ts +136 -0
- package/types/modules/Modal.d.ts +111 -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 +46 -0
- package/types/plugins/command/list_numbered.d.ts +46 -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 +54 -0
- package/types/plugins/dropdown/hr.d.ts +71 -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 +627 -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.d.ts +233 -0
- package/.eslintignore +0 -7
- package/.eslintrc.json +0 -64
- package/src/assets/icons/_default.js +0 -194
- package/src/core/base/events.js +0 -320
- 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,90 +1,104 @@
|
|
|
1
1
|
import EditorInjector from '../../editorInjector';
|
|
2
2
|
import ColorPicker from '../../modules/ColorPicker';
|
|
3
|
-
import {
|
|
3
|
+
import { dom } from '../../helper';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
/**
|
|
6
|
+
* @class
|
|
7
|
+
* @description Text background color plugin
|
|
8
|
+
*/
|
|
9
|
+
class BackgroundColor extends EditorInjector {
|
|
10
|
+
static key = 'backgroundColor';
|
|
11
|
+
static type = 'dropdown-free';
|
|
12
|
+
static className = '';
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
/**
|
|
15
|
+
* @constructor
|
|
16
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
17
|
+
* @param {Object} pluginOptions
|
|
18
|
+
* @param {Array<string|{value: string, name: string}>} pluginOptions.items - Color list
|
|
19
|
+
* @param {number} pluginOptions.splitNum - Number of colors per line
|
|
20
|
+
* @param {boolean} pluginOptions.disableHEXInput - Disable HEX input
|
|
21
|
+
*/
|
|
22
|
+
constructor(editor, pluginOptions) {
|
|
23
|
+
super(editor);
|
|
24
|
+
// plugin basic properties
|
|
25
|
+
this.title = this.lang.backgroundColor;
|
|
26
|
+
this.icon = 'background_color';
|
|
13
27
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
colorList: pluginOptions.items,
|
|
17
|
-
splitNum: pluginOptions.splitNum,
|
|
18
|
-
disableHEXInput: pluginOptions.disableHEXInput,
|
|
19
|
-
hueSliderOptions: { controllerOptions: { parents: [menu], isOutsideForm: true } }
|
|
20
|
-
});
|
|
28
|
+
// create HTML
|
|
29
|
+
const menu = CreateHTML();
|
|
21
30
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
// members
|
|
32
|
+
this.colorPicker = new ColorPicker(this, 'backgroundColor', {
|
|
33
|
+
colorList: pluginOptions.items,
|
|
34
|
+
splitNum: pluginOptions.splitNum,
|
|
35
|
+
disableHEXInput: pluginOptions.disableHEXInput,
|
|
36
|
+
hueSliderOptions: { controllerOptions: { parents: [menu], isOutsideForm: true } }
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// itit
|
|
40
|
+
menu.appendChild(this.colorPicker.target);
|
|
41
|
+
this.menu.initDropdownTarget(BackgroundColor, menu);
|
|
42
|
+
}
|
|
26
43
|
|
|
27
|
-
BackgroundColor.key = 'backgroundColor';
|
|
28
|
-
BackgroundColor.type = 'dropdown-free';
|
|
29
|
-
BackgroundColor.className = '';
|
|
30
|
-
BackgroundColor.prototype = {
|
|
31
44
|
/**
|
|
32
|
-
* @
|
|
45
|
+
* @editorMethod Editor.EventManager
|
|
46
|
+
* @description Executes the method that is called whenever the cursor position changes.
|
|
47
|
+
* @param {?HTMLElement=} element - Node element where the cursor is currently located
|
|
48
|
+
* @param {?HTMLElement=} target - The plugin's toolbar button element
|
|
49
|
+
* @returns {boolean} - Whether the plugin is active
|
|
33
50
|
*/
|
|
34
51
|
active(element, target) {
|
|
35
|
-
const colorHelper = target.querySelector('.se-svg-color-helper');
|
|
52
|
+
const colorHelper = /** @type {SVGPathElement} */ (target.querySelector('path.se-svg-color-helper'));
|
|
36
53
|
if (!colorHelper) return false;
|
|
37
54
|
|
|
38
55
|
if (!element) {
|
|
39
56
|
colorHelper.style.color = '';
|
|
40
|
-
} else if (element
|
|
57
|
+
} else if (element.style.backgroundColor.length > 0) {
|
|
41
58
|
colorHelper.style.color = element.style.backgroundColor;
|
|
42
59
|
return true;
|
|
43
60
|
}
|
|
44
61
|
|
|
45
62
|
return false;
|
|
46
|
-
}
|
|
63
|
+
}
|
|
47
64
|
|
|
48
65
|
/**
|
|
49
|
-
* @
|
|
66
|
+
* @editorMethod Modules.Dropdown
|
|
67
|
+
* @description Executes the method that is called when a plugin's "dropdown" menu is opened.
|
|
68
|
+
* @param {HTMLElement} target Line element at the current cursor position
|
|
50
69
|
*/
|
|
51
70
|
on(target) {
|
|
52
71
|
this.colorPicker.init(this.selection.getNode(), target);
|
|
53
|
-
}
|
|
72
|
+
}
|
|
54
73
|
|
|
55
74
|
/**
|
|
56
|
-
* @
|
|
75
|
+
* @editorMethod Modules.Dropdown
|
|
76
|
+
* @description Executes the method that is called when a plugin's "dropdown" menu is closed.
|
|
57
77
|
*/
|
|
58
78
|
off() {
|
|
59
79
|
this.colorPicker.hueSliderClose();
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* @override ColorPicker
|
|
64
|
-
*/
|
|
65
|
-
colorPickerAction(value) {
|
|
66
|
-
this.action(value);
|
|
67
|
-
},
|
|
80
|
+
}
|
|
68
81
|
|
|
69
82
|
/**
|
|
70
|
-
* @
|
|
83
|
+
* @editorMethod Modules.ColorPicker
|
|
84
|
+
* @description Executes the method called when a button of "ColorPicker" module is clicked.
|
|
85
|
+
* - This plugin is by applying the "ColorPicker" module globally to the "dropdown" menu, the default "action" method is not called.
|
|
86
|
+
* @param {string} color - Color code (hex)
|
|
71
87
|
*/
|
|
72
|
-
|
|
73
|
-
if (
|
|
74
|
-
const newNode =
|
|
75
|
-
this.format.
|
|
88
|
+
colorPickerAction(color) {
|
|
89
|
+
if (color) {
|
|
90
|
+
const newNode = dom.utils.createElement('SPAN', { style: 'background-color: ' + color + ';' });
|
|
91
|
+
this.format.applyInlineElement(newNode, { stylesToModify: ['background-color'], nodesToRemove: null, strictRemove: null });
|
|
76
92
|
} else {
|
|
77
|
-
this.format.
|
|
93
|
+
this.format.applyInlineElement(null, { stylesToModify: ['background-color'], nodesToRemove: ['span'], strictRemove: true });
|
|
78
94
|
}
|
|
79
95
|
|
|
80
96
|
this.menu.dropdownOff();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
constructor: BackgroundColor
|
|
84
|
-
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
85
99
|
|
|
86
100
|
function CreateHTML() {
|
|
87
|
-
return
|
|
101
|
+
return dom.utils.createElement('DIV', { class: 'se-dropdown se-list-layer' }, null);
|
|
88
102
|
}
|
|
89
103
|
|
|
90
104
|
export default BackgroundColor;
|
|
@@ -1,31 +1,48 @@
|
|
|
1
1
|
import EditorInjector from '../../editorInjector';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
// members
|
|
15
|
-
this.currentFont = '';
|
|
16
|
-
this.fontList = menu.querySelectorAll('ul li button');
|
|
17
|
-
this.fontArray = fontList;
|
|
18
|
-
|
|
19
|
-
// init
|
|
20
|
-
this.menu.initDropdownTarget(Font, menu);
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
Font.key = 'font';
|
|
24
|
-
Font.type = 'dropdown';
|
|
25
|
-
Font.className = 'se-btn-select se-btn-tool-font';
|
|
26
|
-
Font.prototype = {
|
|
2
|
+
import { dom } from '../../helper';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @class
|
|
6
|
+
* @description Text font plugin
|
|
7
|
+
*/
|
|
8
|
+
class Font extends EditorInjector {
|
|
9
|
+
static key = 'font';
|
|
10
|
+
static type = 'dropdown';
|
|
11
|
+
static className = 'se-btn-select se-btn-tool-font';
|
|
12
|
+
|
|
27
13
|
/**
|
|
28
|
-
* @
|
|
14
|
+
* @constructor
|
|
15
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
16
|
+
* @param {Object} pluginOptions
|
|
17
|
+
* @param {Array<string>} pluginOptions.items - Font list
|
|
18
|
+
* @param {number} pluginOptions.splitNum - Number of colors per line
|
|
19
|
+
* @param {boolean} pluginOptions.disableHEXInput - Disable HEX input
|
|
20
|
+
*/
|
|
21
|
+
constructor(editor, pluginOptions) {
|
|
22
|
+
super(editor);
|
|
23
|
+
// plugin basic properties
|
|
24
|
+
this.title = this.lang.font;
|
|
25
|
+
this.inner = '<span class="se-txt">' + this.lang.font + '</span>' + this.icons.arrow_down;
|
|
26
|
+
|
|
27
|
+
// create HTML
|
|
28
|
+
const fontList = pluginOptions.items || ['Arial', 'Comic Sans MS', 'Courier New', 'Impact', 'Georgia', 'tahoma', 'Trebuchet MS', 'Verdana'];
|
|
29
|
+
const menu = CreateHTML(editor, fontList);
|
|
30
|
+
|
|
31
|
+
// members
|
|
32
|
+
this.currentFont = '';
|
|
33
|
+
this.fontList = menu.querySelectorAll('ul li button');
|
|
34
|
+
this.fontArray = fontList;
|
|
35
|
+
|
|
36
|
+
// init
|
|
37
|
+
this.menu.initDropdownTarget(Font, menu);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* @editorMethod Editor.EventManager
|
|
42
|
+
* @description Executes the method that is called whenever the cursor position changes.
|
|
43
|
+
* @param {?HTMLElement=} element - Node element where the cursor is currently located
|
|
44
|
+
* @param {?HTMLElement=} target - The plugin's toolbar button element
|
|
45
|
+
* @returns {boolean} - Whether the plugin is active
|
|
29
46
|
*/
|
|
30
47
|
active(element, target) {
|
|
31
48
|
const targetText = target.querySelector('.se-txt');
|
|
@@ -33,20 +50,22 @@ Font.prototype = {
|
|
|
33
50
|
|
|
34
51
|
if (!element) {
|
|
35
52
|
const font = this.status.hasFocus ? this.editor.frameContext.get('wwComputedStyle').fontFamily : this.lang.font;
|
|
36
|
-
|
|
37
|
-
|
|
53
|
+
dom.utils.changeTxt(targetText, font);
|
|
54
|
+
dom.utils.changeTxt(tooltip, this.status.hasFocus ? this.lang.font + (font ? ' (' + font + ')' : '') : font);
|
|
38
55
|
} else if (element?.style.fontFamily.length > 0) {
|
|
39
56
|
const selectFont = element.style.fontFamily.replace(/["']/g, '');
|
|
40
|
-
|
|
41
|
-
|
|
57
|
+
dom.utils.changeTxt(targetText, selectFont);
|
|
58
|
+
dom.utils.changeTxt(tooltip, this.lang.font + ' (' + selectFont + ')');
|
|
42
59
|
return true;
|
|
43
60
|
}
|
|
44
61
|
|
|
45
62
|
return false;
|
|
46
|
-
}
|
|
63
|
+
}
|
|
47
64
|
|
|
48
65
|
/**
|
|
49
|
-
* @
|
|
66
|
+
* @editorMethod Modules.Dropdown
|
|
67
|
+
* @description Executes the method that is called when a plugin's dropdown menu is opened.
|
|
68
|
+
* @param {HTMLElement} target Line element at the current cursor position
|
|
50
69
|
*/
|
|
51
70
|
on(target) {
|
|
52
71
|
const fontList = this.fontList;
|
|
@@ -55,44 +74,49 @@ Font.prototype = {
|
|
|
55
74
|
if (currentFont !== this.currentFont) {
|
|
56
75
|
for (let i = 0, len = fontList.length; i < len; i++) {
|
|
57
76
|
if (currentFont === (fontList[i].getAttribute('data-command') || '').replace(/'|"/g, '')) {
|
|
58
|
-
|
|
77
|
+
dom.utils.addClass(fontList[i], 'active');
|
|
59
78
|
} else {
|
|
60
|
-
|
|
79
|
+
dom.utils.removeClass(fontList[i], 'active');
|
|
61
80
|
}
|
|
62
81
|
}
|
|
63
82
|
|
|
64
83
|
this.currentFont = currentFont;
|
|
65
84
|
}
|
|
66
|
-
}
|
|
85
|
+
}
|
|
67
86
|
|
|
68
87
|
/**
|
|
69
|
-
* @
|
|
70
|
-
* @
|
|
88
|
+
* @editorMethod Editor.core
|
|
89
|
+
* @description Executes the main execution method of the plugin.
|
|
90
|
+
* - Called when an item in the "dropdown" menu is clicked.
|
|
91
|
+
* @param {HTMLElement} target - The plugin's toolbar button element
|
|
92
|
+
* @returns {Promise<void>}
|
|
71
93
|
*/
|
|
72
|
-
action(target) {
|
|
94
|
+
async action(target) {
|
|
73
95
|
let value = target.getAttribute('data-command');
|
|
74
96
|
if (value) {
|
|
75
97
|
if (/[\s\d\W]/.test(value) && !/^['"].*['"]$/.test(value)) {
|
|
76
98
|
value = `"${value}"`;
|
|
77
99
|
}
|
|
78
|
-
|
|
79
|
-
|
|
100
|
+
|
|
101
|
+
// before event
|
|
102
|
+
if ((await this.triggerEvent('onFontActionBefore', { value })) === false) return;
|
|
103
|
+
|
|
104
|
+
const newNode = dom.utils.createElement('SPAN', { style: 'font-family: ' + value + ';' });
|
|
105
|
+
this.format.applyInlineElement(newNode, { stylesToModify: ['font-family'], nodesToRemove: null, strictRemove: null });
|
|
80
106
|
} else {
|
|
81
|
-
this.format.
|
|
107
|
+
this.format.applyInlineElement(null, { stylesToModify: ['font-family'], nodesToRemove: ['span'], strictRemove: true });
|
|
82
108
|
}
|
|
83
109
|
|
|
84
110
|
this.menu.dropdownOff();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
constructor: Font
|
|
88
|
-
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
89
113
|
|
|
90
114
|
function CreateHTML({ lang }, fontList) {
|
|
91
115
|
let list = /*html*/ `
|
|
92
116
|
<div class="se-list-inner">
|
|
93
117
|
<ul class="se-list-basic">
|
|
94
118
|
<li>
|
|
95
|
-
<button type="button" class="se-btn se-btn-list default_value" title="${lang.default}" aria-label="${lang.default}">(${lang.default})</button>
|
|
119
|
+
<button type="button" class="se-btn se-btn-list default_value" data-command="" title="${lang.default}" aria-label="${lang.default}">(${lang.default})</button>
|
|
96
120
|
</li>`;
|
|
97
121
|
|
|
98
122
|
for (let i = 0, len = fontList.length, font, text; i < len; i++) {
|
|
@@ -107,7 +131,7 @@ function CreateHTML({ lang }, fontList) {
|
|
|
107
131
|
</ul>
|
|
108
132
|
</div>`;
|
|
109
133
|
|
|
110
|
-
return
|
|
134
|
+
return dom.utils.createElement('DIV', { class: 'se-dropdown se-list-layer se-list-font-family' }, list);
|
|
111
135
|
}
|
|
112
136
|
|
|
113
137
|
export default Font;
|
|
@@ -1,37 +1,55 @@
|
|
|
1
1
|
import EditorInjector from '../../editorInjector';
|
|
2
2
|
import ColorPicker from '../../modules/ColorPicker';
|
|
3
|
-
import {
|
|
3
|
+
import { dom } from '../../helper';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
/**
|
|
6
|
+
* @class
|
|
7
|
+
* @description Font color plugin
|
|
8
|
+
*/
|
|
9
|
+
class FontColor extends EditorInjector {
|
|
10
|
+
static key = 'fontColor';
|
|
11
|
+
static type = 'dropdown-free';
|
|
12
|
+
static className = '';
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|
|
14
|
+
/**
|
|
15
|
+
* @constructor
|
|
16
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
17
|
+
* @param {Object} pluginOptions
|
|
18
|
+
* @param {Array<string|{value: string, name: string}>} pluginOptions.items - Color list
|
|
19
|
+
* @param {number} pluginOptions.splitNum - Number of colors per line
|
|
20
|
+
* @param {boolean} pluginOptions.disableHEXInput - Disable HEX input
|
|
21
|
+
*/
|
|
22
|
+
constructor(editor, pluginOptions) {
|
|
23
|
+
super(editor);
|
|
24
|
+
// plugin basic properties
|
|
25
|
+
this.title = this.lang.fontColor;
|
|
26
|
+
this.icon = 'font_color';
|
|
13
27
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
colorList: pluginOptions.items,
|
|
17
|
-
splitNum: pluginOptions.splitNum,
|
|
18
|
-
disableHEXInput: pluginOptions.disableHEXInput,
|
|
19
|
-
hueSliderOptions: { controllerOptions: { parents: [menu], isOutsideForm: true } }
|
|
20
|
-
});
|
|
28
|
+
// create HTML
|
|
29
|
+
const menu = CreateHTML();
|
|
21
30
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
// members
|
|
32
|
+
this.colorPicker = new ColorPicker(this, 'color', {
|
|
33
|
+
colorList: pluginOptions.items,
|
|
34
|
+
splitNum: pluginOptions.splitNum,
|
|
35
|
+
disableHEXInput: pluginOptions.disableHEXInput,
|
|
36
|
+
hueSliderOptions: { controllerOptions: { parents: [menu], isOutsideForm: true } }
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// itit
|
|
40
|
+
menu.appendChild(this.colorPicker.target);
|
|
41
|
+
this.menu.initDropdownTarget(FontColor, menu);
|
|
42
|
+
}
|
|
26
43
|
|
|
27
|
-
FontColor.key = 'fontColor';
|
|
28
|
-
FontColor.type = 'dropdown-free';
|
|
29
|
-
FontColor.className = '';
|
|
30
|
-
FontColor.prototype = {
|
|
31
44
|
/**
|
|
32
|
-
* @
|
|
45
|
+
* @editorMethod Editor.EventManager
|
|
46
|
+
* @description Executes the method that is called whenever the cursor position changes.
|
|
47
|
+
* @param {?HTMLElement=} element - Node element where the cursor is currently located
|
|
48
|
+
* @param {?HTMLElement=} target - The plugin's toolbar button element
|
|
49
|
+
* @returns {boolean} - Whether the plugin is active
|
|
33
50
|
*/
|
|
34
51
|
active(element, target) {
|
|
52
|
+
/** @type {HTMLElement} */
|
|
35
53
|
const colorHelper = target.querySelector('.se-svg-color-helper');
|
|
36
54
|
if (!colorHelper) return false;
|
|
37
55
|
|
|
@@ -43,48 +61,45 @@ FontColor.prototype = {
|
|
|
43
61
|
}
|
|
44
62
|
|
|
45
63
|
return false;
|
|
46
|
-
}
|
|
64
|
+
}
|
|
47
65
|
|
|
48
66
|
/**
|
|
49
|
-
* @
|
|
67
|
+
* @editorMethod Modules.Dropdown
|
|
68
|
+
* @description Executes the method that is called when a plugin's dropdown menu is opened.
|
|
69
|
+
* @param {HTMLElement} target Line element at the current cursor position
|
|
50
70
|
*/
|
|
51
71
|
on(target) {
|
|
52
72
|
this.colorPicker.init(this.selection.getNode(), target);
|
|
53
|
-
}
|
|
73
|
+
}
|
|
54
74
|
|
|
55
75
|
/**
|
|
56
|
-
* @
|
|
76
|
+
* @editorMethod Modules.Dropdown
|
|
77
|
+
* @Override Executes the method that is called when a plugin's dropdown menu is closed.
|
|
57
78
|
*/
|
|
58
|
-
|
|
79
|
+
off() {
|
|
59
80
|
this.colorPicker.hueSliderClose();
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* @override ColorPicker
|
|
64
|
-
*/
|
|
65
|
-
colorPickerAction(value) {
|
|
66
|
-
this.action(value);
|
|
67
|
-
},
|
|
81
|
+
}
|
|
68
82
|
|
|
69
83
|
/**
|
|
70
|
-
* @
|
|
84
|
+
* @editorMethod Modules.ColorPicker
|
|
85
|
+
* @description Executes the method called when a button of "ColorPicker" module is clicked.
|
|
86
|
+
* - This plugin is by applying the "ColorPicker" module globally to the "dropdown" menu, the default "action" method is not called.
|
|
87
|
+
* @param {string} color - Color code (hex)
|
|
71
88
|
*/
|
|
72
|
-
|
|
73
|
-
if (
|
|
74
|
-
const newNode =
|
|
75
|
-
this.format.
|
|
89
|
+
colorPickerAction(color) {
|
|
90
|
+
if (color) {
|
|
91
|
+
const newNode = dom.utils.createElement('SPAN', { style: 'color: ' + color + ';' });
|
|
92
|
+
this.format.applyInlineElement(newNode, { stylesToModify: ['color'], nodesToRemove: null, strictRemove: null });
|
|
76
93
|
} else {
|
|
77
|
-
this.format.
|
|
94
|
+
this.format.applyInlineElement(null, { stylesToModify: ['color'], nodesToRemove: ['span'], strictRemove: true });
|
|
78
95
|
}
|
|
79
96
|
|
|
80
97
|
this.menu.dropdownOff();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
constructor: FontColor
|
|
84
|
-
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
85
100
|
|
|
86
101
|
function CreateHTML() {
|
|
87
|
-
return
|
|
102
|
+
return dom.utils.createElement('DIV', { class: 'se-dropdown se-list-layer' }, null);
|
|
88
103
|
}
|
|
89
104
|
|
|
90
105
|
export default FontColor;
|
|
@@ -1,50 +1,74 @@
|
|
|
1
1
|
import EditorInjector from '../../editorInjector';
|
|
2
|
-
import {
|
|
2
|
+
import { dom } from '../../helper';
|
|
3
|
+
|
|
4
|
+
const HEADER_KEYCODE = new Map([
|
|
5
|
+
['Digit1', 'h1'],
|
|
6
|
+
['Digit2', 'h2'],
|
|
7
|
+
['Digit3', 'h3'],
|
|
8
|
+
['Digit4', 'h4'],
|
|
9
|
+
['Digit5', 'h5'],
|
|
10
|
+
['Digit6', 'h6']
|
|
11
|
+
]);
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @class
|
|
15
|
+
* @description FormatBlock Plugin (P, BLOCKQUOTE, PRE, H1, H2...)
|
|
16
|
+
*/
|
|
17
|
+
class FormatBlock extends EditorInjector {
|
|
18
|
+
static key = 'formatBlock';
|
|
19
|
+
static type = 'dropdown';
|
|
20
|
+
static className = 'se-btn-select se-btn-tool-format';
|
|
3
21
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
22
|
+
/**
|
|
23
|
+
* @constructor
|
|
24
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
25
|
+
* @param {Object} pluginOptions
|
|
26
|
+
* @param {Array<string>} pluginOptions.items - Format list
|
|
27
|
+
*/
|
|
28
|
+
constructor(editor, pluginOptions) {
|
|
29
|
+
super(editor);
|
|
30
|
+
// plugin basic properties
|
|
31
|
+
this.title = this.lang.formats;
|
|
32
|
+
this.inner = '<span class="se-txt">' + this.lang.formats + '</span>' + this.icons.arrow_down;
|
|
9
33
|
|
|
10
|
-
|
|
11
|
-
|
|
34
|
+
// create HTML
|
|
35
|
+
const menu = CreateHTML(editor, pluginOptions.items);
|
|
12
36
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
37
|
+
// members
|
|
38
|
+
this.formatList = menu.querySelectorAll('li button');
|
|
39
|
+
this.currentFormat = '';
|
|
16
40
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
41
|
+
// init
|
|
42
|
+
this.menu.initDropdownTarget(FormatBlock, menu);
|
|
43
|
+
}
|
|
20
44
|
|
|
21
|
-
FormatBlock.key = 'formatBlock';
|
|
22
|
-
FormatBlock.type = 'dropdown';
|
|
23
|
-
FormatBlock.className = 'se-btn-select se-btn-tool-format';
|
|
24
|
-
FormatBlock.prototype = {
|
|
25
45
|
/**
|
|
26
|
-
* @
|
|
46
|
+
* @editorMethod Editor.EventManager
|
|
47
|
+
* @description Executes the method that is called whenever the cursor position changes.
|
|
48
|
+
* @param {?HTMLElement=} element - Node element where the cursor is currently located
|
|
49
|
+
* @param {?HTMLElement=} target - The plugin's toolbar button element
|
|
50
|
+
* @returns {boolean} - Whether the plugin is active
|
|
27
51
|
*/
|
|
28
52
|
active(element, target) {
|
|
29
53
|
let formatTitle = this.lang.formats;
|
|
30
54
|
const targetText = target.querySelector('.se-txt');
|
|
31
55
|
|
|
32
56
|
if (!element) {
|
|
33
|
-
|
|
57
|
+
dom.utils.changeTxt(targetText, formatTitle);
|
|
34
58
|
} else if (this.format.isLine(element)) {
|
|
35
59
|
const formatList = this.formatList;
|
|
36
60
|
const nodeName = element.nodeName.toLowerCase();
|
|
37
61
|
const className = (element.className.match(/(\s|^)__se__format__[^\s]+/) || [''])[0].trim();
|
|
38
62
|
|
|
39
63
|
for (let i = 0, len = formatList.length, f; i < len; i++) {
|
|
40
|
-
f = formatList[i];
|
|
64
|
+
f = /** @type {HTMLButtonElement} */ (formatList[i]);
|
|
41
65
|
if (nodeName === f.getAttribute('data-value') && className === f.getAttribute('data-class')) {
|
|
42
66
|
formatTitle = f.title;
|
|
43
67
|
break;
|
|
44
68
|
}
|
|
45
69
|
}
|
|
46
70
|
|
|
47
|
-
|
|
71
|
+
dom.utils.changeTxt(targetText, formatTitle);
|
|
48
72
|
targetText.setAttribute('data-value', nodeName);
|
|
49
73
|
targetText.setAttribute('data-class', className);
|
|
50
74
|
|
|
@@ -52,10 +76,12 @@ FormatBlock.prototype = {
|
|
|
52
76
|
}
|
|
53
77
|
|
|
54
78
|
return false;
|
|
55
|
-
}
|
|
79
|
+
}
|
|
56
80
|
|
|
57
81
|
/**
|
|
58
|
-
* @
|
|
82
|
+
* @editorMethod Modules.Dropdown
|
|
83
|
+
* @description Executes the method that is called when a plugin's dropdown menu is opened.
|
|
84
|
+
* @param {HTMLElement} target Line element at the current cursor position
|
|
59
85
|
*/
|
|
60
86
|
on(target) {
|
|
61
87
|
const formatList = this.formatList;
|
|
@@ -66,19 +92,21 @@ FormatBlock.prototype = {
|
|
|
66
92
|
for (let i = 0, len = formatList.length, f; i < len; i++) {
|
|
67
93
|
f = formatList[i];
|
|
68
94
|
if (currentFormat === f.getAttribute('data-value') + f.getAttribute('data-class')) {
|
|
69
|
-
|
|
95
|
+
dom.utils.addClass(f, 'active');
|
|
70
96
|
} else {
|
|
71
|
-
|
|
97
|
+
dom.utils.removeClass(f, 'active');
|
|
72
98
|
}
|
|
73
99
|
}
|
|
74
100
|
|
|
75
101
|
this.currentFormat = currentFormat;
|
|
76
102
|
}
|
|
77
|
-
}
|
|
103
|
+
}
|
|
78
104
|
|
|
79
105
|
/**
|
|
80
|
-
* @
|
|
81
|
-
* @
|
|
106
|
+
* @editorMethod Editor.core
|
|
107
|
+
* @description Executes the main execution method of the plugin.
|
|
108
|
+
* - Called when an item in the "dropdown" menu is clicked.
|
|
109
|
+
* @param {HTMLElement} target - The plugin's toolbar button element
|
|
82
110
|
*/
|
|
83
111
|
action(target) {
|
|
84
112
|
// "line"|"br-line"|"block"
|
|
@@ -93,10 +121,19 @@ FormatBlock.prototype = {
|
|
|
93
121
|
}
|
|
94
122
|
|
|
95
123
|
this.menu.dropdownOff();
|
|
96
|
-
}
|
|
124
|
+
}
|
|
97
125
|
|
|
98
|
-
|
|
99
|
-
|
|
126
|
+
/**
|
|
127
|
+
* @description Create a header tag, call by "shortcut" class
|
|
128
|
+
* - (e.g. shortcuts._h1: ['c+s+49+p~formatBlock.createHeader', ''])
|
|
129
|
+
* @param {__se__PluginShortcutInfo} params - Information of the "shortcut" plugin
|
|
130
|
+
*/
|
|
131
|
+
createHeader({ keyCode }) {
|
|
132
|
+
const headerName = HEADER_KEYCODE.get(keyCode);
|
|
133
|
+
const tag = dom.utils.createElement(headerName);
|
|
134
|
+
this.format.setLine(tag);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
100
137
|
|
|
101
138
|
function CreateHTML({ lang }, items) {
|
|
102
139
|
const defaultFormats = ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
|
|
@@ -135,7 +172,7 @@ function CreateHTML({ lang }, items) {
|
|
|
135
172
|
</ul>
|
|
136
173
|
</div>`;
|
|
137
174
|
|
|
138
|
-
return
|
|
175
|
+
return dom.utils.createElement('DIV', { class: 'se-dropdown se-list-layer se-list-format' }, list);
|
|
139
176
|
}
|
|
140
177
|
|
|
141
178
|
export default FormatBlock;
|