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,154 +1,154 @@
|
|
|
1
|
-
import { dom, converter } from '
|
|
2
|
-
import { isElement } from '
|
|
3
|
-
import
|
|
4
|
-
import { HueSlider } from '../modules';
|
|
1
|
+
import { dom, converter, env } from '../../helper';
|
|
2
|
+
import { isElement } from '../../helper/dom/domCheck';
|
|
3
|
+
import HueSlider from './HueSlider';
|
|
5
4
|
|
|
6
5
|
const DEFAULT_COLOR_LIST = [
|
|
7
|
-
|
|
8
|
-
'#
|
|
9
|
-
'#
|
|
10
|
-
'#
|
|
11
|
-
'#
|
|
12
|
-
'#
|
|
13
|
-
'#
|
|
14
|
-
'#
|
|
6
|
+
// vivid
|
|
7
|
+
'#ef4444',
|
|
8
|
+
'#f97316',
|
|
9
|
+
'#eab308',
|
|
10
|
+
'#22c55e',
|
|
11
|
+
'#06b6d4',
|
|
12
|
+
'#3b82f6',
|
|
13
|
+
'#8b5cf6',
|
|
14
|
+
'#ec4899',
|
|
15
15
|
'#000000',
|
|
16
|
-
|
|
17
|
-
'#
|
|
18
|
-
'#
|
|
19
|
-
'#
|
|
20
|
-
'#
|
|
21
|
-
'#
|
|
22
|
-
'#
|
|
23
|
-
'#
|
|
24
|
-
'#
|
|
25
|
-
'#
|
|
26
|
-
|
|
27
|
-
'#
|
|
28
|
-
'#
|
|
29
|
-
'#
|
|
30
|
-
'#
|
|
31
|
-
'#
|
|
32
|
-
'#
|
|
33
|
-
'#
|
|
34
|
-
'#
|
|
35
|
-
'#
|
|
36
|
-
|
|
37
|
-
'#
|
|
38
|
-
'#
|
|
39
|
-
'#
|
|
40
|
-
'#
|
|
41
|
-
'#
|
|
42
|
-
'#
|
|
43
|
-
'#
|
|
44
|
-
'#
|
|
45
|
-
'#
|
|
46
|
-
|
|
47
|
-
'#
|
|
48
|
-
'#
|
|
49
|
-
'#
|
|
50
|
-
'#
|
|
51
|
-
'#
|
|
52
|
-
'#
|
|
53
|
-
'#
|
|
54
|
-
'#
|
|
55
|
-
'#
|
|
56
|
-
|
|
57
|
-
'#
|
|
58
|
-
'#
|
|
59
|
-
'#
|
|
60
|
-
'#
|
|
16
|
+
// highlighter
|
|
17
|
+
'#fca5a5',
|
|
18
|
+
'#fdba74',
|
|
19
|
+
'#fcd34d',
|
|
20
|
+
'#6ee7b7',
|
|
21
|
+
'#5eead4',
|
|
22
|
+
'#7dd3fc',
|
|
23
|
+
'#c4b5fd',
|
|
24
|
+
'#f9a8d4',
|
|
25
|
+
'#e5e7eb',
|
|
26
|
+
// pastel
|
|
27
|
+
'#fee2e2',
|
|
28
|
+
'#ffedd5',
|
|
29
|
+
'#fef9c3',
|
|
30
|
+
'#dcfce7',
|
|
31
|
+
'#cffafe',
|
|
32
|
+
'#dbeafe',
|
|
33
|
+
'#ede9fe',
|
|
34
|
+
'#fce7f3',
|
|
35
|
+
'#f3f4f6',
|
|
36
|
+
// medium
|
|
37
|
+
'#f87171',
|
|
38
|
+
'#fb923c',
|
|
39
|
+
'#facc15',
|
|
40
|
+
'#4ade80',
|
|
41
|
+
'#22d3ee',
|
|
42
|
+
'#60a5fa',
|
|
43
|
+
'#a78bfa',
|
|
44
|
+
'#f472b6',
|
|
45
|
+
'#9ca3af',
|
|
46
|
+
// deep
|
|
47
|
+
'#b91c1c',
|
|
48
|
+
'#c2410c',
|
|
49
|
+
'#a16207',
|
|
50
|
+
'#15803d',
|
|
51
|
+
'#0e7490',
|
|
52
|
+
'#1d4ed8',
|
|
53
|
+
'#6d28d9',
|
|
54
|
+
'#be185d',
|
|
55
|
+
'#4b5563',
|
|
56
|
+
// dark
|
|
57
|
+
'#7f1d1d',
|
|
58
|
+
'#7c2d12',
|
|
59
|
+
'#713f12',
|
|
60
|
+
'#14532d',
|
|
61
|
+
'#164e63',
|
|
62
|
+
'#1e3a8a',
|
|
63
|
+
'#4c1d95',
|
|
64
|
+
'#831843',
|
|
65
|
+
'#1f2937',
|
|
61
66
|
];
|
|
62
67
|
|
|
63
68
|
const DEFAULLT_COLOR_SPLITNUM = 9;
|
|
64
69
|
|
|
65
|
-
/**
|
|
66
|
-
* @typedef {import('./HueSlider').HueSliderParams} HueSliderParams_colorPicker
|
|
67
|
-
*/
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* @typedef {import('./HueSlider').HueSliderColor} HueSliderColor_colorPicker
|
|
71
|
-
*/
|
|
72
|
-
|
|
73
70
|
/**
|
|
74
71
|
* @typedef {Object} ColorPickerParams
|
|
75
|
-
* @property {
|
|
76
|
-
* @property {
|
|
77
|
-
* @property {
|
|
78
|
-
* @property {
|
|
79
|
-
* @property {boolean
|
|
80
|
-
* @property {
|
|
72
|
+
* @property {HTMLElement} form The form element to attach the color picker.
|
|
73
|
+
* @property {Array<string|{value: string, name: string}>} [colorList=[]] color list
|
|
74
|
+
* @property {number} [splitNum=0] Number of colors to be displayed in one line
|
|
75
|
+
* @property {string} [defaultColor] Default color
|
|
76
|
+
* @property {boolean} [disableHEXInput=false] Disable HEX input
|
|
77
|
+
* @property {boolean} [disableRemove=false] Disable remove button
|
|
78
|
+
* @property {import('./HueSlider').HueSliderParams} [hueSliderOptions] hue slider options
|
|
81
79
|
*/
|
|
82
80
|
|
|
83
81
|
/**
|
|
84
82
|
* @class
|
|
85
|
-
* @description Create a color picker element and register for related events. (this.target)
|
|
86
|
-
* - When calling the color selection,
|
|
83
|
+
* @description Create a color picker element and register for related events. (`this.target`)
|
|
84
|
+
* - When calling the color selection, `submit`, and `remove` buttons, the `action` method of the instance is called with the `color` value as an argument.
|
|
87
85
|
*/
|
|
88
|
-
class ColorPicker
|
|
86
|
+
class ColorPicker {
|
|
87
|
+
#$;
|
|
88
|
+
|
|
89
89
|
/**
|
|
90
90
|
* @constructor
|
|
91
|
-
* @param {*}
|
|
92
|
-
* @param {
|
|
91
|
+
* @param {*} host The instance object that called the constructor.
|
|
92
|
+
* @param {SunEditor.Deps} $ Kernel dependencies
|
|
93
|
+
* @param {string} styles style property (`"color"`, `"backgroundColor"`..)
|
|
93
94
|
* @param {ColorPickerParams} params Color picker options
|
|
94
95
|
*/
|
|
95
|
-
constructor(
|
|
96
|
-
|
|
97
|
-
super(editor);
|
|
96
|
+
constructor(host, $, styles, params) {
|
|
97
|
+
this.#$ = $;
|
|
98
98
|
|
|
99
99
|
// members
|
|
100
|
-
this.kind =
|
|
101
|
-
this.
|
|
102
|
-
this.
|
|
100
|
+
this.kind = host.constructor['key'] || host.constructor.name;
|
|
101
|
+
this.host = host;
|
|
102
|
+
this.form = params.form;
|
|
103
|
+
this.target = CreateHTML(this.#$, params);
|
|
103
104
|
this.targetButton = null;
|
|
104
105
|
this.inputElement = /** @type {HTMLInputElement} */ (this.target.querySelector('.se-color-input'));
|
|
105
106
|
this.styleProperties = styles;
|
|
106
107
|
this.splitNum = params.splitNum || 0;
|
|
107
108
|
this.defaultColor = params.defaultColor || '';
|
|
108
109
|
this.hueSliderOptions = params.hueSliderOptions;
|
|
109
|
-
this.parentDisplay = '';
|
|
110
110
|
this.currentColor = '';
|
|
111
|
-
this.parentForm = null;
|
|
112
111
|
this.colorList = this.target.querySelectorAll('li button') || [];
|
|
113
112
|
this.hueSlider = null;
|
|
114
113
|
|
|
115
114
|
// check icon
|
|
116
115
|
const parser = new DOMParser();
|
|
117
|
-
const svgDoc = parser.parseFromString(this
|
|
116
|
+
const svgDoc = parser.parseFromString(this.#$.icons.color_checked, 'image/svg+xml');
|
|
118
117
|
this.checkedIcon = svgDoc.documentElement;
|
|
119
118
|
|
|
120
119
|
// modules - hex, hue slider
|
|
121
120
|
if (!params.disableHEXInput) {
|
|
122
|
-
this.hueSlider = new HueSlider(this, params.hueSliderOptions, 'se-dropdown');
|
|
123
|
-
this.parentFormDisplay = [];
|
|
124
|
-
this.parentForm = params.hueSliderOptions?.controllerOptions?.parents?.length > 0 && !params.hueSliderOptions?.controllerOptions?.isInsideForm ? params.hueSliderOptions.controllerOptions.parents : null;
|
|
121
|
+
this.hueSlider = new HueSlider(this, $, params.hueSliderOptions, 'se-dropdown');
|
|
125
122
|
// hue open
|
|
126
|
-
this
|
|
127
|
-
this
|
|
128
|
-
this
|
|
123
|
+
this.#$.eventManager.addEvent(this.target.querySelector('.__se_hue'), 'click', this.#OnColorPalette.bind(this));
|
|
124
|
+
this.#$.eventManager.addEvent(this.inputElement, 'input', this.#OnChangeInput.bind(this));
|
|
125
|
+
this.#$.eventManager.addEvent(this.target.querySelector('form'), 'submit', this.#Submit.bind(this));
|
|
129
126
|
}
|
|
130
127
|
|
|
131
128
|
// remove style
|
|
132
129
|
if (!params.disableRemove) {
|
|
133
|
-
this
|
|
130
|
+
this.#$.eventManager.addEvent(this.target.querySelector('.__se_remove'), 'click', this.#Remove.bind(this));
|
|
134
131
|
}
|
|
135
132
|
|
|
136
|
-
this
|
|
133
|
+
this.#$.eventManager.addEvent(this.target, 'click', this.#OnClickColor.bind(this));
|
|
134
|
+
|
|
135
|
+
// append to form
|
|
136
|
+
this.form.appendChild(this.target);
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
/**
|
|
140
140
|
* @description Displays or resets the currently selected color at color list.
|
|
141
141
|
* @param {Node|string} nodeOrColor Current Selected node
|
|
142
142
|
* @param {Node} target target
|
|
143
|
-
* @param {?(
|
|
144
|
-
* - When this function returns true
|
|
143
|
+
* @param {?(current: Node) => boolean} [stopCondition] - A function used to stop traversing parent nodes while finding the color.
|
|
144
|
+
* - When this function returns `true`, the traversal ends at that node.
|
|
145
145
|
* - e.g., `(node) => this.format.isLine(node)` stops at line-level elements like <p>, <div>.
|
|
146
146
|
*/
|
|
147
147
|
init(nodeOrColor, target, stopCondition) {
|
|
148
148
|
this.targetButton = target;
|
|
149
149
|
if (typeof stopCondition !== 'function') stopCondition = () => false;
|
|
150
150
|
|
|
151
|
-
let fillColor = (typeof nodeOrColor === 'string' ? nodeOrColor : this
|
|
151
|
+
let fillColor = (typeof nodeOrColor === 'string' ? nodeOrColor : this.#getColorInNode(nodeOrColor, stopCondition)) || this.defaultColor;
|
|
152
152
|
fillColor = converter.isHexColor(fillColor) ? fillColor : converter.rgb2hex(fillColor) || fillColor || '';
|
|
153
153
|
|
|
154
154
|
const colorList = this.colorList;
|
|
@@ -163,7 +163,7 @@ class ColorPicker extends CoreInjector {
|
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
this
|
|
166
|
+
this.#setInputText(this.#colorName2hex(fillColor));
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
/**
|
|
@@ -179,28 +179,43 @@ class ColorPicker extends CoreInjector {
|
|
|
179
179
|
* @description Close hue slider
|
|
180
180
|
*/
|
|
181
181
|
hueSliderClose() {
|
|
182
|
-
this.hueSlider.
|
|
182
|
+
this.hueSlider.close();
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* @hook Modules.HueSlider
|
|
187
|
+
* @type {SunEditor.Hook.ColorPicker.Action}
|
|
188
|
+
*/
|
|
189
|
+
hueSliderAction(color) {
|
|
190
|
+
this.#setInputText(color.hex);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @hook Modules.HueSlider
|
|
195
|
+
* @type {SunEditor.Hook.ColorPicker.HueSliderClose}
|
|
196
|
+
*/
|
|
197
|
+
hueSliderCancelAction() {
|
|
198
|
+
this.form.style.display = 'block';
|
|
199
|
+
this.host.colorPickerHueSliderClose?.();
|
|
183
200
|
}
|
|
184
201
|
|
|
185
202
|
/**
|
|
186
|
-
* @private
|
|
187
203
|
* @description Set color at input element
|
|
188
204
|
* @param {string} hexColorStr Hax color value
|
|
189
205
|
*/
|
|
190
|
-
|
|
206
|
+
#setInputText(hexColorStr) {
|
|
191
207
|
hexColorStr = !hexColorStr || /^#/.test(hexColorStr) ? hexColorStr : '#' + hexColorStr;
|
|
192
208
|
this.inputElement.value = hexColorStr;
|
|
193
209
|
this.setHexColor.call(this, hexColorStr);
|
|
194
210
|
}
|
|
195
211
|
|
|
196
212
|
/**
|
|
197
|
-
* @private
|
|
198
213
|
* @description Gets color value at color property of node
|
|
199
214
|
* @param {Node} node Selected node
|
|
200
215
|
* @param {(current: Node) => boolean} stopCondition - A function used to stop traversing parent nodes while finding the color.
|
|
201
216
|
* @returns {string}
|
|
202
217
|
*/
|
|
203
|
-
|
|
218
|
+
#getColorInNode(node, stopCondition) {
|
|
204
219
|
let findColor = '';
|
|
205
220
|
const sp = this.styleProperties;
|
|
206
221
|
|
|
@@ -213,16 +228,15 @@ class ColorPicker extends CoreInjector {
|
|
|
213
228
|
}
|
|
214
229
|
|
|
215
230
|
/**
|
|
216
|
-
* @private
|
|
217
231
|
* @description Converts color values of other formats to hex color values and returns.
|
|
218
232
|
* @param {string} colorName Color value
|
|
219
233
|
* @returns {string}
|
|
220
234
|
*/
|
|
221
|
-
|
|
235
|
+
#colorName2hex(colorName) {
|
|
222
236
|
if (!colorName || /^#/.test(colorName)) return colorName;
|
|
223
237
|
const temp = dom.utils.createElement('div', { style: 'display: none; color: ' + colorName });
|
|
224
|
-
const colors =
|
|
225
|
-
.getComputedStyle(
|
|
238
|
+
const colors = env._w
|
|
239
|
+
.getComputedStyle(env._d.body.appendChild(temp))
|
|
226
240
|
.color.match(/\d+/g)
|
|
227
241
|
.map(function (a) {
|
|
228
242
|
return parseInt(a, 10);
|
|
@@ -231,33 +245,9 @@ class ColorPicker extends CoreInjector {
|
|
|
231
245
|
return colors.length >= 3 ? '#' + ((1 << 24) + (colors[0] << 16) + (colors[1] << 8) + colors[2]).toString(16).substring(1) : '';
|
|
232
246
|
}
|
|
233
247
|
|
|
234
|
-
/**
|
|
235
|
-
* @editorMethod Modules.HueSlider
|
|
236
|
-
* @description This method is called when the color is selected in the hue slider.
|
|
237
|
-
* @param {HueSliderColor_colorPicker} color - Color object
|
|
238
|
-
*/
|
|
239
|
-
hueSliderAction(color) {
|
|
240
|
-
this._setInputText(color.hex);
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* @editorMethod Modules.HueSlider
|
|
245
|
-
* @description This method is called when the hue slider is closed.
|
|
246
|
-
*/
|
|
247
|
-
hueSliderCancelAction() {
|
|
248
|
-
if (this.parentForm?.length > 0) {
|
|
249
|
-
this.parentFormDisplay.forEach((e) => (e[0].style.display = e[1]));
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
|
|
253
248
|
#OnColorPalette() {
|
|
254
|
-
if (this.parentForm?.length > 0) {
|
|
255
|
-
this.parentForm.forEach((e) => {
|
|
256
|
-
this.parentFormDisplay.push([e, e.style.display]);
|
|
257
|
-
e.style.display = 'none';
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
249
|
this.hueSlider.open(this.targetButton);
|
|
250
|
+
this.host.colorPickerHueSliderOpen?.();
|
|
261
251
|
}
|
|
262
252
|
|
|
263
253
|
/**
|
|
@@ -265,9 +255,7 @@ class ColorPicker extends CoreInjector {
|
|
|
265
255
|
*/
|
|
266
256
|
#Submit(e) {
|
|
267
257
|
e.preventDefault();
|
|
268
|
-
|
|
269
|
-
if (typeof this.inst.colorPickerAction !== 'function') return;
|
|
270
|
-
this.inst.colorPickerAction(this.currentColor);
|
|
258
|
+
this.host.colorPickerAction?.(this.currentColor);
|
|
271
259
|
}
|
|
272
260
|
|
|
273
261
|
/**
|
|
@@ -278,13 +266,11 @@ class ColorPicker extends CoreInjector {
|
|
|
278
266
|
const color = eventTarget.getAttribute('data-value');
|
|
279
267
|
if (!color) return;
|
|
280
268
|
|
|
281
|
-
|
|
282
|
-
this.inst.colorPickerAction(color);
|
|
269
|
+
this.host.colorPickerAction?.(color);
|
|
283
270
|
}
|
|
284
271
|
|
|
285
272
|
#Remove() {
|
|
286
|
-
|
|
287
|
-
this.inst.colorPickerAction(null);
|
|
273
|
+
this.host.colorPickerAction?.(null);
|
|
288
274
|
}
|
|
289
275
|
|
|
290
276
|
/**
|
|
@@ -298,14 +284,13 @@ class ColorPicker extends CoreInjector {
|
|
|
298
284
|
}
|
|
299
285
|
|
|
300
286
|
/**
|
|
301
|
-
* @private
|
|
302
287
|
* @description Create a color picker element
|
|
303
|
-
* @param {
|
|
288
|
+
* @param {SunEditor.Deps} param0
|
|
304
289
|
* @param {*} param1
|
|
305
290
|
* @returns
|
|
306
291
|
*/
|
|
307
292
|
function CreateHTML({ lang, icons }, { colorList, disableHEXInput, disableRemove, splitNum }) {
|
|
308
|
-
colorList
|
|
293
|
+
colorList ||= DEFAULT_COLOR_LIST;
|
|
309
294
|
splitNum = colorList === DEFAULT_COLOR_LIST ? DEFAULLT_COLOR_SPLITNUM : splitNum;
|
|
310
295
|
|
|
311
296
|
let list = '';
|
|
@@ -327,7 +312,7 @@ function CreateHTML({ lang, icons }, { colorList, disableHEXInput, disableRemove
|
|
|
327
312
|
}
|
|
328
313
|
list += /*html*/ `
|
|
329
314
|
<form class="se-form-group se-form-w0">
|
|
330
|
-
${disableHEXInput ? '' : `<button type="button" class="se-btn
|
|
315
|
+
${disableHEXInput ? '' : `<button type="button" class="se-btn __se_hue" title="${lang.colorPicker}" aria-label="${lang.colorPicker}">${icons.color_palette}</button>`}
|
|
331
316
|
<input type="text" class="se-color-input" ${disableHEXInput ? 'readonly' : ''} placeholder="${lang.color}" />
|
|
332
317
|
${disableHEXInput ? '' : `<button type="submit" class="se-btn se-btn-success" title="${lang.submitButton}" aria-label="${lang.submitButton}">${icons.checked}</button>`}
|
|
333
318
|
${disableRemove ? '' : `<button type="button" class="se-btn __se_remove" title="${lang.remove}" aria-label="${lang.remove}">${icons.remove_color}</button>`}
|
|
@@ -336,6 +321,11 @@ function CreateHTML({ lang, icons }, { colorList, disableHEXInput, disableRemove
|
|
|
336
321
|
return dom.utils.createElement('DIV', { class: 'se-list-inner' }, list);
|
|
337
322
|
}
|
|
338
323
|
|
|
324
|
+
/**
|
|
325
|
+
* @param {Array<string|{value: string, name?: string}>} colorList - Color list
|
|
326
|
+
* @param {number} splitNum - Number of colors per row
|
|
327
|
+
* @returns {string} HTML string
|
|
328
|
+
*/
|
|
339
329
|
function _makeColor(colorList, splitNum) {
|
|
340
330
|
const ulHTML = `<ul class="se-color-pallet${splitNum ? ' se-list-horizontal' : ''}">`;
|
|
341
331
|
|