suneditor 3.0.0-beta.9 → 3.0.0-rc.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/README.md +65 -57
- package/dist/suneditor-contents.min.css +1 -0
- package/dist/suneditor.min.css +1 -1
- package/dist/suneditor.min.js +1 -1
- package/package.json +110 -61
- package/src/assets/design/color.css +36 -17
- package/src/assets/design/size.css +2 -0
- package/src/assets/icons/defaultIcons.js +17 -2
- package/src/assets/suneditor-contents.css +51 -16
- package/src/assets/suneditor.css +116 -43
- package/src/core/config/contextProvider.js +288 -0
- package/src/core/config/eventManager.js +188 -0
- package/src/core/config/instanceCheck.js +59 -0
- package/src/core/config/optionProvider.js +452 -0
- package/src/core/editor.js +166 -1637
- package/src/core/event/actions/index.js +229 -0
- package/src/core/event/effects/common.registry.js +74 -0
- package/src/core/event/effects/keydown.registry.js +573 -0
- package/src/core/event/effects/ruleHelpers.js +148 -0
- package/src/core/event/eventOrchestrator.js +944 -0
- package/src/core/event/executor.js +27 -0
- package/src/core/{base/eventHandlers → event/handlers}/handler_toolbar.js +27 -28
- package/src/core/{base/eventHandlers → event/handlers}/handler_ww_clipboard.js +10 -8
- package/src/core/{base/eventHandlers → event/handlers}/handler_ww_dragDrop.js +22 -23
- package/src/core/event/handlers/handler_ww_input.js +75 -0
- package/src/core/event/handlers/handler_ww_key.js +228 -0
- package/src/core/event/handlers/handler_ww_mouse.js +166 -0
- package/src/core/event/ports.js +211 -0
- package/src/core/event/reducers/keydown.reducer.js +97 -0
- package/src/core/event/rules/keydown.rule.arrow.js +63 -0
- package/src/core/event/rules/keydown.rule.backspace.js +208 -0
- package/src/core/event/rules/keydown.rule.delete.js +132 -0
- package/src/core/event/rules/keydown.rule.enter.js +150 -0
- package/src/core/event/rules/keydown.rule.tab.js +35 -0
- package/src/core/event/support/defaultLineManager.js +136 -0
- package/src/core/event/support/selectionState.js +204 -0
- package/src/core/kernel/coreKernel.js +320 -0
- package/src/core/kernel/kernelInjector.js +19 -0
- package/src/core/kernel/store.js +173 -0
- package/src/core/{class → logic/dom}/char.js +42 -45
- package/src/core/logic/dom/format.js +1075 -0
- package/src/core/{class → logic/dom}/html.js +743 -624
- package/src/core/logic/dom/inline.js +1847 -0
- package/src/core/logic/dom/listFormat.js +601 -0
- package/src/core/{class → logic/dom}/nodeTransform.js +92 -72
- package/src/core/{class → logic/dom}/offset.js +254 -317
- package/src/core/logic/dom/selection.js +754 -0
- package/src/core/logic/panel/menu.js +389 -0
- package/src/core/logic/panel/toolbar.js +449 -0
- package/src/core/logic/panel/viewer.js +761 -0
- package/src/core/logic/shell/_commandExecutor.js +380 -0
- package/src/core/logic/shell/commandDispatcher.js +241 -0
- package/src/core/logic/shell/component.js +970 -0
- package/src/core/logic/shell/focusManager.js +110 -0
- package/src/core/{base → logic/shell}/history.js +110 -60
- package/src/core/logic/shell/pluginManager.js +363 -0
- package/src/core/logic/shell/shortcuts.js +130 -0
- package/src/core/logic/shell/ui.js +904 -0
- package/src/core/schema/context.js +66 -0
- package/src/core/schema/frameContext.js +160 -0
- package/src/core/schema/options.js +628 -0
- package/src/core/section/constructor.js +194 -500
- package/src/core/section/documentType.js +297 -222
- package/src/events.js +808 -543
- package/src/helper/clipboard.js +27 -16
- package/src/helper/converter.js +100 -78
- package/src/helper/dom/domCheck.js +56 -30
- package/src/helper/dom/domQuery.js +159 -89
- package/src/helper/dom/domUtils.js +114 -49
- package/src/helper/dom/index.js +5 -1
- package/src/helper/env.js +26 -26
- package/src/helper/index.js +1 -1
- package/src/helper/keyCodeMap.js +25 -28
- package/src/helper/numbers.js +4 -8
- package/src/helper/unicode.js +4 -8
- package/src/hooks/base.js +307 -0
- package/src/hooks/params.js +130 -0
- package/src/interfaces/contracts.js +227 -0
- package/src/interfaces/index.js +7 -0
- package/src/interfaces/plugins.js +239 -0
- package/src/langs/ckb.js +4 -4
- package/src/langs/cs.js +4 -4
- package/src/langs/da.js +4 -4
- package/src/langs/de.js +4 -4
- package/src/langs/en.js +4 -4
- package/src/langs/es.js +4 -4
- package/src/langs/fa.js +4 -4
- package/src/langs/fr.js +4 -4
- package/src/langs/he.js +4 -4
- package/src/langs/hu.js +4 -4
- package/src/langs/it.js +4 -4
- package/src/langs/ja.js +4 -4
- package/src/langs/km.js +4 -4
- package/src/langs/ko.js +4 -4
- package/src/langs/lv.js +4 -4
- package/src/langs/nl.js +4 -4
- package/src/langs/pl.js +4 -4
- package/src/langs/pt_br.js +13 -13
- package/src/langs/ro.js +4 -4
- package/src/langs/ru.js +4 -4
- package/src/langs/se.js +4 -4
- package/src/langs/tr.js +4 -4
- package/src/langs/uk.js +4 -4
- package/src/langs/ur.js +4 -4
- package/src/langs/zh_cn.js +4 -4
- package/src/modules/{Browser.js → contract/Browser.js} +119 -128
- package/src/modules/{ColorPicker.js → contract/ColorPicker.js} +132 -142
- package/src/modules/contract/Controller.js +589 -0
- package/src/modules/{Figure.js → contract/Figure.js} +591 -411
- package/src/modules/{HueSlider.js → contract/HueSlider.js} +125 -86
- package/src/modules/contract/Modal.js +357 -0
- package/src/modules/contract/index.js +9 -0
- package/src/modules/manager/ApiManager.js +197 -0
- package/src/modules/{FileManager.js → manager/FileManager.js} +128 -160
- package/src/modules/manager/index.js +5 -0
- package/src/modules/{ModalAnchorEditor.js → ui/ModalAnchorEditor.js} +108 -138
- package/src/modules/{SelectMenu.js → ui/SelectMenu.js} +119 -120
- package/src/modules/{_DragHandle.js → ui/_DragHandle.js} +1 -1
- package/src/modules/ui/index.js +6 -0
- package/src/plugins/browser/audioGallery.js +23 -26
- package/src/plugins/browser/fileBrowser.js +25 -28
- package/src/plugins/browser/fileGallery.js +20 -23
- package/src/plugins/browser/imageGallery.js +24 -23
- package/src/plugins/browser/videoGallery.js +27 -29
- package/src/plugins/command/blockquote.js +11 -17
- package/src/plugins/command/exportPDF.js +26 -26
- package/src/plugins/command/fileUpload.js +138 -133
- package/src/plugins/command/list_bulleted.js +48 -44
- package/src/plugins/command/list_numbered.js +48 -44
- package/src/plugins/dropdown/align.js +64 -50
- package/src/plugins/dropdown/backgroundColor.js +34 -35
- package/src/plugins/dropdown/{formatBlock.js → blockStyle.js} +43 -37
- package/src/plugins/dropdown/font.js +50 -36
- package/src/plugins/dropdown/fontColor.js +34 -35
- package/src/plugins/dropdown/hr.js +55 -50
- package/src/plugins/dropdown/layout.js +20 -15
- package/src/plugins/dropdown/lineHeight.js +46 -30
- package/src/plugins/dropdown/list.js +32 -33
- package/src/plugins/dropdown/paragraphStyle.js +40 -34
- package/src/plugins/dropdown/table/index.js +915 -0
- package/src/plugins/dropdown/table/render/table.html.js +308 -0
- package/src/plugins/dropdown/table/render/table.menu.js +121 -0
- package/src/plugins/dropdown/table/services/table.cell.js +465 -0
- package/src/plugins/dropdown/table/services/table.clipboard.js +414 -0
- package/src/plugins/dropdown/table/services/table.grid.js +504 -0
- package/src/plugins/dropdown/table/services/table.resize.js +463 -0
- package/src/plugins/dropdown/table/services/table.selection.js +466 -0
- package/src/plugins/dropdown/table/services/table.style.js +844 -0
- package/src/plugins/dropdown/table/shared/table.constants.js +109 -0
- package/src/plugins/dropdown/table/shared/table.utils.js +219 -0
- package/src/plugins/dropdown/template.js +20 -15
- package/src/plugins/dropdown/textStyle.js +28 -22
- package/src/plugins/field/mention.js +54 -49
- package/src/plugins/index.js +5 -5
- package/src/plugins/input/fontSize.js +100 -97
- package/src/plugins/input/pageNavigator.js +13 -10
- package/src/plugins/modal/audio.js +208 -219
- package/src/plugins/modal/drawing.js +99 -104
- package/src/plugins/modal/embed.js +323 -312
- package/src/plugins/modal/image/index.js +942 -0
- package/src/plugins/modal/image/render/image.html.js +150 -0
- package/src/plugins/modal/image/services/image.size.js +198 -0
- package/src/plugins/modal/image/services/image.upload.js +216 -0
- package/src/plugins/modal/image/shared/image.constants.js +20 -0
- package/src/plugins/modal/link.js +74 -54
- package/src/plugins/modal/math.js +126 -119
- package/src/plugins/modal/video/index.js +858 -0
- package/src/plugins/modal/video/render/video.html.js +131 -0
- package/src/plugins/modal/video/services/video.size.js +281 -0
- package/src/plugins/modal/video/services/video.upload.js +92 -0
- package/src/plugins/popup/anchor.js +57 -49
- package/src/suneditor.js +73 -61
- package/src/themes/cobalt.css +155 -0
- package/src/themes/dark.css +143 -120
- package/src/typedef.js +214 -63
- package/types/assets/icons/defaultIcons.d.ts +8 -0
- package/types/assets/suneditor-contents.css.d.ts +1 -0
- package/types/assets/suneditor.css.d.ts +1 -0
- package/types/core/config/contextProvider.d.ts +148 -0
- package/types/core/config/eventManager.d.ts +68 -0
- package/types/core/config/instanceCheck.d.ts +33 -0
- package/types/core/config/optionProvider.d.ts +147 -0
- package/types/core/editor.d.ts +27 -586
- package/types/core/event/actions/index.d.ts +50 -0
- package/types/core/event/effects/common.registry.d.ts +56 -0
- package/types/core/event/effects/keydown.registry.d.ts +80 -0
- package/types/core/event/effects/ruleHelpers.d.ts +36 -0
- package/types/core/event/eventOrchestrator.d.ts +191 -0
- package/types/core/event/executor.d.ts +13 -0
- package/types/core/event/handlers/handler_toolbar.d.ts +38 -0
- package/types/core/event/handlers/handler_ww_clipboard.d.ts +36 -0
- package/types/core/event/handlers/handler_ww_dragDrop.d.ts +26 -0
- package/types/core/event/handlers/handler_ww_input.d.ts +38 -0
- package/types/core/event/handlers/handler_ww_key.d.ts +40 -0
- package/types/core/event/handlers/handler_ww_mouse.d.ts +47 -0
- package/types/core/event/ports.d.ts +256 -0
- package/types/core/event/reducers/keydown.reducer.d.ts +84 -0
- package/types/core/event/rules/keydown.rule.arrow.d.ts +19 -0
- package/types/core/event/rules/keydown.rule.backspace.d.ts +18 -0
- package/types/core/event/rules/keydown.rule.delete.d.ts +18 -0
- package/types/core/event/rules/keydown.rule.enter.d.ts +18 -0
- package/types/core/event/rules/keydown.rule.tab.d.ts +18 -0
- package/types/core/event/support/defaultLineManager.d.ts +22 -0
- package/types/core/event/support/selectionState.d.ts +29 -0
- package/types/core/kernel/coreKernel.d.ts +219 -0
- package/types/core/kernel/kernelInjector.d.ts +16 -0
- package/types/core/kernel/store.d.ts +170 -0
- package/types/core/logic/dom/char.d.ts +46 -0
- package/types/core/logic/dom/format.d.ts +234 -0
- package/types/core/logic/dom/html.d.ts +290 -0
- package/types/core/logic/dom/inline.d.ts +93 -0
- package/types/core/logic/dom/listFormat.d.ts +101 -0
- package/types/core/logic/dom/nodeTransform.d.ts +110 -0
- package/types/core/logic/dom/offset.d.ts +335 -0
- package/types/core/logic/dom/selection.d.ts +165 -0
- package/types/core/logic/panel/menu.d.ts +93 -0
- package/types/core/logic/panel/toolbar.d.ts +128 -0
- package/types/core/logic/panel/viewer.d.ts +89 -0
- package/types/core/logic/shell/_commandExecutor.d.ts +18 -0
- package/types/core/logic/shell/commandDispatcher.d.ts +65 -0
- package/types/core/logic/shell/component.d.ts +182 -0
- package/types/core/logic/shell/focusManager.d.ts +31 -0
- package/types/core/{base → logic/shell}/history.d.ts +13 -12
- package/types/core/logic/shell/pluginManager.d.ts +115 -0
- package/types/core/logic/shell/shortcuts.d.ts +131 -0
- package/types/core/logic/shell/ui.d.ts +261 -0
- package/types/core/schema/context.d.ts +104 -0
- package/types/core/schema/frameContext.d.ts +320 -0
- package/types/core/schema/options.d.ts +1241 -0
- package/types/core/section/constructor.d.ts +117 -652
- package/types/core/section/documentType.d.ts +43 -61
- package/types/events.d.ts +796 -65
- package/types/helper/clipboard.d.ts +5 -4
- package/types/helper/converter.d.ts +55 -43
- package/types/helper/dom/domCheck.d.ts +27 -19
- package/types/helper/dom/domQuery.d.ts +76 -57
- package/types/helper/dom/domUtils.d.ts +62 -39
- package/types/helper/dom/index.d.ts +87 -1
- package/types/helper/env.d.ts +16 -13
- package/types/helper/index.d.ts +8 -2
- package/types/helper/keyCodeMap.d.ts +24 -23
- package/types/helper/numbers.d.ts +4 -6
- package/types/helper/unicode.d.ts +4 -3
- package/types/hooks/base.d.ts +239 -0
- package/types/hooks/params.d.ts +65 -0
- package/types/index.d.ts +20 -117
- package/types/interfaces/contracts.d.ts +183 -0
- package/types/interfaces/index.d.ts +3 -0
- package/types/interfaces/plugins.d.ts +168 -0
- package/types/langs/_Lang.d.ts +2 -2
- package/types/langs/index.d.ts +2 -2
- package/types/modules/contract/Browser.d.ts +262 -0
- package/types/modules/contract/ColorPicker.d.ts +99 -0
- package/types/modules/contract/Controller.d.ts +204 -0
- package/types/modules/contract/Figure.d.ts +529 -0
- package/types/modules/{HueSlider.d.ts → contract/HueSlider.d.ts} +39 -28
- package/types/modules/contract/Modal.d.ts +62 -0
- package/types/modules/contract/index.d.ts +7 -0
- package/types/modules/manager/ApiManager.d.ts +106 -0
- package/types/modules/manager/FileManager.d.ts +124 -0
- package/types/modules/manager/index.d.ts +3 -0
- package/types/modules/ui/ModalAnchorEditor.d.ts +152 -0
- package/types/modules/ui/SelectMenu.d.ts +107 -0
- package/types/modules/{_DragHandle.d.ts → ui/_DragHandle.d.ts} +1 -0
- package/types/modules/ui/index.d.ts +4 -0
- package/types/plugins/browser/audioGallery.d.ts +33 -41
- package/types/plugins/browser/fileBrowser.d.ts +42 -50
- package/types/plugins/browser/fileGallery.d.ts +33 -41
- package/types/plugins/browser/imageGallery.d.ts +30 -37
- package/types/plugins/browser/videoGallery.d.ts +33 -41
- package/types/plugins/command/blockquote.d.ts +4 -21
- package/types/plugins/command/exportPDF.d.ts +23 -33
- package/types/plugins/command/fileUpload.d.ts +80 -100
- package/types/plugins/command/list_bulleted.d.ts +9 -35
- package/types/plugins/command/list_numbered.d.ts +9 -35
- package/types/plugins/dropdown/align.d.ts +23 -46
- package/types/plugins/dropdown/backgroundColor.d.ts +35 -53
- package/types/plugins/dropdown/blockStyle.d.ts +45 -0
- package/types/plugins/dropdown/font.d.ts +18 -41
- package/types/plugins/dropdown/fontColor.d.ts +35 -53
- package/types/plugins/dropdown/hr.d.ts +26 -52
- package/types/plugins/dropdown/layout.d.ts +19 -25
- package/types/plugins/dropdown/lineHeight.d.ts +21 -39
- package/types/plugins/dropdown/list.d.ts +6 -34
- package/types/plugins/dropdown/paragraphStyle.d.ts +34 -45
- package/types/plugins/dropdown/table/index.d.ts +158 -0
- package/types/plugins/dropdown/table/render/table.html.d.ts +71 -0
- package/types/plugins/dropdown/table/render/table.menu.d.ts +59 -0
- package/types/plugins/dropdown/table/services/table.cell.d.ts +76 -0
- package/types/plugins/dropdown/table/services/table.clipboard.d.ts +26 -0
- package/types/plugins/dropdown/table/services/table.grid.d.ts +77 -0
- package/types/plugins/dropdown/table/services/table.resize.d.ts +72 -0
- package/types/plugins/dropdown/table/services/table.selection.d.ts +59 -0
- package/types/plugins/dropdown/table/services/table.style.d.ts +162 -0
- package/types/plugins/dropdown/table/shared/table.constants.d.ts +134 -0
- package/types/plugins/dropdown/table/shared/table.utils.d.ts +91 -0
- package/types/plugins/dropdown/template.d.ts +19 -25
- package/types/plugins/dropdown/textStyle.d.ts +23 -30
- package/types/plugins/field/mention.d.ts +66 -72
- package/types/plugins/index.d.ts +41 -40
- package/types/plugins/input/fontSize.d.ts +57 -96
- package/types/plugins/input/pageNavigator.d.ts +5 -8
- package/types/plugins/modal/audio.d.ts +60 -153
- package/types/plugins/modal/drawing.d.ts +16 -118
- package/types/plugins/modal/embed.d.ts +46 -166
- package/types/plugins/modal/image/index.d.ts +281 -0
- package/types/plugins/modal/image/render/image.html.d.ts +45 -0
- package/types/plugins/modal/image/services/image.size.d.ts +55 -0
- package/types/plugins/modal/image/services/image.upload.d.ts +24 -0
- package/types/plugins/modal/image/shared/image.constants.d.ts +17 -0
- package/types/plugins/modal/link.d.ts +46 -66
- package/types/plugins/modal/math.d.ts +17 -86
- package/types/plugins/modal/{video.d.ts → video/index.d.ts} +89 -221
- package/types/plugins/modal/video/render/video.html.d.ts +37 -0
- package/types/plugins/modal/video/services/video.size.d.ts +74 -0
- package/types/plugins/modal/video/services/video.upload.d.ts +19 -0
- package/types/plugins/popup/anchor.d.ts +8 -38
- package/types/suneditor.d.ts +55 -24
- package/types/typedef.d.ts +344 -228
- package/CONTRIBUTING.md +0 -186
- package/src/core/base/eventHandlers/handler_ww_key_input.js +0 -1200
- package/src/core/base/eventHandlers/handler_ww_mouse.js +0 -194
- package/src/core/base/eventManager.js +0 -1523
- package/src/core/class/component.js +0 -856
- package/src/core/class/format.js +0 -3433
- package/src/core/class/menu.js +0 -346
- package/src/core/class/selection.js +0 -610
- package/src/core/class/shortcuts.js +0 -98
- package/src/core/class/toolbar.js +0 -431
- package/src/core/class/ui.js +0 -424
- package/src/core/class/viewer.js +0 -750
- package/src/core/section/actives.js +0 -266
- package/src/core/section/context.js +0 -102
- package/src/editorInjector/_classes.js +0 -36
- package/src/editorInjector/_core.js +0 -87
- package/src/editorInjector/index.js +0 -73
- package/src/modules/ApiManager.js +0 -191
- package/src/modules/Controller.js +0 -474
- package/src/modules/Modal.js +0 -346
- package/src/modules/index.js +0 -14
- package/src/plugins/dropdown/table.js +0 -4034
- package/src/plugins/modal/image.js +0 -1376
- package/src/plugins/modal/video.js +0 -1226
- package/types/core/base/eventHandlers/handler_toolbar.d.ts +0 -41
- package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +0 -40
- package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +0 -35
- package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +0 -45
- package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +0 -39
- package/types/core/base/eventManager.d.ts +0 -401
- package/types/core/class/char.d.ts +0 -61
- package/types/core/class/component.d.ts +0 -213
- package/types/core/class/format.d.ts +0 -623
- package/types/core/class/html.d.ts +0 -430
- package/types/core/class/menu.d.ts +0 -126
- package/types/core/class/nodeTransform.d.ts +0 -93
- package/types/core/class/offset.d.ts +0 -522
- package/types/core/class/selection.d.ts +0 -188
- package/types/core/class/shortcuts.d.ts +0 -142
- package/types/core/class/toolbar.d.ts +0 -189
- package/types/core/class/ui.d.ts +0 -164
- package/types/core/class/viewer.d.ts +0 -140
- package/types/core/section/actives.d.ts +0 -46
- package/types/core/section/context.d.ts +0 -45
- package/types/editorInjector/_classes.d.ts +0 -41
- package/types/editorInjector/_core.d.ts +0 -87
- package/types/editorInjector/index.d.ts +0 -69
- package/types/modules/ApiManager.d.ts +0 -125
- package/types/modules/Browser.d.ts +0 -326
- package/types/modules/ColorPicker.d.ts +0 -135
- package/types/modules/Controller.d.ts +0 -251
- package/types/modules/Figure.d.ts +0 -517
- package/types/modules/FileManager.d.ts +0 -202
- package/types/modules/Modal.d.ts +0 -111
- package/types/modules/ModalAnchorEditor.d.ts +0 -236
- package/types/modules/SelectMenu.d.ts +0 -194
- package/types/modules/index.d.ts +0 -26
- package/types/plugins/dropdown/formatBlock.d.ts +0 -55
- package/types/plugins/dropdown/table.d.ts +0 -627
- package/types/plugins/modal/image.d.ts +0 -451
- /package/{LICENSE → LICENSE.txt} +0 -0
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
export default Toolbar;
|
|
3
|
+
/**
|
|
4
|
+
* @description Toolbar class
|
|
5
|
+
*/
|
|
6
|
+
declare class Toolbar {
|
|
7
|
+
/**
|
|
8
|
+
* @constructor
|
|
9
|
+
* @param {SunEditor.Kernel} kernel
|
|
10
|
+
* @param {Object} options - Toolbar options
|
|
11
|
+
* @param {"toolbar"|"toolbar_sub"} options.keyName - Toolbar key name
|
|
12
|
+
* @param {boolean} options.balloon - Balloon toolbar
|
|
13
|
+
* @param {boolean} options.inline - Inline toolbar
|
|
14
|
+
* @param {boolean} options.balloonAlways - Balloon toolbar always show
|
|
15
|
+
* @param {Array<Node>} options.res - Responsive toolbar button list
|
|
16
|
+
*/
|
|
17
|
+
constructor(
|
|
18
|
+
kernel: SunEditor.Kernel,
|
|
19
|
+
{
|
|
20
|
+
keyName,
|
|
21
|
+
balloon,
|
|
22
|
+
inline,
|
|
23
|
+
balloonAlways,
|
|
24
|
+
res,
|
|
25
|
+
}: {
|
|
26
|
+
keyName: 'toolbar' | 'toolbar_sub';
|
|
27
|
+
balloon: boolean;
|
|
28
|
+
inline: boolean;
|
|
29
|
+
balloonAlways: boolean;
|
|
30
|
+
res: Array<Node>;
|
|
31
|
+
},
|
|
32
|
+
);
|
|
33
|
+
isSub: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* @type {Object}
|
|
36
|
+
* @description Key names for the toolbar elements.
|
|
37
|
+
* @property {"toolbar_sub_main"|"toolbar_main"} main - Main toolbar key name
|
|
38
|
+
* @property {"toolbar_sub_buttonTray"|"toolbar_buttonTray"} buttonTray - Button tray key name
|
|
39
|
+
* @property {"toolbar_sub_width"|"toolbar_width"} width - Toolbar width key name
|
|
40
|
+
*/
|
|
41
|
+
keyName: any;
|
|
42
|
+
currentMoreLayerActiveButton: HTMLButtonElement;
|
|
43
|
+
isSticky: boolean;
|
|
44
|
+
isBalloonMode: boolean;
|
|
45
|
+
isInlineMode: boolean;
|
|
46
|
+
isBalloonAlwaysMode: boolean;
|
|
47
|
+
inlineToolbarAttr: {
|
|
48
|
+
top: string;
|
|
49
|
+
width: string;
|
|
50
|
+
isShow: boolean;
|
|
51
|
+
};
|
|
52
|
+
balloonOffset: {
|
|
53
|
+
top: number;
|
|
54
|
+
left: number;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* @description Disables all toolbar buttons.
|
|
58
|
+
*/
|
|
59
|
+
disable(): void;
|
|
60
|
+
/**
|
|
61
|
+
* @description Enables all toolbar buttons.
|
|
62
|
+
*/
|
|
63
|
+
enable(): void;
|
|
64
|
+
/**
|
|
65
|
+
* @description Shows the toolbar.
|
|
66
|
+
*/
|
|
67
|
+
show(): void;
|
|
68
|
+
/**
|
|
69
|
+
* @description Hides the toolbar.
|
|
70
|
+
*/
|
|
71
|
+
hide(): void;
|
|
72
|
+
/**
|
|
73
|
+
* @description Reset buttons of the responsive toolbar.
|
|
74
|
+
*/
|
|
75
|
+
resetResponsiveToolbar(): void;
|
|
76
|
+
/**
|
|
77
|
+
* @description Reset the buttons on the toolbar. (Editor is not reloaded.)
|
|
78
|
+
* - You cannot set a new plugin for the button.
|
|
79
|
+
* @param {Array} buttonList Button list
|
|
80
|
+
*/
|
|
81
|
+
setButtons(buttonList: any[]): void;
|
|
82
|
+
/**
|
|
83
|
+
* @internal
|
|
84
|
+
* @description Reset the sticky toolbar position based on the editor state.
|
|
85
|
+
*/
|
|
86
|
+
_resetSticky(): void;
|
|
87
|
+
/**
|
|
88
|
+
* @internal
|
|
89
|
+
* @description Set up responsive behavior for the toolbar buttons.
|
|
90
|
+
*/
|
|
91
|
+
_setResponsive(): void;
|
|
92
|
+
/**
|
|
93
|
+
* @internal
|
|
94
|
+
* @description Show the `balloon` toolbar based on the current selection.
|
|
95
|
+
* @param {?Range} [rangeObj] - Selection range
|
|
96
|
+
*/
|
|
97
|
+
_showBalloon(rangeObj?: Range | null): void;
|
|
98
|
+
/**
|
|
99
|
+
* @internal
|
|
100
|
+
* @description Adjust the `balloon` toolbar's position.
|
|
101
|
+
* @param {boolean} positionTop - Whether the toolbar should be positioned above the selection
|
|
102
|
+
* @param {Range} [range] - Selection range
|
|
103
|
+
*/
|
|
104
|
+
_setBalloonOffset(positionTop: boolean, range?: Range): void;
|
|
105
|
+
/**
|
|
106
|
+
* @internal
|
|
107
|
+
* @description Show the `inline` toolbar mode.
|
|
108
|
+
*/
|
|
109
|
+
_showInline(): void;
|
|
110
|
+
/**
|
|
111
|
+
* @internal
|
|
112
|
+
* @description Show a more options layer for toolbar buttons.
|
|
113
|
+
* @param {Node} button - Button element
|
|
114
|
+
* @param {Node} layer - More options layer element
|
|
115
|
+
*/
|
|
116
|
+
_moreLayerOn(button: Node, layer: Node): void;
|
|
117
|
+
/**
|
|
118
|
+
* @internal
|
|
119
|
+
* @description Hide the currently active more options layer.
|
|
120
|
+
*/
|
|
121
|
+
_moreLayerOff(): void;
|
|
122
|
+
/**
|
|
123
|
+
* @internal
|
|
124
|
+
* @description Destroy the Toolbar instance and release memory
|
|
125
|
+
*/
|
|
126
|
+
_destroy(): void;
|
|
127
|
+
#private;
|
|
128
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
export default Viewer;
|
|
3
|
+
/**
|
|
4
|
+
* @description Viewer (`codeView`, `fullScreen`, `showBlocks`) class
|
|
5
|
+
*/
|
|
6
|
+
declare class Viewer {
|
|
7
|
+
/**
|
|
8
|
+
* @constructor
|
|
9
|
+
* @param {SunEditor.Kernel} kernel
|
|
10
|
+
*/
|
|
11
|
+
constructor(kernel: SunEditor.Kernel);
|
|
12
|
+
/**
|
|
13
|
+
* @description Changes to code view or wysiwyg view
|
|
14
|
+
* @param {boolean} [value] `true`/`false`, If `undefined` toggle the `codeView` mode.
|
|
15
|
+
*/
|
|
16
|
+
codeView(value?: boolean): void;
|
|
17
|
+
/**
|
|
18
|
+
* @description Changes to full screen or default screen
|
|
19
|
+
* @param {boolean} [value] `true`/`false`, If `undefined` toggle the `fullScreen` mode.
|
|
20
|
+
*/
|
|
21
|
+
fullScreen(value?: boolean): void;
|
|
22
|
+
/**
|
|
23
|
+
* @description Add or remove the class name of `body` so that the code block is visible
|
|
24
|
+
* @param {boolean} [value] `true`/`false`, If `undefined` toggle the `showBlocks` mode.
|
|
25
|
+
*/
|
|
26
|
+
showBlocks(value?: boolean): void;
|
|
27
|
+
/**
|
|
28
|
+
* @internal
|
|
29
|
+
* @description Set the `active` class to the button of the toolbar
|
|
30
|
+
*/
|
|
31
|
+
_setButtonsActive(): void;
|
|
32
|
+
/**
|
|
33
|
+
* @description Prints the current content of the editor.
|
|
34
|
+
* @throws {Error} Throws error if print operation fails.
|
|
35
|
+
*/
|
|
36
|
+
print(): void;
|
|
37
|
+
/**
|
|
38
|
+
* @description Open the preview window.
|
|
39
|
+
*/
|
|
40
|
+
preview(): void;
|
|
41
|
+
/**
|
|
42
|
+
* @internal
|
|
43
|
+
* @description Resets the full-screen height of the editor.
|
|
44
|
+
* - Updates the editor's height dynamically when in full-screen mode.
|
|
45
|
+
*/
|
|
46
|
+
_resetFullScreenHeight(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* @internal
|
|
49
|
+
* @description Run `CodeMirror` Editor
|
|
50
|
+
* @param {"set"|"get"|"readonly"|"refresh"} key Method key
|
|
51
|
+
* @param {*} value `CodeMirror` params
|
|
52
|
+
* @param {string} [rootKey] Root key
|
|
53
|
+
*/
|
|
54
|
+
_codeMirrorEditor(key: 'set' | 'get' | 'readonly' | 'refresh', value: any, rootKey?: string): any;
|
|
55
|
+
/**
|
|
56
|
+
* @internal
|
|
57
|
+
* @description Set method in the code view area
|
|
58
|
+
* @param {string} value HTML string
|
|
59
|
+
*/
|
|
60
|
+
_setCodeView(value: string): void;
|
|
61
|
+
/**
|
|
62
|
+
* @internal
|
|
63
|
+
* @description Get method in the code view area
|
|
64
|
+
*/
|
|
65
|
+
_getCodeView(): any;
|
|
66
|
+
/**
|
|
67
|
+
* @internal
|
|
68
|
+
* @description Adjusts the height of the code view area.
|
|
69
|
+
* - Ensures the code block `auto`-resizes based on its content.
|
|
70
|
+
* @param {HTMLElement} code - Code area
|
|
71
|
+
* @param {HTMLTextAreaElement} codeNumbers - Code numbers area
|
|
72
|
+
* @param {boolean} isAuto - `auto` height option
|
|
73
|
+
*/
|
|
74
|
+
_codeViewAutoHeight(code: HTMLElement, codeNumbers: HTMLTextAreaElement, isAuto: boolean): void;
|
|
75
|
+
/**
|
|
76
|
+
* @internal
|
|
77
|
+
* @this {HTMLElement} Code numbers area
|
|
78
|
+
* @description Synchronizes scrolling of line numbers with the code editor.
|
|
79
|
+
* - Keeps the line numbers aligned with the text.
|
|
80
|
+
* @param {HTMLTextAreaElement} codeNumbers - Code numbers textarea
|
|
81
|
+
*/
|
|
82
|
+
_scrollLineNumbers(this: HTMLElement, codeNumbers: HTMLTextAreaElement): void;
|
|
83
|
+
/**
|
|
84
|
+
* @internal
|
|
85
|
+
* @description Destroy the Viewer instance and release memory
|
|
86
|
+
*/
|
|
87
|
+
_destroy(): void;
|
|
88
|
+
#private;
|
|
89
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Executes built-in editor commands (formatting, undo/redo, save, codeView, etc.)
|
|
4
|
+
* - and manages copy-format state.
|
|
5
|
+
*/
|
|
6
|
+
export default class CommandExecutor {
|
|
7
|
+
/**
|
|
8
|
+
* @constructor
|
|
9
|
+
* @param {SunEditor.Kernel} kernel
|
|
10
|
+
*/
|
|
11
|
+
constructor(kernel: SunEditor.Kernel);
|
|
12
|
+
/**
|
|
13
|
+
* @description Execute default command of command button
|
|
14
|
+
*/
|
|
15
|
+
execute(command: any, button: any): Promise<void>;
|
|
16
|
+
copyFormat(): void;
|
|
17
|
+
#private;
|
|
18
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
export const COMMAND_BUTTONS: '.se-menu-list .se-toolbar-btn[data-command]';
|
|
3
|
+
/**
|
|
4
|
+
* @description Routes toolbar button commands to their handlers and manages active button states.
|
|
5
|
+
*/
|
|
6
|
+
export default class CommandDispatcher {
|
|
7
|
+
/**
|
|
8
|
+
* @constructor
|
|
9
|
+
* @param {SunEditor.Kernel} kernel
|
|
10
|
+
*/
|
|
11
|
+
constructor(kernel: SunEditor.Kernel);
|
|
12
|
+
/**
|
|
13
|
+
* @description All command buttons map
|
|
14
|
+
* @type {Map<string, HTMLElement>}
|
|
15
|
+
*/
|
|
16
|
+
allCommandButtons: Map<string, HTMLElement>;
|
|
17
|
+
/**
|
|
18
|
+
* @description All command buttons map
|
|
19
|
+
* @type {Map<string, HTMLElement>}
|
|
20
|
+
*/
|
|
21
|
+
subAllCommandButtons: Map<string, HTMLElement>;
|
|
22
|
+
get targets(): Map<string, HTMLButtonElement[]>;
|
|
23
|
+
/**
|
|
24
|
+
* @description Returns the active commands array.
|
|
25
|
+
* @returns {Array<string>}
|
|
26
|
+
*/
|
|
27
|
+
get activeCommands(): Array<string>;
|
|
28
|
+
/**
|
|
29
|
+
* @description Run plugin calls and basic commands.
|
|
30
|
+
* @param {string} command Command string
|
|
31
|
+
* @param {string} type Display type string (`command`, `dropdown`, `modal`, `container`)
|
|
32
|
+
* @param {?Node} [button] The element of command button
|
|
33
|
+
*/
|
|
34
|
+
run(command: string, type: string, button?: Node | null): void;
|
|
35
|
+
/**
|
|
36
|
+
* @description Execute `editor.run` with command button.
|
|
37
|
+
* @param {Node} target Command target
|
|
38
|
+
*/
|
|
39
|
+
runFromTarget(target: Node): void;
|
|
40
|
+
/**
|
|
41
|
+
* @description It is executed by inserting the button of `commandTargets` as the argument value of the `func` function.
|
|
42
|
+
* - `func` is called as long as the button array's length.
|
|
43
|
+
* @param {string} cmd data-command
|
|
44
|
+
* @param {(...args: *) => *} func Function.
|
|
45
|
+
*/
|
|
46
|
+
applyTargets(cmd: string, func: (...args: any) => any): void;
|
|
47
|
+
/**
|
|
48
|
+
* @description Sets command target elements.
|
|
49
|
+
* @param {string} cmd - The command identifier.
|
|
50
|
+
* @param {HTMLButtonElement} target - The associated command button.
|
|
51
|
+
*/
|
|
52
|
+
registerTargets(cmd: string, target: HTMLButtonElement): void;
|
|
53
|
+
resetTargets(): void;
|
|
54
|
+
/**
|
|
55
|
+
* @internal
|
|
56
|
+
* @description Caching basic buttons to use
|
|
57
|
+
*/
|
|
58
|
+
_initCommandButtons(): void;
|
|
59
|
+
_copyFormat(): void;
|
|
60
|
+
/**
|
|
61
|
+
* @description Destroy the CommandDispatcher
|
|
62
|
+
*/
|
|
63
|
+
_destroy(): void;
|
|
64
|
+
#private;
|
|
65
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
export default Component;
|
|
3
|
+
/**
|
|
4
|
+
* @description Class for managing components such as images and tables that are not in `line` format
|
|
5
|
+
*/
|
|
6
|
+
declare class Component {
|
|
7
|
+
/**
|
|
8
|
+
* @constructor
|
|
9
|
+
* @param {SunEditor.Kernel} kernel
|
|
10
|
+
*/
|
|
11
|
+
constructor(kernel: SunEditor.Kernel);
|
|
12
|
+
/**
|
|
13
|
+
* @description The current component information, used copy, cut, and keydown events
|
|
14
|
+
* @type {SunEditor.ComponentInfo}
|
|
15
|
+
*/
|
|
16
|
+
info: SunEditor.ComponentInfo;
|
|
17
|
+
/**
|
|
18
|
+
* @description Component is selected
|
|
19
|
+
* @type {boolean}
|
|
20
|
+
*/
|
|
21
|
+
isSelected: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* @description Currently selected component target
|
|
24
|
+
* @type {?Node}
|
|
25
|
+
*/
|
|
26
|
+
currentTarget: Node | null;
|
|
27
|
+
/**
|
|
28
|
+
* @description Currently selected component plugin instance
|
|
29
|
+
* @type {*}
|
|
30
|
+
*/
|
|
31
|
+
currentPlugin: any;
|
|
32
|
+
/**
|
|
33
|
+
* @description Currently selected component plugin name
|
|
34
|
+
* @type {*}
|
|
35
|
+
*/
|
|
36
|
+
currentPluginName: any;
|
|
37
|
+
/**
|
|
38
|
+
* @description Currently selected component information
|
|
39
|
+
* @type {?SunEditor.ComponentInfo}
|
|
40
|
+
*/
|
|
41
|
+
currentInfo: SunEditor.ComponentInfo | null;
|
|
42
|
+
/** @internal */
|
|
43
|
+
__selectionSelected: boolean;
|
|
44
|
+
/** @internal */
|
|
45
|
+
__prevent: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* @description Initialize eventManager reference after EventManager is created.
|
|
48
|
+
*/
|
|
49
|
+
_init(): void;
|
|
50
|
+
/**
|
|
51
|
+
* @description Inserts an element and returns it. (Used for elements: table, hr, image, video)
|
|
52
|
+
* - If `element` is `HR`, inserts and returns the new line.
|
|
53
|
+
* @param {Node} element Element to be inserted
|
|
54
|
+
* @param {Object} [options] Options
|
|
55
|
+
* @param {boolean} [options.skipCharCount=false] If `true`, it will be inserted even if `frameOptions.get('charCounter_max')` is exceeded.
|
|
56
|
+
* @param {boolean} [options.skipHistory=false] If `true`, do not push to history.
|
|
57
|
+
* @param {boolean} [options.scrollTo=true] `true` : Scroll to the inserted element, `false` : Do not scroll.
|
|
58
|
+
* @param {SunEditor.ComponentInsertType} [options.insertBehavior] If `true`, do not automatically select the inserted component. [default: `options.get('componentInsertBehavior')`]
|
|
59
|
+
* - If `null`, no action is performed after insertion.
|
|
60
|
+
* @returns {HTMLElement} The inserted element or new line (for HR)
|
|
61
|
+
*/
|
|
62
|
+
insert(
|
|
63
|
+
element: Node,
|
|
64
|
+
{
|
|
65
|
+
skipCharCount,
|
|
66
|
+
skipHistory,
|
|
67
|
+
scrollTo,
|
|
68
|
+
insertBehavior,
|
|
69
|
+
}?: {
|
|
70
|
+
skipCharCount?: boolean;
|
|
71
|
+
skipHistory?: boolean;
|
|
72
|
+
scrollTo?: boolean;
|
|
73
|
+
insertBehavior?: SunEditor.ComponentInsertType;
|
|
74
|
+
},
|
|
75
|
+
): HTMLElement;
|
|
76
|
+
/**
|
|
77
|
+
* @description Handles post-insertion behavior for a newly created component based on the specified mode.
|
|
78
|
+
* @param {Node} container The inserted component element.
|
|
79
|
+
* @param {?Node} [oNode] Optional node to use for selection if the component cannot be selected.
|
|
80
|
+
* @param {SunEditor.ComponentInsertType} [insertBehavior] Behavior mode after component insertion.
|
|
81
|
+
*/
|
|
82
|
+
applyInsertBehavior(container: Node, oNode?: Node | null, insertBehavior?: SunEditor.ComponentInsertType): void;
|
|
83
|
+
/**
|
|
84
|
+
* @description Gets the file component and that plugin name
|
|
85
|
+
* - return: {target, component, pluginName} | null
|
|
86
|
+
* @param {Node} element Target element (figure tag, component div, file tag)
|
|
87
|
+
* @returns {SunEditor.ComponentInfo|null}
|
|
88
|
+
*/
|
|
89
|
+
get(element: Node): SunEditor.ComponentInfo | null;
|
|
90
|
+
/**
|
|
91
|
+
* @description The component(media, file component, table, etc) is selected and the resizing module is called.
|
|
92
|
+
* @param {Node} element Target element
|
|
93
|
+
* @param {string} pluginName The plugin name for the selected target.
|
|
94
|
+
* @param {Object} [options] Options
|
|
95
|
+
* @param {boolean} [options.isInput=false] Whether the target is an input component (table).
|
|
96
|
+
*/
|
|
97
|
+
select(
|
|
98
|
+
element: Node,
|
|
99
|
+
pluginName: string,
|
|
100
|
+
{
|
|
101
|
+
isInput,
|
|
102
|
+
}?: {
|
|
103
|
+
isInput?: boolean;
|
|
104
|
+
},
|
|
105
|
+
): boolean;
|
|
106
|
+
/**
|
|
107
|
+
* @description Deselects the selected component.
|
|
108
|
+
*/
|
|
109
|
+
deselect(): void;
|
|
110
|
+
/**
|
|
111
|
+
* @description Determines if the specified node is a block component (e.g., img, iframe, video, audio, table) with the class `se-component`
|
|
112
|
+
* - or a direct `FIGURE` node. This function checks if the node itself is a component
|
|
113
|
+
* - or if it belongs to any components identified by the component manager.
|
|
114
|
+
* @param {Node} element The DOM node to check.
|
|
115
|
+
* @returns {boolean} True if the node is a block component or part of it, otherwise false.
|
|
116
|
+
*/
|
|
117
|
+
is(element: Node): boolean;
|
|
118
|
+
/**
|
|
119
|
+
* @description Checks if the given node is an inline component (class `se-inline-component`).
|
|
120
|
+
* - If the node is a `FIGURE`, it checks the parent element instead.
|
|
121
|
+
* - It also verifies whether the node is part of an inline component recognized by the component manager.
|
|
122
|
+
* @param {Node} element The DOM node to check.
|
|
123
|
+
* @returns {boolean} True if the node is an inline component or part of it, otherwise false.
|
|
124
|
+
*/
|
|
125
|
+
isInline(element: Node): boolean;
|
|
126
|
+
/**
|
|
127
|
+
* @description Checks if the specified node qualifies as a basic component within the editor.
|
|
128
|
+
* - This function verifies whether the node is recognized as a component by the `is` function, while also ensuring that it is not an inline component as determined by the `isInline` function.
|
|
129
|
+
* - This is used to identify block-level elements or standalone components that are not part of the inline component classification.
|
|
130
|
+
* @param {Node} element The DOM node to check.
|
|
131
|
+
* @returns {boolean} True if the node is a basic (non-inline) component, otherwise false.
|
|
132
|
+
*/
|
|
133
|
+
isBasic(element: Node): boolean;
|
|
134
|
+
/**
|
|
135
|
+
* @description Copies the specified component node to the clipboard.
|
|
136
|
+
* - This function is different from the one called when the user presses the `Ctrl + C` key combination.
|
|
137
|
+
* @param {Node} container The DOM node to check.
|
|
138
|
+
*/
|
|
139
|
+
copy(container: Node): Promise<void>;
|
|
140
|
+
/**
|
|
141
|
+
* @description Temporarily selects a component without showing its controller.
|
|
142
|
+
* This is a lightweight selection mode used for:
|
|
143
|
+
* - Mouse hover: Shows visual selection while hovering, auto-deselects on mouse out
|
|
144
|
+
* - Table column/row resize: Maintains selection after resize without showing controller
|
|
145
|
+
*
|
|
146
|
+
* Key differences from `select()`:
|
|
147
|
+
* - Does NOT show the component's controller (resize handles, toolbar, etc.)
|
|
148
|
+
* - Sets `__overInfo` flag so selection is automatically cleared on mouse out
|
|
149
|
+
* - Calling `select()` afterward will upgrade to full selection with controller
|
|
150
|
+
*
|
|
151
|
+
* @param {Element} target The element to hover-select
|
|
152
|
+
*/
|
|
153
|
+
hoverSelect(target: Element): void;
|
|
154
|
+
/**
|
|
155
|
+
* @internal
|
|
156
|
+
* @description Deselects the currently selected component, removing any selection effects and associated event listeners.
|
|
157
|
+
* - This method resets the selection state and hides UI elements related to the component selection.
|
|
158
|
+
*/
|
|
159
|
+
__deselect(): void;
|
|
160
|
+
/**
|
|
161
|
+
* @internal
|
|
162
|
+
* @description Set line breaker of component
|
|
163
|
+
* @param {HTMLElement} element Element tag
|
|
164
|
+
*/
|
|
165
|
+
_setComponentLineBreaker(element: HTMLElement): void;
|
|
166
|
+
/**
|
|
167
|
+
* @internal
|
|
168
|
+
* @description Removes global event listeners that were previously added for component interactions.
|
|
169
|
+
*/
|
|
170
|
+
__removeGlobalEvent(): void;
|
|
171
|
+
/**
|
|
172
|
+
* @internal
|
|
173
|
+
* @description Removes drag-related events and resets drag-related states.
|
|
174
|
+
*/
|
|
175
|
+
__removeDragEvent(): void;
|
|
176
|
+
/**
|
|
177
|
+
* @internal
|
|
178
|
+
* @description Destroy the Component instance and release memory
|
|
179
|
+
*/
|
|
180
|
+
_destroy(): void;
|
|
181
|
+
#private;
|
|
182
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Manages editor focus and blur behavior across frames and controllers.
|
|
4
|
+
*/
|
|
5
|
+
export default class FocusManager {
|
|
6
|
+
/**
|
|
7
|
+
* @constructor
|
|
8
|
+
* @param {SunEditor.Kernel} kernel
|
|
9
|
+
*/
|
|
10
|
+
constructor(kernel: SunEditor.Kernel);
|
|
11
|
+
/**
|
|
12
|
+
* @description Focus to wysiwyg area
|
|
13
|
+
* @param {*} [rootKey] Root frame key.
|
|
14
|
+
*/
|
|
15
|
+
focus(rootKey?: any): void;
|
|
16
|
+
/**
|
|
17
|
+
* @description If `focusEl` is a component, then that component is selected; if it is a format element, the last text is selected
|
|
18
|
+
* - If `focusEl` is `null`, then selected last element
|
|
19
|
+
* @param {?Node} [focusEl] Focus element
|
|
20
|
+
*/
|
|
21
|
+
focusEdge(focusEl?: Node | null): void;
|
|
22
|
+
/**
|
|
23
|
+
* @description Focus to wysiwyg area using native focus function
|
|
24
|
+
*/
|
|
25
|
+
nativeFocus(): void;
|
|
26
|
+
/**
|
|
27
|
+
* @description Focusout to wysiwyg area (.blur())
|
|
28
|
+
*/
|
|
29
|
+
blur(): void;
|
|
30
|
+
#private;
|
|
31
|
+
}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
1
2
|
/**
|
|
2
3
|
* @description History stack closure
|
|
3
|
-
* @param {
|
|
4
|
+
* @param {SunEditor.Kernel} kernel
|
|
4
5
|
*/
|
|
5
|
-
export default function History(
|
|
6
|
+
export default function History(kernel: SunEditor.Kernel): {
|
|
6
7
|
/**
|
|
7
8
|
* @description Saving the current status to the history object stack
|
|
8
|
-
* - If
|
|
9
|
-
* - If the function is called again with the
|
|
9
|
+
* - If `delay` is `true`, it will be saved after (`options.get('historyStackDelayTime')` || 400) milliseconds.
|
|
10
|
+
* - If the function is called again with the `delay` argument `true` before it is saved, the delay time is renewed.
|
|
10
11
|
* - You can specify the delay time by sending a number.
|
|
11
|
-
* @param {boolean|number} delay If true
|
|
12
|
-
* @param {
|
|
12
|
+
* @param {boolean|number} delay If `true`, add stack without delay time.
|
|
13
|
+
* @param {*} [rootKey] The key of the root frame to save history for.
|
|
13
14
|
*/
|
|
14
|
-
push(delay: boolean | number, rootKey?: any
|
|
15
|
+
push(delay: boolean | number, rootKey?: any): void;
|
|
15
16
|
/**
|
|
16
17
|
* @description Immediately saves the current state to the history stack if a delayed save is pending.
|
|
17
18
|
* @param {*} rootKey The key of the root frame.
|
|
@@ -28,9 +29,9 @@ export default function History(editor: __se__EditorCore): {
|
|
|
28
29
|
redo(): void;
|
|
29
30
|
/**
|
|
30
31
|
* @description Overwrites the current state in the history stack with the latest content.
|
|
31
|
-
* @param {string
|
|
32
|
+
* @param {string} [rootKey] The key of the root frame to overwrite.
|
|
32
33
|
*/
|
|
33
|
-
overwrite(rootKey?: string
|
|
34
|
+
overwrite(rootKey?: string): void;
|
|
34
35
|
/**
|
|
35
36
|
* @description Pauses the history stack, preventing new entries from being added for up to 5 seconds.
|
|
36
37
|
*/
|
|
@@ -53,8 +54,8 @@ export default function History(editor: __se__EditorCore): {
|
|
|
53
54
|
* @description Returns the root stack containing the history of each frame.
|
|
54
55
|
* @returns {{content: string, s: {path: number|number[], offset: number|number[]}, e: {path: number|number[], offset: number|number[]}, frame: HTMLElement}} The root stack object.
|
|
55
56
|
* - content: content html string
|
|
56
|
-
* - s: depth info of the
|
|
57
|
-
* - e: depth info of the
|
|
57
|
+
* - s: depth info of the `start` range
|
|
58
|
+
* - e: depth info of the `end` range
|
|
58
59
|
* - frame: wysiwyg editable element.
|
|
59
60
|
*/
|
|
60
61
|
getRootStack(): {
|
|
@@ -77,5 +78,5 @@ export default function History(editor: __se__EditorCore): {
|
|
|
77
78
|
/**
|
|
78
79
|
* @description Clears the entire history stack and cancels any pending save operations.
|
|
79
80
|
*/
|
|
80
|
-
|
|
81
|
+
_destroy(): void;
|
|
81
82
|
};
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
export default PluginManager;
|
|
3
|
+
export type PluginEventParam = {
|
|
4
|
+
frameContext: SunEditor.FrameContext;
|
|
5
|
+
event: Event;
|
|
6
|
+
data?: string;
|
|
7
|
+
line?: Node;
|
|
8
|
+
range?: Range;
|
|
9
|
+
file?: File;
|
|
10
|
+
doc?: Document;
|
|
11
|
+
};
|
|
12
|
+
export type ComponentChecker = (element: Node | null) => any;
|
|
13
|
+
/**
|
|
14
|
+
* @typedef {Object} PluginEventParam
|
|
15
|
+
* @property {SunEditor.FrameContext} frameContext
|
|
16
|
+
* @property {Event} event
|
|
17
|
+
* @property {string} [data]
|
|
18
|
+
* @property {Node} [line]
|
|
19
|
+
* @property {Range} [range]
|
|
20
|
+
* @property {File} [file]
|
|
21
|
+
* @property {Document} [doc]
|
|
22
|
+
*/
|
|
23
|
+
/**
|
|
24
|
+
* @typedef {(element: Node | null) => * } ComponentChecker
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* @description Manages plugin registration and state.
|
|
28
|
+
* Extracts `plugin` related responsibilities from the monolithic `Editor` class.
|
|
29
|
+
*/
|
|
30
|
+
declare class PluginManager {
|
|
31
|
+
/**
|
|
32
|
+
* @constructor
|
|
33
|
+
* @param {SunEditor.Kernel} kernel
|
|
34
|
+
* @param {import('../../section/constructor').ConstructorReturnType} [product] - Initial editor context
|
|
35
|
+
*/
|
|
36
|
+
constructor(kernel: SunEditor.Kernel, product?: import('../../section/constructor').ConstructorReturnType);
|
|
37
|
+
/**
|
|
38
|
+
* @description Returns the plugins object.
|
|
39
|
+
* @returns {Object<string, *>}
|
|
40
|
+
*/
|
|
41
|
+
get plugins(): {
|
|
42
|
+
[x: string]: any;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* @description Returns the file component management object.
|
|
46
|
+
* @returns {Object<string, *>}
|
|
47
|
+
*/
|
|
48
|
+
get fileInfo(): {
|
|
49
|
+
[x: string]: any;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* @description Finds component information for the given element.
|
|
53
|
+
* @param {Node} element The DOM element to check.
|
|
54
|
+
* @returns {SunEditor.ComponentInfo|null}
|
|
55
|
+
*/
|
|
56
|
+
findComponentInfo(element: Node): SunEditor.ComponentInfo | null;
|
|
57
|
+
/**
|
|
58
|
+
* @description Apply retain format rules from plugins to the parsed DOM
|
|
59
|
+
* @param {DocumentFragment|Document} domParser
|
|
60
|
+
*/
|
|
61
|
+
applyRetainFormat(domParser: DocumentFragment | Document): void;
|
|
62
|
+
/**
|
|
63
|
+
* @description Dispatches an event to all registered plugin handlers synchronously.
|
|
64
|
+
* @param {string} name The event name (e.g., 'onMouseMove', 'onFocus')
|
|
65
|
+
* @param {PluginEventParam} e The event payload
|
|
66
|
+
* @returns {boolean|undefined} Returns false if any handler cancels the event
|
|
67
|
+
*/
|
|
68
|
+
emitEvent(name: string, e: PluginEventParam): boolean | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* @description Dispatches an event to all registered plugin handlers asynchronously.
|
|
71
|
+
* @param {string} name The event name (e.g., 'onKeyDown', 'onPaste')
|
|
72
|
+
* @param {PluginEventParam} e The event payload
|
|
73
|
+
* @returns {Promise<boolean|undefined>} Returns false if any handler cancels the event
|
|
74
|
+
*/
|
|
75
|
+
emitEventAsync(name: string, e: PluginEventParam): Promise<boolean | undefined>;
|
|
76
|
+
/**
|
|
77
|
+
* @description Check the components such as image and video and modify them according to the format.
|
|
78
|
+
* @param {boolean} loaded If `true`, the component is loaded.
|
|
79
|
+
*/
|
|
80
|
+
checkFileInfo(loaded: boolean): void;
|
|
81
|
+
/**
|
|
82
|
+
* @description Initialize the information of the components.
|
|
83
|
+
*/
|
|
84
|
+
resetFileInfo(): void;
|
|
85
|
+
/**
|
|
86
|
+
* @description If the plugin is not added, add the plugin and call the `add` function.
|
|
87
|
+
* - If the plugin is added call `callBack` function.
|
|
88
|
+
* @param {string} pluginName The name of the plugin to call
|
|
89
|
+
* @param {?Array<HTMLElement>} targets Plugin target button
|
|
90
|
+
* @param {?Object<string, *>} pluginOptions Plugin's options
|
|
91
|
+
*/
|
|
92
|
+
register(
|
|
93
|
+
pluginName: string,
|
|
94
|
+
targets: Array<HTMLElement> | null,
|
|
95
|
+
pluginOptions: {
|
|
96
|
+
[x: string]: any;
|
|
97
|
+
} | null,
|
|
98
|
+
): void;
|
|
99
|
+
/**
|
|
100
|
+
* @description Initialize the plugin manager and register plugins.
|
|
101
|
+
* @param {SunEditor.InitOptions} options
|
|
102
|
+
*/
|
|
103
|
+
init(options: SunEditor.InitOptions): void;
|
|
104
|
+
/**
|
|
105
|
+
* @description Get a specific plugin instance
|
|
106
|
+
* @param {string} name
|
|
107
|
+
* @returns {*}
|
|
108
|
+
*/
|
|
109
|
+
get(name: string): any;
|
|
110
|
+
/**
|
|
111
|
+
* @description Destroy the plugin manager
|
|
112
|
+
*/
|
|
113
|
+
_destroy(): void;
|
|
114
|
+
#private;
|
|
115
|
+
}
|