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
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
export default Audio_;
|
|
2
|
+
export type AudioInfo_audio = import('../../events').AudioInfo;
|
|
3
|
+
export type AudioPluginOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* - The default width of the audio tag (e.g., "300px").
|
|
6
|
+
*/
|
|
7
|
+
defaultWidth?: string;
|
|
8
|
+
/**
|
|
9
|
+
* - The default height of the audio tag (e.g., "150px").
|
|
10
|
+
*/
|
|
11
|
+
defaultHeight?: string;
|
|
12
|
+
/**
|
|
13
|
+
* - Whether to create a file input element.
|
|
14
|
+
*/
|
|
15
|
+
createFileInput?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* - Whether to create a URL input element (default is true if file input is not created).
|
|
18
|
+
*/
|
|
19
|
+
createUrlInput?: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* - The URL to which files will be uploaded.
|
|
22
|
+
*/
|
|
23
|
+
uploadUrl?: string;
|
|
24
|
+
/**
|
|
25
|
+
* - Headers to include in the file upload request.
|
|
26
|
+
*/
|
|
27
|
+
uploadHeaders?: {
|
|
28
|
+
[x: string]: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* - The total upload size limit in bytes.
|
|
32
|
+
*/
|
|
33
|
+
uploadSizeLimit?: number;
|
|
34
|
+
/**
|
|
35
|
+
* - The single file size limit in bytes.
|
|
36
|
+
*/
|
|
37
|
+
uploadSingleSizeLimit?: number;
|
|
38
|
+
/**
|
|
39
|
+
* - Whether to allow multiple file uploads.
|
|
40
|
+
*/
|
|
41
|
+
allowMultiple?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* - Accepted file formats (default is "audio/*").
|
|
44
|
+
*/
|
|
45
|
+
acceptedFormats?: string;
|
|
46
|
+
/**
|
|
47
|
+
* - Additional attributes to set on the audio tag.
|
|
48
|
+
*/
|
|
49
|
+
audioTagAttributes?: {
|
|
50
|
+
[x: string]: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* @typedef {import('../../events').AudioInfo} AudioInfo_audio
|
|
55
|
+
*/
|
|
56
|
+
/**
|
|
57
|
+
* @typedef {Object} AudioPluginOptions
|
|
58
|
+
* @property {string} [defaultWidth="300px"] - The default width of the audio tag (e.g., "300px").
|
|
59
|
+
* @property {string} [defaultHeight="150px"] - The default height of the audio tag (e.g., "150px").
|
|
60
|
+
* @property {boolean} [createFileInput] - Whether to create a file input element.
|
|
61
|
+
* @property {boolean} [createUrlInput] - Whether to create a URL input element (default is true if file input is not created).
|
|
62
|
+
* @property {string} [uploadUrl] - The URL to which files will be uploaded.
|
|
63
|
+
* @property {Object<string, string>} [uploadHeaders] - Headers to include in the file upload request.
|
|
64
|
+
* @property {number} [uploadSizeLimit] - The total upload size limit in bytes.
|
|
65
|
+
* @property {number} [uploadSingleSizeLimit] - The single file size limit in bytes.
|
|
66
|
+
* @property {boolean} [allowMultiple] - Whether to allow multiple file uploads.
|
|
67
|
+
* @property {string} [acceptedFormats="audio/*"] - Accepted file formats (default is "audio/*").
|
|
68
|
+
* @property {Object<string, string>} [audioTagAttributes] - Additional attributes to set on the audio tag.
|
|
69
|
+
*/
|
|
70
|
+
/**
|
|
71
|
+
* @class
|
|
72
|
+
* @description Audio modal plugin.
|
|
73
|
+
*/
|
|
74
|
+
declare class Audio_ extends EditorInjector {
|
|
75
|
+
static key: string;
|
|
76
|
+
static type: string;
|
|
77
|
+
static className: string;
|
|
78
|
+
/**
|
|
79
|
+
* @this {Audio_}
|
|
80
|
+
* @param {HTMLElement} node - The node to check.
|
|
81
|
+
* @returns {HTMLElement|null} Returns a node if the node is a valid component.
|
|
82
|
+
*/
|
|
83
|
+
static component(this: Audio_, node: HTMLElement): HTMLElement | null;
|
|
84
|
+
/**
|
|
85
|
+
* @constructor
|
|
86
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
87
|
+
* @param {AudioPluginOptions} pluginOptions
|
|
88
|
+
*/
|
|
89
|
+
constructor(editor: __se__EditorCore, pluginOptions: AudioPluginOptions);
|
|
90
|
+
title: any;
|
|
91
|
+
icon: string;
|
|
92
|
+
pluginOptions: {
|
|
93
|
+
defaultWidth: string;
|
|
94
|
+
defaultHeight: string;
|
|
95
|
+
createFileInput: boolean;
|
|
96
|
+
createUrlInput: boolean;
|
|
97
|
+
uploadUrl: string;
|
|
98
|
+
uploadHeaders: {
|
|
99
|
+
[x: string]: string;
|
|
100
|
+
};
|
|
101
|
+
uploadSizeLimit: number;
|
|
102
|
+
uploadSingleSizeLimit: number;
|
|
103
|
+
allowMultiple: boolean;
|
|
104
|
+
acceptedFormats: string;
|
|
105
|
+
audioTagAttributes: {
|
|
106
|
+
[x: string]: string;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
modal: Modal;
|
|
110
|
+
controller: Controller;
|
|
111
|
+
fileManager: FileManager;
|
|
112
|
+
figure: Figure;
|
|
113
|
+
/** @type {HTMLElement} */
|
|
114
|
+
fileModalWrapper: HTMLElement;
|
|
115
|
+
/** @type {HTMLInputElement} */
|
|
116
|
+
audioInputFile: HTMLInputElement;
|
|
117
|
+
/** @type {HTMLInputElement} */
|
|
118
|
+
audioUrlFile: HTMLInputElement;
|
|
119
|
+
/** @type {HTMLElement} */
|
|
120
|
+
preview: HTMLElement;
|
|
121
|
+
/** @type {HTMLAudioElement} */
|
|
122
|
+
_element: HTMLAudioElement;
|
|
123
|
+
defaultWidth: string;
|
|
124
|
+
defaultHeight: string;
|
|
125
|
+
urlValue: string;
|
|
126
|
+
/**
|
|
127
|
+
* @editorMethod Modules.Modal
|
|
128
|
+
* @description Executes the method that is called when a "Modal" module's is opened.
|
|
129
|
+
*/
|
|
130
|
+
open(): void;
|
|
131
|
+
/**
|
|
132
|
+
* @editorMethod Modules.Modal
|
|
133
|
+
* @description Executes the method that is called when a plugin's modal is opened.
|
|
134
|
+
* @param {boolean} isUpdate "Indicates whether the modal is for editing an existing component (true) or registering a new one (false)."
|
|
135
|
+
*/
|
|
136
|
+
on(isUpdate: boolean): void;
|
|
137
|
+
/**
|
|
138
|
+
* @editorMethod Editor.EventManager
|
|
139
|
+
* @description Executes the event function of "paste" or "drop".
|
|
140
|
+
* @param {Object} params { frameContext, event, file }
|
|
141
|
+
* @param {__se__FrameContext} params.frameContext Frame context
|
|
142
|
+
* @param {ClipboardEvent} params.event Event object
|
|
143
|
+
* @param {File} params.file File object
|
|
144
|
+
* @returns {boolean} - If return false, the file upload will be canceled
|
|
145
|
+
*/
|
|
146
|
+
onFilePasteAndDrop({ file }: { frameContext: __se__FrameContext; event: ClipboardEvent; file: File }): boolean;
|
|
147
|
+
/**
|
|
148
|
+
* @editorMethod Modules.Modal
|
|
149
|
+
* @description This function is called when a form within a modal window is "submit".
|
|
150
|
+
* @returns {Promise<boolean>} Success or failure
|
|
151
|
+
*/
|
|
152
|
+
modalAction(): Promise<boolean>;
|
|
153
|
+
/**
|
|
154
|
+
* @editorMethod Modules.Modal
|
|
155
|
+
* @description This function is called before the modal window is opened, but before it is closed.
|
|
156
|
+
*/
|
|
157
|
+
init(): void;
|
|
158
|
+
/**
|
|
159
|
+
* @editorMethod Modules.Controller
|
|
160
|
+
* @description Executes the method that is called when a button is clicked in the "controller".
|
|
161
|
+
* @param {HTMLButtonElement} target Target button element
|
|
162
|
+
*/
|
|
163
|
+
controllerAction(target: HTMLButtonElement): void;
|
|
164
|
+
/**
|
|
165
|
+
* @editorMethod Editor.core
|
|
166
|
+
* @description This method is used to validate and preserve the format of the component within the editor.
|
|
167
|
+
* - It ensures that the structure and attributes of the element are maintained and secure.
|
|
168
|
+
* - The method checks if the element is already wrapped in a valid container and updates its attributes if necessary.
|
|
169
|
+
* - If the element isn't properly contained, a new container is created to retain the format.
|
|
170
|
+
* @returns {{query: string, method: (element: HTMLAudioElement) => void}} The format retention object containing the query and method to process the element.
|
|
171
|
+
* - query: The selector query to identify the relevant elements (in this case, 'audio').
|
|
172
|
+
* - method:The function to execute on the element to validate and preserve its format.
|
|
173
|
+
* - The function takes the element as an argument, checks if it is contained correctly, and applies necessary adjustments.
|
|
174
|
+
*/
|
|
175
|
+
retainFormat(): {
|
|
176
|
+
query: string;
|
|
177
|
+
method: (element: HTMLAudioElement) => void;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* @editorMethod Editor.Component
|
|
181
|
+
* @description Executes the method that is called when a component of a plugin is selected.
|
|
182
|
+
* @param {HTMLElement} target Target component element
|
|
183
|
+
*/
|
|
184
|
+
select(target: HTMLElement): void;
|
|
185
|
+
/**
|
|
186
|
+
* @private
|
|
187
|
+
* @description Prepares the component for selection.
|
|
188
|
+
* - Ensures that the controller is properly positioned and initialized.
|
|
189
|
+
* - Prevents duplicate event handling if the component is already selected.
|
|
190
|
+
* @param {HTMLElement} target - The selected element.
|
|
191
|
+
*/
|
|
192
|
+
private _ready;
|
|
193
|
+
/**
|
|
194
|
+
* @editorMethod Editor.Component
|
|
195
|
+
* @description Method to delete a component of a plugin, called by the "FileManager", "Controller" module.
|
|
196
|
+
* @param {HTMLElement=} target Target element, if null current selected element
|
|
197
|
+
* @returns {Promise<void>}
|
|
198
|
+
*/
|
|
199
|
+
destroy(target?: HTMLElement | undefined): Promise<void>;
|
|
200
|
+
/**
|
|
201
|
+
* @private
|
|
202
|
+
* @description Registers uploaded audio files and creates the corresponding audio elements.
|
|
203
|
+
* - Iterates through the uploaded files and inserts them into the editor.
|
|
204
|
+
* @param {AudioInfo_audio} info - Upload metadata, including `isUpdate` flag and `element`.
|
|
205
|
+
* @param {Object<string, *>} response - Server response containing uploaded file details.
|
|
206
|
+
*/
|
|
207
|
+
private _register;
|
|
208
|
+
/**
|
|
209
|
+
* @description Create an "audio" component using the provided files.
|
|
210
|
+
* @param {FileList|File[]} fileList File object list
|
|
211
|
+
* @returns {Promise<boolean>} If return false, the file upload will be canceled
|
|
212
|
+
*/
|
|
213
|
+
submitFile(fileList: FileList | File[]): Promise<boolean>;
|
|
214
|
+
/**
|
|
215
|
+
* @description Create an "audio" component using the provided url.
|
|
216
|
+
* @param {string} url File url
|
|
217
|
+
* @returns {Promise<boolean>}
|
|
218
|
+
*/
|
|
219
|
+
submitURL(url: string): Promise<boolean>;
|
|
220
|
+
/**
|
|
221
|
+
* @private
|
|
222
|
+
* @description Creates or updates an audio component within the editor.
|
|
223
|
+
* - If `isUpdate` is `true`, updates the existing element's `src`.
|
|
224
|
+
* - Otherwise, inserts a new audio component with the given file.
|
|
225
|
+
* @param {HTMLAudioElement} element - The target audio element.
|
|
226
|
+
* @param {string} src - The source URL of the audio file.
|
|
227
|
+
* @param {{name: string, size: number}} file - The file metadata (name, size).
|
|
228
|
+
* @param {boolean} isUpdate - Whether to update an existing element.
|
|
229
|
+
*/
|
|
230
|
+
private _createComp;
|
|
231
|
+
/**
|
|
232
|
+
* @private
|
|
233
|
+
* @description Creates a new `<audio>` element with default attributes.
|
|
234
|
+
* - Applies width, height, and additional attributes from plugin options.
|
|
235
|
+
* @returns {HTMLAudioElement} - The newly created `<audio>` element.
|
|
236
|
+
*/
|
|
237
|
+
private _createAudioTag;
|
|
238
|
+
/**
|
|
239
|
+
* @private
|
|
240
|
+
* @description Sets attributes on an audio element based on plugin options.
|
|
241
|
+
* - Adds the `controls` attribute and applies any custom attributes.
|
|
242
|
+
* @param {HTMLElement} element - The `<audio>` element to modify.
|
|
243
|
+
*/
|
|
244
|
+
private _setTagAttrs;
|
|
245
|
+
/**
|
|
246
|
+
* @private
|
|
247
|
+
* @description Uploads audio files to the server.
|
|
248
|
+
* - Sends a request to the configured upload URL and processes the response.
|
|
249
|
+
* @param {AudioInfo_audio} info - Upload metadata, including `files` and `isUpdate`.
|
|
250
|
+
* @param {FileList|File[]} files - The files to be uploaded.
|
|
251
|
+
*/
|
|
252
|
+
private _serverUpload;
|
|
253
|
+
/**
|
|
254
|
+
* @private
|
|
255
|
+
* @description Handles errors that occur during the audio upload process.
|
|
256
|
+
* - Triggers the `onAudioUploadError` event to allow custom handling of errors.
|
|
257
|
+
* - Displays an error message in the editor's UI.
|
|
258
|
+
* - Logs the error to the console for debugging.
|
|
259
|
+
* @param {Object<string, *>} response - The error response object from the server or upload process.
|
|
260
|
+
* @returns {Promise<void>}
|
|
261
|
+
*/
|
|
262
|
+
private _error;
|
|
263
|
+
#private;
|
|
264
|
+
}
|
|
265
|
+
import EditorInjector from '../../editorInjector';
|
|
266
|
+
import { Modal } from '../../modules';
|
|
267
|
+
import { Controller } from '../../modules';
|
|
268
|
+
import { FileManager } from '../../modules';
|
|
269
|
+
import { Figure } from '../../modules';
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
export default Drawing;
|
|
2
|
+
export type DrawingPluginOptions = {
|
|
3
|
+
/**
|
|
4
|
+
* - The output format of the drawing. Options: "dataurl", "svg".
|
|
5
|
+
*/
|
|
6
|
+
outputFormat?: string;
|
|
7
|
+
/**
|
|
8
|
+
* - Whether to enable format type selection (block vs inline).
|
|
9
|
+
*/
|
|
10
|
+
useFormatType?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* - The default format type, either "block" or "inline".
|
|
13
|
+
*/
|
|
14
|
+
defaultFormatType?: string;
|
|
15
|
+
/**
|
|
16
|
+
* - Whether to maintain the chosen format type after drawing.
|
|
17
|
+
*/
|
|
18
|
+
keepFormatType?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* - The width of the drawing line.
|
|
21
|
+
*/
|
|
22
|
+
lineWidth?: number;
|
|
23
|
+
/**
|
|
24
|
+
* - Whether to reconnect lines when drawing.
|
|
25
|
+
*/
|
|
26
|
+
lineReconnect?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* - The style of the line cap ("butt", "round", or "square").
|
|
29
|
+
*/
|
|
30
|
+
lineCap?: CanvasLineCap;
|
|
31
|
+
/**
|
|
32
|
+
* - The color of the drawing line.
|
|
33
|
+
*/
|
|
34
|
+
lineColor?: string;
|
|
35
|
+
/**
|
|
36
|
+
* - Whether the modal form can be resized.
|
|
37
|
+
*/
|
|
38
|
+
canResize?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* - Whether to maintain the aspect ratio when resizing.
|
|
41
|
+
*/
|
|
42
|
+
maintainRatio?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* - The size configuration for the drawing modal form.
|
|
45
|
+
*/
|
|
46
|
+
formSize?: {
|
|
47
|
+
width?: string;
|
|
48
|
+
height?: string;
|
|
49
|
+
maxWidth?: string;
|
|
50
|
+
maxHeight?: string;
|
|
51
|
+
minWidth?: string;
|
|
52
|
+
minHeight?: string;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* @typedef {Object} DrawingPluginOptions
|
|
57
|
+
* @property {string} [outputFormat="dataurl"] - The output format of the drawing. Options: "dataurl", "svg".
|
|
58
|
+
* @property {boolean} [useFormatType=false] - Whether to enable format type selection (block vs inline).
|
|
59
|
+
* @property {string} [defaultFormatType="block"] - The default format type, either "block" or "inline".
|
|
60
|
+
* @property {boolean} [keepFormatType=false] - Whether to maintain the chosen format type after drawing.
|
|
61
|
+
* @property {number} [lineWidth=5] - The width of the drawing line.
|
|
62
|
+
* @property {boolean} [lineReconnect=false] - Whether to reconnect lines when drawing.
|
|
63
|
+
* @property {CanvasLineCap} [lineCap="round"] - The style of the line cap ("butt", "round", or "square").
|
|
64
|
+
* @property {string} [lineColor=""] - The color of the drawing line.
|
|
65
|
+
* @property {boolean} [canResize=true] - Whether the modal form can be resized.
|
|
66
|
+
* @property {boolean} [maintainRatio=true] - Whether to maintain the aspect ratio when resizing.
|
|
67
|
+
* @property {Object} [formSize={}] - The size configuration for the drawing modal form.
|
|
68
|
+
* @property {string} [formSize.width="750px"] - The width of the modal form.
|
|
69
|
+
* @property {string} [formSize.height="50vh"] - The height of the modal form.
|
|
70
|
+
* @property {string} [formSize.maxWidth=""] - The maximum width of the modal form.
|
|
71
|
+
* @property {string} [formSize.maxHeight=""] - The maximum height of the modal form.
|
|
72
|
+
* @property {string} [formSize.minWidth="150px"] - The minimum width of the modal form.
|
|
73
|
+
* @property {string} [formSize.minHeight="100px"] - The minimum height of the modal form.
|
|
74
|
+
*/
|
|
75
|
+
/**
|
|
76
|
+
* @class
|
|
77
|
+
* @description Drawing modal plugin.
|
|
78
|
+
*/
|
|
79
|
+
declare class Drawing extends EditorInjector {
|
|
80
|
+
static key: string;
|
|
81
|
+
static type: string;
|
|
82
|
+
static className: string;
|
|
83
|
+
/**
|
|
84
|
+
* @constructor
|
|
85
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
86
|
+
* @param {DrawingPluginOptions} pluginOptions
|
|
87
|
+
*/
|
|
88
|
+
constructor(editor: __se__EditorCore, pluginOptions: DrawingPluginOptions);
|
|
89
|
+
title: any;
|
|
90
|
+
icon: string;
|
|
91
|
+
pluginOptions: {
|
|
92
|
+
outputFormat: string;
|
|
93
|
+
useFormatType: boolean;
|
|
94
|
+
defaultFormatType: string;
|
|
95
|
+
keepFormatType: boolean;
|
|
96
|
+
lineWidth: number;
|
|
97
|
+
lineReconnect: boolean;
|
|
98
|
+
lineCap: CanvasLineCap;
|
|
99
|
+
lineColor: string;
|
|
100
|
+
formSize: {
|
|
101
|
+
/**
|
|
102
|
+
* - The width of the modal form.
|
|
103
|
+
*/
|
|
104
|
+
width: string;
|
|
105
|
+
/**
|
|
106
|
+
* - The height of the modal form.
|
|
107
|
+
*/
|
|
108
|
+
height: string;
|
|
109
|
+
/**
|
|
110
|
+
* - The maximum width of the modal form.
|
|
111
|
+
*/
|
|
112
|
+
maxWidth: string;
|
|
113
|
+
/**
|
|
114
|
+
* - The maximum height of the modal form.
|
|
115
|
+
*/
|
|
116
|
+
maxHeight: string;
|
|
117
|
+
/**
|
|
118
|
+
* - The minimum width of the modal form.
|
|
119
|
+
*/
|
|
120
|
+
minWidth: string;
|
|
121
|
+
/**
|
|
122
|
+
* - The minimum height of the modal form.
|
|
123
|
+
*/
|
|
124
|
+
minHeight: string;
|
|
125
|
+
};
|
|
126
|
+
canResize: boolean;
|
|
127
|
+
maintainRatio: boolean;
|
|
128
|
+
};
|
|
129
|
+
modal: Modal;
|
|
130
|
+
as: string;
|
|
131
|
+
asBlock: Element;
|
|
132
|
+
asInline: Element;
|
|
133
|
+
/**
|
|
134
|
+
* @type {HTMLCanvasElement}
|
|
135
|
+
*/
|
|
136
|
+
canvas: HTMLCanvasElement;
|
|
137
|
+
ctx: CanvasRenderingContext2D;
|
|
138
|
+
isDrawing: boolean;
|
|
139
|
+
points: any[];
|
|
140
|
+
paths: any[];
|
|
141
|
+
resizeObserver: ResizeObserver;
|
|
142
|
+
__events: {
|
|
143
|
+
mousedown: any;
|
|
144
|
+
mousemove: any;
|
|
145
|
+
mouseup: any;
|
|
146
|
+
mouseleave: any;
|
|
147
|
+
mouseenter: any;
|
|
148
|
+
};
|
|
149
|
+
__eventsRegister: {
|
|
150
|
+
mousedown: any;
|
|
151
|
+
mousemove: any;
|
|
152
|
+
mouseup: any;
|
|
153
|
+
mouseleave: any;
|
|
154
|
+
mouseenter: any;
|
|
155
|
+
};
|
|
156
|
+
__eventNameMap: {
|
|
157
|
+
mousedown: string;
|
|
158
|
+
mousemove: string;
|
|
159
|
+
mouseup: string;
|
|
160
|
+
mouseleave: string;
|
|
161
|
+
mouseenter: string;
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* @editorMethod Modules.Modal
|
|
165
|
+
* @description Executes the method that is called when a "Modal" module's is opened.
|
|
166
|
+
*/
|
|
167
|
+
open(): void;
|
|
168
|
+
/**
|
|
169
|
+
* @editorMethod Modules.Modal
|
|
170
|
+
* @description Executes the method that is called when a plugin's "modal" is closed.
|
|
171
|
+
*/
|
|
172
|
+
off(): void;
|
|
173
|
+
/**
|
|
174
|
+
* @editorMethod Modules.Modal
|
|
175
|
+
* @description This function is called when a form within a modal window is "submit".
|
|
176
|
+
* @returns {boolean} Success or failure
|
|
177
|
+
*/
|
|
178
|
+
modalAction(): boolean;
|
|
179
|
+
/**
|
|
180
|
+
* @private
|
|
181
|
+
* @description Initializes the drawing canvas, sets up event listeners, and configures resize handling.
|
|
182
|
+
*/
|
|
183
|
+
private _initDrawing;
|
|
184
|
+
/**
|
|
185
|
+
* @private
|
|
186
|
+
* @description Destroys the drawing canvas, removes event listeners, and clears stored drawing data.
|
|
187
|
+
*/
|
|
188
|
+
private _destroyDrawing;
|
|
189
|
+
/**
|
|
190
|
+
* @private
|
|
191
|
+
* @description Configures the drawing context (canvas settings like line width, color, etc.).
|
|
192
|
+
*/
|
|
193
|
+
private _setCtx;
|
|
194
|
+
/**
|
|
195
|
+
* @private
|
|
196
|
+
* @description Draws the current stroke based on collected points.
|
|
197
|
+
*/
|
|
198
|
+
private _draw;
|
|
199
|
+
/**
|
|
200
|
+
* @private
|
|
201
|
+
* @description Redraws all stored paths onto the canvas.
|
|
202
|
+
*/
|
|
203
|
+
private _drawAll;
|
|
204
|
+
/**
|
|
205
|
+
* @private
|
|
206
|
+
* @description Adjusts all stored paths to fit new canvas dimensions after a resize event.
|
|
207
|
+
* @param {number} prevWidth - The previous width of the canvas.
|
|
208
|
+
* @param {number} prevHeight - The previous height of the canvas.
|
|
209
|
+
* @param {number} newWidth - The new width of the canvas.
|
|
210
|
+
* @param {number} newHeight - The new height of the canvas.
|
|
211
|
+
*/
|
|
212
|
+
private _adjustPathsToNewDimensions;
|
|
213
|
+
/**
|
|
214
|
+
* @private
|
|
215
|
+
* @description Clears the canvas and resets stored drawing paths.
|
|
216
|
+
*/
|
|
217
|
+
private _clearCanvas;
|
|
218
|
+
/**
|
|
219
|
+
* @private
|
|
220
|
+
* @description Generates an SVG representation of the drawn content.
|
|
221
|
+
* @returns {*} The generated SVG element.
|
|
222
|
+
*/
|
|
223
|
+
private _getSVG;
|
|
224
|
+
/**
|
|
225
|
+
* @private
|
|
226
|
+
* @description Converts the SVG element into a downloadable file.
|
|
227
|
+
* @returns {FileList} A FileList containing the generated SVG file.
|
|
228
|
+
*/
|
|
229
|
+
private _getSVGFileList;
|
|
230
|
+
/**
|
|
231
|
+
* @private
|
|
232
|
+
* @description Retrieves touch coordinates relative to the canvas.
|
|
233
|
+
* @param {TouchEvent} e - The touch event.
|
|
234
|
+
* @returns {{x: number, y: number}} An object containing the x and y coordinates.
|
|
235
|
+
*/
|
|
236
|
+
private _getCanvasTouchPointer;
|
|
237
|
+
/**
|
|
238
|
+
* @private
|
|
239
|
+
* @description Activates either block or inline format mode for inserted drawings.
|
|
240
|
+
* @param {boolean} isInline - Whether the drawing should be inserted as an inline element.
|
|
241
|
+
*/
|
|
242
|
+
private _activeAsInline;
|
|
243
|
+
#private;
|
|
244
|
+
}
|
|
245
|
+
import EditorInjector from '../../editorInjector';
|
|
246
|
+
import { Modal } from '../../modules';
|