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,71 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Creates the initial HTML structure for the table plugin.
|
|
4
|
+
* @returns {HTMLDivElement}
|
|
5
|
+
*/
|
|
6
|
+
export function CreateHTML(): HTMLDivElement;
|
|
7
|
+
/**
|
|
8
|
+
* @description Creates the table controller HTML.
|
|
9
|
+
* @param {SunEditor.Deps} $ - Kernel dependencies
|
|
10
|
+
* @returns {HTMLDivElement}
|
|
11
|
+
*/
|
|
12
|
+
export function CreateHTML_controller_table({ lang, icons }: SunEditor.Deps): HTMLDivElement;
|
|
13
|
+
/**
|
|
14
|
+
* @param {SunEditor.Deps} $ - Kernel dependencies
|
|
15
|
+
* @param {boolean} cellControllerTop - Whether to position cell controller on top
|
|
16
|
+
* @returns {{ html: HTMLElement, splitButton: HTMLButtonElement, columnButton: HTMLButtonElement, rowButton: HTMLButtonElement, mergeButton: HTMLButtonElement, unmergeButton: HTMLButtonElement }}
|
|
17
|
+
*/
|
|
18
|
+
export function CreateHTML_controller_cell(
|
|
19
|
+
{ lang, icons }: SunEditor.Deps,
|
|
20
|
+
cellControllerTop: boolean,
|
|
21
|
+
): {
|
|
22
|
+
html: HTMLElement;
|
|
23
|
+
splitButton: HTMLButtonElement;
|
|
24
|
+
columnButton: HTMLButtonElement;
|
|
25
|
+
rowButton: HTMLButtonElement;
|
|
26
|
+
mergeButton: HTMLButtonElement;
|
|
27
|
+
unmergeButton: HTMLButtonElement;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* @typedef {Object} TableCtrlProps
|
|
31
|
+
* @property {HTMLElement} html
|
|
32
|
+
* @property {HTMLElement} controller_props_title
|
|
33
|
+
* @property {HTMLButtonElement} borderButton
|
|
34
|
+
* @property {HTMLButtonElement} borderFormatButton
|
|
35
|
+
* @property {HTMLElement} cell_alignment
|
|
36
|
+
* @property {HTMLElement} cell_alignment_vertical
|
|
37
|
+
* @property {HTMLElement} cell_alignment_table_text
|
|
38
|
+
* @property {HTMLButtonElement} border_style
|
|
39
|
+
* @property {HTMLInputElement} border_color
|
|
40
|
+
* @property {HTMLInputElement} border_width
|
|
41
|
+
* @property {HTMLInputElement} back_color
|
|
42
|
+
* @property {HTMLInputElement} font_color
|
|
43
|
+
* @property {HTMLButtonElement} palette_border_button
|
|
44
|
+
* @property {HTMLButtonElement} font_bold
|
|
45
|
+
* @property {HTMLButtonElement} font_underline
|
|
46
|
+
* @property {HTMLButtonElement} font_italic
|
|
47
|
+
* @property {HTMLButtonElement} font_strike
|
|
48
|
+
*
|
|
49
|
+
* @param {SunEditor.Deps} $ - Kernel deps
|
|
50
|
+
* @returns {TableCtrlProps}
|
|
51
|
+
*/
|
|
52
|
+
export function CreateHTML_controller_properties({ lang, icons, options }: SunEditor.Deps): TableCtrlProps;
|
|
53
|
+
export type TableCtrlProps = {
|
|
54
|
+
html: HTMLElement;
|
|
55
|
+
controller_props_title: HTMLElement;
|
|
56
|
+
borderButton: HTMLButtonElement;
|
|
57
|
+
borderFormatButton: HTMLButtonElement;
|
|
58
|
+
cell_alignment: HTMLElement;
|
|
59
|
+
cell_alignment_vertical: HTMLElement;
|
|
60
|
+
cell_alignment_table_text: HTMLElement;
|
|
61
|
+
border_style: HTMLButtonElement;
|
|
62
|
+
border_color: HTMLInputElement;
|
|
63
|
+
border_width: HTMLInputElement;
|
|
64
|
+
back_color: HTMLInputElement;
|
|
65
|
+
font_color: HTMLInputElement;
|
|
66
|
+
palette_border_button: HTMLButtonElement;
|
|
67
|
+
font_bold: HTMLButtonElement;
|
|
68
|
+
font_underline: HTMLButtonElement;
|
|
69
|
+
font_italic: HTMLButtonElement;
|
|
70
|
+
font_strike: HTMLButtonElement;
|
|
71
|
+
};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Creates the split menu items.
|
|
4
|
+
* @param {Object} lang - Language object.
|
|
5
|
+
* @returns {{items: string[], menus: NodeListOf<Element>}}
|
|
6
|
+
*/
|
|
7
|
+
export function CreateSplitMenu(lang: any): {
|
|
8
|
+
items: string[];
|
|
9
|
+
menus: NodeListOf<Element>;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* @description Creates the column menu items.
|
|
13
|
+
* @param {Object} lang - Language object.
|
|
14
|
+
* @param {Object} icons - Icons object.
|
|
15
|
+
* @returns {{items: string[], menus: NodeListOf<Element>}}
|
|
16
|
+
*/
|
|
17
|
+
export function CreateColumnMenu(
|
|
18
|
+
lang: any,
|
|
19
|
+
icons: any,
|
|
20
|
+
): {
|
|
21
|
+
items: string[];
|
|
22
|
+
menus: NodeListOf<Element>;
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* @description Creates the row menu items.
|
|
26
|
+
* @param {Object} lang - Language object.
|
|
27
|
+
* @param {Object} icons - Icons object.
|
|
28
|
+
* @returns {{items: string[], menus: NodeListOf<Element>}}
|
|
29
|
+
*/
|
|
30
|
+
export function CreateRowMenu(
|
|
31
|
+
lang: any,
|
|
32
|
+
icons: any,
|
|
33
|
+
): {
|
|
34
|
+
items: string[];
|
|
35
|
+
menus: NodeListOf<Element>;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* @description Creates the border style menu items.
|
|
39
|
+
* @returns {{items: string[], menus: NodeListOf<Element>}}
|
|
40
|
+
*/
|
|
41
|
+
export function CreateBorderMenu(): {
|
|
42
|
+
items: string[];
|
|
43
|
+
menus: NodeListOf<Element>;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* @description Creates the border format menu items.
|
|
47
|
+
* @param {Object} langs - Language object.
|
|
48
|
+
* @param {Object} icons - Icons object.
|
|
49
|
+
* @param {string[]} indideFormats - Formats to exclude.
|
|
50
|
+
* @returns {{items: string[], menus: NodeListOf<Element>}}
|
|
51
|
+
*/
|
|
52
|
+
export function CreateBorderFormatMenu(
|
|
53
|
+
langs: any,
|
|
54
|
+
icons: any,
|
|
55
|
+
indideFormats: string[],
|
|
56
|
+
): {
|
|
57
|
+
items: string[];
|
|
58
|
+
menus: NodeListOf<Element>;
|
|
59
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Handles table cell operations including merging, splitting,
|
|
4
|
+
* - and multi-cell selection management.
|
|
5
|
+
*/
|
|
6
|
+
export class TableCellService {
|
|
7
|
+
/**
|
|
8
|
+
* @param {import('../index').default} main Table index
|
|
9
|
+
* @param {{
|
|
10
|
+
* mergeButton: HTMLButtonElement,
|
|
11
|
+
* unmergeButton: HTMLButtonElement,
|
|
12
|
+
* splitButton: HTMLButtonElement,
|
|
13
|
+
* openCellMenuFunc: ()=>void,
|
|
14
|
+
* closeCellMenuFunc: ()=>void
|
|
15
|
+
* }} options Options for table service
|
|
16
|
+
*/
|
|
17
|
+
constructor(
|
|
18
|
+
main: import('../index').default,
|
|
19
|
+
{
|
|
20
|
+
mergeButton,
|
|
21
|
+
unmergeButton,
|
|
22
|
+
splitButton,
|
|
23
|
+
openCellMenuFunc,
|
|
24
|
+
closeCellMenuFunc,
|
|
25
|
+
}: {
|
|
26
|
+
mergeButton: HTMLButtonElement;
|
|
27
|
+
unmergeButton: HTMLButtonElement;
|
|
28
|
+
splitButton: HTMLButtonElement;
|
|
29
|
+
openCellMenuFunc: () => void;
|
|
30
|
+
closeCellMenuFunc: () => void;
|
|
31
|
+
},
|
|
32
|
+
);
|
|
33
|
+
mergeButton: HTMLButtonElement;
|
|
34
|
+
unmergeButton: HTMLButtonElement;
|
|
35
|
+
splitButton: HTMLButtonElement;
|
|
36
|
+
selectMenu_split: SelectMenu;
|
|
37
|
+
/**
|
|
38
|
+
* @description Opens the split menu.
|
|
39
|
+
*/
|
|
40
|
+
openSplitMenu(): void;
|
|
41
|
+
/**
|
|
42
|
+
* @description Merges the selected table cells into one cell by combining their contents and adjusting their row and column spans.
|
|
43
|
+
* - This method removes the selected cells, consolidates their contents, and applies the appropriate row and column spans to the merged cell.
|
|
44
|
+
* @param {HTMLTableCellElement[]} selectedCells Cells array
|
|
45
|
+
* @param {boolean} [skipPostProcess=false] - If `true`, skips table cloning, cell re-selection, history stack push, and rendering.
|
|
46
|
+
*/
|
|
47
|
+
mergeCells(selectedCells: HTMLTableCellElement[], skipPostProcess?: boolean): void;
|
|
48
|
+
/**
|
|
49
|
+
* @description Unmerges a table cell that has been merged using rowspan and/or colspan.
|
|
50
|
+
* @param {HTMLTableCellElement[]} selectedCells - Cells array
|
|
51
|
+
* @param {boolean} [skipPostProcess=false] - If `true`, skips table cloning, cell re-selection, history stack push, and rendering.
|
|
52
|
+
*/
|
|
53
|
+
unmergeCells(selectedCells: HTMLTableCellElement[], skipPostProcess?: boolean): void;
|
|
54
|
+
/**
|
|
55
|
+
* @description Find merged cells
|
|
56
|
+
* @param {HTMLTableCellElement[]} cells - Cells array
|
|
57
|
+
*/
|
|
58
|
+
findMergedCells(cells: HTMLTableCellElement[]): any[];
|
|
59
|
+
/**
|
|
60
|
+
* @description Sets the merge/split button visibility.
|
|
61
|
+
*/
|
|
62
|
+
setMergeSplitButton(): void;
|
|
63
|
+
/**
|
|
64
|
+
* @description Sets the unmerge button visibility.
|
|
65
|
+
*/
|
|
66
|
+
setUnMergeButton(): void;
|
|
67
|
+
/**
|
|
68
|
+
* @internal
|
|
69
|
+
* @description Splits a table cell either vertically or horizontally.
|
|
70
|
+
* @param {"vertical"|"horizontal"} direction The direction to split the cell.
|
|
71
|
+
*/
|
|
72
|
+
_OnSplitCells(direction: 'vertical' | 'horizontal'): void;
|
|
73
|
+
#private;
|
|
74
|
+
}
|
|
75
|
+
export default TableCellService;
|
|
76
|
+
import { SelectMenu } from '../../../../modules/ui';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Table clipboard service for handling copy and paste operations within tables.
|
|
4
|
+
*/
|
|
5
|
+
export class TableClipboardService {
|
|
6
|
+
/**
|
|
7
|
+
* @param {import('../index').default} main Table index
|
|
8
|
+
*/
|
|
9
|
+
constructor(main: import('../index').default);
|
|
10
|
+
/**
|
|
11
|
+
* @description Copies the selected table cells to the clipboard.
|
|
12
|
+
* @param {ClipboardEvent} e - Event object
|
|
13
|
+
* @param {HTMLElement} container - The container element
|
|
14
|
+
* @param {NodeListOf<HTMLTableCellElement>} selectedCells - The selected table cells
|
|
15
|
+
*/
|
|
16
|
+
copySelectedTableCells(e: ClipboardEvent, container: HTMLElement, selectedCells: NodeListOf<HTMLTableCellElement>): void;
|
|
17
|
+
/**
|
|
18
|
+
* @description Updates the target table's cells with the data from the copied table.
|
|
19
|
+
* @param {HTMLTableElement} copyTable The table containing the copied data.
|
|
20
|
+
* @param {HTMLTableCellElement} targetTD The starting cell in the target table where data will be pasted.
|
|
21
|
+
* @returns {HTMLTableCellElement[]} The array of cells that were updated with pasted data.
|
|
22
|
+
*/
|
|
23
|
+
pasteTableCellMatrix(copyTable: HTMLTableElement, targetTD: HTMLTableCellElement): HTMLTableCellElement[];
|
|
24
|
+
#private;
|
|
25
|
+
}
|
|
26
|
+
export default TableClipboardService;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Manages table grid operations including row and column insertion, deletion, and header toggling.
|
|
4
|
+
*/
|
|
5
|
+
export class TableGridService {
|
|
6
|
+
/**
|
|
7
|
+
* @param {import('../index').default} main Table index
|
|
8
|
+
* @param {{
|
|
9
|
+
* columnButton: HTMLButtonElement,
|
|
10
|
+
* rowButton: HTMLButtonElement,
|
|
11
|
+
* openCellMenuFunc: ()=>void,
|
|
12
|
+
* closeCellMenuFunc: ()=>void
|
|
13
|
+
* }} options Options for table service
|
|
14
|
+
*/
|
|
15
|
+
constructor(
|
|
16
|
+
main: import('../index').default,
|
|
17
|
+
{
|
|
18
|
+
columnButton,
|
|
19
|
+
rowButton,
|
|
20
|
+
openCellMenuFunc,
|
|
21
|
+
closeCellMenuFunc,
|
|
22
|
+
}: {
|
|
23
|
+
columnButton: HTMLButtonElement;
|
|
24
|
+
rowButton: HTMLButtonElement;
|
|
25
|
+
openCellMenuFunc: () => void;
|
|
26
|
+
closeCellMenuFunc: () => void;
|
|
27
|
+
},
|
|
28
|
+
);
|
|
29
|
+
selectMenu_column: SelectMenu;
|
|
30
|
+
selectMenu_row: SelectMenu;
|
|
31
|
+
/**
|
|
32
|
+
* @description Opens the column menu.
|
|
33
|
+
*/
|
|
34
|
+
openColumnMenu(): void;
|
|
35
|
+
/**
|
|
36
|
+
* @description Opens the row menu.
|
|
37
|
+
*/
|
|
38
|
+
openRowMenu(): void;
|
|
39
|
+
/**
|
|
40
|
+
* @description Edits the table by adding, removing, or modifying rows and cells, based on the provided options. Supports both single and multi-cell/row editing.
|
|
41
|
+
* @param {"row"|"cell"} type The type of element to edit (`row` or `cell`).
|
|
42
|
+
* @param {?"up"|"down"|"left"|"right"} option The action to perform: `up`, `down`, `left`, `right`, or `null` for removing.
|
|
43
|
+
*/
|
|
44
|
+
editTable(type: 'row' | 'cell', option: ('up' | 'down' | 'left' | 'right') | null): void;
|
|
45
|
+
/**
|
|
46
|
+
* @description Edits a table cell(column), either adding, removing, or modifying the cell based on the provided option.
|
|
47
|
+
* @param {?string} option The action to perform on the cell (`left`|`right`|`null`)
|
|
48
|
+
* - `null`: to remove the cell
|
|
49
|
+
* - `left`: to insert a new cell to the left
|
|
50
|
+
* - `right`: to insert a new cell to the right
|
|
51
|
+
* @param {?HTMLTableCellElement} [targetCell] Target cell, (default: current selected cell)
|
|
52
|
+
* @param {?HTMLTableCellElement} [positionResetElement] The element to reset the position of (optional). This can be the cell that triggered the column edit.
|
|
53
|
+
* @returns {HTMLTableCellElement} Target table cell
|
|
54
|
+
*/
|
|
55
|
+
editColumn(option: string | null, targetCell?: HTMLTableCellElement | null, positionResetElement?: HTMLTableCellElement | null): HTMLTableCellElement;
|
|
56
|
+
/**
|
|
57
|
+
* @description Edits a table row, either adding, removing, the row
|
|
58
|
+
* @param {?string} option The action to perform on the row (`up`|`down`|`null`)
|
|
59
|
+
* - `null`: to remove the row
|
|
60
|
+
* - `up`: to insert the row up
|
|
61
|
+
* - `down`: to insert the row down, or `null` to remove.
|
|
62
|
+
* @param {?HTMLTableCellElement} [targetCell] Target cell, (default: current selected cell)
|
|
63
|
+
* @param {?HTMLTableCellElement} [positionResetElement] The element to reset the position of (optional). This can be the cell that triggered the row edit.
|
|
64
|
+
*/
|
|
65
|
+
editRow(option: string | null, targetCell?: HTMLTableCellElement | null, positionResetElement?: HTMLTableCellElement | null): void;
|
|
66
|
+
/**
|
|
67
|
+
* @description Inserts a new row into the table at the specified index to it.
|
|
68
|
+
* @param {HTMLTableElement} table The table element to insert the row into.
|
|
69
|
+
* @param {number} rowIndex The index at which to insert the new row.
|
|
70
|
+
* @param {number} cellCnt The number of cells to create in the new row.
|
|
71
|
+
* @returns {HTMLTableRowElement} The newly inserted row element.
|
|
72
|
+
*/
|
|
73
|
+
insertBodyRow(table: HTMLTableElement, rowIndex: number, cellCnt: number): HTMLTableRowElement;
|
|
74
|
+
#private;
|
|
75
|
+
}
|
|
76
|
+
export default TableGridService;
|
|
77
|
+
import { SelectMenu } from '../../../../modules/ui';
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Manages table and cell resizing with drag-based dimension adjustments and visual guide lines.
|
|
4
|
+
*/
|
|
5
|
+
export class TableResizeService {
|
|
6
|
+
/**
|
|
7
|
+
* @param {import('../index').default} main Table index
|
|
8
|
+
*/
|
|
9
|
+
constructor(main: import('../index').default);
|
|
10
|
+
/**
|
|
11
|
+
* @description Checks if the table is currently being resized.
|
|
12
|
+
* @returns {boolean}
|
|
13
|
+
*/
|
|
14
|
+
isResizing(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* @description Display a guide line during resize operations logic.
|
|
17
|
+
* @param {MouseEvent} event - Mouse event
|
|
18
|
+
* @param {HTMLElement} target - Target element (table cell or row)
|
|
19
|
+
* @returns {boolean|undefined} Returns `false` if resizing started, otherwise `undefined`.
|
|
20
|
+
*/
|
|
21
|
+
onResizeGuide(event: MouseEvent, target: HTMLElement): boolean | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* @description Hides the resize guide line.
|
|
24
|
+
*/
|
|
25
|
+
offResizeGuide(): void;
|
|
26
|
+
/**
|
|
27
|
+
* @description Prepares for resizing from the edge of a cell or row.
|
|
28
|
+
* @param {MouseEvent} event - Mouse event
|
|
29
|
+
* @param {HTMLTableCellElement} target - Target element
|
|
30
|
+
* @returns {boolean|undefined} Returns `false` if resizing started.
|
|
31
|
+
*/
|
|
32
|
+
readyResizeFromEdge(event: MouseEvent, target: HTMLTableCellElement): boolean | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* @internal
|
|
35
|
+
* @description Starts resizing a table cell.
|
|
36
|
+
* @param {HTMLElement} col The column element.
|
|
37
|
+
* @param {number} startX The starting X position.
|
|
38
|
+
* @param {number} startWidth The initial width of the column.
|
|
39
|
+
* @param {boolean} isLeftEdge Whether the resizing is on the left edge.
|
|
40
|
+
*/
|
|
41
|
+
_startCellResizing(col: HTMLElement, startX: number, startWidth: number, isLeftEdge: boolean): void;
|
|
42
|
+
/**
|
|
43
|
+
* @internal
|
|
44
|
+
* @description Starts resizing a table row.
|
|
45
|
+
* @param {HTMLElement} row The table row element.
|
|
46
|
+
* @param {number} startY The starting Y position.
|
|
47
|
+
* @param {number} startHeight The initial height of the row.
|
|
48
|
+
*/
|
|
49
|
+
_startRowResizing(row: HTMLElement, startY: number, startHeight: number): void;
|
|
50
|
+
/**
|
|
51
|
+
* @internal
|
|
52
|
+
* @description Starts resizing the table figure.
|
|
53
|
+
* @param {number} startX The starting X position.
|
|
54
|
+
* @param {boolean} isLeftEdge Whether the resizing is on the left edge.
|
|
55
|
+
*/
|
|
56
|
+
_startFigureResizing(startX: number, isLeftEdge: boolean): void;
|
|
57
|
+
/**
|
|
58
|
+
* @internal
|
|
59
|
+
* @description Stops resizing the table.
|
|
60
|
+
* @param {HTMLElement} target The target element.
|
|
61
|
+
* @param {string} prevValue The previous style value.
|
|
62
|
+
* @param {string} styleProp The CSS property being changed.
|
|
63
|
+
* @param {KeyboardEvent} e The keyboard event.
|
|
64
|
+
*/
|
|
65
|
+
_stopResize(target: HTMLElement, prevValue: string, styleProp: string, e: KeyboardEvent): void;
|
|
66
|
+
/**
|
|
67
|
+
* @description Initialize the resize service (remove global events).
|
|
68
|
+
*/
|
|
69
|
+
init(): void;
|
|
70
|
+
#private;
|
|
71
|
+
}
|
|
72
|
+
export default TableResizeService;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Manages table cell selection including multi-cell range selection with keyboard and mouse events.
|
|
4
|
+
*/
|
|
5
|
+
export class TableSelectionService {
|
|
6
|
+
/**
|
|
7
|
+
* @param {import('../index').default} main Table index
|
|
8
|
+
*/
|
|
9
|
+
constructor(main: import('../index').default);
|
|
10
|
+
/**
|
|
11
|
+
* @description Selects a group of table cells and sets internal state related to multi-cell selection.
|
|
12
|
+
* @param {HTMLTableCellElement[]} cells - An array of table cell elements to be selected.
|
|
13
|
+
* @returns {{ fixedCell: HTMLTableCellElement, selectedCell: HTMLTableCellElement }} The fixed and selected cells.
|
|
14
|
+
*/
|
|
15
|
+
selectCells(cells: HTMLTableCellElement[]): {
|
|
16
|
+
fixedCell: HTMLTableCellElement;
|
|
17
|
+
selectedCell: HTMLTableCellElement;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* @internal
|
|
21
|
+
* @description Selects multiple table cells and applies selection styles.
|
|
22
|
+
* @param {Node} startCell The first cell in the selection.
|
|
23
|
+
* @param {Node} endCell The last cell in the selection.
|
|
24
|
+
*/
|
|
25
|
+
setMultiCells(startCell: Node, endCell: Node): void;
|
|
26
|
+
/**
|
|
27
|
+
* @description Initializes cell selection state and applies visual styles.
|
|
28
|
+
* Sets up the fixed cell, selected cells array, and table reference.
|
|
29
|
+
* @param {HTMLTableCellElement} tdElement The target table cell element.
|
|
30
|
+
*/
|
|
31
|
+
initCellSelection(tdElement: HTMLTableCellElement): void;
|
|
32
|
+
/**
|
|
33
|
+
* @description Starts cell selection with global event listeners for drag/shift selection.
|
|
34
|
+
* **WARNING**: Registers global events (mousemove/mousedown, mouseup, touchmove).
|
|
35
|
+
* These events are auto-removed on mouseup/touchmove, or call `#removeGlobalEvents()` manually.
|
|
36
|
+
* @param {HTMLTableCellElement} tdElement The target table cell element.
|
|
37
|
+
* @param {boolean} shift If `true`, enables shift+click range selection mode.
|
|
38
|
+
*/
|
|
39
|
+
startCellSelection(tdElement: HTMLTableCellElement, shift: boolean): void;
|
|
40
|
+
/**
|
|
41
|
+
* @description Deletes styles from selected table cells.
|
|
42
|
+
*/
|
|
43
|
+
deleteStyleSelectedCells(): void;
|
|
44
|
+
/**
|
|
45
|
+
* @description Restores styles for selected table cells.
|
|
46
|
+
*/
|
|
47
|
+
recallStyleSelectedCells(): void;
|
|
48
|
+
/**
|
|
49
|
+
* @description Focus cell
|
|
50
|
+
* @param {HTMLElement} cell Target node
|
|
51
|
+
*/
|
|
52
|
+
focusCellEdge(cell: HTMLElement): void;
|
|
53
|
+
/**
|
|
54
|
+
* @description Initialize the selection service (remove global events).
|
|
55
|
+
*/
|
|
56
|
+
init(): void;
|
|
57
|
+
#private;
|
|
58
|
+
}
|
|
59
|
+
export default TableSelectionService;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Manages table and cell styling including borders, colors, alignment, and property controllers.
|
|
4
|
+
*/
|
|
5
|
+
export class TableStyleService {
|
|
6
|
+
/**
|
|
7
|
+
* @constructor
|
|
8
|
+
* @param {import('../index').default} main Table index
|
|
9
|
+
* @param {Object} options - Options
|
|
10
|
+
* @param {import('../index').TablePluginOptions} options.pluginOptions - Plugin options
|
|
11
|
+
* @param {HTMLElement} options.controller_table - Controller table element
|
|
12
|
+
*/
|
|
13
|
+
constructor(
|
|
14
|
+
main: import('../index').default,
|
|
15
|
+
{
|
|
16
|
+
pluginOptions,
|
|
17
|
+
controller_table,
|
|
18
|
+
}: {
|
|
19
|
+
pluginOptions: import('../index').TablePluginOptions;
|
|
20
|
+
controller_table: HTMLElement;
|
|
21
|
+
},
|
|
22
|
+
);
|
|
23
|
+
sliderType: string;
|
|
24
|
+
/** @type {HTMLButtonElement} */
|
|
25
|
+
resizeButton: HTMLButtonElement;
|
|
26
|
+
/** @type {HTMLSpanElement} */
|
|
27
|
+
resizeText: HTMLSpanElement;
|
|
28
|
+
/** @type {HTMLButtonElement} */
|
|
29
|
+
columnFixedButton: HTMLButtonElement;
|
|
30
|
+
/** @type {HTMLButtonElement} */
|
|
31
|
+
headerButton: HTMLButtonElement;
|
|
32
|
+
/** @type {HTMLButtonElement} */
|
|
33
|
+
captionButton: HTMLButtonElement;
|
|
34
|
+
controller_props: Controller;
|
|
35
|
+
controller_props_title: HTMLElement;
|
|
36
|
+
controller_colorPicker: Controller;
|
|
37
|
+
colorPicker: ColorPicker;
|
|
38
|
+
selectMenu_props_border: SelectMenu;
|
|
39
|
+
selectMenu_props_border_format: SelectMenu;
|
|
40
|
+
selectMenu_props_border_format_oneCell: SelectMenu;
|
|
41
|
+
maxText: any;
|
|
42
|
+
minText: any;
|
|
43
|
+
propTargets: {
|
|
44
|
+
cell_alignment: HTMLElement;
|
|
45
|
+
cell_alignment_vertical: HTMLElement;
|
|
46
|
+
cell_alignment_table_text: HTMLElement;
|
|
47
|
+
border_format: HTMLButtonElement;
|
|
48
|
+
border_style: HTMLButtonElement;
|
|
49
|
+
border_color: HTMLInputElement;
|
|
50
|
+
border_width: HTMLInputElement;
|
|
51
|
+
back_color: HTMLInputElement;
|
|
52
|
+
font_color: HTMLInputElement;
|
|
53
|
+
palette_border_button: HTMLButtonElement;
|
|
54
|
+
font_bold: HTMLButtonElement;
|
|
55
|
+
font_underline: HTMLButtonElement;
|
|
56
|
+
font_italic: HTMLButtonElement;
|
|
57
|
+
font_strike: HTMLButtonElement;
|
|
58
|
+
};
|
|
59
|
+
_propsCache: any[];
|
|
60
|
+
_currentFontStyles: any[];
|
|
61
|
+
_propsAlignCache: string;
|
|
62
|
+
_propsVerticalAlignCache: string;
|
|
63
|
+
_typeCache: string;
|
|
64
|
+
colorPickerAction(color: SunEditor.Module.HueSlider.Color): void;
|
|
65
|
+
controllerAction(target: HTMLButtonElement): void;
|
|
66
|
+
/**
|
|
67
|
+
* @description Opens the table properties dialog.
|
|
68
|
+
* @param {HTMLElement} target - The target element (usually the table).
|
|
69
|
+
*/
|
|
70
|
+
openTableProps(target: HTMLElement): void;
|
|
71
|
+
/**
|
|
72
|
+
* @description Opens the cell properties dialog.
|
|
73
|
+
* @param {HTMLElement} target - The target element (usually the table cell).
|
|
74
|
+
*/
|
|
75
|
+
openCellProps(target: HTMLElement): void;
|
|
76
|
+
/**
|
|
77
|
+
* @description Opens the border format menu.
|
|
78
|
+
*/
|
|
79
|
+
openBorderFormatMenu(): void;
|
|
80
|
+
/**
|
|
81
|
+
* @description Opens the border style menu.
|
|
82
|
+
*/
|
|
83
|
+
openBorderStyleMenu(): void;
|
|
84
|
+
/**
|
|
85
|
+
* @description Handles color selection from the color palette.
|
|
86
|
+
* @param {Node} button The button triggering the color palette.
|
|
87
|
+
* @param {string} type The type of color selection.
|
|
88
|
+
*/
|
|
89
|
+
openColorPalette(button: Node, type: string): void;
|
|
90
|
+
/**
|
|
91
|
+
* @description Toggles the font style.
|
|
92
|
+
* @param {string} value - The style to toggle (`bold`|`underline`|`italic`|`strike`).
|
|
93
|
+
*/
|
|
94
|
+
toggleFontStyle(value: string): void;
|
|
95
|
+
/**
|
|
96
|
+
* @description Toggles the visibility of the table header (`<thead>`). If the header is present, it is removed; if absent, it is added.
|
|
97
|
+
*/
|
|
98
|
+
toggleHeader(): void;
|
|
99
|
+
/**
|
|
100
|
+
* @description Toggles the visibility of the table caption (`<caption>`). If the caption is present, it is removed; if absent, it is added.
|
|
101
|
+
*/
|
|
102
|
+
toggleCaption(): void;
|
|
103
|
+
/**
|
|
104
|
+
* @description Resets the header button state.
|
|
105
|
+
* @param {HTMLTableElement} table - The table element.
|
|
106
|
+
*/
|
|
107
|
+
resetHeaderButton(table: HTMLTableElement): void;
|
|
108
|
+
/**
|
|
109
|
+
* @description Resets the caption button state.
|
|
110
|
+
* @param {HTMLTableElement} table - The table element.
|
|
111
|
+
*/
|
|
112
|
+
resetCaptionButton(table: HTMLTableElement): void;
|
|
113
|
+
/**
|
|
114
|
+
* @description Resets the alignment properties for table cells.
|
|
115
|
+
*/
|
|
116
|
+
resetPropsAlign(): void;
|
|
117
|
+
/**
|
|
118
|
+
* @description Reverts the properties to their previous state.
|
|
119
|
+
*/
|
|
120
|
+
revertProps(): void;
|
|
121
|
+
/**
|
|
122
|
+
* @description Applies the color from the color picker.
|
|
123
|
+
* @param {any} color - The color string or object.
|
|
124
|
+
*/
|
|
125
|
+
applyColorPicker(color: any): void;
|
|
126
|
+
/**
|
|
127
|
+
* @description Sets the alignment properties.
|
|
128
|
+
* @param {string} value - The alignment value.
|
|
129
|
+
*/
|
|
130
|
+
setAlignProps(value: string): void;
|
|
131
|
+
/**
|
|
132
|
+
* @description Sets the vertical alignment properties.
|
|
133
|
+
* @param {string} value - The vertical alignment value.
|
|
134
|
+
*/
|
|
135
|
+
setVerticalAlignProps(value: string): void;
|
|
136
|
+
/**
|
|
137
|
+
* @description Updates table layout styles.
|
|
138
|
+
* @param {string} styles - Styles to update.
|
|
139
|
+
* @param {boolean} isMaxWidth - Whether the table is set to maximum width.
|
|
140
|
+
* @param {boolean} isFixedColumn - Whether the table has fixed column width.
|
|
141
|
+
* @param {boolean} ondisplay - Whether to update display.
|
|
142
|
+
*/
|
|
143
|
+
setTableLayout(styles: string, isMaxWidth: boolean, isFixedColumn: boolean, ondisplay: boolean): void;
|
|
144
|
+
/**
|
|
145
|
+
* @description Applies properties to table cells.
|
|
146
|
+
* @param {HTMLButtonElement} target The target element.
|
|
147
|
+
*/
|
|
148
|
+
submitProps(target: HTMLButtonElement): void;
|
|
149
|
+
/**
|
|
150
|
+
* @description Closes the properties dialog.
|
|
151
|
+
*/
|
|
152
|
+
closeProps(): void;
|
|
153
|
+
/**
|
|
154
|
+
* @description Initialize the style service (resets properties).
|
|
155
|
+
*/
|
|
156
|
+
init(): void;
|
|
157
|
+
#private;
|
|
158
|
+
}
|
|
159
|
+
export default TableStyleService;
|
|
160
|
+
import { Controller } from '../../../../modules/contract';
|
|
161
|
+
import { ColorPicker } from '../../../../modules/contract';
|
|
162
|
+
import { SelectMenu } from '../../../../modules/ui';
|