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,335 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
export default Offset;
|
|
3
|
+
/**
|
|
4
|
+
* Bounding rectangle information of the selection range.
|
|
5
|
+
*/
|
|
6
|
+
export type RectsInfo = {
|
|
7
|
+
/**
|
|
8
|
+
* - The left position of the selection.
|
|
9
|
+
*/
|
|
10
|
+
left: number;
|
|
11
|
+
/**
|
|
12
|
+
* - The right position of the selection.
|
|
13
|
+
*/
|
|
14
|
+
right: number;
|
|
15
|
+
/**
|
|
16
|
+
* - The top position of the selection.
|
|
17
|
+
*/
|
|
18
|
+
top: number;
|
|
19
|
+
/**
|
|
20
|
+
* - The bottom position of the selection.
|
|
21
|
+
*/
|
|
22
|
+
bottom: number;
|
|
23
|
+
/**
|
|
24
|
+
* - Whether the selection contains text.
|
|
25
|
+
*/
|
|
26
|
+
noText?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* - The width of the selection.
|
|
29
|
+
*/
|
|
30
|
+
width?: number;
|
|
31
|
+
/**
|
|
32
|
+
* - The height of the selection.
|
|
33
|
+
*/
|
|
34
|
+
height?: number;
|
|
35
|
+
};
|
|
36
|
+
export type OffsetInfo = {
|
|
37
|
+
/**
|
|
38
|
+
* - The top position of the node relative to the entire document, including iframe offsets.
|
|
39
|
+
*/
|
|
40
|
+
top: number;
|
|
41
|
+
/**
|
|
42
|
+
* - The left position of the node relative to the entire document, including iframe offsets.
|
|
43
|
+
*/
|
|
44
|
+
left: number;
|
|
45
|
+
};
|
|
46
|
+
export type OffsetLocalInfo = {
|
|
47
|
+
/**
|
|
48
|
+
* - The top position of the node relative to the WYSIWYG editor.
|
|
49
|
+
*/
|
|
50
|
+
top: number;
|
|
51
|
+
/**
|
|
52
|
+
* - The left position of the node relative to the WYSIWYG editor.
|
|
53
|
+
*/
|
|
54
|
+
left: number;
|
|
55
|
+
/**
|
|
56
|
+
* - The right position of the node relative to the WYSIWYG editor.
|
|
57
|
+
*/
|
|
58
|
+
right: number;
|
|
59
|
+
/**
|
|
60
|
+
* - The horizontal scroll offset inside the WYSIWYG editor.
|
|
61
|
+
*/
|
|
62
|
+
scrollX: number;
|
|
63
|
+
/**
|
|
64
|
+
* - The vertical scroll offset inside the WYSIWYG editor.
|
|
65
|
+
*/
|
|
66
|
+
scrollY: number;
|
|
67
|
+
/**
|
|
68
|
+
* - The vertical scroll height inside the WYSIWYG editor.
|
|
69
|
+
*/
|
|
70
|
+
scrollH: number;
|
|
71
|
+
};
|
|
72
|
+
export type OffsetGlobalInfo = {
|
|
73
|
+
/**
|
|
74
|
+
* - The top position of the element relative to the entire document.
|
|
75
|
+
*/
|
|
76
|
+
top: number;
|
|
77
|
+
/**
|
|
78
|
+
* - The left position of the element relative to the entire document.
|
|
79
|
+
*/
|
|
80
|
+
left: number;
|
|
81
|
+
/**
|
|
82
|
+
* - The top position within the current viewport, without taking scrolling into account.
|
|
83
|
+
*/
|
|
84
|
+
fixedTop: number;
|
|
85
|
+
/**
|
|
86
|
+
* - The left position within the current viewport, without taking scrolling into account.
|
|
87
|
+
*/
|
|
88
|
+
fixedLeft: number;
|
|
89
|
+
/**
|
|
90
|
+
* - The total width of the element, including its content, padding, and border.
|
|
91
|
+
*/
|
|
92
|
+
width: number;
|
|
93
|
+
/**
|
|
94
|
+
* - The total height of the element, including its content, padding, and border.
|
|
95
|
+
*/
|
|
96
|
+
height: number;
|
|
97
|
+
};
|
|
98
|
+
export type OffsetGlobalScrollInfo = {
|
|
99
|
+
/**
|
|
100
|
+
* - Total top scroll distance
|
|
101
|
+
*/
|
|
102
|
+
top: number;
|
|
103
|
+
/**
|
|
104
|
+
* - Total left scroll distance
|
|
105
|
+
*/
|
|
106
|
+
left: number;
|
|
107
|
+
/**
|
|
108
|
+
* - Total width including scrollable area
|
|
109
|
+
*/
|
|
110
|
+
width: number;
|
|
111
|
+
/**
|
|
112
|
+
* - Total height including scrollable area
|
|
113
|
+
*/
|
|
114
|
+
height: number;
|
|
115
|
+
/**
|
|
116
|
+
* - Horizontal offset from the top reference element
|
|
117
|
+
*/
|
|
118
|
+
x: number;
|
|
119
|
+
/**
|
|
120
|
+
* - Vertical offset from the top reference element
|
|
121
|
+
*/
|
|
122
|
+
y: number;
|
|
123
|
+
/**
|
|
124
|
+
* - Element or window used as the vertical scroll reference
|
|
125
|
+
*/
|
|
126
|
+
ohOffsetEl: HTMLElement | Window | null;
|
|
127
|
+
/**
|
|
128
|
+
* - Element or window used as the horizontal scroll reference
|
|
129
|
+
*/
|
|
130
|
+
owOffsetEl: HTMLElement | Window | null;
|
|
131
|
+
/**
|
|
132
|
+
* - Height of the vertical scrollable area (clientHeight)
|
|
133
|
+
*/
|
|
134
|
+
oh: number;
|
|
135
|
+
/**
|
|
136
|
+
* - Width of the horizontal scrollable area (clientWidth)
|
|
137
|
+
*/
|
|
138
|
+
ow: number;
|
|
139
|
+
/**
|
|
140
|
+
* - Indicates if the vertical scroll reference is the editor area
|
|
141
|
+
*/
|
|
142
|
+
heightEditorRefer: boolean;
|
|
143
|
+
/**
|
|
144
|
+
* - Indicates if the horizontal scroll reference is the editor area
|
|
145
|
+
*/
|
|
146
|
+
widthEditorRefer: boolean;
|
|
147
|
+
/**
|
|
148
|
+
* - Top position of the height offset element relative to the viewport
|
|
149
|
+
*/
|
|
150
|
+
ts: number;
|
|
151
|
+
/**
|
|
152
|
+
* - Left position of the width offset element relative to the viewport
|
|
153
|
+
*/
|
|
154
|
+
ls: number;
|
|
155
|
+
};
|
|
156
|
+
export type OffsetWWScrollInfo = {
|
|
157
|
+
/**
|
|
158
|
+
* - The top scroll offset inside the WYSIWYG editor.
|
|
159
|
+
*/
|
|
160
|
+
top: number;
|
|
161
|
+
/**
|
|
162
|
+
* - The left scroll offset inside the WYSIWYG editor.
|
|
163
|
+
*/
|
|
164
|
+
left: number;
|
|
165
|
+
/**
|
|
166
|
+
* - The total width of the WYSIWYG editor's scrollable area.
|
|
167
|
+
*/
|
|
168
|
+
width: number;
|
|
169
|
+
/**
|
|
170
|
+
* - The total height of the WYSIWYG editor's scrollable area.
|
|
171
|
+
*/
|
|
172
|
+
height: number;
|
|
173
|
+
/**
|
|
174
|
+
* - The sum of `top` and `height`, representing the bottom-most scrollable position.
|
|
175
|
+
*/
|
|
176
|
+
bottom: number;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* @typedef {Object} RectsInfo Bounding rectangle information of the selection range.
|
|
180
|
+
* @property {number} rects.left - The left position of the selection.
|
|
181
|
+
* @property {number} rects.right - The right position of the selection.
|
|
182
|
+
* @property {number} rects.top - The top position of the selection.
|
|
183
|
+
* @property {number} rects.bottom - The bottom position of the selection.
|
|
184
|
+
* @property {boolean} [rects.noText] - Whether the selection contains text.
|
|
185
|
+
* @property {number} [rects.width] - The width of the selection.
|
|
186
|
+
* @property {number} [rects.height] - The height of the selection.
|
|
187
|
+
*/
|
|
188
|
+
/**
|
|
189
|
+
* @typedef {Object} OffsetInfo
|
|
190
|
+
* @property {number} top - The top position of the node relative to the entire document, including iframe offsets.
|
|
191
|
+
* @property {number} left - The left position of the node relative to the entire document, including iframe offsets.
|
|
192
|
+
*/
|
|
193
|
+
/**
|
|
194
|
+
* @typedef {Object} OffsetLocalInfo
|
|
195
|
+
* @property {number} top - The top position of the node relative to the WYSIWYG editor.
|
|
196
|
+
* @property {number} left - The left position of the node relative to the WYSIWYG editor.
|
|
197
|
+
* @property {number} right - The right position of the node relative to the WYSIWYG editor.
|
|
198
|
+
* @property {number} scrollX - The horizontal scroll offset inside the WYSIWYG editor.
|
|
199
|
+
* @property {number} scrollY - The vertical scroll offset inside the WYSIWYG editor.
|
|
200
|
+
* @property {number} scrollH - The vertical scroll height inside the WYSIWYG editor.
|
|
201
|
+
*/
|
|
202
|
+
/**
|
|
203
|
+
* @typedef {Object} OffsetGlobalInfo
|
|
204
|
+
* @property {number} top - The top position of the element relative to the entire document.
|
|
205
|
+
* @property {number} left - The left position of the element relative to the entire document.
|
|
206
|
+
* @property {number} fixedTop - The top position within the current viewport, without taking scrolling into account.
|
|
207
|
+
* @property {number} fixedLeft - The left position within the current viewport, without taking scrolling into account.
|
|
208
|
+
* @property {number} width - The total width of the element, including its content, padding, and border.
|
|
209
|
+
* @property {number} height - The total height of the element, including its content, padding, and border.
|
|
210
|
+
*/
|
|
211
|
+
/**
|
|
212
|
+
* @typedef {Object} OffsetGlobalScrollInfo
|
|
213
|
+
* @property {number} top - Total top scroll distance
|
|
214
|
+
* @property {number} left - Total left scroll distance
|
|
215
|
+
* @property {number} width - Total width including scrollable area
|
|
216
|
+
* @property {number} height - Total height including scrollable area
|
|
217
|
+
* @property {number} x - Horizontal offset from the top reference element
|
|
218
|
+
* @property {number} y - Vertical offset from the top reference element
|
|
219
|
+
* @property {HTMLElement|Window|null} ohOffsetEl - Element or window used as the vertical scroll reference
|
|
220
|
+
* @property {HTMLElement|Window|null} owOffsetEl - Element or window used as the horizontal scroll reference
|
|
221
|
+
* @property {number} oh - Height of the vertical scrollable area (clientHeight)
|
|
222
|
+
* @property {number} ow - Width of the horizontal scrollable area (clientWidth)
|
|
223
|
+
* @property {boolean} heightEditorRefer - Indicates if the vertical scroll reference is the editor area
|
|
224
|
+
* @property {boolean} widthEditorRefer - Indicates if the horizontal scroll reference is the editor area
|
|
225
|
+
* @property {number} ts - Top position of the height offset element relative to the viewport
|
|
226
|
+
* @property {number} ls - Left position of the width offset element relative to the viewport
|
|
227
|
+
*/
|
|
228
|
+
/**
|
|
229
|
+
* @typedef {Object} OffsetWWScrollInfo
|
|
230
|
+
* @property {number} top - The top scroll offset inside the WYSIWYG editor.
|
|
231
|
+
* @property {number} left - The left scroll offset inside the WYSIWYG editor.
|
|
232
|
+
* @property {number} width - The total width of the WYSIWYG editor's scrollable area.
|
|
233
|
+
* @property {number} height - The total height of the WYSIWYG editor's scrollable area.
|
|
234
|
+
* @property {number} bottom - The sum of `top` and `height`, representing the bottom-most scrollable position.
|
|
235
|
+
*/
|
|
236
|
+
/**
|
|
237
|
+
* @description Offset class, get the position of the element
|
|
238
|
+
*/
|
|
239
|
+
declare class Offset {
|
|
240
|
+
/**
|
|
241
|
+
* @constructor
|
|
242
|
+
* @param {SunEditor.Kernel} kernel
|
|
243
|
+
*/
|
|
244
|
+
constructor(kernel: SunEditor.Kernel);
|
|
245
|
+
/**
|
|
246
|
+
* @description Gets the position just outside the argument's internal editor (wysiwygFrame).
|
|
247
|
+
* @param {Node} node Target node.
|
|
248
|
+
* @returns {OffsetInfo} Position relative to the editor frame.
|
|
249
|
+
*/
|
|
250
|
+
get(node: Node): OffsetInfo;
|
|
251
|
+
/**
|
|
252
|
+
* @description Gets the position inside the internal editor of the argument.
|
|
253
|
+
* @param {Node} node Target node.
|
|
254
|
+
* @returns {OffsetLocalInfo} Position relative to the WYSIWYG editor.
|
|
255
|
+
*/
|
|
256
|
+
getLocal(node: Node): OffsetLocalInfo;
|
|
257
|
+
/**
|
|
258
|
+
* @description Returns the position of the argument relative to the global document.
|
|
259
|
+
* This is a refactored version using getBoundingClientRect for better performance and accuracy.
|
|
260
|
+
* @param {?Node} [node] Target element.
|
|
261
|
+
* @returns {OffsetGlobalInfo} Global position and scroll values.
|
|
262
|
+
*/
|
|
263
|
+
getGlobal(node?: Node | null): OffsetGlobalInfo;
|
|
264
|
+
/**
|
|
265
|
+
* @description Gets the current editor-relative scroll offset.
|
|
266
|
+
* @param {?Node} [node] Target element.
|
|
267
|
+
* @returns {OffsetGlobalScrollInfo} Global scroll information.
|
|
268
|
+
*/
|
|
269
|
+
getGlobalScroll(node?: Node | null): OffsetGlobalScrollInfo;
|
|
270
|
+
/**
|
|
271
|
+
* @description Get the scroll info of the WYSIWYG area.
|
|
272
|
+
* @returns {OffsetWWScrollInfo} Scroll information within the editor.
|
|
273
|
+
*/
|
|
274
|
+
getWWScroll(): OffsetWWScrollInfo;
|
|
275
|
+
/**
|
|
276
|
+
* @description Sets the relative position of an element
|
|
277
|
+
* @param {HTMLElement} element Element to position
|
|
278
|
+
* @param {HTMLElement} e_container Element's root container
|
|
279
|
+
* @param {HTMLElement} target Target element to position against
|
|
280
|
+
* @param {HTMLElement} t_container Target's root container
|
|
281
|
+
*/
|
|
282
|
+
setRelPosition(element: HTMLElement, e_container: HTMLElement, target: HTMLElement, t_container: HTMLElement): void;
|
|
283
|
+
/**
|
|
284
|
+
* @description Sets the absolute position of an element
|
|
285
|
+
* @param {HTMLElement} element Element to position
|
|
286
|
+
* @param {HTMLElement} target Target element
|
|
287
|
+
* @param {Object} params Position parameters
|
|
288
|
+
* @param {boolean} [params.isWWTarget=false] Whether the target is within the editor's WYSIWYG area
|
|
289
|
+
* @param {{left:number, top:number}} [params.addOffset={left:0, top:0}] Additional offset
|
|
290
|
+
* @param {"bottom"|"top"} [params.position="bottom"] Position ('bottom'|'top')
|
|
291
|
+
* @param {*} params.inst Instance object of caller
|
|
292
|
+
* @param {HTMLElement} [params.sibling=null] The sibling controller element
|
|
293
|
+
* @returns {{position: "top" | "bottom"} | undefined} Success -> {position: current position}
|
|
294
|
+
*/
|
|
295
|
+
setAbsPosition(
|
|
296
|
+
element: HTMLElement,
|
|
297
|
+
target: HTMLElement,
|
|
298
|
+
params: {
|
|
299
|
+
isWWTarget?: boolean;
|
|
300
|
+
addOffset?: {
|
|
301
|
+
left: number;
|
|
302
|
+
top: number;
|
|
303
|
+
};
|
|
304
|
+
position?: 'bottom' | 'top';
|
|
305
|
+
inst: any;
|
|
306
|
+
sibling?: HTMLElement;
|
|
307
|
+
},
|
|
308
|
+
):
|
|
309
|
+
| {
|
|
310
|
+
position: 'top' | 'bottom';
|
|
311
|
+
}
|
|
312
|
+
| undefined;
|
|
313
|
+
/**
|
|
314
|
+
* @description Sets the position of an element relative to a range
|
|
315
|
+
* @param {HTMLElement} element Element to position
|
|
316
|
+
* @param {?Range} range Range to position against.
|
|
317
|
+
* - if null, the current selection range is used
|
|
318
|
+
* @param {Object} [options={}] Position options
|
|
319
|
+
* @param {"bottom"|"top"} [options.position="bottom"] Position ('bottom'|'top')
|
|
320
|
+
* @param {number} [options.addTop=0] Additional top offset
|
|
321
|
+
* @returns {boolean} Success / Failure
|
|
322
|
+
*/
|
|
323
|
+
setRangePosition(
|
|
324
|
+
element: HTMLElement,
|
|
325
|
+
range: Range | null,
|
|
326
|
+
{
|
|
327
|
+
position,
|
|
328
|
+
addTop,
|
|
329
|
+
}?: {
|
|
330
|
+
position?: 'bottom' | 'top';
|
|
331
|
+
addTop?: number;
|
|
332
|
+
},
|
|
333
|
+
): boolean;
|
|
334
|
+
#private;
|
|
335
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
export default Selection_;
|
|
3
|
+
/**
|
|
4
|
+
* @description Selection, Range related class
|
|
5
|
+
*/
|
|
6
|
+
declare class Selection_ {
|
|
7
|
+
/**
|
|
8
|
+
* @constructor
|
|
9
|
+
* @param {SunEditor.Kernel} kernel
|
|
10
|
+
*/
|
|
11
|
+
constructor(kernel: SunEditor.Kernel);
|
|
12
|
+
/** @type {Range} */
|
|
13
|
+
range: Range;
|
|
14
|
+
/** @type {HTMLElement|Text} */
|
|
15
|
+
selectionNode: HTMLElement | Text;
|
|
16
|
+
/** @internal */
|
|
17
|
+
__iframeFocus: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* @description Get window selection obejct
|
|
20
|
+
* @returns {Selection}
|
|
21
|
+
*/
|
|
22
|
+
get(): Selection;
|
|
23
|
+
/**
|
|
24
|
+
* @description Check if the range object is valid
|
|
25
|
+
* @param {*} range Range object
|
|
26
|
+
* @returns {range is Range}
|
|
27
|
+
*/
|
|
28
|
+
isRange(range: any): range is Range;
|
|
29
|
+
/**
|
|
30
|
+
* @description Get current editor's range object
|
|
31
|
+
* @returns {Range}
|
|
32
|
+
*/
|
|
33
|
+
getRange(): Range;
|
|
34
|
+
/**
|
|
35
|
+
* @description Set current editor's range object and return.
|
|
36
|
+
* @param {Node|Range} startCon Range object or The `startContainer` property of the selection object
|
|
37
|
+
* @param {number} [startOff] The `startOffset` property of the selection object.
|
|
38
|
+
* @param {Node} [endCon] The `endContainer` property of the selection object.
|
|
39
|
+
* @param {number} [endOff] The `endOffset` property of the selection object.
|
|
40
|
+
* @returns {Range}
|
|
41
|
+
* @example
|
|
42
|
+
* // Set range using container and offset
|
|
43
|
+
* const textNode = editor.selection.getNode();
|
|
44
|
+
* editor.selection.setRange(textNode, 0, textNode, 5);
|
|
45
|
+
*
|
|
46
|
+
* // Set range using Range object
|
|
47
|
+
* const range = document.createRange();
|
|
48
|
+
* range.selectNodeContents(someElement);
|
|
49
|
+
* editor.selection.setRange(range);
|
|
50
|
+
*
|
|
51
|
+
* // Collapse cursor to start of element
|
|
52
|
+
* editor.selection.setRange(element, 0, element, 0);
|
|
53
|
+
*/
|
|
54
|
+
setRange(startCon: Node | Range, startOff?: number, endCon?: Node, endOff?: number): Range;
|
|
55
|
+
/**
|
|
56
|
+
* @description Remove range object and button effect
|
|
57
|
+
*/
|
|
58
|
+
removeRange(): void;
|
|
59
|
+
/**
|
|
60
|
+
* @description Returns the range (container and offset) near the given target node.
|
|
61
|
+
* - If the target node has a next sibling, it returns the next sibling with an offset of 0.
|
|
62
|
+
* - If there is no next sibling but a previous sibling exists, it returns the previous sibling with an offset of 1.
|
|
63
|
+
* @param {Node} target Target node whose neighboring range is to be determined.
|
|
64
|
+
* @returns {{container: Node, offset: number}|null} An object containing the nearest container node and its offset.
|
|
65
|
+
*/
|
|
66
|
+
getNearRange(target: Node): {
|
|
67
|
+
container: Node;
|
|
68
|
+
offset: number;
|
|
69
|
+
} | null;
|
|
70
|
+
/**
|
|
71
|
+
* @description If the `range` object is a non-editable area, add a line at the top of the editor and update the `range` object.
|
|
72
|
+
* @param {Range} range core.getRange()
|
|
73
|
+
* @param {?Node} [container] If there is `container` argument, it creates a line in front of the container.
|
|
74
|
+
* @returns {Range} a new `range` or argument `range`.
|
|
75
|
+
*/
|
|
76
|
+
getRangeAndAddLine(range: Range, container?: Node | null): Range;
|
|
77
|
+
/**
|
|
78
|
+
* @description Get current select node
|
|
79
|
+
* @returns {HTMLElement|Text}
|
|
80
|
+
*/
|
|
81
|
+
getNode(): HTMLElement | Text;
|
|
82
|
+
/**
|
|
83
|
+
* @description Get the Rects object.
|
|
84
|
+
* @param {?(Range|Node)} target `Range` | `Node` | `null`
|
|
85
|
+
* @param {"start"|"end"} position It is based on the position of the rect object to be returned in case of range selection.
|
|
86
|
+
* @returns {{rects: import('./offset').RectsInfo, position: "start"|"end", scrollLeft: number, scrollTop: number}}
|
|
87
|
+
* @example
|
|
88
|
+
* // Get rects at start of selection
|
|
89
|
+
* const { rects, position, scrollLeft, scrollTop } = editor.selection.getRects(null, 'start');
|
|
90
|
+
* console.log(rects.left, rects.top, rects.right, rects.bottom);
|
|
91
|
+
*
|
|
92
|
+
* // Get rects for specific node
|
|
93
|
+
* const node = editor.selection.getNode();
|
|
94
|
+
* const rectsInfo = editor.selection.getRects(node, 'end');
|
|
95
|
+
*
|
|
96
|
+
* // Use rects for positioning UI elements
|
|
97
|
+
* const { rects } = editor.selection.getRects(null, 'start');
|
|
98
|
+
* tooltip.style.left = rects.left + 'px';
|
|
99
|
+
* tooltip.style.top = rects.top + 'px';
|
|
100
|
+
*/
|
|
101
|
+
getRects(
|
|
102
|
+
target: (Range | Node) | null,
|
|
103
|
+
position: 'start' | 'end',
|
|
104
|
+
): {
|
|
105
|
+
rects: import('./offset').RectsInfo;
|
|
106
|
+
position: 'start' | 'end';
|
|
107
|
+
scrollLeft: number;
|
|
108
|
+
scrollTop: number;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* @description Get the custom range object of the event.
|
|
112
|
+
* @param {DragEvent} e Event object
|
|
113
|
+
* @returns {{sc: Node, so: number, ec: Node, eo: number}} {sc: `startContainer`, so: `startOffset`, ec: `endContainer`, eo: `endOffset`}
|
|
114
|
+
*/
|
|
115
|
+
getDragEventLocationRange(e: DragEvent): {
|
|
116
|
+
sc: Node;
|
|
117
|
+
so: number;
|
|
118
|
+
ec: Node;
|
|
119
|
+
eo: number;
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* @description Scroll to the corresponding selection or range position.
|
|
123
|
+
* @param {Selection|Range|Node} ref selection or range object
|
|
124
|
+
* @param {Object<string, *>} [scrollOption] option of scrollTo
|
|
125
|
+
* @example
|
|
126
|
+
* // Scroll to current selection smoothly
|
|
127
|
+
* editor.selection.scrollTo(editor.selection.get());
|
|
128
|
+
*
|
|
129
|
+
* // Scroll to specific node
|
|
130
|
+
* const targetNode = document.querySelector('.target-element');
|
|
131
|
+
* editor.selection.scrollTo(targetNode);
|
|
132
|
+
*
|
|
133
|
+
* // Scroll with custom options
|
|
134
|
+
* editor.selection.scrollTo(editor.selection.getRange(), {
|
|
135
|
+
* behavior: 'auto',
|
|
136
|
+
* block: 'center'
|
|
137
|
+
* });
|
|
138
|
+
*/
|
|
139
|
+
scrollTo(
|
|
140
|
+
ref: Selection | Range | Node,
|
|
141
|
+
scrollOption?: {
|
|
142
|
+
[x: string]: any;
|
|
143
|
+
},
|
|
144
|
+
): void;
|
|
145
|
+
/**
|
|
146
|
+
* @description Normalizes and resets the selection range to properly target text nodes instead of element nodes for accurate text editing.
|
|
147
|
+
* @returns {boolean} Returns `false` if there is no valid selection.
|
|
148
|
+
*/
|
|
149
|
+
resetRangeToTextNode(): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* @description Saving the range object and the currently selected node of editor
|
|
152
|
+
*/
|
|
153
|
+
init(): HTMLInputElement;
|
|
154
|
+
/**
|
|
155
|
+
* @internal
|
|
156
|
+
* @description Sets focus to the editor's wysiwyg contenteditable area and restores the last selection range within iframe context.
|
|
157
|
+
*/
|
|
158
|
+
__focus(): void;
|
|
159
|
+
/**
|
|
160
|
+
* @internal
|
|
161
|
+
* @description Initialize the scroll information when the editor first loads
|
|
162
|
+
*/
|
|
163
|
+
__init(): void;
|
|
164
|
+
#private;
|
|
165
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
export default Menu;
|
|
3
|
+
/**
|
|
4
|
+
* @description Dropdown and container menu management class
|
|
5
|
+
*/
|
|
6
|
+
declare class Menu {
|
|
7
|
+
/**
|
|
8
|
+
* @constructor
|
|
9
|
+
* @param {SunEditor.Kernel} kernel
|
|
10
|
+
*/
|
|
11
|
+
constructor(kernel: SunEditor.Kernel);
|
|
12
|
+
/** @type {Object<string, HTMLElement>} */
|
|
13
|
+
targetMap: {
|
|
14
|
+
[x: string]: HTMLElement;
|
|
15
|
+
};
|
|
16
|
+
index: number;
|
|
17
|
+
menus: any[];
|
|
18
|
+
currentButton: HTMLButtonElement;
|
|
19
|
+
currentDropdown: HTMLElement;
|
|
20
|
+
currentDropdownActiveButton: HTMLButtonElement;
|
|
21
|
+
currentDropdownName: string;
|
|
22
|
+
currentDropdownType: string;
|
|
23
|
+
currentContainer: HTMLElement;
|
|
24
|
+
currentContainerActiveButton: HTMLButtonElement;
|
|
25
|
+
currentContainerName: string;
|
|
26
|
+
currentDropdownPlugin: any;
|
|
27
|
+
/**
|
|
28
|
+
* @description Method for managing dropdown element.
|
|
29
|
+
* - You must add the `dropdown` element using this method at custom plugin.
|
|
30
|
+
* @param {{key: string, type: string}} classObj Class object
|
|
31
|
+
* @param {Node} menu Dropdown element
|
|
32
|
+
*/
|
|
33
|
+
initDropdownTarget(
|
|
34
|
+
{
|
|
35
|
+
key,
|
|
36
|
+
type,
|
|
37
|
+
}: {
|
|
38
|
+
key: string;
|
|
39
|
+
type: string;
|
|
40
|
+
},
|
|
41
|
+
menu: Node,
|
|
42
|
+
): void;
|
|
43
|
+
/**
|
|
44
|
+
* @description Opens the dropdown menu for the specified button.
|
|
45
|
+
* @param {Node} button Dropdown's button element to call
|
|
46
|
+
*/
|
|
47
|
+
dropdownOn(button: Node): void;
|
|
48
|
+
/**
|
|
49
|
+
* @description Closes the currently open dropdown menu.
|
|
50
|
+
*/
|
|
51
|
+
dropdownOff(): void;
|
|
52
|
+
/**
|
|
53
|
+
* @description Shows a previously hidden dropdown menu that is still in `on` state.
|
|
54
|
+
* - Only works when a dropdown is active (`currentButton` exists)
|
|
55
|
+
* - Re-displays the dropdown that was hidden by `dropdownHide()`
|
|
56
|
+
* - Recalculates menu position by calling `dropdownOn()` again
|
|
57
|
+
*/
|
|
58
|
+
dropdownShow(): void;
|
|
59
|
+
/**
|
|
60
|
+
* @description Temporarily hides the currently active dropdown menu without closing it.
|
|
61
|
+
* - Unlike `dropdownOff()`, this does not clear the dropdown state or event listeners
|
|
62
|
+
* - The dropdown remains `on` but visually hidden
|
|
63
|
+
* - Use `dropdownShow()` to make it visible again
|
|
64
|
+
*/
|
|
65
|
+
dropdownHide(): void;
|
|
66
|
+
/**
|
|
67
|
+
* @description Opens the menu container for the specified button.
|
|
68
|
+
* @param {Node} button Container's button element to call
|
|
69
|
+
*/
|
|
70
|
+
containerOn(button: Node): void;
|
|
71
|
+
/**
|
|
72
|
+
* @description Closes the currently open menu container.
|
|
73
|
+
*/
|
|
74
|
+
containerOff(): void;
|
|
75
|
+
/**
|
|
76
|
+
* @internal
|
|
77
|
+
* @description Reset the menu position.
|
|
78
|
+
* @param {Node} element Button element
|
|
79
|
+
* @param {HTMLElement} menu Menu element
|
|
80
|
+
*/
|
|
81
|
+
__resetMenuPosition(element: Node, menu: HTMLElement): void;
|
|
82
|
+
/**
|
|
83
|
+
* @internal
|
|
84
|
+
* @description Restore the last menu position using previously stored button and menu elements.
|
|
85
|
+
*/
|
|
86
|
+
__restoreMenuPosition(): void;
|
|
87
|
+
/**
|
|
88
|
+
* @internal
|
|
89
|
+
* @description Destroy the Menu instance and release memory
|
|
90
|
+
*/
|
|
91
|
+
_destroy(): void;
|
|
92
|
+
#private;
|
|
93
|
+
}
|