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,109 @@
|
|
|
1
|
+
export const ROW_SELECT_MARGIN = 6;
|
|
2
|
+
export const CELL_SELECT_MARGIN = 6;
|
|
3
|
+
export const CELL_DECIMAL_END = 0;
|
|
4
|
+
|
|
5
|
+
export const RESIZE_CELL_CLASS = '.se-table-resize-line';
|
|
6
|
+
export const RESIZE_CELL_PREV_CLASS = '.se-table-resize-line-prev';
|
|
7
|
+
export const RESIZE_ROW_CLASS = '.se-table-resize-row';
|
|
8
|
+
export const RESIZE_ROW_PREV_CLASS = '.se-table-resize-row-prev';
|
|
9
|
+
|
|
10
|
+
export const BORDER_LIST = ['none', 'solid', 'dotted', 'dashed', 'double', 'groove', 'ridge', 'inset', 'outset'];
|
|
11
|
+
|
|
12
|
+
export const BORDER_FORMATS = {
|
|
13
|
+
all: 'border_all',
|
|
14
|
+
inside: 'border_inside',
|
|
15
|
+
horizon: 'border_horizontal',
|
|
16
|
+
vertical: 'border_vertical',
|
|
17
|
+
outside: 'border_outside',
|
|
18
|
+
left: 'border_left',
|
|
19
|
+
top: 'border_top',
|
|
20
|
+
right: 'border_right',
|
|
21
|
+
bottom: 'border_bottom',
|
|
22
|
+
none: 'border_none',
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export const BORDER_FORMAT_INSIDE = ['all', 'inside', 'horizon', 'vertical'];
|
|
26
|
+
|
|
27
|
+
export const BORDER_NS = {
|
|
28
|
+
l: 'borderLeft',
|
|
29
|
+
t: 'borderTop',
|
|
30
|
+
r: 'borderRight',
|
|
31
|
+
b: 'borderBottom',
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export const DEFAULT_BORDER_UNIT = 'px';
|
|
35
|
+
|
|
36
|
+
export const DEFAULT_COLOR_LIST = [
|
|
37
|
+
// row-1 (light)
|
|
38
|
+
'#bbf7d0',
|
|
39
|
+
'#fde68a',
|
|
40
|
+
'#fecaca',
|
|
41
|
+
'#e9d5ff',
|
|
42
|
+
'#bfdbfe',
|
|
43
|
+
// row-2 (vivid)
|
|
44
|
+
'#22c55e',
|
|
45
|
+
'#eab308',
|
|
46
|
+
'#ef4444',
|
|
47
|
+
'#a855f7',
|
|
48
|
+
'#3b82f6',
|
|
49
|
+
// row-3 (deep)
|
|
50
|
+
'#15803d',
|
|
51
|
+
'#ca8a04',
|
|
52
|
+
'#b91c1c',
|
|
53
|
+
'#7e22ce',
|
|
54
|
+
'#1d4ed8',
|
|
55
|
+
// row-4 (gray)
|
|
56
|
+
'#e5e7eb',
|
|
57
|
+
'#9ca3af',
|
|
58
|
+
'#6b7280',
|
|
59
|
+
'#374151',
|
|
60
|
+
'#000000',
|
|
61
|
+
];
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* @typedef {Object} TableState
|
|
65
|
+
* @property {number} physical_cellCnt The number of physical cells in the current row.
|
|
66
|
+
* @property {number} logical_cellCnt The number of logical cells (columns) in the table.
|
|
67
|
+
* @property {number} cellCnt Alias for `logical_cellCnt`.
|
|
68
|
+
* @property {number} rowCnt The total number of rows in the table.
|
|
69
|
+
* @property {number} rowIndex The index of the current row.
|
|
70
|
+
* @property {number} physical_cellIndex The physical index of the current cell.
|
|
71
|
+
* @property {number} logical_cellIndex The logical index of the current cell (taking colspan into account).
|
|
72
|
+
* @property {number} current_colSpan The colspan of the current cell.
|
|
73
|
+
* @property {number} current_rowSpan The rowspan of the current cell.
|
|
74
|
+
* @property {boolean} isShiftPressed Whether the shift key is pressed (multi-selection mode).
|
|
75
|
+
* @property {Object|null} ref Reference object for multi-selection range calculation.
|
|
76
|
+
* @property {HTMLElement|null} figureElement The figure element wrapping the table.
|
|
77
|
+
* @property {HTMLTableElement|null} selectedTable The selected table element.
|
|
78
|
+
* @property {HTMLTableRowElement|null} trElement The currently active row element.
|
|
79
|
+
* @property {HTMLCollectionOf<HTMLTableRowElement>|HTMLTableRowElement[]|null} trElements The collection of rows in the table.
|
|
80
|
+
* @property {HTMLTableCellElement|null} tdElement The currently active cell element.
|
|
81
|
+
* @property {HTMLTableCellElement|null} fixedCell The anchor cell for selection.
|
|
82
|
+
* @property {HTMLTableCellElement|null} selectedCell The last selected cell.
|
|
83
|
+
* @property {HTMLTableCellElement[]|null} selectedCells Array of currently selected cells.
|
|
84
|
+
*/
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* @type {TableState}
|
|
88
|
+
*/
|
|
89
|
+
export const INITIAL_STATE = {
|
|
90
|
+
physical_cellCnt: 0,
|
|
91
|
+
logical_cellCnt: 0,
|
|
92
|
+
cellCnt: 0,
|
|
93
|
+
rowCnt: 0,
|
|
94
|
+
rowIndex: 0,
|
|
95
|
+
physical_cellIndex: 0,
|
|
96
|
+
logical_cellIndex: 0,
|
|
97
|
+
current_colSpan: 0,
|
|
98
|
+
current_rowSpan: 0,
|
|
99
|
+
isShiftPressed: false,
|
|
100
|
+
ref: null,
|
|
101
|
+
figureElement: null,
|
|
102
|
+
selectedTable: null,
|
|
103
|
+
trElement: null,
|
|
104
|
+
trElements: null,
|
|
105
|
+
tdElement: null,
|
|
106
|
+
fixedCell: null,
|
|
107
|
+
selectedCell: null,
|
|
108
|
+
selectedCells: null,
|
|
109
|
+
};
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { dom, numbers, env } from '../../../../helper';
|
|
2
|
+
import * as Constants from './table.constants';
|
|
3
|
+
|
|
4
|
+
const { _w } = env;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @description Cache for selected cell range references. (Use drag cells)
|
|
8
|
+
* - Stores the calculated logical start/end positions (row, col) for a given selection.
|
|
9
|
+
* @type {WeakMap<HTMLTableElement, Map<string, {cs: number, ce: number, rs: number, re: number, _i: number}>>}
|
|
10
|
+
*/
|
|
11
|
+
export const refCache = new WeakMap();
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @description Cache for mapping a table’s physical coordinates (row, cellIndex) to a logical column index
|
|
15
|
+
* @type {WeakMap<HTMLTableElement, number[][]>}
|
|
16
|
+
*/
|
|
17
|
+
const logicalIndexMapCache = new WeakMap();
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @description Builds a matrix of logical indices for the table.
|
|
21
|
+
* @param {HTMLTableElement} table The table element.
|
|
22
|
+
* @returns {number[][]} A 2D array where matrix[row][cell] = logicalColumnIndex.
|
|
23
|
+
*/
|
|
24
|
+
function BuildMatrix(table) {
|
|
25
|
+
const matrix = [];
|
|
26
|
+
|
|
27
|
+
const rows = table.rows;
|
|
28
|
+
const rowSpanMap = [];
|
|
29
|
+
for (let r = 0, rLen = rows.length; r < rLen; r++) {
|
|
30
|
+
const cells = rows[r].cells;
|
|
31
|
+
matrix[r] = [];
|
|
32
|
+
|
|
33
|
+
let logicalCol = 0;
|
|
34
|
+
for (let c = 0, cLen = cells.length; c < cLen; c++) {
|
|
35
|
+
while (rowSpanMap[r]?.[logicalCol]) {
|
|
36
|
+
logicalCol++;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
matrix[r][c] = logicalCol;
|
|
40
|
+
|
|
41
|
+
// span calc
|
|
42
|
+
const cell = cells[c];
|
|
43
|
+
const colspan = cell.colSpan || 1;
|
|
44
|
+
const rowspan = cell.rowSpan || 1;
|
|
45
|
+
|
|
46
|
+
if (rowspan > 1) {
|
|
47
|
+
for (let rs = 1; rs < rowspan; rs++) {
|
|
48
|
+
if (!rowSpanMap[r + rs]) rowSpanMap[r + rs] = [];
|
|
49
|
+
for (let cs = 0; cs < colspan; cs++) {
|
|
50
|
+
rowSpanMap[r + rs][logicalCol + cs] = true;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
logicalCol += colspan;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return matrix;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/** ================================================================================================================================ */
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* @description Checks if the given node is a resizable table element.
|
|
66
|
+
* @param {Node} node The DOM node to check.
|
|
67
|
+
* @returns {boolean} True if the node is a table-related resizable element.
|
|
68
|
+
*/
|
|
69
|
+
export function IsResizeEls(node) {
|
|
70
|
+
return /^(TD|TH|TR)$/i.test(node?.nodeName);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* @description Check table caption
|
|
75
|
+
* @param {Node} node The DOM node to check.
|
|
76
|
+
* @returns {boolean}
|
|
77
|
+
*/
|
|
78
|
+
export function IsTableCaption(node) {
|
|
79
|
+
return /^CAPTION$/i.test(node.nodeName);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @description Checks if a table cell is at its edge based on the mouse event.
|
|
84
|
+
* @param {MouseEvent} event The mouse event.
|
|
85
|
+
* @param {Element} tableCell The table cell to check.
|
|
86
|
+
* @returns {Object} An object containing edge detection details.
|
|
87
|
+
*/
|
|
88
|
+
export function CheckCellEdge(event, tableCell) {
|
|
89
|
+
const startX = event.clientX;
|
|
90
|
+
const startWidth = numbers.get(_w.getComputedStyle(tableCell).width, Constants.CELL_DECIMAL_END);
|
|
91
|
+
const rect = tableCell.getBoundingClientRect();
|
|
92
|
+
const offsetX = Math.round(startX - rect.left);
|
|
93
|
+
const isLeft = offsetX <= Constants.CELL_SELECT_MARGIN;
|
|
94
|
+
const is = isLeft || startWidth - offsetX <= Constants.CELL_SELECT_MARGIN;
|
|
95
|
+
|
|
96
|
+
return {
|
|
97
|
+
is,
|
|
98
|
+
isLeft,
|
|
99
|
+
startX,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* @description Checks if a row is at its edge based on the mouse event.
|
|
105
|
+
* @param {MouseEvent} event The mouse event.
|
|
106
|
+
* @param {Element} tableCell The table row cell to check.
|
|
107
|
+
* @returns {Object} An object containing row edge detection details.
|
|
108
|
+
*/
|
|
109
|
+
export function CheckRowEdge(event, tableCell) {
|
|
110
|
+
const startY = event.clientY;
|
|
111
|
+
const startHeight = numbers.get(_w.getComputedStyle(tableCell).height, Constants.CELL_DECIMAL_END);
|
|
112
|
+
const rect = tableCell.getBoundingClientRect();
|
|
113
|
+
const is = Math.ceil(startHeight + rect.top - startY) <= Constants.ROW_SELECT_MARGIN;
|
|
114
|
+
|
|
115
|
+
return {
|
|
116
|
+
is,
|
|
117
|
+
startY,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* @description Creates table cells as elements strings.
|
|
123
|
+
* @param {string} nodeName The tag name of the cell (`TD` or `TH`).
|
|
124
|
+
* @param {number} cnt The number of cells to create.
|
|
125
|
+
* @returns {string} The created cells string.
|
|
126
|
+
*/
|
|
127
|
+
export function CreateCellsString(nodeName, cnt) {
|
|
128
|
+
nodeName = nodeName.toLowerCase();
|
|
129
|
+
return `<${nodeName}><div><br></div></${nodeName}>`.repeat(cnt);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* @description Creates table cells as element HTML.
|
|
134
|
+
* @param {string} nodeName The tag name of the cell (`TD` or `TH`).
|
|
135
|
+
* @returns {HTMLTableCellElement} The created cell element.
|
|
136
|
+
*/
|
|
137
|
+
export function CreateCellsHTML(nodeName) {
|
|
138
|
+
nodeName = nodeName.toLowerCase();
|
|
139
|
+
return /** @type {HTMLTableCellElement} */ (dom.utils.createElement(nodeName, null, '<div><br></div>'));
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* @description Gets the maximum number of columns in a table.
|
|
144
|
+
* @param {HTMLTableElement} table The table element.
|
|
145
|
+
* @returns {number} The maximum number of columns in the table.
|
|
146
|
+
*/
|
|
147
|
+
export function GetMaxColumns(table) {
|
|
148
|
+
const rows = table.rows;
|
|
149
|
+
let maxColumns = 0;
|
|
150
|
+
|
|
151
|
+
for (let i = 0, len = rows.length; i < len; i++) {
|
|
152
|
+
const cells = rows[i].cells;
|
|
153
|
+
let columnCount = 0;
|
|
154
|
+
|
|
155
|
+
for (let j = 0, jLen = cells.length; j < jLen; j++) {
|
|
156
|
+
columnCount += cells[j].colSpan;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
maxColumns = Math.max(maxColumns, columnCount);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return maxColumns;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* @description Gets the logical cell index for a cell in a table.
|
|
167
|
+
* @param {HTMLTableElement} table The table element.
|
|
168
|
+
* @param {number} rowIndex The physical row index.
|
|
169
|
+
* @param {number} cellIndex The physical cell index.
|
|
170
|
+
* @returns {number} The logical cell index.
|
|
171
|
+
*/
|
|
172
|
+
export function GetLogicalCellIndex(table, rowIndex, cellIndex) {
|
|
173
|
+
let indexMap = logicalIndexMapCache.get(table);
|
|
174
|
+
|
|
175
|
+
if (!indexMap) {
|
|
176
|
+
indexMap = BuildMatrix(table);
|
|
177
|
+
logicalIndexMapCache.set(table, indexMap);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return indexMap[rowIndex]?.[cellIndex] ?? 0;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* @description Clone a table element and map selected cells to the cloned table
|
|
185
|
+
* @param {HTMLTableElement} table `<table>` element
|
|
186
|
+
* @param {HTMLTableCellElement[]} selectedCells Selected cells array
|
|
187
|
+
* @returns {{ clonedTable: HTMLTableElement, clonedSelectedCells: HTMLTableCellElement[] }}
|
|
188
|
+
*/
|
|
189
|
+
export function CloneTable(table, selectedCells) {
|
|
190
|
+
/** @type {HTMLTableElement} */
|
|
191
|
+
const clonedTable = dom.utils.clone(table, true);
|
|
192
|
+
|
|
193
|
+
const originalCells = Array.from(table.querySelectorAll('td, th'));
|
|
194
|
+
const clonedCells = Array.from(clonedTable.querySelectorAll('td, th'));
|
|
195
|
+
|
|
196
|
+
const clonedSelectedCells = /** @type {HTMLTableCellElement[]} */ (
|
|
197
|
+
selectedCells
|
|
198
|
+
.map((cell) => {
|
|
199
|
+
const index = originalCells.indexOf(cell);
|
|
200
|
+
return index > -1 ? clonedCells[index] : null;
|
|
201
|
+
})
|
|
202
|
+
.filter((cell) => cell !== null)
|
|
203
|
+
);
|
|
204
|
+
|
|
205
|
+
return {
|
|
206
|
+
clonedTable,
|
|
207
|
+
clonedSelectedCells,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* @description Clear table cache
|
|
213
|
+
* @param {HTMLTableElement} table The table element.
|
|
214
|
+
*/
|
|
215
|
+
export function InvalidateTableCache(table) {
|
|
216
|
+
if (!table) return;
|
|
217
|
+
refCache.delete(table);
|
|
218
|
+
logicalIndexMapCache.delete(table);
|
|
219
|
+
}
|
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { PluginDropdown } from '../../interfaces';
|
|
2
2
|
import { dom } from '../../helper';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {Object} TemplatePluginOptions
|
|
6
|
+
* @property {Array<{name: string, html: string}>} [items] - Template list
|
|
7
|
+
*/
|
|
8
|
+
|
|
4
9
|
/**
|
|
5
10
|
* @class
|
|
6
11
|
* @description Template Plugin, Apply a template to the selection.
|
|
7
12
|
*/
|
|
8
|
-
class Template extends
|
|
13
|
+
class Template extends PluginDropdown {
|
|
9
14
|
static key = 'template';
|
|
10
|
-
static type = 'dropdown';
|
|
11
15
|
static className = '';
|
|
12
16
|
|
|
13
17
|
/**
|
|
14
18
|
* @constructor
|
|
15
|
-
* @param {
|
|
16
|
-
* @param {
|
|
17
|
-
* @param {Array<{name: string, html: string}>} pluginOptions.items - Template list
|
|
19
|
+
* @param {SunEditor.Kernel} editor - The core kernel
|
|
20
|
+
* @param {TemplatePluginOptions} pluginOptions - Plugin options
|
|
18
21
|
*/
|
|
19
22
|
constructor(editor, pluginOptions) {
|
|
20
23
|
// plugin bisic properties
|
|
21
24
|
super(editor);
|
|
22
|
-
this.title = this
|
|
25
|
+
this.title = this.$.lang.template;
|
|
23
26
|
this.icon = 'template';
|
|
24
27
|
|
|
25
28
|
// members
|
|
@@ -30,30 +33,32 @@ class Template extends EditorInjector {
|
|
|
30
33
|
const menu = CreateHTML(this.items);
|
|
31
34
|
|
|
32
35
|
// init
|
|
33
|
-
this
|
|
36
|
+
this.$.menu.initDropdownTarget(Template, menu);
|
|
34
37
|
}
|
|
35
38
|
|
|
36
39
|
/**
|
|
37
|
-
* @
|
|
38
|
-
* @
|
|
39
|
-
* - Called when an item in the "dropdown" menu is clicked.
|
|
40
|
-
* @param {HTMLElement} target - The plugin's toolbar button element
|
|
40
|
+
* @override
|
|
41
|
+
* @type {PluginDropdown['action']}
|
|
41
42
|
*/
|
|
42
43
|
action(target) {
|
|
43
44
|
const index = Number(target.getAttribute('data-value'));
|
|
44
45
|
const temp = this.items[(this.selectedIndex = index)];
|
|
45
46
|
|
|
46
47
|
if (temp.html) {
|
|
47
|
-
this
|
|
48
|
+
this.$.html.insert(temp.html, { selectInserted: false, skipCharCount: false, skipCleaning: false });
|
|
48
49
|
} else {
|
|
49
|
-
this
|
|
50
|
+
this.$.menu.dropdownOff();
|
|
50
51
|
throw Error('[SUNEDITOR.template.fail] cause : "templates[i].html not found"');
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
this
|
|
54
|
+
this.$.menu.dropdownOff();
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
|
|
58
|
+
/**
|
|
59
|
+
* @param {Array<{name: string, html: string}>} templateList - Template items
|
|
60
|
+
* @returns {HTMLElement}
|
|
61
|
+
*/
|
|
57
62
|
function CreateHTML(templateList) {
|
|
58
63
|
if (!templateList || templateList.length === 0) {
|
|
59
64
|
console.warn('[SUNEDITOR.plugins.template.warn] To use the "template" plugin, please define the "templates" option.');
|
|
@@ -1,44 +1,47 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { PluginDropdown } from '../../interfaces';
|
|
2
2
|
import { dom } from '../../helper';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {Object} TextStylePluginOptions
|
|
6
|
+
* @property {Array<string|{name: string, class: string, tag?: string}>} [items] - Text style item list
|
|
7
|
+
*/
|
|
8
|
+
|
|
4
9
|
/**
|
|
5
10
|
* @class
|
|
6
11
|
* @description Text style Plugin, Applies a tag that specifies text styles to a selection.
|
|
7
12
|
*/
|
|
8
|
-
class TextStyle extends
|
|
13
|
+
class TextStyle extends PluginDropdown {
|
|
9
14
|
static key = 'textStyle';
|
|
10
|
-
static type = 'dropdown';
|
|
11
15
|
static className = '';
|
|
12
16
|
|
|
13
17
|
/**
|
|
14
18
|
* @constructor
|
|
15
|
-
* @param {
|
|
16
|
-
* @param {
|
|
17
|
-
* @param {Array<{name: string, html: string}>} pluginOptions.items - Template list
|
|
19
|
+
* @param {SunEditor.Kernel} editor - The core kernel
|
|
20
|
+
* @param {TextStylePluginOptions} pluginOptions - Plugin options
|
|
18
21
|
*/
|
|
19
22
|
constructor(editor, pluginOptions) {
|
|
20
23
|
// plugin bisic properties
|
|
21
24
|
super(editor);
|
|
22
|
-
this.title = this
|
|
25
|
+
this.title = this.$.lang.textStyle;
|
|
23
26
|
this.icon = 'text_style';
|
|
24
27
|
|
|
25
28
|
// create HTML
|
|
26
|
-
const menu = CreateHTML(
|
|
29
|
+
const menu = CreateHTML(this.$, pluginOptions.items);
|
|
27
30
|
|
|
28
31
|
// members
|
|
29
32
|
this.styleList = menu.querySelectorAll('li button');
|
|
30
33
|
|
|
31
34
|
// init
|
|
32
|
-
this
|
|
35
|
+
this.$.menu.initDropdownTarget(TextStyle, menu);
|
|
33
36
|
}
|
|
34
37
|
|
|
35
38
|
/**
|
|
36
|
-
* @
|
|
37
|
-
* @
|
|
39
|
+
* @override
|
|
40
|
+
* @type {PluginDropdown['on']}
|
|
38
41
|
*/
|
|
39
42
|
on() {
|
|
40
43
|
const styleButtonList = this.styleList;
|
|
41
|
-
const selectionNode = this
|
|
44
|
+
const selectionNode = this.$.selection.getNode();
|
|
42
45
|
|
|
43
46
|
for (let i = 0, len = styleButtonList.length, btn, data, active; i < len; i++) {
|
|
44
47
|
btn = styleButtonList[i];
|
|
@@ -48,7 +51,7 @@ class TextStyle extends EditorInjector {
|
|
|
48
51
|
node = selectionNode;
|
|
49
52
|
active = false;
|
|
50
53
|
|
|
51
|
-
while (node && !this
|
|
54
|
+
while (node && !this.$.format.isLine(node) && !this.$.component.is(node)) {
|
|
52
55
|
if (node.nodeName.toLowerCase() === btn.getAttribute('data-command').toLowerCase()) {
|
|
53
56
|
value = data[v];
|
|
54
57
|
if (/^\./.test(value) ? dom.utils.hasClass(node, value.replace(/^\./, '')) : /** @type {HTMLElement} */ (node).style[value]) {
|
|
@@ -67,10 +70,8 @@ class TextStyle extends EditorInjector {
|
|
|
67
70
|
}
|
|
68
71
|
|
|
69
72
|
/**
|
|
70
|
-
* @
|
|
71
|
-
* @
|
|
72
|
-
* - Called when an item in the "dropdown" menu is clicked.
|
|
73
|
-
* @param {HTMLElement} target - The plugin's toolbar button element
|
|
73
|
+
* @override
|
|
74
|
+
* @type {PluginDropdown['action']}
|
|
74
75
|
*/
|
|
75
76
|
action(target) {
|
|
76
77
|
const tempElement = /** @type {HTMLElement} */ (target.firstElementChild);
|
|
@@ -84,24 +85,29 @@ class TextStyle extends EditorInjector {
|
|
|
84
85
|
|
|
85
86
|
const newNode = dom.utils.hasClass(target, 'active') ? null : tempElement.cloneNode(false);
|
|
86
87
|
const removeNodes = newNode ? null : [tempElement.nodeName];
|
|
87
|
-
this.
|
|
88
|
+
this.$.inline.apply(newNode, { stylesToModify: checkStyles, nodesToRemove: removeNodes, strictRemove: true });
|
|
88
89
|
|
|
89
|
-
this
|
|
90
|
+
this.$.menu.dropdownOff();
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
93
|
|
|
94
|
+
/**
|
|
95
|
+
* @param {SunEditor.Deps} $ - Kernel dependencies
|
|
96
|
+
* @param {Array<string|{name: string, class: string, tag?: string}>} [items] - Text style items
|
|
97
|
+
* @returns {HTMLElement}
|
|
98
|
+
*/
|
|
93
99
|
function CreateHTML({ lang }, items) {
|
|
94
100
|
const defaultList = {
|
|
95
101
|
code: {
|
|
96
102
|
name: lang.menu_code,
|
|
97
103
|
class: '__se__t-code',
|
|
98
|
-
tag: 'code'
|
|
104
|
+
tag: 'code',
|
|
99
105
|
},
|
|
100
106
|
shadow: {
|
|
101
107
|
name: lang.menu_shadow,
|
|
102
108
|
class: '__se__t-shadow',
|
|
103
|
-
tag: 'span'
|
|
104
|
-
}
|
|
109
|
+
tag: 'span',
|
|
110
|
+
},
|
|
105
111
|
};
|
|
106
112
|
const styleList = items || Object.keys(defaultList);
|
|
107
113
|
|