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
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
import type {} from '../typedef';
|
|
1
2
|
/**
|
|
2
3
|
* @description Write the content to the clipboard
|
|
3
|
-
* - Iframe is replaced with a placeholder :
|
|
4
|
-
* -
|
|
4
|
+
* - Iframe is replaced with a placeholder : `<div data-se-iframe-holder-src="iframe.src">[iframe: iframe.src]</div>`
|
|
5
|
+
* - `iframe placeholder` is re-rendered in `html.clean` when pasted into the editor.
|
|
5
6
|
* @param {Element|Text|string} content Content to be copied to the clipboard
|
|
6
|
-
* @returns {Promise<void>}
|
|
7
|
+
* @returns {Promise<void|false>} If it fails, it returns `false`.
|
|
7
8
|
*/
|
|
8
|
-
export function write(content: Element | Text | string): Promise<void>;
|
|
9
|
+
export function write(content: Element | Text | string): Promise<void | false>;
|
|
9
10
|
declare namespace _default {
|
|
10
11
|
export { write };
|
|
11
12
|
}
|
|
@@ -1,7 +1,13 @@
|
|
|
1
|
+
import type {} from '../typedef';
|
|
1
2
|
/**
|
|
2
3
|
* @description Parses an HTML string into a DOM tree, then recursively traverses the nodes to convert them into a structured JSON representation.
|
|
3
|
-
* -Each element includes its tag name, attributes, and children.
|
|
4
|
-
* -Text nodes are represented as { type: 'text', content: '...' }
|
|
4
|
+
* - Each element includes its tag name, attributes, and children.
|
|
5
|
+
* - Text nodes are represented as `{ type: 'text', content: '...' }`.
|
|
6
|
+
* @example
|
|
7
|
+
* const json = converter.htmlToJson('<p class="txt">Hello</p>');
|
|
8
|
+
* // { type: 'element', tag: 'p', attributes: { class: 'txt' }, children: [
|
|
9
|
+
* // { type: 'text', content: 'Hello' }
|
|
10
|
+
* // ]}
|
|
5
11
|
* @param {string} content HTML string
|
|
6
12
|
* @returns {Object<string, *>} JSON data
|
|
7
13
|
*/
|
|
@@ -10,9 +16,15 @@ export function htmlToJson(content: string): {
|
|
|
10
16
|
};
|
|
11
17
|
/**
|
|
12
18
|
* @description Takes a JSON structure representing HTML elements and recursively serializes it into a valid HTML string.
|
|
13
|
-
* -It rebuilds each tag with attributes and inner content.
|
|
19
|
+
* - It rebuilds each tag with attributes and inner content.
|
|
14
20
|
* Text content and attributes are safely escaped to prevent parsing issues or XSS.
|
|
15
21
|
* Useful for restoring dynamic HTML from a data format.
|
|
22
|
+
* @example
|
|
23
|
+
* const html = converter.jsonToHtml({
|
|
24
|
+
* type: 'element', tag: 'p', attributes: { class: 'txt' },
|
|
25
|
+
* children: [{ type: 'text', content: 'Hello' }],
|
|
26
|
+
* });
|
|
27
|
+
* // '<p class="txt">Hello</p>'
|
|
16
28
|
* @param {Object<string, *>} jsonData
|
|
17
29
|
* @returns {string} HTML string
|
|
18
30
|
*/
|
|
@@ -21,7 +33,6 @@ export function jsonToHtml(jsonData: { [x: string]: any }): string;
|
|
|
21
33
|
* @description Convert HTML string to HTML Entity
|
|
22
34
|
* @param {string} content
|
|
23
35
|
* @returns {string} Content string
|
|
24
|
-
* @private
|
|
25
36
|
*/
|
|
26
37
|
export function htmlToEntity(content: string): string;
|
|
27
38
|
/**
|
|
@@ -59,35 +70,40 @@ export function mergeMaps(...mapsToMerge: Map<any, any>[]): Map<any, any>;
|
|
|
59
70
|
*/
|
|
60
71
|
export function getValues(obj: any): Array<any>;
|
|
61
72
|
/**
|
|
62
|
-
* @description Convert the CamelCase To the KebabCase
|
|
73
|
+
* @description Convert the `CamelCase` To the `KebabCase`.
|
|
63
74
|
* @param {string|Array<string>} param [Camel string]
|
|
64
75
|
*/
|
|
65
76
|
export function camelToKebabCase(param: string | Array<string>): any;
|
|
66
77
|
/**
|
|
67
78
|
* @overload
|
|
68
|
-
* @param {string} param - Kebab-case string.
|
|
69
|
-
* @returns {string} CamelCase string.
|
|
79
|
+
* @param {string} param - `Kebab-case` string.
|
|
80
|
+
* @returns {string} `CamelCase` string.
|
|
70
81
|
*/
|
|
71
82
|
export function kebabToCamelCase(param: string): string;
|
|
72
83
|
/**
|
|
73
84
|
* @overload
|
|
74
|
-
* @param {Array<string>} param - Array of Kebab-case strings.
|
|
75
|
-
* @returns {Array<string>} Array of CamelCase strings.
|
|
85
|
+
* @param {Array<string>} param - Array of `Kebab-case` strings.
|
|
86
|
+
* @returns {Array<string>} Array of `CamelCase` strings.
|
|
76
87
|
*/
|
|
77
88
|
export function kebabToCamelCase(param: Array<string>): Array<string>;
|
|
78
89
|
/**
|
|
79
|
-
*
|
|
90
|
+
* @description Converts a font size string from one CSS unit to another.
|
|
91
|
+
* @example
|
|
92
|
+
* converter.toFontUnit('px', '1rem'); // '16px'
|
|
93
|
+
* converter.toFontUnit('em', '16px'); // '1.00em'
|
|
94
|
+
* converter.toFontUnit('pt', '16px'); // '12pt'
|
|
95
|
+
* converter.toFontUnit('%', '16px'); // '100%'
|
|
80
96
|
* @param {"em"|"rem"|"%"|"pt"|"px"} to Size units to be converted
|
|
81
|
-
* @param {string} size
|
|
97
|
+
* @param {string} size Size to convert with units (ex: `"15rem"`)
|
|
82
98
|
* @returns {string}
|
|
83
99
|
*/
|
|
84
100
|
export function toFontUnit(to: 'em' | 'rem' | '%' | 'pt' | 'px', size: string): string;
|
|
85
101
|
/**
|
|
86
102
|
* @description Convert the node list to an array. If not, returns an empty array.
|
|
87
|
-
* @param {?
|
|
103
|
+
* @param {?SunEditor.NodeCollection} [nodeList]
|
|
88
104
|
* @returns Array
|
|
89
105
|
*/
|
|
90
|
-
export function nodeListToArray(nodeList
|
|
106
|
+
export function nodeListToArray(nodeList?: SunEditor.NodeCollection | null): any;
|
|
91
107
|
/**
|
|
92
108
|
* @description Returns a new object with keys and values swapped.
|
|
93
109
|
* @param {Object<*, *>} obj object
|
|
@@ -95,14 +111,14 @@ export function nodeListToArray(nodeList: __se__NodeCollection | null): any;
|
|
|
95
111
|
*/
|
|
96
112
|
export function swapKeyValue(obj: any): any;
|
|
97
113
|
/**
|
|
98
|
-
* @description Create whitelist RegExp object.
|
|
99
|
-
* @param {string} list Tags list ("br|p|div|pre...")
|
|
114
|
+
* @description Create whitelist `RegExp` object.
|
|
115
|
+
* @param {string} list Tags list (`"br|p|div|pre..."`)
|
|
100
116
|
* @returns {RegExp} Return RegExp format: new RegExp("<\\/?\\b(?!" + list + ")\\b[^>^<]*+>", "gi")
|
|
101
117
|
*/
|
|
102
118
|
export function createElementWhitelist(list: string): RegExp;
|
|
103
119
|
/**
|
|
104
|
-
* @description Create blacklist RegExp object.
|
|
105
|
-
* @param {string} list Tags list ("br|p|div|pre...")
|
|
120
|
+
* @description Create blacklist `RegExp` object.
|
|
121
|
+
* @param {string} list Tags list (`"br|p|div|pre..."`)
|
|
106
122
|
* @returns {RegExp} Return RegExp format: new RegExp("<\\/?\\b(?:" + list + ")\\b[^>^<]*+>", "gi")
|
|
107
123
|
*/
|
|
108
124
|
export function createElementBlacklist(list: string): RegExp;
|
|
@@ -112,7 +128,7 @@ export function createElementBlacklist(list: string): RegExp;
|
|
|
112
128
|
*/
|
|
113
129
|
export function isHexColor(str: string): boolean;
|
|
114
130
|
/**
|
|
115
|
-
* @description Function to convert hex format to a rgb color
|
|
131
|
+
* @description Function to convert hex format to a `rgb` color
|
|
116
132
|
* @param {string} rgba RGBA color format
|
|
117
133
|
* @returns {string}
|
|
118
134
|
*/
|
|
@@ -120,19 +136,19 @@ export function rgb2hex(rgba: string): string;
|
|
|
120
136
|
/**
|
|
121
137
|
* @description Computes the width as a percentage of the parent's width, and returns this value rounded to two decimal places.
|
|
122
138
|
* @param {HTMLElement} target The target element for which to calculate the width percentage.
|
|
123
|
-
* @param {?HTMLElement
|
|
139
|
+
* @param {?HTMLElement} [parentTarget] The parent element to use as the reference for the width calculation. If not provided, the target's parent element is used.
|
|
124
140
|
* @returns {number}
|
|
125
141
|
*/
|
|
126
|
-
export function getWidthInPercentage(target: HTMLElement, parentTarget?:
|
|
142
|
+
export function getWidthInPercentage(target: HTMLElement, parentTarget?: HTMLElement | null): number;
|
|
127
143
|
/**
|
|
128
144
|
* @description Convert url pattern text node to anchor node
|
|
129
145
|
* @param {Node} node Text node
|
|
130
|
-
* @returns {boolean} Return true if the text node is converted to an anchor node
|
|
146
|
+
* @returns {boolean} Return `true` if the text node is converted to an anchor node
|
|
131
147
|
*/
|
|
132
148
|
export function textToAnchor(node: Node): boolean;
|
|
133
149
|
/**
|
|
134
|
-
* Converts styles within a
|
|
135
|
-
* Maintains the original
|
|
150
|
+
* Converts styles within a `<span>` tag to corresponding HTML tags (e.g., `<strong>`, `<em>`, `<u>`, `<s>`).
|
|
151
|
+
* Maintains the original `<span>` tag and wraps its content with the new tags.
|
|
136
152
|
* @param {{ regex: RegExp, tag: string }} styleToTag An object mapping style properties to HTML tags. ex) {bold: { regex: /font-weight\s*:\s*bold/i, tag: 'strong' },}
|
|
137
153
|
* @param {Node} node Node
|
|
138
154
|
*/
|
|
@@ -141,7 +157,7 @@ export function spanToStyleNode(
|
|
|
141
157
|
regex: RegExp;
|
|
142
158
|
tag: string;
|
|
143
159
|
},
|
|
144
|
-
node: Node
|
|
160
|
+
node: Node,
|
|
145
161
|
): void;
|
|
146
162
|
/**
|
|
147
163
|
* Adds a query string to a URL. If the URL already contains a query string, the new query is appended to the existing one.
|
|
@@ -150,34 +166,30 @@ export function spanToStyleNode(
|
|
|
150
166
|
* @returns {string} The updated URL with the query string appended.
|
|
151
167
|
*/
|
|
152
168
|
export function addUrlQuery(url: string, query: string): string;
|
|
169
|
+
/**
|
|
170
|
+
* @typedef {import('../core/schema/options').OptionStyleResult} OptionStyleResult_converter
|
|
171
|
+
*/
|
|
153
172
|
/**
|
|
154
173
|
* @description Converts options-related styles and returns them for each frame.
|
|
155
|
-
* @param {
|
|
174
|
+
* @param {SunEditor.FrameOptions} fo `editor.frameOptions`
|
|
156
175
|
* @param {string} cssText Style string
|
|
157
|
-
* @returns {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
export function _setDefaultOptionStyle(
|
|
161
|
-
fo: Map<string, any>,
|
|
162
|
-
cssText: string
|
|
163
|
-
): {
|
|
164
|
-
top: string;
|
|
165
|
-
frame: string;
|
|
166
|
-
editor: string;
|
|
167
|
-
};
|
|
176
|
+
* @returns {OptionStyleResult_converter}
|
|
177
|
+
*/
|
|
178
|
+
export function _setDefaultOptionStyle(fo: SunEditor.FrameOptions, cssText: string): OptionStyleResult_converter;
|
|
168
179
|
/**
|
|
169
|
-
* @description Set default style tag of the iframe
|
|
170
|
-
* @param {Array<string>} linkNames link names array of CSS files
|
|
171
|
-
* @returns {string} "<link rel="stylesheet" href=".." />.."
|
|
180
|
+
* @description Set default style tag of the `iframe`
|
|
181
|
+
* @param {Array<string>} linkNames link names array of CSS files or `'*'` for all stylesheets
|
|
182
|
+
* @returns {string} `"<link rel="stylesheet" href=".." />.."`
|
|
172
183
|
*/
|
|
173
184
|
export function _setIframeStyleLinks(linkNames: Array<string>): string;
|
|
174
185
|
/**
|
|
175
|
-
* @description When iframe height options is "auto" return "<style>" tag that required.
|
|
176
|
-
* @param {string} frameHeight height
|
|
177
|
-
* @returns {string} "<style>...</style>"
|
|
186
|
+
* @description When `iframe` height options is `"auto"` return `"<style>"` tag that required.
|
|
187
|
+
* @param {string|number} frameHeight height
|
|
188
|
+
* @returns {string} `"<style>...</style>"`
|
|
178
189
|
*/
|
|
179
|
-
export function _setAutoHeightStyle(frameHeight: string): string;
|
|
190
|
+
export function _setAutoHeightStyle(frameHeight: string | number): string;
|
|
180
191
|
export default converter;
|
|
192
|
+
export type OptionStyleResult_converter = import('../core/schema/options').OptionStyleResult;
|
|
181
193
|
declare namespace converter {
|
|
182
194
|
export { htmlToJson };
|
|
183
195
|
export { jsonToHtml };
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import type {} from '../../typedef';
|
|
1
2
|
/**
|
|
2
|
-
* @description A method that checks If the text is blank or to see if it contains
|
|
3
|
+
* @description A method that checks If the text is blank or to see if it contains `ZERO WIDTH SPACE` or empty (`unicode.zeroWidthSpace`)
|
|
3
4
|
* @param {string|Node} text String value or Node
|
|
4
5
|
* @returns {boolean}
|
|
5
6
|
*/
|
|
@@ -8,34 +9,34 @@ export function isZeroWidth(text: string | Node): boolean;
|
|
|
8
9
|
* @description Determine if this offset is the edge offset of container
|
|
9
10
|
* @param {Node} container The node of the selection object. (range.startContainer..)
|
|
10
11
|
* @param {number} offset The offset of the selection object. (core.getRange().startOffset...)
|
|
11
|
-
* @param {?"front"|"end"
|
|
12
|
+
* @param {?("front"|"end")} [dir] Select check point - Both edge, Front edge or End edge. (`"front"`: Front edge, `"end"`: End edge, `undefined`: Both edge)
|
|
12
13
|
* @returns {boolean}
|
|
13
14
|
*/
|
|
14
|
-
export function isEdgePoint(container: Node, offset: number, dir?: (
|
|
15
|
+
export function isEdgePoint(container: Node, offset: number, dir?: ('front' | 'end') | null): boolean;
|
|
15
16
|
/**
|
|
16
17
|
* @description Check the node is a text node.
|
|
17
|
-
* @param {
|
|
18
|
+
* @param {?*} node The node to check
|
|
18
19
|
* @returns {node is Text}
|
|
19
20
|
*/
|
|
20
|
-
export function isText(node:
|
|
21
|
+
export function isText(node: any | null): node is Text;
|
|
21
22
|
/**
|
|
22
23
|
* @description Check the node is an HTMLElement node.
|
|
23
|
-
* @param {
|
|
24
|
+
* @param {?*} node The node to check
|
|
24
25
|
* @returns {node is HTMLElement}
|
|
25
26
|
*/
|
|
26
|
-
export function isElement(node:
|
|
27
|
+
export function isElement(node: any | null): node is HTMLElement;
|
|
27
28
|
/**
|
|
28
29
|
* @description It is judged whether it is the input element (INPUT, TEXTAREA)
|
|
29
|
-
* @param {
|
|
30
|
+
* @param {?*} node The node to check
|
|
30
31
|
* @returns {node is HTMLInputElement}
|
|
31
32
|
*/
|
|
32
|
-
export function isInputElement(node:
|
|
33
|
+
export function isInputElement(node: any | null): node is HTMLInputElement;
|
|
33
34
|
/**
|
|
34
35
|
* @description It is judged whether it is the button element
|
|
35
|
-
* @param {
|
|
36
|
+
* @param {?*} node The node to check
|
|
36
37
|
* @returns {node is HTMLButtonElement}
|
|
37
38
|
*/
|
|
38
|
-
export function isButtonElement(node:
|
|
39
|
+
export function isButtonElement(node: any | null): node is HTMLButtonElement;
|
|
39
40
|
/**
|
|
40
41
|
* @description Check the node is a list (ol, ul)
|
|
41
42
|
* @param {?Node|string} node The element or element name to check
|
|
@@ -109,25 +110,31 @@ export function isFigure(node: (Node | string) | null): boolean;
|
|
|
109
110
|
*/
|
|
110
111
|
export function isContentLess(node: (Node | string) | null): boolean;
|
|
111
112
|
/**
|
|
112
|
-
* @description Check the line element is empty.
|
|
113
|
-
* @param {Node} node
|
|
113
|
+
* @description Check the `line` element is empty.
|
|
114
|
+
* @param {Node} node `line` element node
|
|
114
115
|
* @returns {boolean}
|
|
115
116
|
*/
|
|
116
117
|
export function isEmptyLine(node: Node): boolean;
|
|
117
118
|
/**
|
|
118
|
-
* @description
|
|
119
|
+
* @description Checks if the given node is a container component (class `se-component-container`).
|
|
120
|
+
* @param {Node} element
|
|
121
|
+
* @returns {boolean} `true` if the node is a container component, otherwise `false`.
|
|
122
|
+
*/
|
|
123
|
+
export function isComponentContainer(element: Node): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* @description It is judged whether it is the edit region top `div` element or `iframe`'s `body` tag.
|
|
119
126
|
* @param {?Node} node The node to check
|
|
120
127
|
* @returns {node is HTMLElement}
|
|
121
128
|
*/
|
|
122
129
|
export function isWysiwygFrame(node: Node | null): node is HTMLElement;
|
|
123
130
|
/**
|
|
124
|
-
* @description It is judged whether it is the contenteditable property is false
|
|
131
|
+
* @description It is judged whether it is the `contenteditable` property is `false`.
|
|
125
132
|
* @param {?Node} node The node to check
|
|
126
133
|
* @returns {node is HTMLElement}
|
|
127
134
|
*/
|
|
128
135
|
export function isNonEditable(node: Node | null): node is HTMLElement;
|
|
129
136
|
/**
|
|
130
|
-
* @description Check the span's attributes are empty.
|
|
137
|
+
* @description Check the `span`'s attributes are empty.
|
|
131
138
|
* @param {?Node} node Element node
|
|
132
139
|
* @returns {boolean}
|
|
133
140
|
*/
|
|
@@ -140,14 +147,14 @@ export function isSpanWithoutAttr(node: Node | null): boolean;
|
|
|
140
147
|
*/
|
|
141
148
|
export function isSameAttributes(a: Node, b: Node): boolean;
|
|
142
149
|
/**
|
|
143
|
-
* @description It is judged whether it is the not checking node. (class
|
|
150
|
+
* @description It is judged whether it is the not checking node. (class=`katex`, `MathJax`, `se-exclude-format`)
|
|
144
151
|
* @param {Node} node The node to check
|
|
145
152
|
* @returns {node is HTMLElement}
|
|
146
153
|
*/
|
|
147
154
|
export function isExcludeFormat(node: Node): node is HTMLElement;
|
|
148
155
|
/**
|
|
149
|
-
* @description Checks for
|
|
150
|
-
* - Components with class
|
|
156
|
+
* @description Checks for `__se__uneditable` in the class list.
|
|
157
|
+
* - Components with class `__se__uneditable` cannot be modified.
|
|
151
158
|
* @param {Node} node The element to check
|
|
152
159
|
* @returns {boolean}
|
|
153
160
|
*/
|
|
@@ -179,6 +186,7 @@ declare namespace check {
|
|
|
179
186
|
export { isFigure };
|
|
180
187
|
export { isContentLess };
|
|
181
188
|
export { isEmptyLine };
|
|
189
|
+
export { isComponentContainer };
|
|
182
190
|
export { isWysiwygFrame };
|
|
183
191
|
export { isNonEditable };
|
|
184
192
|
export { isSpanWithoutAttr };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type {} from '../../typedef';
|
|
1
2
|
/**
|
|
2
3
|
* @description Returns the index compared to other sibling nodes.
|
|
3
4
|
* @param {Node} node The Node to find index
|
|
@@ -5,53 +6,61 @@
|
|
|
5
6
|
*/
|
|
6
7
|
export function getPositionIndex(node: Node): number;
|
|
7
8
|
/**
|
|
8
|
-
* @description Returns the position of the
|
|
9
|
+
* @description Returns the position of the `node` in the `parentNode` in a numerical array.
|
|
9
10
|
* - e.g.) <p><span>aa</span><span>bb</span></p> : getNodePath(node: "bb", parentNode: "<P>") -> [1, 0]
|
|
10
11
|
* @param {Node} node The Node to find position path
|
|
11
|
-
* @param {?Node} parentNode Parent node. If null
|
|
12
|
-
* @param {?{s: number, e: number}
|
|
13
|
-
*
|
|
12
|
+
* @param {?Node} parentNode Parent node. If `null`, wysiwyg `div` area
|
|
13
|
+
* @param {?{s: number, e: number}} [_newOffsets] If you send an object of the form `{s: 0, e: 0}`, the text nodes that are attached together are merged into one, centered on the `node` argument.
|
|
14
|
+
* `_newOffsets.s` stores the length of the combined characters after `node` and `_newOffsets.e` stores the length of the combined characters before `node`.
|
|
14
15
|
* Do not use unless absolutely necessary.
|
|
15
16
|
* @returns {Array<number>}
|
|
16
17
|
*/
|
|
17
18
|
export function getNodePath(
|
|
18
19
|
node: Node,
|
|
19
20
|
parentNode: Node | null,
|
|
20
|
-
_newOffsets?:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
} | null)
|
|
25
|
-
| undefined
|
|
21
|
+
_newOffsets?: {
|
|
22
|
+
s: number;
|
|
23
|
+
e: number;
|
|
24
|
+
} | null,
|
|
26
25
|
): Array<number>;
|
|
27
26
|
/**
|
|
28
27
|
* @template {Node} T
|
|
29
|
-
* @description Returns the node in the location of the path array obtained from
|
|
30
|
-
* @param {Array<number>} offsets Position array, array obtained from
|
|
28
|
+
* @description Returns the node in the location of the path array obtained from `helper.dom.getNodePath`.
|
|
29
|
+
* @param {Array<number>} offsets Position array, array obtained from `helper.dom.getNodePath`
|
|
31
30
|
* @param {Node} parentNode Base parent element
|
|
32
31
|
* @returns {T}
|
|
33
32
|
*/
|
|
34
33
|
export function getNodeFromPath<T extends Node>(offsets: Array<number>, parentNode: Node): T;
|
|
35
34
|
/**
|
|
36
35
|
* @template {HTMLElement} T
|
|
37
|
-
* @description Get all
|
|
36
|
+
* @description Get all `child node` of the argument value element
|
|
38
37
|
* @param {Node} element element to get child node
|
|
39
38
|
* @param {?(current: *) => boolean} validation Conditional function
|
|
39
|
+
* @returns {T|null}
|
|
40
|
+
*/
|
|
41
|
+
export function getChildNode<T extends HTMLElement>(element: Node, validation: ((current: any) => boolean) | null): T | null;
|
|
42
|
+
/**
|
|
43
|
+
* @template {HTMLElement} T
|
|
44
|
+
* @description Get all `children` of the argument value element (Without text nodes)
|
|
45
|
+
* @param {Node} element element to get child node
|
|
46
|
+
* @param {?(current: *) => boolean} validation Conditional function
|
|
47
|
+
* @param {?number} depth Number of child levels to depth.
|
|
40
48
|
* @returns {Array<T>}
|
|
41
49
|
*/
|
|
42
|
-
export function getListChildren<T extends HTMLElement>(element: Node, validation: ((current: any) => boolean) | null): Array<T>;
|
|
50
|
+
export function getListChildren<T extends HTMLElement>(element: Node, validation: ((current: any) => boolean) | null, depth: number | null): Array<T>;
|
|
43
51
|
/**
|
|
44
52
|
* @template {Node} T
|
|
45
|
-
* @description Get all
|
|
53
|
+
* @description Get all `childNodes` of the argument value element (Include text nodes)
|
|
46
54
|
* @param {Node} element element to get child node
|
|
47
55
|
* @param {?(current: *) => boolean} validation Conditional function
|
|
56
|
+
* @param {?number} depth Number of child levels to depth.
|
|
48
57
|
* @returns {Array<T>}
|
|
49
58
|
*/
|
|
50
|
-
export function getListChildNodes<T extends Node>(element: Node, validation: ((current: any) => boolean) | null): Array<T>;
|
|
59
|
+
export function getListChildNodes<T extends Node>(element: Node, validation: ((current: any) => boolean) | null, depth: number | null): Array<T>;
|
|
51
60
|
/**
|
|
52
61
|
* @description Returns the number of parents nodes.
|
|
53
|
-
* -
|
|
54
|
-
* -
|
|
62
|
+
* - `0` when the parent node is the WYSIWYG area.
|
|
63
|
+
* - `-1` when the element argument is the WYSIWYG area.
|
|
55
64
|
* @param {Node} node The element to check
|
|
56
65
|
* @returns {number}
|
|
57
66
|
*/
|
|
@@ -59,18 +68,18 @@ export function getNodeDepth(node: Node): number;
|
|
|
59
68
|
/**
|
|
60
69
|
* @description Sort a node array by depth of element.
|
|
61
70
|
* @param {Array<Node>} array Node array
|
|
62
|
-
* @param {boolean} des true
|
|
71
|
+
* @param {boolean} des `true`: descending order / `false`: ascending order
|
|
63
72
|
*/
|
|
64
73
|
export function sortNodeByDepth(array: Array<Node>, des: boolean): void;
|
|
65
74
|
/**
|
|
66
75
|
* @description Compares two elements to find a common ancestor, and returns the order of the two elements.
|
|
67
76
|
* @param {Node} a Node to compare.
|
|
68
77
|
* @param {Node} b Node to compare.
|
|
69
|
-
* @returns {{ancestor: HTMLElement
|
|
78
|
+
* @returns {{ancestor: ?HTMLElement, a: Node, b: Node, result: number}} { ancesstor, a, b, result: (a > b ? 1 : a < b ? -1 : 0) };
|
|
70
79
|
*/
|
|
71
80
|
export function compareElements(
|
|
72
81
|
a: Node,
|
|
73
|
-
b: Node
|
|
82
|
+
b: Node,
|
|
74
83
|
): {
|
|
75
84
|
ancestor: HTMLElement | null;
|
|
76
85
|
a: Node;
|
|
@@ -81,29 +90,38 @@ export function compareElements(
|
|
|
81
90
|
* @template {HTMLElement} T
|
|
82
91
|
* @description Get the parent element of the argument value.
|
|
83
92
|
* - A tag that satisfies the query condition is imported.
|
|
93
|
+
* @example
|
|
94
|
+
* // Find by tag name
|
|
95
|
+
* const table = dom.query.getParentElement(cell, 'TABLE');
|
|
96
|
+
*
|
|
97
|
+
* // Find by CSS class
|
|
98
|
+
* const wrapper = dom.query.getParentElement(node, '.se-wrapper');
|
|
99
|
+
*
|
|
100
|
+
* // Find by validation function
|
|
101
|
+
* const line = dom.query.getParentElement(node, (el) => el.nodeType === 1);
|
|
84
102
|
* @param {Node} element Reference element
|
|
85
|
-
* @param {string|((current: *) => boolean)|Node} query Query String (nodeName
|
|
103
|
+
* @param {string|((current: *) => boolean)|Node} query Query String (`nodeName`, `.className`, `#ID`, `:name`) or validation function.
|
|
86
104
|
* - Not use it like jquery.
|
|
87
105
|
* - Only one condition can be entered at a time.
|
|
88
|
-
* @param {?number
|
|
89
|
-
* @returns {T|null} Not found: null
|
|
106
|
+
* @param {?number} [depth] Number of parent levels to depth.
|
|
107
|
+
* @returns {T|null} Not found: `null`
|
|
90
108
|
*/
|
|
91
|
-
export function getParentElement<T extends HTMLElement>(element: Node, query: string | ((current: any) => boolean) | Node, depth?:
|
|
109
|
+
export function getParentElement<T extends HTMLElement>(element: Node, query: string | ((current: any) => boolean) | Node, depth?: number | null): T | null;
|
|
92
110
|
/**
|
|
93
111
|
* @template {HTMLElement} T
|
|
94
112
|
* @description Gets all ancestors of the argument value.
|
|
95
113
|
* - Get all tags that satisfy the query condition.
|
|
96
114
|
* @param {Node} element Reference element
|
|
97
|
-
* @param {string|((current: *) => boolean)|Node} query Query String (nodeName
|
|
115
|
+
* @param {string|((current: *) => boolean)|Node} query Query String (`nodeName`, `.className`, `#ID`, `:name`) or validation function.
|
|
98
116
|
* Not use it like jquery.
|
|
99
117
|
* Only one condition can be entered at a time.
|
|
100
|
-
* @param {?number
|
|
118
|
+
* @param {?number} [depth] Number of parent levels to depth.
|
|
101
119
|
* @returns {Array<T>} Returned in an array in order.
|
|
102
120
|
*/
|
|
103
|
-
export function getParentElements<T extends HTMLElement>(element: Node, query: string | ((current: any) => boolean) | Node, depth?:
|
|
121
|
+
export function getParentElements<T extends HTMLElement>(element: Node, query: string | ((current: any) => boolean) | Node, depth?: number | null): Array<T>;
|
|
104
122
|
/**
|
|
105
123
|
* @template {HTMLElement} T
|
|
106
|
-
* @description Gets the element with
|
|
124
|
+
* @description Gets the element with `data-command` attribute among the parent elements.
|
|
107
125
|
* @param {Node} target Target element
|
|
108
126
|
* @returns {T|null}
|
|
109
127
|
*/
|
|
@@ -120,25 +138,25 @@ export function getEventTarget<T extends HTMLElement>(event: Event): T | null;
|
|
|
120
138
|
* @description Get the child element of the argument value.
|
|
121
139
|
* - A tag that satisfies the query condition is imported.
|
|
122
140
|
* @param {Node} node Reference element
|
|
123
|
-
* @param {string|((current: *) => boolean)|Node} query Query String (nodeName
|
|
124
|
-
* @param {boolean} last If true returns the last node among the found child nodes. (default: first node)
|
|
141
|
+
* @param {string|((current: *) => boolean)|Node} query Query String (`nodeName`, `.className`, `#ID`, `:name`) or validation function.
|
|
142
|
+
* @param {boolean} last If `true` returns the last node among the found child nodes. (default: first node)
|
|
125
143
|
* Not use it like jquery.
|
|
126
144
|
* Only one condition can be entered at a time.
|
|
127
|
-
* @returns {T|null} Not found: null
|
|
145
|
+
* @returns {T|null} Not found: `null`
|
|
128
146
|
*/
|
|
129
147
|
export function getEdgeChild<T extends Node>(node: Node, query: string | ((current: any) => boolean) | Node, last: boolean): T | null;
|
|
130
148
|
/**
|
|
131
149
|
* @description Get edge child nodes of the argument value.
|
|
132
|
-
* - 1. The first node of all the child nodes of the
|
|
133
|
-
* - 2. The last node of all the child nodes of the
|
|
134
|
-
* - 3. When there is no
|
|
150
|
+
* - 1. The first node of all the child nodes of the `first` element is returned.
|
|
151
|
+
* - 2. The last node of all the child nodes of the `last` element is returned.
|
|
152
|
+
* - 3. When there is no `last` element, the first and last nodes of all the children of the `first` element are returned.
|
|
135
153
|
* @param {Node} first First element
|
|
136
|
-
* @param {Node
|
|
137
|
-
* @returns {{sc: Node, ec: Node}} { sc:
|
|
154
|
+
* @param {?Node} last Last element
|
|
155
|
+
* @returns {{sc: Node, ec: Node}} { sc: `first`, ec: `last` }
|
|
138
156
|
*/
|
|
139
157
|
export function getEdgeChildNodes(
|
|
140
158
|
first: Node,
|
|
141
|
-
last: Node | null
|
|
159
|
+
last: Node | null,
|
|
142
160
|
): {
|
|
143
161
|
sc: Node;
|
|
144
162
|
ec: Node;
|
|
@@ -147,31 +165,31 @@ export function getEdgeChildNodes(
|
|
|
147
165
|
* @template {Node} T
|
|
148
166
|
* @description Gets the previous sibling last child. If there is no sibling, then it'll take it from the closest ancestor with child
|
|
149
167
|
* @param {Node} node Reference element
|
|
150
|
-
* @param {?Node
|
|
151
|
-
* @returns {T|null} Not found: null
|
|
168
|
+
* @param {?Node} [ceiling] Highest boundary allowed
|
|
169
|
+
* @returns {T|null} Not found: `null`
|
|
152
170
|
*/
|
|
153
|
-
export function getPreviousDeepestNode<T extends Node>(node: Node, ceiling?:
|
|
171
|
+
export function getPreviousDeepestNode<T extends Node>(node: Node, ceiling?: Node | null): T | null;
|
|
154
172
|
/**
|
|
155
173
|
* @template {Node} T
|
|
156
174
|
* @description Gets the next sibling first child. If there is no sibling, then it'll take it from the closest ancestor with child
|
|
157
175
|
* @param {Node} node Reference element
|
|
158
|
-
* @param {?Node
|
|
159
|
-
* @returns {T|null} Not found: null
|
|
176
|
+
* @param {?Node} [ceiling] Highest boundary allowed
|
|
177
|
+
* @returns {T|null} Not found: `null`
|
|
160
178
|
*/
|
|
161
|
-
export function getNextDeepestNode<T extends Node>(node: Node, ceiling?:
|
|
179
|
+
export function getNextDeepestNode<T extends Node>(node: Node, ceiling?: Node | null): T | null;
|
|
162
180
|
/**
|
|
163
|
-
* @description Find the index of the text node in the line element.
|
|
164
|
-
* @param {Node} line
|
|
181
|
+
* @description Find the index of the text node in the `line` element.
|
|
182
|
+
* @param {Node} line `line` element (p, div, etc.)
|
|
165
183
|
* @param {Node} offsetContainer Base node to start searching
|
|
166
184
|
* @param {number} offset Base offset to start searching
|
|
167
|
-
* @param {?(current: *) => boolean
|
|
185
|
+
* @param {?(current: *) => boolean} [validate] Validation function
|
|
168
186
|
* @returns {number}
|
|
169
187
|
*/
|
|
170
|
-
export function findTextIndexOnLine(line: Node, offsetContainer: Node, offset: number, validate?: ((
|
|
188
|
+
export function findTextIndexOnLine(line: Node, offsetContainer: Node, offset: number, validate?: ((current: any) => boolean) | null): number;
|
|
171
189
|
/**
|
|
172
190
|
* @description Find the end index of a sequence of at least minTabSize consecutive non-breaking spaces or spaces
|
|
173
191
|
* - which are interpreted as a tab key, occurring after a given base index in a text string.
|
|
174
|
-
* @param {Node} line
|
|
192
|
+
* @param {Node} line `line` element (p, div, etc.)
|
|
175
193
|
* @param {number} baseIndex Base index to start searching
|
|
176
194
|
* @param {number} minTabSize Minimum number of consecutive spaces to consider as a tab
|
|
177
195
|
* @returns {number} The adjusted index within the line element accounting for non-space characters
|
|
@@ -179,21 +197,21 @@ export function findTextIndexOnLine(line: Node, offsetContainer: Node, offset: n
|
|
|
179
197
|
export function findTabEndIndex(line: Node, baseIndex: number, minTabSize: number): number;
|
|
180
198
|
/**
|
|
181
199
|
* @description Finds the table cell that appears visually at the bottom-right position,
|
|
182
|
-
* considering both rowSpan and colSpan
|
|
200
|
+
* considering both `rowSpan` and `colSpan`, even if smaller cells are placed after large merged cells.
|
|
183
201
|
*
|
|
184
202
|
* @param {HTMLTableCellElement[]} cells
|
|
185
203
|
* @returns {HTMLTableCellElement|null}
|
|
186
204
|
*/
|
|
187
205
|
export function findVisualLastCell(cells: HTMLTableCellElement[]): HTMLTableCellElement | null;
|
|
188
206
|
/**
|
|
189
|
-
* @description
|
|
190
|
-
* @param {
|
|
191
|
-
* @returns {HTMLElement
|
|
207
|
+
* @description Finds and returns parent containers that are scrollable.
|
|
208
|
+
* @param {HTMLElement} element - Element to start with
|
|
209
|
+
* @returns {HTMLElement[]} - Array (in descending order)
|
|
192
210
|
*/
|
|
193
|
-
export function
|
|
211
|
+
export function getScrollParents(element: HTMLElement): HTMLElement[];
|
|
194
212
|
/**
|
|
195
|
-
* @description Get the argument iframe's document object if use the
|
|
196
|
-
* @param {HTMLIFrameElement} iframe Iframe element (this.
|
|
213
|
+
* @description Get the argument iframe's document object if use the `iframe` or `fullPage` options
|
|
214
|
+
* @param {HTMLIFrameElement} iframe Iframe element (`this.frameContext.get('wysiwygFrame')`)
|
|
197
215
|
* @returns {Document}
|
|
198
216
|
*/
|
|
199
217
|
export function getIframeDocument(iframe: HTMLIFrameElement): Document;
|
|
@@ -202,6 +220,7 @@ declare namespace query {
|
|
|
202
220
|
export { getPositionIndex };
|
|
203
221
|
export { getNodePath };
|
|
204
222
|
export { getNodeFromPath };
|
|
223
|
+
export { getChildNode };
|
|
205
224
|
export { getListChildren };
|
|
206
225
|
export { getListChildNodes };
|
|
207
226
|
export { getNodeDepth };
|
|
@@ -218,6 +237,6 @@ declare namespace query {
|
|
|
218
237
|
export { findTextIndexOnLine };
|
|
219
238
|
export { findTabEndIndex };
|
|
220
239
|
export { findVisualLastCell };
|
|
221
|
-
export {
|
|
240
|
+
export { getScrollParents };
|
|
222
241
|
export { getIframeDocument };
|
|
223
242
|
}
|