suneditor 3.0.0-beta.2 → 3.0.0-beta.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/CONTRIBUTING.md +186 -184
- package/LICENSE +21 -21
- package/README.md +157 -180
- package/dist/suneditor.min.css +1 -1
- package/dist/suneditor.min.js +1 -1
- package/package.json +126 -123
- package/src/assets/design/color.css +131 -121
- package/src/assets/design/index.css +3 -3
- package/src/assets/design/size.css +37 -35
- package/src/assets/design/typography.css +37 -37
- package/src/assets/icons/defaultIcons.js +247 -232
- package/src/assets/suneditor-contents.css +779 -778
- package/src/assets/suneditor.css +43 -35
- package/src/core/base/eventHandlers/handler_toolbar.js +135 -135
- package/src/core/base/eventHandlers/handler_ww_clipboard.js +56 -56
- package/src/core/base/eventHandlers/handler_ww_dragDrop.js +115 -113
- package/src/core/base/eventHandlers/handler_ww_key_input.js +1200 -1200
- package/src/core/base/eventHandlers/handler_ww_mouse.js +194 -194
- package/src/core/base/eventManager.js +1550 -1484
- package/src/core/base/history.js +355 -355
- package/src/core/class/char.js +163 -162
- package/src/core/class/component.js +856 -842
- package/src/core/class/format.js +3433 -3422
- package/src/core/class/html.js +1927 -1890
- package/src/core/class/menu.js +357 -346
- package/src/core/class/nodeTransform.js +424 -424
- package/src/core/class/offset.js +858 -891
- package/src/core/class/selection.js +710 -620
- package/src/core/class/shortcuts.js +98 -98
- package/src/core/class/toolbar.js +438 -430
- package/src/core/class/ui.js +424 -422
- package/src/core/class/viewer.js +750 -750
- package/src/core/editor.js +1810 -1708
- package/src/core/section/actives.js +268 -241
- package/src/core/section/constructor.js +1348 -1661
- package/src/core/section/context.js +102 -102
- package/src/core/section/documentType.js +582 -561
- package/src/core/section/options.js +367 -0
- package/src/core/util/instanceCheck.js +59 -0
- package/src/editorInjector/_classes.js +36 -36
- package/src/editorInjector/_core.js +92 -92
- package/src/editorInjector/index.js +75 -75
- package/src/events.js +634 -622
- package/src/helper/clipboard.js +59 -59
- package/src/helper/converter.js +586 -564
- package/src/helper/dom/domCheck.js +304 -304
- package/src/helper/dom/domQuery.js +677 -669
- package/src/helper/dom/domUtils.js +618 -557
- package/src/helper/dom/index.js +12 -12
- package/src/helper/env.js +249 -240
- package/src/helper/index.js +25 -25
- package/src/helper/keyCodeMap.js +183 -183
- package/src/helper/numbers.js +72 -72
- package/src/helper/unicode.js +47 -47
- package/src/langs/ckb.js +231 -231
- package/src/langs/cs.js +231 -231
- package/src/langs/da.js +231 -231
- package/src/langs/de.js +231 -231
- package/src/langs/en.js +230 -230
- package/src/langs/es.js +231 -231
- package/src/langs/fa.js +231 -231
- package/src/langs/fr.js +231 -231
- package/src/langs/he.js +231 -231
- package/src/langs/hu.js +230 -230
- package/src/langs/index.js +28 -28
- package/src/langs/it.js +231 -231
- package/src/langs/ja.js +230 -230
- package/src/langs/km.js +230 -230
- package/src/langs/ko.js +230 -230
- package/src/langs/lv.js +231 -231
- package/src/langs/nl.js +231 -231
- package/src/langs/pl.js +231 -231
- package/src/langs/pt_br.js +231 -231
- package/src/langs/ro.js +231 -231
- package/src/langs/ru.js +231 -231
- package/src/langs/se.js +231 -231
- package/src/langs/tr.js +231 -231
- package/src/langs/uk.js +231 -231
- package/src/langs/ur.js +231 -231
- package/src/langs/zh_cn.js +231 -231
- package/src/modules/ApiManager.js +191 -191
- package/src/modules/Browser.js +669 -667
- package/src/modules/ColorPicker.js +364 -362
- package/src/modules/Controller.js +474 -454
- package/src/modules/Figure.js +1620 -1617
- package/src/modules/FileManager.js +359 -359
- package/src/modules/HueSlider.js +577 -565
- package/src/modules/Modal.js +346 -346
- package/src/modules/ModalAnchorEditor.js +643 -643
- package/src/modules/SelectMenu.js +549 -549
- package/src/modules/_DragHandle.js +17 -17
- package/src/modules/index.js +14 -14
- package/src/plugins/browser/audioGallery.js +83 -83
- package/src/plugins/browser/fileBrowser.js +103 -103
- package/src/plugins/browser/fileGallery.js +83 -83
- package/src/plugins/browser/imageGallery.js +81 -81
- package/src/plugins/browser/videoGallery.js +103 -103
- package/src/plugins/command/blockquote.js +61 -60
- package/src/plugins/command/exportPDF.js +134 -134
- package/src/plugins/command/fileUpload.js +456 -456
- package/src/plugins/command/list_bulleted.js +149 -148
- package/src/plugins/command/list_numbered.js +152 -151
- package/src/plugins/dropdown/align.js +157 -155
- package/src/plugins/dropdown/backgroundColor.js +108 -104
- package/src/plugins/dropdown/font.js +141 -137
- package/src/plugins/dropdown/fontColor.js +109 -105
- package/src/plugins/dropdown/formatBlock.js +170 -178
- package/src/plugins/dropdown/hr.js +152 -152
- package/src/plugins/dropdown/layout.js +83 -83
- package/src/plugins/dropdown/lineHeight.js +131 -130
- package/src/plugins/dropdown/list.js +123 -122
- package/src/plugins/dropdown/paragraphStyle.js +138 -138
- package/src/plugins/dropdown/table.js +4110 -4000
- package/src/plugins/dropdown/template.js +83 -83
- package/src/plugins/dropdown/textStyle.js +149 -149
- package/src/plugins/field/mention.js +242 -242
- package/src/plugins/index.js +120 -120
- package/src/plugins/input/fontSize.js +414 -410
- package/src/plugins/input/pageNavigator.js +71 -70
- package/src/plugins/modal/audio.js +677 -677
- package/src/plugins/modal/drawing.js +537 -531
- package/src/plugins/modal/embed.js +886 -886
- package/src/plugins/modal/image.js +1377 -1376
- package/src/plugins/modal/link.js +248 -240
- package/src/plugins/modal/math.js +563 -563
- package/src/plugins/modal/video.js +1226 -1226
- package/src/plugins/popup/anchor.js +224 -222
- package/src/suneditor.js +114 -107
- package/src/themes/dark.css +132 -122
- package/src/typedef.js +132 -130
- package/types/assets/icons/defaultIcons.d.ts +8 -0
- package/types/core/base/eventManager.d.ts +29 -4
- package/types/core/class/char.d.ts +2 -1
- package/types/core/class/component.d.ts +1 -2
- package/types/core/class/format.d.ts +8 -1
- package/types/core/class/html.d.ts +8 -0
- package/types/core/class/menu.d.ts +8 -0
- package/types/core/class/offset.d.ts +24 -26
- package/types/core/class/selection.d.ts +2 -0
- package/types/core/class/toolbar.d.ts +6 -0
- package/types/core/class/ui.d.ts +1 -1
- package/types/core/editor.d.ts +34 -12
- package/types/core/section/constructor.d.ts +5 -638
- package/types/core/section/documentType.d.ts +12 -2
- package/types/core/section/options.d.ts +740 -0
- package/types/core/util/instanceCheck.d.ts +50 -0
- package/types/editorInjector/_core.d.ts +5 -5
- package/types/editorInjector/index.d.ts +2 -2
- package/types/events.d.ts +2 -0
- package/types/helper/converter.d.ts +9 -0
- package/types/helper/dom/domQuery.d.ts +5 -5
- package/types/helper/dom/domUtils.d.ts +8 -0
- package/types/helper/env.d.ts +6 -1
- package/types/helper/index.d.ts +4 -1
- package/types/index.d.ts +122 -120
- package/types/langs/_Lang.d.ts +194 -194
- package/types/modules/ColorPicker.d.ts +5 -1
- package/types/modules/Controller.d.ts +8 -4
- package/types/modules/Figure.d.ts +2 -1
- package/types/modules/HueSlider.d.ts +4 -1
- package/types/modules/SelectMenu.d.ts +1 -1
- package/types/plugins/command/blockquote.d.ts +1 -0
- package/types/plugins/command/list_bulleted.d.ts +1 -0
- package/types/plugins/command/list_numbered.d.ts +1 -0
- package/types/plugins/dropdown/align.d.ts +1 -0
- package/types/plugins/dropdown/backgroundColor.d.ts +1 -0
- package/types/plugins/dropdown/font.d.ts +1 -0
- package/types/plugins/dropdown/fontColor.d.ts +1 -0
- package/types/plugins/dropdown/formatBlock.d.ts +3 -2
- package/types/plugins/dropdown/lineHeight.d.ts +1 -0
- package/types/plugins/dropdown/list.d.ts +1 -0
- package/types/plugins/dropdown/table.d.ts +6 -0
- package/types/plugins/input/fontSize.d.ts +1 -0
- package/types/plugins/modal/drawing.d.ts +4 -0
- package/types/plugins/modal/link.d.ts +32 -15
- package/types/suneditor.d.ts +13 -9
- package/types/typedef.d.ts +8 -0
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
import EditorInjector from '../../editorInjector';
|
|
2
|
-
import { dom } from '../../helper';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @class
|
|
6
|
-
* @description Layout Plugin, Apply layout to the entire editor.
|
|
7
|
-
*/
|
|
8
|
-
class Layout extends EditorInjector {
|
|
9
|
-
static key = 'layout';
|
|
10
|
-
static type = 'dropdown';
|
|
11
|
-
static className = '';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @constructor
|
|
15
|
-
* @param {__se__EditorCore} editor - The root editor instance
|
|
16
|
-
* @param {Object} pluginOptions
|
|
17
|
-
* @param {Array<{name: string, html: string}>} pluginOptions.items - Layout list
|
|
18
|
-
*/
|
|
19
|
-
constructor(editor, pluginOptions) {
|
|
20
|
-
// plugin bisic properties
|
|
21
|
-
super(editor);
|
|
22
|
-
this.title = this.lang.layout;
|
|
23
|
-
this.icon = 'layout';
|
|
24
|
-
|
|
25
|
-
// members
|
|
26
|
-
this.selectedIndex = -1;
|
|
27
|
-
this.items = pluginOptions.items;
|
|
28
|
-
|
|
29
|
-
// create HTML
|
|
30
|
-
const menu = CreateHTML(this.items);
|
|
31
|
-
|
|
32
|
-
// init
|
|
33
|
-
this.menu.initDropdownTarget(Layout, menu);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @editorMethod Editor.core
|
|
38
|
-
* @description Executes the main execution method of the plugin.
|
|
39
|
-
* - Called when an item in the "dropdown" menu is clicked.
|
|
40
|
-
* @param {HTMLElement} target - The plugin's toolbar button element
|
|
41
|
-
*/
|
|
42
|
-
action(target) {
|
|
43
|
-
const index = Number(target.getAttribute('data-value'));
|
|
44
|
-
const temp = this.items[(this.selectedIndex = index)];
|
|
45
|
-
|
|
46
|
-
if (temp.html) {
|
|
47
|
-
this.html.set(temp.html);
|
|
48
|
-
} else {
|
|
49
|
-
this.menu.dropdownOff();
|
|
50
|
-
throw Error('[SUNEDITOR.layout.fail] cause : "layouts[i].html not found"');
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
this.menu.dropdownOff();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
function CreateHTML(layoutList) {
|
|
58
|
-
if (!layoutList || layoutList.length === 0) {
|
|
59
|
-
console.warn('[SUNEDITOR.plugins.layout.warn] To use the "layout" plugin, please define the "layouts" option.');
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
let list = /*html*/ `
|
|
63
|
-
<div class="se-dropdown se-list-inner">
|
|
64
|
-
<ul class="se-list-basic">`;
|
|
65
|
-
|
|
66
|
-
for (let i = 0, len = (layoutList || []).length, t; i < len; i++) {
|
|
67
|
-
t = layoutList[i];
|
|
68
|
-
list += /*html*/ `
|
|
69
|
-
<li>
|
|
70
|
-
<button type="button" class="se-btn se-btn-list" data-value="${i}" title="${t.name}" aria-label="${t.name}">
|
|
71
|
-
${t.name}
|
|
72
|
-
</button>
|
|
73
|
-
</li>`;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
list += /*html*/ `
|
|
77
|
-
</ul>
|
|
78
|
-
</div>`;
|
|
79
|
-
|
|
80
|
-
return dom.utils.createElement('DIV', { class: 'se-list-layer' }, list);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export default Layout;
|
|
1
|
+
import EditorInjector from '../../editorInjector';
|
|
2
|
+
import { dom } from '../../helper';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @class
|
|
6
|
+
* @description Layout Plugin, Apply layout to the entire editor.
|
|
7
|
+
*/
|
|
8
|
+
class Layout extends EditorInjector {
|
|
9
|
+
static key = 'layout';
|
|
10
|
+
static type = 'dropdown';
|
|
11
|
+
static className = '';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @constructor
|
|
15
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
16
|
+
* @param {Object} pluginOptions
|
|
17
|
+
* @param {Array<{name: string, html: string}>} pluginOptions.items - Layout list
|
|
18
|
+
*/
|
|
19
|
+
constructor(editor, pluginOptions) {
|
|
20
|
+
// plugin bisic properties
|
|
21
|
+
super(editor);
|
|
22
|
+
this.title = this.lang.layout;
|
|
23
|
+
this.icon = 'layout';
|
|
24
|
+
|
|
25
|
+
// members
|
|
26
|
+
this.selectedIndex = -1;
|
|
27
|
+
this.items = pluginOptions.items;
|
|
28
|
+
|
|
29
|
+
// create HTML
|
|
30
|
+
const menu = CreateHTML(this.items);
|
|
31
|
+
|
|
32
|
+
// init
|
|
33
|
+
this.menu.initDropdownTarget(Layout, menu);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @editorMethod Editor.core
|
|
38
|
+
* @description Executes the main execution method of the plugin.
|
|
39
|
+
* - Called when an item in the "dropdown" menu is clicked.
|
|
40
|
+
* @param {HTMLElement} target - The plugin's toolbar button element
|
|
41
|
+
*/
|
|
42
|
+
action(target) {
|
|
43
|
+
const index = Number(target.getAttribute('data-value'));
|
|
44
|
+
const temp = this.items[(this.selectedIndex = index)];
|
|
45
|
+
|
|
46
|
+
if (temp.html) {
|
|
47
|
+
this.html.set(temp.html);
|
|
48
|
+
} else {
|
|
49
|
+
this.menu.dropdownOff();
|
|
50
|
+
throw Error('[SUNEDITOR.layout.fail] cause : "layouts[i].html not found"');
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
this.menu.dropdownOff();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function CreateHTML(layoutList) {
|
|
58
|
+
if (!layoutList || layoutList.length === 0) {
|
|
59
|
+
console.warn('[SUNEDITOR.plugins.layout.warn] To use the "layout" plugin, please define the "layouts" option.');
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
let list = /*html*/ `
|
|
63
|
+
<div class="se-dropdown se-list-inner">
|
|
64
|
+
<ul class="se-list-basic">`;
|
|
65
|
+
|
|
66
|
+
for (let i = 0, len = (layoutList || []).length, t; i < len; i++) {
|
|
67
|
+
t = layoutList[i];
|
|
68
|
+
list += /*html*/ `
|
|
69
|
+
<li>
|
|
70
|
+
<button type="button" class="se-btn se-btn-list" data-value="${i}" title="${t.name}" aria-label="${t.name}">
|
|
71
|
+
${t.name}
|
|
72
|
+
</button>
|
|
73
|
+
</li>`;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
list += /*html*/ `
|
|
77
|
+
</ul>
|
|
78
|
+
</div>`;
|
|
79
|
+
|
|
80
|
+
return dom.utils.createElement('DIV', { class: 'se-list-layer' }, list);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export default Layout;
|
|
@@ -1,130 +1,131 @@
|
|
|
1
|
-
import EditorInjector from '../../editorInjector';
|
|
2
|
-
import { dom } from '../../helper';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @class
|
|
6
|
-
* @description Line height Plugin
|
|
7
|
-
*/
|
|
8
|
-
class LineHeight extends EditorInjector {
|
|
9
|
-
static key = 'lineHeight';
|
|
10
|
-
static type = 'dropdown';
|
|
11
|
-
static className = '';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @constructor
|
|
15
|
-
* @param {__se__EditorCore} editor - The root editor instance
|
|
16
|
-
* @param {Object} pluginOptions
|
|
17
|
-
* @param {Array<{text: string, value: number}>} pluginOptions.items - Line height list
|
|
18
|
-
*/
|
|
19
|
-
constructor(editor, pluginOptions) {
|
|
20
|
-
// plugin bisic properties
|
|
21
|
-
super(editor);
|
|
22
|
-
this.title = this.lang.lineHeight;
|
|
23
|
-
this.icon = 'line_height';
|
|
24
|
-
|
|
25
|
-
// create HTML
|
|
26
|
-
const menu = CreateHTML(editor, pluginOptions.items);
|
|
27
|
-
|
|
28
|
-
// members
|
|
29
|
-
this.sizeList = menu.querySelectorAll('li button');
|
|
30
|
-
this.currentSize = null;
|
|
31
|
-
|
|
32
|
-
// init
|
|
33
|
-
this.menu.initDropdownTarget(LineHeight, menu);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @editorMethod Editor.EventManager
|
|
38
|
-
* @description Executes the method that is called whenever the cursor position changes.
|
|
39
|
-
* @param {?HTMLElement=} element - Node element where the cursor is currently located
|
|
40
|
-
* @param {?HTMLElement=} target - The plugin's toolbar button element
|
|
41
|
-
* @returns {boolean} - Whether the plugin is active
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
* @
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
* @
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
this.
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
{ text: '1
|
|
100
|
-
{ text: '1.
|
|
101
|
-
{ text: '
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
|
|
1
|
+
import EditorInjector from '../../editorInjector';
|
|
2
|
+
import { dom } from '../../helper';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @class
|
|
6
|
+
* @description Line height Plugin
|
|
7
|
+
*/
|
|
8
|
+
class LineHeight extends EditorInjector {
|
|
9
|
+
static key = 'lineHeight';
|
|
10
|
+
static type = 'dropdown';
|
|
11
|
+
static className = '';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @constructor
|
|
15
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
16
|
+
* @param {Object} pluginOptions
|
|
17
|
+
* @param {Array<{text: string, value: number}>} pluginOptions.items - Line height list
|
|
18
|
+
*/
|
|
19
|
+
constructor(editor, pluginOptions) {
|
|
20
|
+
// plugin bisic properties
|
|
21
|
+
super(editor);
|
|
22
|
+
this.title = this.lang.lineHeight;
|
|
23
|
+
this.icon = 'line_height';
|
|
24
|
+
|
|
25
|
+
// create HTML
|
|
26
|
+
const menu = CreateHTML(editor, pluginOptions.items);
|
|
27
|
+
|
|
28
|
+
// members
|
|
29
|
+
this.sizeList = menu.querySelectorAll('li button');
|
|
30
|
+
this.currentSize = null;
|
|
31
|
+
|
|
32
|
+
// init
|
|
33
|
+
this.menu.initDropdownTarget(LineHeight, menu);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @editorMethod Editor.EventManager
|
|
38
|
+
* @description Executes the method that is called whenever the cursor position changes.
|
|
39
|
+
* @param {?HTMLElement=} element - Node element where the cursor is currently located
|
|
40
|
+
* @param {?HTMLElement=} target - The plugin's toolbar button element
|
|
41
|
+
* @returns {boolean} - Whether the plugin is active
|
|
42
|
+
* - If it returns "undefined", it will no longer be called in this scope.
|
|
43
|
+
*/
|
|
44
|
+
active(element, target) {
|
|
45
|
+
if (this.format.isLine(element) && element.style.lineHeight.length > 0) {
|
|
46
|
+
dom.utils.addClass(target, 'active');
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
dom.utils.removeClass(target, 'active');
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* @editorMethod Modules.Dropdown
|
|
56
|
+
* @description Executes the method that is called when a plugin's dropdown menu is opened.
|
|
57
|
+
*/
|
|
58
|
+
on() {
|
|
59
|
+
const format = this.format.getLine(this.selection.getNode());
|
|
60
|
+
const currentSize = !format ? '' : format.style.lineHeight + '';
|
|
61
|
+
|
|
62
|
+
if (currentSize !== this.currentSize) {
|
|
63
|
+
const sizeList = this.sizeList;
|
|
64
|
+
for (let i = 0, len = sizeList.length; i < len; i++) {
|
|
65
|
+
if (currentSize === sizeList[i].getAttribute('data-command')) {
|
|
66
|
+
dom.utils.addClass(sizeList[i], 'active');
|
|
67
|
+
} else {
|
|
68
|
+
dom.utils.removeClass(sizeList[i], 'active');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
this.currentSize = currentSize;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* @editorMethod Editor.core
|
|
78
|
+
* @description Executes the main execution method of the plugin.
|
|
79
|
+
* - Called when an item in the "dropdown" menu is clicked.
|
|
80
|
+
* @param {HTMLElement} target - The plugin's toolbar button element
|
|
81
|
+
*/
|
|
82
|
+
action(target) {
|
|
83
|
+
const value = target.getAttribute('data-command') || '';
|
|
84
|
+
const formats = this.format.getLines();
|
|
85
|
+
|
|
86
|
+
for (let i = 0, len = formats.length; i < len; i++) {
|
|
87
|
+
formats[i].style.lineHeight = value;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
this.menu.dropdownOff();
|
|
91
|
+
|
|
92
|
+
this.editor.effectNode = null;
|
|
93
|
+
this.history.push(false);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function CreateHTML({ lang }, items) {
|
|
98
|
+
const sizeList = items || [
|
|
99
|
+
{ text: '1', value: '1em' },
|
|
100
|
+
{ text: '1.2', value: '1.2em' },
|
|
101
|
+
{ text: '1.7', value: '1.7em' },
|
|
102
|
+
{ text: '2', value: '2em' }
|
|
103
|
+
];
|
|
104
|
+
|
|
105
|
+
let list = /*html*/ `
|
|
106
|
+
<div class="se-list-inner">
|
|
107
|
+
<ul class="se-list-basic">
|
|
108
|
+
<li>
|
|
109
|
+
<button type="button" class="se-btn se-btn-list default_value" data-command="" title="${lang.default}" aria-label="${lang.default}">
|
|
110
|
+
(${lang.default})
|
|
111
|
+
</button>
|
|
112
|
+
</li>`;
|
|
113
|
+
|
|
114
|
+
for (let i = 0, len = sizeList.length, size; i < len; i++) {
|
|
115
|
+
size = sizeList[i];
|
|
116
|
+
list += /*html*/ `
|
|
117
|
+
<li>
|
|
118
|
+
<button type="button" class="se-btn se-btn-list" data-command="${size.value}" title="${size.text}" aria-label="${size.text}">
|
|
119
|
+
${size.text}
|
|
120
|
+
</button>
|
|
121
|
+
</li>`;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
list += /*html*/ `
|
|
125
|
+
</ul>
|
|
126
|
+
</div>`;
|
|
127
|
+
|
|
128
|
+
return dom.utils.createElement('DIV', { class: 'se-dropdown se-list-layer' }, list);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export default LineHeight;
|