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,98 +1,98 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Shortcuts class
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import { keyCodeMap } from '../../helper';
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @typedef {Omit<Shortcuts & Partial<__se__EditorInjector>, 'shortcuts'>} ShortcutsThis
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @typedef {Object} ShortcutInfo
|
|
13
|
-
* @property {boolean} c - Whether the [Ctrl, Command] key is pressed.
|
|
14
|
-
* @property {boolean} s - Whether the [Shift] key is pressed.
|
|
15
|
-
* @property {boolean} space - Whether the [Space] key is pressed.
|
|
16
|
-
* @property {boolean} enter - Whether the Enter key is pressed.
|
|
17
|
-
* @property {string} command - The command key. (e.g. "bold")
|
|
18
|
-
* @property {boolean} edge - Whether the cursor is at the end of the line.
|
|
19
|
-
* @property {string=} key - The key pressed (e.g., "1.").
|
|
20
|
-
* @property {string=} keyCode - The keyEvent.code.
|
|
21
|
-
* @property {string|((...args: *) => *)=} method - A plugin's "shortcut" method that is called instead of the default "editor.run" method.
|
|
22
|
-
* @property {string} plugin - The plugin name.
|
|
23
|
-
* @property {string} type - Plugin's type. ("command", "dropdown", "modal", "browser", "input", "field", "popup").
|
|
24
|
-
* @property {Node} button - The plugin command button.
|
|
25
|
-
* @property {Array<string>} r - An array of key codes generated with the reverseButtons option, used to reverse the action for a specific key combination.
|
|
26
|
-
* @property {string} textTrigger - Whether the event was triggered by a text input (e.g., mention like @ab).
|
|
27
|
-
*/
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* @constructor
|
|
31
|
-
* @this {ShortcutsThis}
|
|
32
|
-
* @description Shortcuts class
|
|
33
|
-
* @param {__se__EditorCore} editor - The root editor instance
|
|
34
|
-
*/
|
|
35
|
-
function Shortcuts(editor) {
|
|
36
|
-
this.editor = editor;
|
|
37
|
-
this.isDisabled = false;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
Shortcuts.prototype = {
|
|
41
|
-
/**
|
|
42
|
-
* @this {ShortcutsThis}
|
|
43
|
-
* @description If there is a shortcut function, run it.
|
|
44
|
-
* @param {KeyboardEvent} event Keyboard event object
|
|
45
|
-
* @param {boolean} ctrl Whether the Ctrl key is pressed
|
|
46
|
-
* @param {boolean} shift Whether the Shift key is pressed
|
|
47
|
-
* @param {string} keyCode The keyEvent.code.
|
|
48
|
-
* @param {string} text The text content of the key
|
|
49
|
-
* @param {boolean} edge Whether the cursor is at the end of the line
|
|
50
|
-
* @param {HTMLElement} line The current line node
|
|
51
|
-
* @param {Range} range The current range object
|
|
52
|
-
* @returns {boolean} Whether to execute shortcuts
|
|
53
|
-
*/
|
|
54
|
-
command(event, ctrl, shift, keyCode, text, edge, line, range) {
|
|
55
|
-
if (this.isDisabled) return false;
|
|
56
|
-
|
|
57
|
-
/** @type {ShortcutInfo} */
|
|
58
|
-
let info = null;
|
|
59
|
-
|
|
60
|
-
if (ctrl) {
|
|
61
|
-
info = this.editor.shortcutsKeyMap.get(keyCode + (shift ? '1000' : ''));
|
|
62
|
-
} else {
|
|
63
|
-
info = this.editor.shortcutsKeyMap.get(text) || this.editor.shortcutsKeyMap.get(text + event.key);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (!info || (!shift && info.s) || (info.space && !keyCodeMap.isSpace(keyCode)) || (info.enter && !keyCodeMap.isEnter(keyCode)) || (info.textTrigger && !event.key.trim()) || (info.edge && !edge)) return false;
|
|
67
|
-
|
|
68
|
-
if (info.plugin && typeof info.method === 'string') {
|
|
69
|
-
this.editor.plugins[info.plugin][info.method]?.({ range, line, info, event, keyCode });
|
|
70
|
-
} else if (typeof info.method === 'function') {
|
|
71
|
-
info.method({ range, line, info, event, keyCode, editor: this.editor });
|
|
72
|
-
} else {
|
|
73
|
-
this.editor.run(info.command, info.type, info.button);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
return true;
|
|
77
|
-
},
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* @this {ShortcutsThis}
|
|
81
|
-
* @description Disable the shortcut activation.
|
|
82
|
-
*/
|
|
83
|
-
disable() {
|
|
84
|
-
this.isDisabled = true;
|
|
85
|
-
},
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* @this {ShortcutsThis}
|
|
89
|
-
* @description Enable the shortcut activation.
|
|
90
|
-
*/
|
|
91
|
-
enable() {
|
|
92
|
-
this.isDisabled = false;
|
|
93
|
-
},
|
|
94
|
-
|
|
95
|
-
constructor: Shortcuts
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
export default Shortcuts;
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Shortcuts class
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { keyCodeMap } from '../../helper';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @typedef {Omit<Shortcuts & Partial<__se__EditorInjector>, 'shortcuts'>} ShortcutsThis
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* @typedef {Object} ShortcutInfo
|
|
13
|
+
* @property {boolean} c - Whether the [Ctrl, Command] key is pressed.
|
|
14
|
+
* @property {boolean} s - Whether the [Shift] key is pressed.
|
|
15
|
+
* @property {boolean} space - Whether the [Space] key is pressed.
|
|
16
|
+
* @property {boolean} enter - Whether the Enter key is pressed.
|
|
17
|
+
* @property {string} command - The command key. (e.g. "bold")
|
|
18
|
+
* @property {boolean} edge - Whether the cursor is at the end of the line.
|
|
19
|
+
* @property {string=} key - The key pressed (e.g., "1.").
|
|
20
|
+
* @property {string=} keyCode - The keyEvent.code.
|
|
21
|
+
* @property {string|((...args: *) => *)=} method - A plugin's "shortcut" method that is called instead of the default "editor.run" method.
|
|
22
|
+
* @property {string} plugin - The plugin name.
|
|
23
|
+
* @property {string} type - Plugin's type. ("command", "dropdown", "modal", "browser", "input", "field", "popup").
|
|
24
|
+
* @property {Node} button - The plugin command button.
|
|
25
|
+
* @property {Array<string>} r - An array of key codes generated with the reverseButtons option, used to reverse the action for a specific key combination.
|
|
26
|
+
* @property {string} textTrigger - Whether the event was triggered by a text input (e.g., mention like @ab).
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @constructor
|
|
31
|
+
* @this {ShortcutsThis}
|
|
32
|
+
* @description Shortcuts class
|
|
33
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
34
|
+
*/
|
|
35
|
+
function Shortcuts(editor) {
|
|
36
|
+
this.editor = editor;
|
|
37
|
+
this.isDisabled = false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Shortcuts.prototype = {
|
|
41
|
+
/**
|
|
42
|
+
* @this {ShortcutsThis}
|
|
43
|
+
* @description If there is a shortcut function, run it.
|
|
44
|
+
* @param {KeyboardEvent} event Keyboard event object
|
|
45
|
+
* @param {boolean} ctrl Whether the Ctrl key is pressed
|
|
46
|
+
* @param {boolean} shift Whether the Shift key is pressed
|
|
47
|
+
* @param {string} keyCode The keyEvent.code.
|
|
48
|
+
* @param {string} text The text content of the key
|
|
49
|
+
* @param {boolean} edge Whether the cursor is at the end of the line
|
|
50
|
+
* @param {HTMLElement} line The current line node
|
|
51
|
+
* @param {Range} range The current range object
|
|
52
|
+
* @returns {boolean} Whether to execute shortcuts
|
|
53
|
+
*/
|
|
54
|
+
command(event, ctrl, shift, keyCode, text, edge, line, range) {
|
|
55
|
+
if (this.isDisabled) return false;
|
|
56
|
+
|
|
57
|
+
/** @type {ShortcutInfo} */
|
|
58
|
+
let info = null;
|
|
59
|
+
|
|
60
|
+
if (ctrl) {
|
|
61
|
+
info = this.editor.shortcutsKeyMap.get(keyCode + (shift ? '1000' : ''));
|
|
62
|
+
} else {
|
|
63
|
+
info = this.editor.shortcutsKeyMap.get(text) || this.editor.shortcutsKeyMap.get(text + event.key);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (!info || (!shift && info.s) || (info.space && !keyCodeMap.isSpace(keyCode)) || (info.enter && !keyCodeMap.isEnter(keyCode)) || (info.textTrigger && !event.key.trim()) || (info.edge && !edge)) return false;
|
|
67
|
+
|
|
68
|
+
if (info.plugin && typeof info.method === 'string') {
|
|
69
|
+
this.editor.plugins[info.plugin][info.method]?.({ range, line, info, event, keyCode });
|
|
70
|
+
} else if (typeof info.method === 'function') {
|
|
71
|
+
info.method({ range, line, info, event, keyCode, editor: this.editor });
|
|
72
|
+
} else {
|
|
73
|
+
this.editor.run(info.command, info.type, info.button);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return true;
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* @this {ShortcutsThis}
|
|
81
|
+
* @description Disable the shortcut activation.
|
|
82
|
+
*/
|
|
83
|
+
disable() {
|
|
84
|
+
this.isDisabled = true;
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @this {ShortcutsThis}
|
|
89
|
+
* @description Enable the shortcut activation.
|
|
90
|
+
*/
|
|
91
|
+
enable() {
|
|
92
|
+
this.isDisabled = false;
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
constructor: Shortcuts
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export default Shortcuts;
|