suneditor 3.0.0-alpha.2 → 3.0.0-alpha.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/.eslintrc.json +4 -3
- package/CONTRIBUTING.md +4 -2
- package/README.md +19 -11
- package/README_V3_TEMP.md +705 -0
- package/dist/suneditor.min.css +1 -0
- package/dist/suneditor.min.js +1 -0
- package/example.md +587 -0
- package/package.json +15 -9
- package/src/assets/icons/_default.js +166 -131
- package/src/assets/{suneditor-content.css → suneditor-contents.css} +182 -45
- package/src/assets/suneditor.css +1195 -556
- package/src/assets/variables.css +138 -0
- package/src/core/base/eventHandlers/handler_toolbar.js +35 -14
- package/src/core/base/eventHandlers/handler_ww_clipboard.js +29 -4
- package/src/core/base/eventHandlers/handler_ww_dragDrop.js +59 -15
- package/src/core/base/eventHandlers/handler_ww_key_input.js +426 -212
- package/src/core/base/eventHandlers/handler_ww_mouse.js +108 -32
- package/src/core/base/eventManager.js +540 -209
- package/src/core/base/events.js +616 -320
- package/src/core/base/history.js +93 -39
- package/src/core/class/char.js +29 -13
- package/src/core/class/component.js +332 -145
- package/src/core/class/format.js +671 -509
- package/src/core/class/html.js +504 -290
- package/src/core/class/menu.js +114 -47
- package/src/core/class/nodeTransform.js +111 -66
- package/src/core/class/offset.js +409 -105
- package/src/core/class/selection.js +220 -108
- package/src/core/class/shortcuts.js +68 -8
- package/src/core/class/toolbar.js +106 -116
- package/src/core/class/ui.js +330 -0
- package/src/core/class/viewer.js +178 -74
- package/src/core/editor.js +489 -384
- package/src/core/section/actives.js +118 -22
- package/src/core/section/constructor.js +504 -170
- 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/helper/converter.js +137 -19
- package/src/helper/dom/domCheck.js +294 -0
- package/src/helper/dom/domQuery.js +609 -0
- package/src/helper/dom/domUtils.js +533 -0
- package/src/helper/dom/index.js +12 -0
- package/src/helper/env.js +42 -19
- package/src/helper/index.js +7 -4
- package/src/helper/keyCodeMap.js +183 -0
- package/src/helper/numbers.js +8 -8
- package/src/helper/unicode.js +5 -5
- package/src/langs/ckb.js +69 -3
- package/src/langs/cs.js +67 -1
- package/src/langs/da.js +68 -2
- package/src/langs/de.js +68 -3
- package/src/langs/en.js +29 -1
- package/src/langs/es.js +68 -3
- package/src/langs/fa.js +70 -2
- package/src/langs/fr.js +68 -2
- package/src/langs/he.js +68 -3
- package/src/langs/hu.js +226 -0
- package/src/langs/index.js +3 -2
- package/src/langs/it.js +65 -0
- package/src/langs/ja.js +68 -3
- package/src/langs/ko.js +66 -1
- package/src/langs/lv.js +68 -3
- package/src/langs/nl.js +68 -3
- package/src/langs/pl.js +68 -3
- package/src/langs/pt_br.js +65 -0
- package/src/langs/ro.js +69 -4
- package/src/langs/ru.js +68 -3
- package/src/langs/se.js +68 -3
- package/src/langs/tr.js +68 -0
- package/src/langs/ua.js +68 -3
- package/src/langs/ur.js +71 -6
- package/src/langs/zh_cn.js +69 -4
- 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 +233 -136
- package/src/modules/Figure.js +913 -489
- package/src/modules/FileManager.js +141 -72
- package/src/modules/HueSlider.js +113 -61
- package/src/modules/Modal.js +292 -113
- package/src/modules/ModalAnchorEditor.js +380 -230
- 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 +226 -158
- package/src/plugins/command/list_bulleted.js +93 -47
- package/src/plugins/command/list_numbered.js +93 -47
- package/src/plugins/dropdown/align.js +66 -54
- package/src/plugins/dropdown/backgroundColor.js +76 -45
- package/src/plugins/dropdown/font.js +71 -47
- package/src/plugins/dropdown/fontColor.js +78 -46
- package/src/plugins/dropdown/formatBlock.js +74 -33
- package/src/plugins/dropdown/hr.js +102 -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 +1269 -777
- package/src/plugins/dropdown/template.js +38 -26
- package/src/plugins/dropdown/textStyle.js +43 -31
- package/src/plugins/field/mention.js +144 -82
- 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 +341 -169
- package/src/plugins/modal/drawing.js +530 -0
- package/src/plugins/modal/embed.js +886 -0
- package/src/plugins/modal/image.js +673 -358
- package/src/plugins/modal/link.js +100 -71
- package/src/plugins/modal/math.js +384 -168
- package/src/plugins/modal/video.js +693 -336
- package/src/plugins/popup/anchor.js +222 -0
- package/src/suneditor.js +54 -12
- package/src/themes/dark.css +85 -0
- package/src/typedef.js +86 -0
- package/types/assets/icons/_default.d.ts +152 -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 +377 -0
- package/types/core/base/events.d.ts +297 -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 +259 -0
- package/types/core/class/format.d.ts +615 -0
- package/types/core/class/html.d.ts +377 -0
- package/types/core/class/menu.d.ts +118 -0
- package/types/core/class/nodeTransform.d.ts +93 -0
- package/types/core/class/offset.d.ts +512 -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 +144 -0
- package/types/core/class/viewer.d.ts +140 -0
- package/types/core/editor.d.ts +606 -0
- package/types/core/section/actives.d.ts +46 -0
- package/types/core/section/constructor.d.ts +748 -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/helper/converter.d.ts +150 -0
- package/types/helper/dom/domCheck.d.ts +182 -0
- package/types/helper/dom/domQuery.d.ts +214 -0
- package/types/helper/dom/domUtils.d.ts +211 -0
- package/types/helper/dom/index.d.ts +9 -0
- package/types/helper/env.d.ts +149 -0
- package/types/helper/index.d.ts +163 -0
- package/types/helper/keyCodeMap.d.ts +110 -0
- package/types/helper/numbers.d.ts +43 -0
- package/types/helper/unicode.d.ts +28 -0
- package/types/index.d.ts +0 -0
- package/{typings/Lang.d.ts → types/langs/_Lang.d.ts} +170 -103
- package/types/langs/ckb.d.ts +384 -0
- package/types/langs/cs.d.ts +384 -0
- package/types/langs/da.d.ts +384 -0
- package/types/langs/de.d.ts +384 -0
- package/types/langs/en.d.ts +384 -0
- package/types/langs/es.d.ts +384 -0
- package/types/langs/fa.d.ts +384 -0
- package/types/langs/fr.d.ts +384 -0
- package/types/langs/he.d.ts +384 -0
- package/types/langs/hu.d.ts +384 -0
- package/types/langs/index.d.ts +48 -0
- package/types/langs/it.d.ts +384 -0
- package/types/langs/ja.d.ts +384 -0
- package/types/langs/ko.d.ts +384 -0
- package/types/langs/lv.d.ts +384 -0
- package/types/langs/nl.d.ts +384 -0
- package/types/langs/pl.d.ts +384 -0
- package/types/langs/pt_br.d.ts +384 -0
- package/types/langs/ro.d.ts +384 -0
- package/types/langs/ru.d.ts +384 -0
- package/types/langs/se.d.ts +384 -0
- package/types/langs/tr.d.ts +384 -0
- package/types/langs/ua.d.ts +384 -0
- package/types/langs/ur.d.ts +384 -0
- package/types/langs/zh_cn.d.ts +384 -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 +231 -0
- package/types/modules/Figure.d.ts +504 -0
- package/types/modules/FileManager.d.ts +202 -0
- package/types/modules/HueSlider.d.ts +136 -0
- package/types/modules/Modal.d.ts +117 -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 +56 -0
- package/types/plugins/command/list_numbered.d.ts +56 -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 +58 -0
- package/types/plugins/dropdown/hr.d.ts +81 -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 +579 -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-global.d.ts +144 -0
- 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,102 @@
|
|
|
1
|
+
export default Mention;
|
|
2
|
+
/**
|
|
3
|
+
* @class
|
|
4
|
+
* @description Mention Plugin
|
|
5
|
+
* - A plugin that provides a mention feature using `@` or a custom trigger character.
|
|
6
|
+
* - Displays a mention list when the trigger character is typed.
|
|
7
|
+
* - Supports fetching mention data from an API or a predefined data array.
|
|
8
|
+
* - Uses caching for optimized performance.
|
|
9
|
+
*/
|
|
10
|
+
declare class Mention extends EditorInjector {
|
|
11
|
+
static key: string;
|
|
12
|
+
static type: string;
|
|
13
|
+
static className: string;
|
|
14
|
+
/**
|
|
15
|
+
* @constructor
|
|
16
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
17
|
+
* @param {Object} pluginOptions
|
|
18
|
+
* @param {string=} [pluginOptions.triggerText="@"] The character that triggers the mention list. Default is '@'.
|
|
19
|
+
* @param {number=} [pluginOptions.limitSize=5] The number of items to display in the mention list. Default is 5.
|
|
20
|
+
* @param {number=} [pluginOptions.searchStartLength=0] The number of characters to start searching for the mention list. Default is 0.
|
|
21
|
+
* @param {number=} [pluginOptions.delayTime=200] The time to wait before displaying the mention list. Default is 200ms.
|
|
22
|
+
* @param {Array<{key: string, name: string, url: string}>=} pluginOptions.data Use data without using API.
|
|
23
|
+
* @param {string=} pluginOptions.apiUrl The URL to call the mention list. Default is ''.
|
|
24
|
+
* @param {Object<string, string>=} pluginOptions.apiHeaders The headers to send with the API call. Default is {}.
|
|
25
|
+
* @param {boolean=} [pluginOptions.useCachingData=true] Whether to cache the mention list data. Default is true.
|
|
26
|
+
* @param {boolean=} [pluginOptions.useCachingFieldData=true] Whether to cache the mention list data in the field. Default is true.
|
|
27
|
+
*/
|
|
28
|
+
constructor(
|
|
29
|
+
editor: __se__EditorCore,
|
|
30
|
+
pluginOptions: {
|
|
31
|
+
triggerText?: string | undefined;
|
|
32
|
+
limitSize?: number | undefined;
|
|
33
|
+
searchStartLength?: number | undefined;
|
|
34
|
+
delayTime?: number | undefined;
|
|
35
|
+
data?:
|
|
36
|
+
| Array<{
|
|
37
|
+
key: string;
|
|
38
|
+
name: string;
|
|
39
|
+
url: string;
|
|
40
|
+
}>
|
|
41
|
+
| undefined;
|
|
42
|
+
apiUrl?: string | undefined;
|
|
43
|
+
apiHeaders?:
|
|
44
|
+
| {
|
|
45
|
+
[x: string]: string;
|
|
46
|
+
}
|
|
47
|
+
| undefined;
|
|
48
|
+
useCachingData?: boolean | undefined;
|
|
49
|
+
useCachingFieldData?: boolean | undefined;
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
title: any;
|
|
53
|
+
icon: string;
|
|
54
|
+
triggerText: string;
|
|
55
|
+
limitSize: number;
|
|
56
|
+
searchStartLength: number;
|
|
57
|
+
delayTime: number;
|
|
58
|
+
directData: {
|
|
59
|
+
key: string;
|
|
60
|
+
name: string;
|
|
61
|
+
url: string;
|
|
62
|
+
}[];
|
|
63
|
+
apiUrl: string;
|
|
64
|
+
_delay: number;
|
|
65
|
+
_lastAtPos: number;
|
|
66
|
+
_anchorOffset: number;
|
|
67
|
+
_anchorNode: Node;
|
|
68
|
+
apiManager: ApiManager;
|
|
69
|
+
cachingData: Map<any, any>;
|
|
70
|
+
cachingFieldData: Map<string, any[]>;
|
|
71
|
+
selectMenu: SelectMenu;
|
|
72
|
+
controller: Controller;
|
|
73
|
+
/**
|
|
74
|
+
* @editorMethod Editor.EventManager
|
|
75
|
+
* @description Executes the event function of "input".
|
|
76
|
+
* @returns {Promise<boolean>}
|
|
77
|
+
*/
|
|
78
|
+
onInput(): Promise<boolean>;
|
|
79
|
+
/**
|
|
80
|
+
* @private
|
|
81
|
+
* @description Generates the mention list based on user input.
|
|
82
|
+
* - Fetches data from cache, direct data, or an API.
|
|
83
|
+
* - Creates and opens the mention dropdown.
|
|
84
|
+
* - Caches the fetched data for future use.
|
|
85
|
+
* @param {string} value - The mention query text.
|
|
86
|
+
* @param {Node} targetNode - The node where the mention is triggered.
|
|
87
|
+
* @returns {Promise<boolean>} - Returns `true` if the mention list is displayed, `false` otherwise.
|
|
88
|
+
*/
|
|
89
|
+
private _createMentionList;
|
|
90
|
+
/**
|
|
91
|
+
* @private
|
|
92
|
+
* @description Constructs the API request URL with the mention query.
|
|
93
|
+
* @param {string} key - The mention query text.
|
|
94
|
+
* @returns {string} - The formatted API request URL.
|
|
95
|
+
*/
|
|
96
|
+
private _createUrl;
|
|
97
|
+
#private;
|
|
98
|
+
}
|
|
99
|
+
import EditorInjector from '../../editorInjector';
|
|
100
|
+
import { ApiManager } from '../../modules';
|
|
101
|
+
import { SelectMenu } from '../../modules';
|
|
102
|
+
import { Controller } from '../../modules';
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
declare namespace _default {
|
|
2
|
+
export { blockquote };
|
|
3
|
+
export { exportPDF };
|
|
4
|
+
export { fileUpload };
|
|
5
|
+
export { list_bulleted };
|
|
6
|
+
export { list_numbered };
|
|
7
|
+
export { mention };
|
|
8
|
+
export { align };
|
|
9
|
+
export { font };
|
|
10
|
+
export { fontColor };
|
|
11
|
+
export { backgroundColor };
|
|
12
|
+
export { list };
|
|
13
|
+
export { table };
|
|
14
|
+
export { formatBlock };
|
|
15
|
+
export { hr };
|
|
16
|
+
export { layout };
|
|
17
|
+
export { lineHeight };
|
|
18
|
+
export { template };
|
|
19
|
+
export { paragraphStyle };
|
|
20
|
+
export { textStyle };
|
|
21
|
+
export { link };
|
|
22
|
+
export { image };
|
|
23
|
+
export { video };
|
|
24
|
+
export { audio };
|
|
25
|
+
export { embed };
|
|
26
|
+
export { math };
|
|
27
|
+
export { drawing };
|
|
28
|
+
export { imageGallery };
|
|
29
|
+
export { videoGallery };
|
|
30
|
+
export { audioGallery };
|
|
31
|
+
export { fileGallery };
|
|
32
|
+
export { fileBrowser };
|
|
33
|
+
export { fontSize };
|
|
34
|
+
export { pageNavigator };
|
|
35
|
+
export { anchor };
|
|
36
|
+
}
|
|
37
|
+
export default _default;
|
|
38
|
+
import blockquote from './command/blockquote';
|
|
39
|
+
import exportPDF from './command/exportPDF';
|
|
40
|
+
import fileUpload from './command/fileUpload';
|
|
41
|
+
import list_bulleted from './command/list_bulleted';
|
|
42
|
+
import list_numbered from './command/list_numbered';
|
|
43
|
+
import mention from './field/mention';
|
|
44
|
+
import align from './dropdown/align';
|
|
45
|
+
import font from './dropdown/font';
|
|
46
|
+
import fontColor from './dropdown/fontColor';
|
|
47
|
+
import backgroundColor from './dropdown/backgroundColor';
|
|
48
|
+
import list from './dropdown/list';
|
|
49
|
+
import table from './dropdown/table';
|
|
50
|
+
import formatBlock from './dropdown/formatBlock';
|
|
51
|
+
import hr from './dropdown/hr';
|
|
52
|
+
import layout from './dropdown/layout';
|
|
53
|
+
import lineHeight from './dropdown/lineHeight';
|
|
54
|
+
import template from './dropdown/template';
|
|
55
|
+
import paragraphStyle from './dropdown/paragraphStyle';
|
|
56
|
+
import textStyle from './dropdown/textStyle';
|
|
57
|
+
import link from './modal/link';
|
|
58
|
+
import image from './modal/image';
|
|
59
|
+
import video from './modal/video';
|
|
60
|
+
import audio from './modal/audio';
|
|
61
|
+
import embed from './modal/embed';
|
|
62
|
+
import math from './modal/math';
|
|
63
|
+
import drawing from './modal/drawing';
|
|
64
|
+
import imageGallery from './browser/imageGallery';
|
|
65
|
+
import videoGallery from './browser/videoGallery';
|
|
66
|
+
import audioGallery from './browser/audioGallery';
|
|
67
|
+
import fileGallery from './browser/fileGallery';
|
|
68
|
+
import fileBrowser from './browser/fileBrowser';
|
|
69
|
+
import fontSize from './input/fontSize';
|
|
70
|
+
import pageNavigator from './input/pageNavigator';
|
|
71
|
+
import anchor from './popup/anchor';
|
|
72
|
+
export {
|
|
73
|
+
blockquote,
|
|
74
|
+
exportPDF,
|
|
75
|
+
fileUpload,
|
|
76
|
+
list_bulleted,
|
|
77
|
+
list_numbered,
|
|
78
|
+
mention,
|
|
79
|
+
align,
|
|
80
|
+
font,
|
|
81
|
+
fontColor,
|
|
82
|
+
backgroundColor,
|
|
83
|
+
list,
|
|
84
|
+
table,
|
|
85
|
+
formatBlock,
|
|
86
|
+
hr,
|
|
87
|
+
layout,
|
|
88
|
+
lineHeight,
|
|
89
|
+
template,
|
|
90
|
+
paragraphStyle,
|
|
91
|
+
textStyle,
|
|
92
|
+
link,
|
|
93
|
+
image,
|
|
94
|
+
video,
|
|
95
|
+
audio,
|
|
96
|
+
embed,
|
|
97
|
+
math,
|
|
98
|
+
drawing,
|
|
99
|
+
imageGallery,
|
|
100
|
+
videoGallery,
|
|
101
|
+
audioGallery,
|
|
102
|
+
fileGallery,
|
|
103
|
+
fileBrowser,
|
|
104
|
+
fontSize,
|
|
105
|
+
pageNavigator,
|
|
106
|
+
anchor
|
|
107
|
+
};
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
export default FontSize;
|
|
2
|
+
/**
|
|
3
|
+
* @class
|
|
4
|
+
* @description FontSize Plugin
|
|
5
|
+
* - This plugin enables users to modify the font size of selected text within the editor.
|
|
6
|
+
* - It supports various measurement units (e.g., 'px', 'pt', 'em', 'rem', 'vw', 'vh', '%') and
|
|
7
|
+
* - provides multiple interfaces: dropdown menus, direct input, and optional increment/decrement buttons.
|
|
8
|
+
*/
|
|
9
|
+
declare class FontSize extends EditorInjector {
|
|
10
|
+
static key: string;
|
|
11
|
+
static type: string;
|
|
12
|
+
static className: string;
|
|
13
|
+
/**
|
|
14
|
+
* @constructor
|
|
15
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
16
|
+
* @param {Object} pluginOptions - Configuration options for the FontSize plugin.
|
|
17
|
+
* @param {string=} [pluginOptions.sizeUnit='px'] - The unit for the font size.
|
|
18
|
+
* - Accepted values include: 'px', 'pt', 'em', 'rem', 'vw', 'vh', '%' or 'text'.
|
|
19
|
+
* - If 'text' is used, a text-based font size list is applied.
|
|
20
|
+
* @param {boolean=} [pluginOptions.showDefaultSizeLabel=true] - Determines whether the default size label is displayed in the dropdown menu.
|
|
21
|
+
* @param {boolean=} [pluginOptions.showIncDecControls=false] - When true, displays increase and decrease buttons for font size adjustments.
|
|
22
|
+
* @param {boolean=} [pluginOptions.disableInput=true] - When true, disables the direct font size input box.
|
|
23
|
+
* @param {Object<string, {default: number, inc: number, min: number, max: number, list: Array<number>}>} [pluginOptions.unitMap={}] - Optional object to override or extend the default unit mapping for font sizes.
|
|
24
|
+
*/
|
|
25
|
+
constructor(
|
|
26
|
+
editor: __se__EditorCore,
|
|
27
|
+
pluginOptions: {
|
|
28
|
+
sizeUnit?: string | undefined;
|
|
29
|
+
showDefaultSizeLabel?: boolean | undefined;
|
|
30
|
+
showIncDecControls?: boolean | undefined;
|
|
31
|
+
disableInput?: boolean | undefined;
|
|
32
|
+
unitMap?: {
|
|
33
|
+
[x: string]: {
|
|
34
|
+
default: number;
|
|
35
|
+
inc: number;
|
|
36
|
+
min: number;
|
|
37
|
+
max: number;
|
|
38
|
+
list: Array<number>;
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
unitMap: {
|
|
44
|
+
text: {
|
|
45
|
+
default: string;
|
|
46
|
+
list: {
|
|
47
|
+
title: string;
|
|
48
|
+
size: string;
|
|
49
|
+
}[];
|
|
50
|
+
};
|
|
51
|
+
px: {
|
|
52
|
+
default: number;
|
|
53
|
+
inc: number;
|
|
54
|
+
min: number;
|
|
55
|
+
max: number;
|
|
56
|
+
list: number[];
|
|
57
|
+
};
|
|
58
|
+
pt: {
|
|
59
|
+
default: number;
|
|
60
|
+
inc: number;
|
|
61
|
+
min: number;
|
|
62
|
+
max: number;
|
|
63
|
+
list: number[];
|
|
64
|
+
};
|
|
65
|
+
em: {
|
|
66
|
+
default: number;
|
|
67
|
+
inc: number;
|
|
68
|
+
min: number;
|
|
69
|
+
max: number;
|
|
70
|
+
list: number[];
|
|
71
|
+
};
|
|
72
|
+
rem: {
|
|
73
|
+
default: number;
|
|
74
|
+
inc: number;
|
|
75
|
+
min: number;
|
|
76
|
+
max: number;
|
|
77
|
+
list: number[];
|
|
78
|
+
};
|
|
79
|
+
vw: {
|
|
80
|
+
inc: number;
|
|
81
|
+
min: number;
|
|
82
|
+
max: number;
|
|
83
|
+
list: number[];
|
|
84
|
+
};
|
|
85
|
+
vh: {
|
|
86
|
+
default: number;
|
|
87
|
+
inc: number;
|
|
88
|
+
min: number;
|
|
89
|
+
max: number;
|
|
90
|
+
list: number[];
|
|
91
|
+
};
|
|
92
|
+
'%': {
|
|
93
|
+
default: number;
|
|
94
|
+
inc: number;
|
|
95
|
+
min: number;
|
|
96
|
+
max: number;
|
|
97
|
+
list: number[];
|
|
98
|
+
};
|
|
99
|
+
};
|
|
100
|
+
sizeUnit: any;
|
|
101
|
+
title: any;
|
|
102
|
+
inner: string | boolean;
|
|
103
|
+
beforeItem: HTMLElement;
|
|
104
|
+
afterItem: HTMLElement;
|
|
105
|
+
replaceButton: HTMLElement;
|
|
106
|
+
currentSize: string;
|
|
107
|
+
sizeList: NodeListOf<Element>;
|
|
108
|
+
hasInputFocus: boolean;
|
|
109
|
+
isInputActive: boolean;
|
|
110
|
+
_disableInput: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* @editorMethod Editor.EventManager
|
|
113
|
+
* @description Executes the method that is called whenever the cursor position changes.
|
|
114
|
+
* @param {?HTMLElement=} element - Node element where the cursor is currently located
|
|
115
|
+
* @param {?HTMLElement=} target - The plugin's toolbar button element
|
|
116
|
+
* @returns {boolean} - Whether the plugin is active
|
|
117
|
+
*/
|
|
118
|
+
active(element?: (HTMLElement | null) | undefined, target?: (HTMLElement | null) | undefined): boolean;
|
|
119
|
+
/**
|
|
120
|
+
* @editorMethod Editor.Toolbar
|
|
121
|
+
* @description Executes the event function of toolbar's input tag - "keydown".
|
|
122
|
+
* @param {Object} params
|
|
123
|
+
* @param {HTMLElement} params.target Input element
|
|
124
|
+
* @param {KeyboardEvent} params.event Event object
|
|
125
|
+
*/
|
|
126
|
+
onInputKeyDown({ target, event }: { target: HTMLElement; event: KeyboardEvent }): void;
|
|
127
|
+
/**
|
|
128
|
+
* @editorMethod Editor.Toolbar
|
|
129
|
+
* @description Executes the event function of toolbar's input tag - "change".
|
|
130
|
+
* @param {__se__PluginToolbarInputChangeEventInfo} params
|
|
131
|
+
*/
|
|
132
|
+
onInputChange({ target, value: changeValue, event }: __se__PluginToolbarInputChangeEventInfo): void;
|
|
133
|
+
/**
|
|
134
|
+
* @editorMethod Modules.Dropdown
|
|
135
|
+
* @description Executes the method that is called when a plugin's dropdown menu is opened.
|
|
136
|
+
* @param {HTMLElement} target Line element at the current cursor position
|
|
137
|
+
*/
|
|
138
|
+
on(target: HTMLElement): void;
|
|
139
|
+
/**
|
|
140
|
+
* @editorMethod Editor.core
|
|
141
|
+
* @description Executes the main execution method of the plugin.
|
|
142
|
+
* - Called when an item in the "dropdown" menu is clicked.
|
|
143
|
+
* @param {HTMLElement} target - The plugin's toolbar button element
|
|
144
|
+
*/
|
|
145
|
+
action(target: HTMLElement): void;
|
|
146
|
+
/**
|
|
147
|
+
* @private
|
|
148
|
+
* @description Retrieves the default font size of the editor.
|
|
149
|
+
* @returns {string} - The computed font size from the editor.
|
|
150
|
+
*/
|
|
151
|
+
private _getDefaultSize;
|
|
152
|
+
/**
|
|
153
|
+
* @private
|
|
154
|
+
* @description Extracts the font size and unit from the given element or input value.
|
|
155
|
+
* @param {string|Element} target - The target input or element.
|
|
156
|
+
* @returns {{ unit: string, value: number|string }} - An object containing:
|
|
157
|
+
* - `unit` (string): The detected font size unit.
|
|
158
|
+
* - `value` (number|string): The numeric font size value or text-based size.
|
|
159
|
+
*/
|
|
160
|
+
private _getSize;
|
|
161
|
+
/**
|
|
162
|
+
* @private
|
|
163
|
+
* @description Sets the font size in the toolbar input field or button label.
|
|
164
|
+
* @param {HTMLElement} target - The target element in the toolbar.
|
|
165
|
+
* @param {string|number} value - The font size value.
|
|
166
|
+
* @returns {string|number} - The applied font size.
|
|
167
|
+
*/
|
|
168
|
+
private _setSize;
|
|
169
|
+
}
|
|
170
|
+
import EditorInjector from '../../editorInjector';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export default PageNavigator;
|
|
2
|
+
/**
|
|
3
|
+
* @class
|
|
4
|
+
* @description PageNavigator Plugin
|
|
5
|
+
* - This plugin provides functionality for navigating between pages within the editor's document.
|
|
6
|
+
* - It features an input field for entering the desired page number and a display element showing
|
|
7
|
+
* - the total number of pages. When the user changes the value in the input field, the plugin triggers
|
|
8
|
+
* - a page navigation event through the editor's document context.
|
|
9
|
+
*/
|
|
10
|
+
declare class PageNavigator extends EditorInjector {
|
|
11
|
+
static key: string;
|
|
12
|
+
static type: string;
|
|
13
|
+
static className: string;
|
|
14
|
+
title: any;
|
|
15
|
+
inner: HTMLInputElement;
|
|
16
|
+
afterItem: HTMLElement;
|
|
17
|
+
pageNum: number;
|
|
18
|
+
totalPages: number;
|
|
19
|
+
/**
|
|
20
|
+
* @editorMethod Editor.documentType
|
|
21
|
+
* @description Updates the displayed page number and total pages in the navigator.
|
|
22
|
+
* @param {number} pageNum - The current page number to display.
|
|
23
|
+
* @param {number} totalPages - The total number of pages in the document.
|
|
24
|
+
*/
|
|
25
|
+
display(pageNum: number, totalPages: number): void;
|
|
26
|
+
#private;
|
|
27
|
+
}
|
|
28
|
+
import EditorInjector from '../../editorInjector';
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
export default Audio_;
|
|
2
|
+
export type AudioInfo = import('../../core/base/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('../../core/base/events').AudioInfo} AudioInfo
|
|
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
|
+
onPastAndDrop({ 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} 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} 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';
|