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,55 +1,81 @@
|
|
|
1
1
|
import EditorInjector from '../../editorInjector';
|
|
2
2
|
import { Modal, Controller, ModalAnchorEditor } from '../../modules';
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
3
|
+
import { dom, numbers } from '../../helper';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @typedef {Object} LinkPluginOptions
|
|
7
|
+
* @property {boolean} [textToDisplay=true] - Whether to display the link text.
|
|
8
|
+
* @property {boolean} [title=true] - Whether to display the link title.
|
|
9
|
+
* @property {string} [uploadUrl] - The URL endpoint for file uploads.
|
|
10
|
+
* @property {Object<string, string>} [uploadHeaders] - Additional headers for file upload requests.
|
|
11
|
+
* @property {number} [uploadSizeLimit] - The total file upload size limit in bytes.
|
|
12
|
+
* @property {number} [uploadSingleSizeLimit] - The single file upload size limit in bytes.
|
|
13
|
+
* @property {string} [acceptedFormats] - Accepted file formats for link uploads.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @class
|
|
18
|
+
* @description Link plugin.
|
|
19
|
+
* - This plugin provides link insertion and editing functionality within the editor.
|
|
20
|
+
* - It also supports file uploads if an upload URL is provided.
|
|
21
|
+
*/
|
|
22
|
+
class Link extends EditorInjector {
|
|
23
|
+
static key = 'link';
|
|
24
|
+
static type = 'modal';
|
|
25
|
+
static className = 'se-icon-flip-rtl';
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @constructor
|
|
29
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
30
|
+
* @param {LinkPluginOptions} pluginOptions
|
|
31
|
+
*/
|
|
32
|
+
constructor(editor, pluginOptions) {
|
|
33
|
+
// plugin bisic properties
|
|
34
|
+
super(editor);
|
|
35
|
+
this.title = this.lang.link;
|
|
36
|
+
this.icon = 'link';
|
|
37
|
+
|
|
38
|
+
// define plugin options
|
|
39
|
+
pluginOptions.textToDisplay = true;
|
|
40
|
+
pluginOptions.title = true;
|
|
41
|
+
|
|
42
|
+
// create HTML
|
|
43
|
+
const modalEl = CreateHTML_modal(editor);
|
|
44
|
+
const controllerEl = CreateHTML_controller(editor);
|
|
45
|
+
|
|
46
|
+
// members
|
|
47
|
+
const uploadUrl = typeof pluginOptions.uploadUrl === 'string' ? pluginOptions.uploadUrl : null;
|
|
48
|
+
this.isUpdateState = false;
|
|
49
|
+
this.pluginOptions = {
|
|
50
|
+
...pluginOptions,
|
|
51
|
+
uploadUrl,
|
|
52
|
+
uploadHeaders: pluginOptions.uploadHeaders || null,
|
|
53
|
+
uploadSizeLimit: numbers.get(pluginOptions.uploadSizeLimit, 0),
|
|
54
|
+
uploadSingleSizeLimit: numbers.get(pluginOptions.uploadSingleSizeLimit, 0),
|
|
55
|
+
acceptedFormats: typeof pluginOptions.acceptedFormats === 'string' ? pluginOptions.acceptedFormats.trim() : null,
|
|
56
|
+
enableFileUpload: !!uploadUrl
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// modules
|
|
60
|
+
this.anchor = new ModalAnchorEditor(this, modalEl, this.pluginOptions);
|
|
61
|
+
this.modal = new Modal(this, modalEl);
|
|
62
|
+
this.controller = new Controller(this, controllerEl, { position: 'bottom', disabled: false });
|
|
63
|
+
}
|
|
64
|
+
|
|
42
65
|
/**
|
|
43
|
-
* @
|
|
66
|
+
* @editorMethod Editor.EventManager
|
|
67
|
+
* @description Executes the method that is called whenever the cursor position changes.
|
|
68
|
+
* @param {?HTMLElement=} element - Node element where the cursor is currently located
|
|
69
|
+
* @returns {boolean} - Whether the plugin is active
|
|
44
70
|
*/
|
|
45
71
|
active(element) {
|
|
46
|
-
if (
|
|
72
|
+
if (dom.check.isAnchor(element) && !element.hasAttribute('data-se-non-link')) {
|
|
47
73
|
const tempLink = this.controller.form.querySelector('a');
|
|
48
74
|
tempLink.href = element.href;
|
|
49
75
|
tempLink.title = element.textContent;
|
|
50
76
|
tempLink.textContent = element.textContent;
|
|
51
77
|
|
|
52
|
-
|
|
78
|
+
dom.utils.addClass(element, 'on');
|
|
53
79
|
|
|
54
80
|
this.anchor.set(element);
|
|
55
81
|
this.controller.open(element, null, { isWWTarget: false, initMethod: null, addOffset: null });
|
|
@@ -60,27 +86,30 @@ Link.prototype = {
|
|
|
60
86
|
this.controller.close();
|
|
61
87
|
|
|
62
88
|
return false;
|
|
63
|
-
}
|
|
89
|
+
}
|
|
64
90
|
|
|
65
91
|
/**
|
|
66
|
-
* @
|
|
92
|
+
* @editorMethod Modules.Modal
|
|
93
|
+
* @description Executes the method that is called when a "Modal" module's is opened.
|
|
67
94
|
*/
|
|
68
95
|
open() {
|
|
69
96
|
this.modal.open();
|
|
70
|
-
}
|
|
97
|
+
}
|
|
71
98
|
|
|
72
99
|
/**
|
|
73
|
-
* @
|
|
74
|
-
* @
|
|
100
|
+
* @editorMethod Modules.Modal
|
|
101
|
+
* @description Executes the method that is called when a plugin's modal is opened.
|
|
102
|
+
* @param {boolean} isUpdate "Indicates whether the modal is for editing an existing component (true) or registering a new one (false)."
|
|
75
103
|
*/
|
|
76
104
|
on(isUpdate) {
|
|
77
105
|
this.isUpdateState = isUpdate;
|
|
78
106
|
this.anchor.on(isUpdate);
|
|
79
|
-
}
|
|
107
|
+
}
|
|
80
108
|
|
|
81
109
|
/**
|
|
82
|
-
* @
|
|
83
|
-
* @
|
|
110
|
+
* @editorMethod Modules.Modal
|
|
111
|
+
* @description This function is called when a form within a modal window is "submit".
|
|
112
|
+
* @returns {boolean} Success or failure
|
|
84
113
|
*/
|
|
85
114
|
modalAction() {
|
|
86
115
|
const oA = this.anchor.create(false);
|
|
@@ -89,9 +118,9 @@ Link.prototype = {
|
|
|
89
118
|
if (!this.isUpdateState) {
|
|
90
119
|
const selectedFormats = this.format.getLines();
|
|
91
120
|
if (selectedFormats.length > 1) {
|
|
92
|
-
if (!this.html.insertNode(
|
|
121
|
+
if (!this.html.insertNode(dom.utils.createElement(selectedFormats[0].nodeName, null, oA), { afterNode: null, skipCharCount: false })) return true;
|
|
93
122
|
} else {
|
|
94
|
-
if (!this.html.insertNode(oA, null, false)) return true;
|
|
123
|
+
if (!this.html.insertNode(oA, { afterNode: null, skipCharCount: false })) return true;
|
|
95
124
|
}
|
|
96
125
|
|
|
97
126
|
this.selection.setRange(oA.childNodes[0], 0, oA.childNodes[0], oA.textContent.length);
|
|
@@ -102,20 +131,21 @@ Link.prototype = {
|
|
|
102
131
|
}
|
|
103
132
|
|
|
104
133
|
return true;
|
|
105
|
-
}
|
|
134
|
+
}
|
|
106
135
|
|
|
107
136
|
/**
|
|
108
|
-
* @
|
|
137
|
+
* @editorMethod Modules.Modal
|
|
138
|
+
* @description This function is called before the modal window is opened, but before it is closed.
|
|
109
139
|
*/
|
|
110
140
|
init() {
|
|
111
141
|
this.controller.close();
|
|
112
142
|
this.anchor.init();
|
|
113
|
-
}
|
|
143
|
+
}
|
|
114
144
|
|
|
115
145
|
/**
|
|
116
|
-
* @
|
|
117
|
-
* @
|
|
118
|
-
* @
|
|
146
|
+
* @editorMethod Modules.Controller
|
|
147
|
+
* @description Executes the method that is called when a button is clicked in the "controller".
|
|
148
|
+
* @param {HTMLButtonElement} target Target button element
|
|
119
149
|
*/
|
|
120
150
|
controllerAction(target) {
|
|
121
151
|
const command = target.getAttribute('data-command');
|
|
@@ -123,14 +153,14 @@ Link.prototype = {
|
|
|
123
153
|
if (/update/.test(command)) {
|
|
124
154
|
this.modal.open();
|
|
125
155
|
} else if (/unlink/.test(command)) {
|
|
126
|
-
const sc =
|
|
156
|
+
const sc = dom.query.getEdgeChild(
|
|
127
157
|
this.controller.currentTarget,
|
|
128
158
|
function (current) {
|
|
129
159
|
return current.childNodes.length === 0 || current.nodeType === 3;
|
|
130
160
|
},
|
|
131
161
|
false
|
|
132
162
|
);
|
|
133
|
-
const ec =
|
|
163
|
+
const ec = dom.query.getEdgeChild(
|
|
134
164
|
this.controller.currentTarget,
|
|
135
165
|
function (current) {
|
|
136
166
|
return current.childNodes.length === 0 || current.nodeType === 3;
|
|
@@ -138,25 +168,24 @@ Link.prototype = {
|
|
|
138
168
|
true
|
|
139
169
|
);
|
|
140
170
|
this.selection.setRange(sc, 0, ec, ec.textContent.length);
|
|
141
|
-
this.format.
|
|
171
|
+
this.format.applyInlineElement(null, { stylesToModify: null, nodesToRemove: ['A'], strictRemove: false });
|
|
142
172
|
} else {
|
|
143
173
|
/** delete */
|
|
144
|
-
|
|
174
|
+
dom.utils.removeItem(this.controller.currentTarget);
|
|
145
175
|
this.controller.currentTarget = null;
|
|
146
176
|
this.editor.focus();
|
|
147
177
|
this.history.push(false);
|
|
148
178
|
}
|
|
149
|
-
}
|
|
179
|
+
}
|
|
150
180
|
|
|
151
181
|
/**
|
|
152
|
-
* @
|
|
182
|
+
* @editorMethod Modules.Controller
|
|
183
|
+
* @description This function is called before the "controller" before it is closed.
|
|
153
184
|
*/
|
|
154
185
|
close() {
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
constructor: Link
|
|
159
|
-
};
|
|
186
|
+
dom.utils.removeClass(this.controller.currentTarget, 'on');
|
|
187
|
+
}
|
|
188
|
+
}
|
|
160
189
|
|
|
161
190
|
function CreateHTML_modal({ lang, icons }) {
|
|
162
191
|
const html = /*html*/ `
|
|
@@ -175,7 +204,7 @@ function CreateHTML_modal({ lang, icons }) {
|
|
|
175
204
|
</div>
|
|
176
205
|
</form>`;
|
|
177
206
|
|
|
178
|
-
return
|
|
207
|
+
return dom.utils.createElement('DIV', { class: 'se-modal-content' }, html);
|
|
179
208
|
}
|
|
180
209
|
|
|
181
210
|
function CreateHTML_controller({ lang, icons }) {
|
|
@@ -205,7 +234,7 @@ function CreateHTML_controller({ lang, icons }) {
|
|
|
205
234
|
</div>
|
|
206
235
|
</div>`;
|
|
207
236
|
|
|
208
|
-
return
|
|
237
|
+
return dom.utils.createElement('DIV', { class: 'se-controller se-controller-link' }, html);
|
|
209
238
|
}
|
|
210
239
|
|
|
211
240
|
export default Link;
|