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,320 @@
|
|
|
1
|
+
import type {} from '../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @typedef {Object} FrameContextStore
|
|
4
|
+
*
|
|
5
|
+
* This object stores **all frame-specific states and DOM references** for a SunEditor instance.
|
|
6
|
+
*
|
|
7
|
+
* - Used to manage **multi-root editors** (each frame has its own context).
|
|
8
|
+
* - Holds references to all **key DOM nodes** (WYSIWYG area, toolbars, status bar, code view, etc.).
|
|
9
|
+
* - Maintains **editor state flags** (fullscreen, readonly, code view, content changes).
|
|
10
|
+
* - Provides storage for **document-type editing features** (page layout, headers, etc.).
|
|
11
|
+
* - Keeps **history positions** and other runtime values for undo/redo operations.
|
|
12
|
+
*
|
|
13
|
+
* This structure is **core to how SunEditor manages each editing frame** and is accessed throughout
|
|
14
|
+
* the editor modules (history, toolbar actions, plugins, etc.).
|
|
15
|
+
* -----------------
|
|
16
|
+
*
|
|
17
|
+
* === Identification ===
|
|
18
|
+
* @property {*} key - Unique key identifying this editor instance (useful for multi-root editors).
|
|
19
|
+
* @property {SunEditor.FrameOptions} options - Frame-specific options (toolbar, plugins, behaviors, etc.).
|
|
20
|
+
*
|
|
21
|
+
* === Core DOM References ===
|
|
22
|
+
* @property {HTMLElement & HTMLTextAreaElement} originElement - The original source element (usually a <textarea> or target element).
|
|
23
|
+
* @property {HTMLElement} topArea - The outermost container wrapping the entire editor (toolbar + editor + status bar).
|
|
24
|
+
* @property {HTMLElement} container - The `.se-container` element that holds the editor's UI.
|
|
25
|
+
* @property {HTMLElement} wrapper - The `.se-wrapper` element containing the editable area and internal components.
|
|
26
|
+
* @property {SunEditor.WysiwygFrame} wysiwygFrame - The WYSIWYG frame element (either an <iframe> or a div in inline mode).
|
|
27
|
+
* @property {HTMLElement} wysiwyg - The actual editable content area (usually the iframe’s <body> or a contentEditable div).
|
|
28
|
+
* @property {SunEditor.EventWysiwyg} eventWysiwyg - Internal reference for wysiwyg events (set on initialization).
|
|
29
|
+
* @property {HTMLElement} codeWrapper - Wrapper element for the code-view mode.
|
|
30
|
+
* @property {HTMLElement & HTMLTextAreaElement} code - Code view editing element (a <textarea> or <pre>).
|
|
31
|
+
* @property {HTMLTextAreaElement} codeNumbers - Element displaying line numbers in code view mode.
|
|
32
|
+
* @property {HTMLElement} placeholder - Placeholder element shown when the editor is empty.
|
|
33
|
+
* @property {HTMLElement} statusbar - Editor status bar element (for resizing, info, etc.).
|
|
34
|
+
* @property {HTMLElement} navigation - Navigation element (e.g., for outline or bookmarks).
|
|
35
|
+
* @property {HTMLElement} charWrapper - Wrapper for the character counter element.
|
|
36
|
+
* @property {HTMLElement} charCounter - Element showing the character counter.
|
|
37
|
+
* @property {Window} [_ww] - The window object of the WYSIWYG frame (iframe window).
|
|
38
|
+
* @property {Document} [_wd] - The document object of the WYSIWYG frame (iframe document).
|
|
39
|
+
*
|
|
40
|
+
* === UI Utilities & Visual Components ===
|
|
41
|
+
* @property {HTMLElement} lineBreaker_t - Top floating line-breaker UI element (for line insertion).
|
|
42
|
+
* @property {HTMLElement} lineBreaker_b - Bottom floating line-breaker UI element (for line insertion).
|
|
43
|
+
* @property {HTMLElement} [_stickyDummy] - Placeholder element used for sticky toolbar behavior.
|
|
44
|
+
* @property {HTMLElement} [_toolbarShadow] - Shadow element below the toolbar for visual effects.
|
|
45
|
+
* @property {{main: HTMLElement, border: HTMLElement, display: HTMLElement, handles: HTMLElement[]}} [_figure] - Current active figure component (image, table, etc.).
|
|
46
|
+
*
|
|
47
|
+
* === State Flags ===
|
|
48
|
+
* @property {boolean} isCodeView - Whether the editor is currently in code view mode.
|
|
49
|
+
* @property {boolean} isFullScreen - Whether the editor is currently in fullscreen mode.
|
|
50
|
+
* @property {boolean} isReadOnly - Whether the editor is set to readonly mode.
|
|
51
|
+
* @property {boolean} isDisabled - Whether the editor is currently disabled.
|
|
52
|
+
* @property {boolean} [isShowBlocks] - Whether block structure visualization is enabled.
|
|
53
|
+
* @property {boolean} isChanged - Whether the content has been changed (-1 means initial state).
|
|
54
|
+
*
|
|
55
|
+
* === History Tracking ===
|
|
56
|
+
* @property {number} historyIndex - Current index in the history stack (undo/redo).
|
|
57
|
+
* @property {number} savedIndex - Last saved index in the history stack.
|
|
58
|
+
*
|
|
59
|
+
* === DocumentType Editing (Optional) ===
|
|
60
|
+
* @property {*} [documentType] - Document-type specific configuration or module reference.
|
|
61
|
+
* @property {HTMLElement} [documentTypeInner] - Inner container for document-type editors.
|
|
62
|
+
* @property {HTMLElement} [documentTypePage] - Page wrapper for paginated editing mode.
|
|
63
|
+
* @property {HTMLElement} [documentTypePageMirror] - Mirror page element used for selection/layout adjustments.
|
|
64
|
+
* @property {boolean} [documentType_use_header] - Whether headers are used in document-type mode.
|
|
65
|
+
* @property {boolean} [documentType_use_page] - Whether page layout is enabled in document-type mode.
|
|
66
|
+
*
|
|
67
|
+
* === Runtime / Computed Values ===
|
|
68
|
+
* @property {number} _minHeight - Minimum height of the wysiwyg area (parsed from inline style or options).
|
|
69
|
+
* @property {CSSStyleDeclaration} [wwComputedStyle] - Cached computed styles for the wysiwyg element.
|
|
70
|
+
* - Set during editor initialization via `window.getComputedStyle(wysiwyg)`.
|
|
71
|
+
* - Used for retrieving runtime CSS values (padding, margins, font-family, etc.).
|
|
72
|
+
* - Improves performance by avoiding repeated `getComputedStyle()` calls.
|
|
73
|
+
* @property {HTMLElement} [_iframeAuto] - Auto-resizing helper iframe (used for dynamic sizing).
|
|
74
|
+
* @property {number} [_editorHeight] - Current height of the editor.
|
|
75
|
+
* ================================================================================================================================
|
|
76
|
+
*/
|
|
77
|
+
/** @typedef {Map<keyof FrameContextStore, *>} FrameContexType */
|
|
78
|
+
/**
|
|
79
|
+
* @description Elements and variables you should have
|
|
80
|
+
* @param {{target: Element, key: *, options: SunEditor.FrameOptions}} editorTarget Target textarea
|
|
81
|
+
* @param {HTMLElement} top Editor top area
|
|
82
|
+
* @param {HTMLElement} wwFrame Editor wysiwyg frame
|
|
83
|
+
* @param {HTMLElement} codeWrapper Editor code view wrapper
|
|
84
|
+
* @param {HTMLElement} codeFrame Editor code view frame
|
|
85
|
+
* @param {{inner: HTMLElement, page: HTMLElement, pageMirror: HTMLElement}} documentTypeInner Document type elements
|
|
86
|
+
* @param {?HTMLElement} statusbar Editor statusbar
|
|
87
|
+
* @param {*} key root key
|
|
88
|
+
* @returns {FrameContexType}
|
|
89
|
+
*/
|
|
90
|
+
export function CreateFrameContext(
|
|
91
|
+
editorTarget: {
|
|
92
|
+
target: Element;
|
|
93
|
+
key: any;
|
|
94
|
+
options: SunEditor.FrameOptions;
|
|
95
|
+
},
|
|
96
|
+
top: HTMLElement,
|
|
97
|
+
wwFrame: HTMLElement,
|
|
98
|
+
codeWrapper: HTMLElement,
|
|
99
|
+
codeFrame: HTMLElement,
|
|
100
|
+
statusbar: HTMLElement | null,
|
|
101
|
+
documentTypeInner: {
|
|
102
|
+
inner: HTMLElement;
|
|
103
|
+
page: HTMLElement;
|
|
104
|
+
pageMirror: HTMLElement;
|
|
105
|
+
},
|
|
106
|
+
key: any,
|
|
107
|
+
): FrameContexType;
|
|
108
|
+
/**
|
|
109
|
+
* @description Update statusbar context
|
|
110
|
+
* @param {HTMLElement} statusbar Statusbar element
|
|
111
|
+
* @param {FrameContexType|import('../config/contextProvider').FrameContextMap} mapper FrameContext map
|
|
112
|
+
*/
|
|
113
|
+
export function UpdateStatusbarContext(statusbar: HTMLElement, mapper: FrameContexType | import('../config/contextProvider').FrameContextMap): void;
|
|
114
|
+
/**
|
|
115
|
+
* This object stores **all frame-specific states and DOM references** for a SunEditor instance.
|
|
116
|
+
*
|
|
117
|
+
* - Used to manage **multi-root editors** (each frame has its own context).
|
|
118
|
+
* - Holds references to all **key DOM nodes** (WYSIWYG area, toolbars, status bar, code view, etc.).
|
|
119
|
+
* - Maintains **editor state flags** (fullscreen, readonly, code view, content changes).
|
|
120
|
+
* - Provides storage for **document-type editing features** (page layout, headers, etc.).
|
|
121
|
+
* - Keeps **history positions** and other runtime values for undo/redo operations.
|
|
122
|
+
*
|
|
123
|
+
* This structure is **core to how SunEditor manages each editing frame** and is accessed throughout
|
|
124
|
+
* the editor modules (history, toolbar actions, plugins, etc.).
|
|
125
|
+
* -----------------
|
|
126
|
+
*
|
|
127
|
+
* === Identification ===
|
|
128
|
+
*/
|
|
129
|
+
export type FrameContextStore = {
|
|
130
|
+
/**
|
|
131
|
+
* - Unique key identifying this editor instance (useful for multi-root editors).
|
|
132
|
+
*/
|
|
133
|
+
key: any;
|
|
134
|
+
/**
|
|
135
|
+
* - Frame-specific options (toolbar, plugins, behaviors, etc.).
|
|
136
|
+
*
|
|
137
|
+
* === Core DOM References ===
|
|
138
|
+
*/
|
|
139
|
+
options: SunEditor.FrameOptions;
|
|
140
|
+
/**
|
|
141
|
+
* - The original source element (usually a <textarea> or target element).
|
|
142
|
+
*/
|
|
143
|
+
originElement: HTMLElement & HTMLTextAreaElement;
|
|
144
|
+
/**
|
|
145
|
+
* - The outermost container wrapping the entire editor (toolbar + editor + status bar).
|
|
146
|
+
*/
|
|
147
|
+
topArea: HTMLElement;
|
|
148
|
+
/**
|
|
149
|
+
* - The `.se-container` element that holds the editor's UI.
|
|
150
|
+
*/
|
|
151
|
+
container: HTMLElement;
|
|
152
|
+
/**
|
|
153
|
+
* - The `.se-wrapper` element containing the editable area and internal components.
|
|
154
|
+
*/
|
|
155
|
+
wrapper: HTMLElement;
|
|
156
|
+
/**
|
|
157
|
+
* - The WYSIWYG frame element (either an <iframe> or a div in inline mode).
|
|
158
|
+
*/
|
|
159
|
+
wysiwygFrame: SunEditor.WysiwygFrame;
|
|
160
|
+
/**
|
|
161
|
+
* - The actual editable content area (usually the iframe’s <body> or a contentEditable div).
|
|
162
|
+
*/
|
|
163
|
+
wysiwyg: HTMLElement;
|
|
164
|
+
/**
|
|
165
|
+
* - Internal reference for wysiwyg events (set on initialization).
|
|
166
|
+
*/
|
|
167
|
+
eventWysiwyg: SunEditor.EventWysiwyg;
|
|
168
|
+
/**
|
|
169
|
+
* - Wrapper element for the code-view mode.
|
|
170
|
+
*/
|
|
171
|
+
codeWrapper: HTMLElement;
|
|
172
|
+
/**
|
|
173
|
+
* - Code view editing element (a <textarea> or <pre>).
|
|
174
|
+
*/
|
|
175
|
+
code: HTMLElement & HTMLTextAreaElement;
|
|
176
|
+
/**
|
|
177
|
+
* - Element displaying line numbers in code view mode.
|
|
178
|
+
*/
|
|
179
|
+
codeNumbers: HTMLTextAreaElement;
|
|
180
|
+
/**
|
|
181
|
+
* - Placeholder element shown when the editor is empty.
|
|
182
|
+
*/
|
|
183
|
+
placeholder: HTMLElement;
|
|
184
|
+
/**
|
|
185
|
+
* - Editor status bar element (for resizing, info, etc.).
|
|
186
|
+
*/
|
|
187
|
+
statusbar: HTMLElement;
|
|
188
|
+
/**
|
|
189
|
+
* - Navigation element (e.g., for outline or bookmarks).
|
|
190
|
+
*/
|
|
191
|
+
navigation: HTMLElement;
|
|
192
|
+
/**
|
|
193
|
+
* - Wrapper for the character counter element.
|
|
194
|
+
*/
|
|
195
|
+
charWrapper: HTMLElement;
|
|
196
|
+
/**
|
|
197
|
+
* - Element showing the character counter.
|
|
198
|
+
*/
|
|
199
|
+
charCounter: HTMLElement;
|
|
200
|
+
/**
|
|
201
|
+
* - The window object of the WYSIWYG frame (iframe window).
|
|
202
|
+
*/
|
|
203
|
+
_ww?: Window;
|
|
204
|
+
/**
|
|
205
|
+
* - The document object of the WYSIWYG frame (iframe document).
|
|
206
|
+
*
|
|
207
|
+
* === UI Utilities & Visual Components ===
|
|
208
|
+
*/
|
|
209
|
+
_wd?: Document;
|
|
210
|
+
/**
|
|
211
|
+
* - Top floating line-breaker UI element (for line insertion).
|
|
212
|
+
*/
|
|
213
|
+
lineBreaker_t: HTMLElement;
|
|
214
|
+
/**
|
|
215
|
+
* - Bottom floating line-breaker UI element (for line insertion).
|
|
216
|
+
*/
|
|
217
|
+
lineBreaker_b: HTMLElement;
|
|
218
|
+
/**
|
|
219
|
+
* - Placeholder element used for sticky toolbar behavior.
|
|
220
|
+
*/
|
|
221
|
+
_stickyDummy?: HTMLElement;
|
|
222
|
+
/**
|
|
223
|
+
* - Shadow element below the toolbar for visual effects.
|
|
224
|
+
*/
|
|
225
|
+
_toolbarShadow?: HTMLElement;
|
|
226
|
+
/**
|
|
227
|
+
* - Current active figure component (image, table, etc.).
|
|
228
|
+
*
|
|
229
|
+
* === State Flags ===
|
|
230
|
+
*/
|
|
231
|
+
_figure?: {
|
|
232
|
+
main: HTMLElement;
|
|
233
|
+
border: HTMLElement;
|
|
234
|
+
display: HTMLElement;
|
|
235
|
+
handles: HTMLElement[];
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* - Whether the editor is currently in code view mode.
|
|
239
|
+
*/
|
|
240
|
+
isCodeView: boolean;
|
|
241
|
+
/**
|
|
242
|
+
* - Whether the editor is currently in fullscreen mode.
|
|
243
|
+
*/
|
|
244
|
+
isFullScreen: boolean;
|
|
245
|
+
/**
|
|
246
|
+
* - Whether the editor is set to readonly mode.
|
|
247
|
+
*/
|
|
248
|
+
isReadOnly: boolean;
|
|
249
|
+
/**
|
|
250
|
+
* - Whether the editor is currently disabled.
|
|
251
|
+
*/
|
|
252
|
+
isDisabled: boolean;
|
|
253
|
+
/**
|
|
254
|
+
* - Whether block structure visualization is enabled.
|
|
255
|
+
*/
|
|
256
|
+
isShowBlocks?: boolean;
|
|
257
|
+
/**
|
|
258
|
+
* - Whether the content has been changed (-1 means initial state).
|
|
259
|
+
*
|
|
260
|
+
* === History Tracking ===
|
|
261
|
+
*/
|
|
262
|
+
isChanged: boolean;
|
|
263
|
+
/**
|
|
264
|
+
* - Current index in the history stack (undo/redo).
|
|
265
|
+
*/
|
|
266
|
+
historyIndex: number;
|
|
267
|
+
/**
|
|
268
|
+
* - Last saved index in the history stack.
|
|
269
|
+
*
|
|
270
|
+
* === DocumentType Editing (Optional) ===
|
|
271
|
+
*/
|
|
272
|
+
savedIndex: number;
|
|
273
|
+
/**
|
|
274
|
+
* - Document-type specific configuration or module reference.
|
|
275
|
+
*/
|
|
276
|
+
documentType?: any;
|
|
277
|
+
/**
|
|
278
|
+
* - Inner container for document-type editors.
|
|
279
|
+
*/
|
|
280
|
+
documentTypeInner?: HTMLElement;
|
|
281
|
+
/**
|
|
282
|
+
* - Page wrapper for paginated editing mode.
|
|
283
|
+
*/
|
|
284
|
+
documentTypePage?: HTMLElement;
|
|
285
|
+
/**
|
|
286
|
+
* - Mirror page element used for selection/layout adjustments.
|
|
287
|
+
*/
|
|
288
|
+
documentTypePageMirror?: HTMLElement;
|
|
289
|
+
/**
|
|
290
|
+
* - Whether headers are used in document-type mode.
|
|
291
|
+
*/
|
|
292
|
+
documentType_use_header?: boolean;
|
|
293
|
+
/**
|
|
294
|
+
* - Whether page layout is enabled in document-type mode.
|
|
295
|
+
*
|
|
296
|
+
* === Runtime / Computed Values ===
|
|
297
|
+
*/
|
|
298
|
+
documentType_use_page?: boolean;
|
|
299
|
+
/**
|
|
300
|
+
* - Minimum height of the wysiwyg area (parsed from inline style or options).
|
|
301
|
+
*/
|
|
302
|
+
_minHeight: number;
|
|
303
|
+
/**
|
|
304
|
+
* - Cached computed styles for the wysiwyg element.
|
|
305
|
+
* - Set during editor initialization via `window.getComputedStyle(wysiwyg)`.
|
|
306
|
+
* - Used for retrieving runtime CSS values (padding, margins, font-family, etc.).
|
|
307
|
+
* - Improves performance by avoiding repeated `getComputedStyle()` calls.
|
|
308
|
+
*/
|
|
309
|
+
wwComputedStyle?: CSSStyleDeclaration;
|
|
310
|
+
/**
|
|
311
|
+
* - Auto-resizing helper iframe (used for dynamic sizing).
|
|
312
|
+
*/
|
|
313
|
+
_iframeAuto?: HTMLElement;
|
|
314
|
+
/**
|
|
315
|
+
* - Current height of the editor.
|
|
316
|
+
* ================================================================================================================================
|
|
317
|
+
*/
|
|
318
|
+
_editorHeight?: number;
|
|
319
|
+
};
|
|
320
|
+
export type FrameContexType = Map<keyof FrameContextStore, any>;
|