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,222 +1,224 @@
|
|
|
1
|
-
import EditorInjector from '../../editorInjector';
|
|
2
|
-
import { Controller } from '../../modules';
|
|
3
|
-
import { dom, env } from '../../helper';
|
|
4
|
-
|
|
5
|
-
const { _w } = env;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @class
|
|
9
|
-
* @description Anchor plugin
|
|
10
|
-
* - Allows you to create, edit, and delete elements that act as anchors (bookmarks) within a document.
|
|
11
|
-
*/
|
|
12
|
-
class Anchor extends EditorInjector {
|
|
13
|
-
static key = 'anchor';
|
|
14
|
-
static type = 'popup';
|
|
15
|
-
static className = '';
|
|
16
|
-
/**
|
|
17
|
-
* @this {Anchor}
|
|
18
|
-
* @param {HTMLElement} node - The node to check.
|
|
19
|
-
* @returns {HTMLElement|null} Returns a node if the node is a valid component.
|
|
20
|
-
*/
|
|
21
|
-
static component(node) {
|
|
22
|
-
return dom.check.isAnchor(node) && node.hasAttribute('id') && node.hasAttribute('data-se-anchor') ? node : null;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @constructor
|
|
27
|
-
* @param {__se__EditorCore} editor - The root editor instance
|
|
28
|
-
*/
|
|
29
|
-
constructor(editor) {
|
|
30
|
-
super(editor);
|
|
31
|
-
// plugin basic properties
|
|
32
|
-
this.title = this.lang.anchor;
|
|
33
|
-
this.icon = 'bookmark_anchor';
|
|
34
|
-
|
|
35
|
-
// members
|
|
36
|
-
const parser = new DOMParser();
|
|
37
|
-
const svgDoc = parser.parseFromString(this.icons.bookmark_anchor, 'image/svg+xml');
|
|
38
|
-
this.bookmarkIcon = svgDoc.documentElement;
|
|
39
|
-
this._element = null;
|
|
40
|
-
this._range = null;
|
|
41
|
-
|
|
42
|
-
// controller
|
|
43
|
-
const controllerSelectEl = CreateHTML_controller_select(this);
|
|
44
|
-
this.displayId = controllerSelectEl.querySelector('.se-controller-display');
|
|
45
|
-
this.controllerSelect = new Controller(this, controllerSelectEl, { position: 'bottom', disabled: true }, Anchor.key);
|
|
46
|
-
|
|
47
|
-
const controllerEl = CreateHTML_controller(this);
|
|
48
|
-
this.inputEl = controllerEl.querySelector('input');
|
|
49
|
-
this.controller = new Controller(this, controllerEl, { position: 'bottom', disabled: true, parents: [this.controllerSelect.form], parentsHide: true }, Anchor.key);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* @editorMethod Editor.Plugin<popup>
|
|
54
|
-
* @description Displays a popup and gives focus to the input field.
|
|
55
|
-
*/
|
|
56
|
-
show() {
|
|
57
|
-
this.controller.open((this._range = this.selection.getRange()));
|
|
58
|
-
_w.setTimeout(() => {
|
|
59
|
-
this.inputEl.focus();
|
|
60
|
-
}, 0);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* @editorMethod Editor.component
|
|
65
|
-
* @description Executes the method that is called when a component of a plugin is selected.
|
|
66
|
-
* @param {HTMLElement} target Target component element
|
|
67
|
-
*/
|
|
68
|
-
select(target) {
|
|
69
|
-
this._element = target;
|
|
70
|
-
this.displayId.textContent = target.getAttribute('id');
|
|
71
|
-
this.controllerSelect.open(target);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* @editorMethod Editor.Component
|
|
76
|
-
* @description Called when a container is deselected.
|
|
77
|
-
*/
|
|
78
|
-
deselect() {
|
|
79
|
-
this._init();
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* @editorMethod Modules.Controller
|
|
84
|
-
* @description Executes the method that is called when a button is clicked in the "controller".
|
|
85
|
-
* @param {HTMLButtonElement} target Target button element
|
|
86
|
-
*/
|
|
87
|
-
controllerAction(target) {
|
|
88
|
-
const command = target.getAttribute('data-command');
|
|
89
|
-
if (!command) return;
|
|
90
|
-
const currentElement = this._element;
|
|
91
|
-
|
|
92
|
-
switch (command) {
|
|
93
|
-
case 'submit': {
|
|
94
|
-
if (!currentElement) {
|
|
95
|
-
const id = this.inputEl.value.trim();
|
|
96
|
-
if (!id) {
|
|
97
|
-
this.inputEl.focus();
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
const a = dom.utils.createElement('A', {
|
|
102
|
-
id,
|
|
103
|
-
'data-se-anchor': this.inputEl.value,
|
|
104
|
-
'data-se-non-link': 'true',
|
|
105
|
-
contenteditable: 'false',
|
|
106
|
-
class: 'se-component se-inline-component'
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
this.component.insert(a, { skipCharCount: false, skipSelection: true, skipHistory: false });
|
|
110
|
-
|
|
111
|
-
const r = this.selection.getNearRange(a);
|
|
112
|
-
if (r) {
|
|
113
|
-
this.selection.setRange(r.container, r.offset, r.container, r.offset);
|
|
114
|
-
} else {
|
|
115
|
-
this.component.select(a, Anchor.key);
|
|
116
|
-
}
|
|
117
|
-
this._init();
|
|
118
|
-
} else {
|
|
119
|
-
this.controller.close();
|
|
120
|
-
currentElement.id = this.inputEl.value;
|
|
121
|
-
this.select(currentElement);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
this.
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
*
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
this.
|
|
172
|
-
this.
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
1
|
+
import EditorInjector from '../../editorInjector';
|
|
2
|
+
import { Controller } from '../../modules';
|
|
3
|
+
import { dom, env } from '../../helper';
|
|
4
|
+
|
|
5
|
+
const { _w } = env;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @class
|
|
9
|
+
* @description Anchor plugin
|
|
10
|
+
* - Allows you to create, edit, and delete elements that act as anchors (bookmarks) within a document.
|
|
11
|
+
*/
|
|
12
|
+
class Anchor extends EditorInjector {
|
|
13
|
+
static key = 'anchor';
|
|
14
|
+
static type = 'popup';
|
|
15
|
+
static className = '';
|
|
16
|
+
/**
|
|
17
|
+
* @this {Anchor}
|
|
18
|
+
* @param {HTMLElement} node - The node to check.
|
|
19
|
+
* @returns {HTMLElement|null} Returns a node if the node is a valid component.
|
|
20
|
+
*/
|
|
21
|
+
static component(node) {
|
|
22
|
+
return dom.check.isAnchor(node) && node.hasAttribute('id') && node.hasAttribute('data-se-anchor') ? node : null;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* @constructor
|
|
27
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
28
|
+
*/
|
|
29
|
+
constructor(editor) {
|
|
30
|
+
super(editor);
|
|
31
|
+
// plugin basic properties
|
|
32
|
+
this.title = this.lang.anchor;
|
|
33
|
+
this.icon = 'bookmark_anchor';
|
|
34
|
+
|
|
35
|
+
// members
|
|
36
|
+
const parser = new DOMParser();
|
|
37
|
+
const svgDoc = parser.parseFromString(this.icons.bookmark_anchor, 'image/svg+xml');
|
|
38
|
+
this.bookmarkIcon = svgDoc.documentElement;
|
|
39
|
+
this._element = null;
|
|
40
|
+
this._range = null;
|
|
41
|
+
|
|
42
|
+
// controller
|
|
43
|
+
const controllerSelectEl = CreateHTML_controller_select(this);
|
|
44
|
+
this.displayId = controllerSelectEl.querySelector('.se-controller-display');
|
|
45
|
+
this.controllerSelect = new Controller(this, controllerSelectEl, { position: 'bottom', disabled: true }, Anchor.key);
|
|
46
|
+
|
|
47
|
+
const controllerEl = CreateHTML_controller(this);
|
|
48
|
+
this.inputEl = controllerEl.querySelector('input');
|
|
49
|
+
this.controller = new Controller(this, controllerEl, { position: 'bottom', disabled: true, parents: [this.controllerSelect.form], parentsHide: true }, Anchor.key);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @editorMethod Editor.Plugin<popup>
|
|
54
|
+
* @description Displays a popup and gives focus to the input field.
|
|
55
|
+
*/
|
|
56
|
+
show() {
|
|
57
|
+
this.controller.open((this._range = this.selection.getRange()));
|
|
58
|
+
_w.setTimeout(() => {
|
|
59
|
+
this.inputEl.focus();
|
|
60
|
+
}, 0);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @editorMethod Editor.component
|
|
65
|
+
* @description Executes the method that is called when a component of a plugin is selected.
|
|
66
|
+
* @param {HTMLElement} target Target component element
|
|
67
|
+
*/
|
|
68
|
+
select(target) {
|
|
69
|
+
this._element = target;
|
|
70
|
+
this.displayId.textContent = target.getAttribute('id');
|
|
71
|
+
this.controllerSelect.open(target);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @editorMethod Editor.Component
|
|
76
|
+
* @description Called when a container is deselected.
|
|
77
|
+
*/
|
|
78
|
+
deselect() {
|
|
79
|
+
this._init();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @editorMethod Modules.Controller
|
|
84
|
+
* @description Executes the method that is called when a button is clicked in the "controller".
|
|
85
|
+
* @param {HTMLButtonElement} target Target button element
|
|
86
|
+
*/
|
|
87
|
+
controllerAction(target) {
|
|
88
|
+
const command = target.getAttribute('data-command');
|
|
89
|
+
if (!command) return;
|
|
90
|
+
const currentElement = this._element;
|
|
91
|
+
|
|
92
|
+
switch (command) {
|
|
93
|
+
case 'submit': {
|
|
94
|
+
if (!currentElement) {
|
|
95
|
+
const id = this.inputEl.value.trim();
|
|
96
|
+
if (!id) {
|
|
97
|
+
this.inputEl.focus();
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const a = dom.utils.createElement('A', {
|
|
102
|
+
id,
|
|
103
|
+
'data-se-anchor': this.inputEl.value,
|
|
104
|
+
'data-se-non-link': 'true',
|
|
105
|
+
contenteditable: 'false',
|
|
106
|
+
class: 'se-component se-inline-component'
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
this.component.insert(a, { skipCharCount: false, skipSelection: true, skipHistory: false });
|
|
110
|
+
|
|
111
|
+
const r = this.selection.getNearRange(a);
|
|
112
|
+
if (r) {
|
|
113
|
+
this.selection.setRange(r.container, r.offset, r.container, r.offset);
|
|
114
|
+
} else {
|
|
115
|
+
this.component.select(a, Anchor.key);
|
|
116
|
+
}
|
|
117
|
+
this._init();
|
|
118
|
+
} else {
|
|
119
|
+
this.controller.close();
|
|
120
|
+
currentElement.id = this.inputEl.value;
|
|
121
|
+
this.select(currentElement);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
this.controller.close();
|
|
125
|
+
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
case 'cancel': {
|
|
129
|
+
this.controller.close(!currentElement);
|
|
130
|
+
if (this._range) {
|
|
131
|
+
this.selection.setRange(this._range);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
this._init();
|
|
135
|
+
if (currentElement) {
|
|
136
|
+
this.select(currentElement);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
141
|
+
case 'edit': {
|
|
142
|
+
this.inputEl.value = this.displayId.textContent;
|
|
143
|
+
this.controllerSelect.hide();
|
|
144
|
+
this.controller.open(currentElement);
|
|
145
|
+
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
case 'delete': {
|
|
149
|
+
const r = this.selection.getNearRange(currentElement);
|
|
150
|
+
|
|
151
|
+
dom.utils.removeItem(currentElement);
|
|
152
|
+
this.controllerSelect.close(true);
|
|
153
|
+
|
|
154
|
+
if (r) {
|
|
155
|
+
this.selection.setRange(r.container, r.offset, r.container, r.offset);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
this._init();
|
|
159
|
+
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* @private
|
|
167
|
+
* @description Initializes state variables.
|
|
168
|
+
* - called when the popup is closed
|
|
169
|
+
*/
|
|
170
|
+
_init() {
|
|
171
|
+
this._element = null;
|
|
172
|
+
this._range = null;
|
|
173
|
+
this.inputEl.value = '';
|
|
174
|
+
this.displayId.textContent = '';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
function CreateHTML_controller({ lang, icons }) {
|
|
179
|
+
const html = /*html*/ `
|
|
180
|
+
<div class="se-arrow se-arrow-up"></div>
|
|
181
|
+
<form>
|
|
182
|
+
<div class="se-controller-display">${lang.id}</div>
|
|
183
|
+
<div class="se-btn-group se-form-group">
|
|
184
|
+
<input type="text" required />
|
|
185
|
+
<button type="submit" data-command="submit" class="se-btn se-tooltip se-btn-success">
|
|
186
|
+
${icons.checked}
|
|
187
|
+
<span class="se-tooltip-inner"><span class="se-tooltip-text">${lang.save}</span></span>
|
|
188
|
+
</button>
|
|
189
|
+
<button type="button" data-command="cancel" class="se-btn se-tooltip se-btn-danger">
|
|
190
|
+
${icons.cancel}
|
|
191
|
+
<span class="se-tooltip-inner"><span class="se-tooltip-text">${lang.cancel}</span></span>
|
|
192
|
+
</button>
|
|
193
|
+
</div>
|
|
194
|
+
</form>
|
|
195
|
+
`;
|
|
196
|
+
|
|
197
|
+
return dom.utils.createElement('DIV', { class: 'se-controller se-controller-simple-input' }, html);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function CreateHTML_controller_select({ lang, icons }) {
|
|
201
|
+
const html = /*html*/ `
|
|
202
|
+
<div class="se-arrow se-arrow-up"></div>
|
|
203
|
+
<div class="link-content">
|
|
204
|
+
<div class="se-controller-display"></div>
|
|
205
|
+
<div class="se-btn-group">
|
|
206
|
+
<button type="button" data-command="edit" tabindex="-1" class="se-btn se-tooltip">
|
|
207
|
+
${icons.edit}
|
|
208
|
+
<span class="se-tooltip-inner">
|
|
209
|
+
<span class="se-tooltip-text">${lang.edit}</span>
|
|
210
|
+
</span>
|
|
211
|
+
</button>
|
|
212
|
+
<button type="button" data-command="delete" tabindex="-1" class="se-btn se-tooltip">
|
|
213
|
+
${icons.delete}
|
|
214
|
+
<span class="se-tooltip-inner">
|
|
215
|
+
<span class="se-tooltip-text">${lang.remove}</span>
|
|
216
|
+
</span>
|
|
217
|
+
</button>
|
|
218
|
+
</div>
|
|
219
|
+
</div>`;
|
|
220
|
+
|
|
221
|
+
return dom.utils.createElement('DIV', { class: 'se-controller se-controller-link' }, html);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export default Anchor;
|