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,281 @@
|
|
|
1
|
+
import type {} from '../../../typedef';
|
|
2
|
+
export default Image_;
|
|
3
|
+
export type ImagePluginOptions = {
|
|
4
|
+
/**
|
|
5
|
+
* - Whether the image element can be resized.
|
|
6
|
+
*/
|
|
7
|
+
canResize?: boolean;
|
|
8
|
+
/**
|
|
9
|
+
* - Whether to display the height input field.
|
|
10
|
+
*/
|
|
11
|
+
showHeightInput?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* - The default width of the image. If a number is provided, `"px"` will be appended.
|
|
14
|
+
*/
|
|
15
|
+
defaultWidth?: string;
|
|
16
|
+
/**
|
|
17
|
+
* - The default height of the image. If a number is provided, `"px"` will be appended.
|
|
18
|
+
*/
|
|
19
|
+
defaultHeight?: string;
|
|
20
|
+
/**
|
|
21
|
+
* - Whether to allow only percentage-based sizing.
|
|
22
|
+
*/
|
|
23
|
+
percentageOnlySize?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* - Whether to create a file input element for image uploads.
|
|
26
|
+
*/
|
|
27
|
+
createFileInput?: boolean;
|
|
28
|
+
/**
|
|
29
|
+
* - Whether to create a URL input element for image insertion.
|
|
30
|
+
*/
|
|
31
|
+
createUrlInput?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* - The URL endpoint for image file uploads.
|
|
34
|
+
*/
|
|
35
|
+
uploadUrl?: string;
|
|
36
|
+
/**
|
|
37
|
+
* - Additional headers to include in the file upload request.
|
|
38
|
+
*/
|
|
39
|
+
uploadHeaders?: {
|
|
40
|
+
[x: string]: string;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* - The total upload size limit in bytes.
|
|
44
|
+
*/
|
|
45
|
+
uploadSizeLimit?: number;
|
|
46
|
+
/**
|
|
47
|
+
* - The single file upload size limit in bytes.
|
|
48
|
+
*/
|
|
49
|
+
uploadSingleSizeLimit?: number;
|
|
50
|
+
/**
|
|
51
|
+
* - Whether multiple image uploads are allowed.
|
|
52
|
+
*/
|
|
53
|
+
allowMultiple?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* - The accepted file formats for image uploads.
|
|
56
|
+
*/
|
|
57
|
+
acceptedFormats?: string;
|
|
58
|
+
/**
|
|
59
|
+
* - Whether to enable format type selection (`block` or `inline`).
|
|
60
|
+
*/
|
|
61
|
+
useFormatType?: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* - The default image format type (`"block"` or `"inline"`).
|
|
64
|
+
*/
|
|
65
|
+
defaultFormatType?: 'block' | 'inline';
|
|
66
|
+
/**
|
|
67
|
+
* - Whether to retain the chosen format type after image insertion.
|
|
68
|
+
*/
|
|
69
|
+
keepFormatType?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* - Whether to enable file uploads for linked images.
|
|
72
|
+
*/
|
|
73
|
+
linkEnableFileUpload?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* - Figure controls.
|
|
76
|
+
*/
|
|
77
|
+
controls?: SunEditor.Module.Figure.Controls;
|
|
78
|
+
/**
|
|
79
|
+
* - Component insertion behavior for selection and cursor placement. [default: `options.get('componentInsertBehavior')`]
|
|
80
|
+
* - For inline components: places the cursor near the inserted component or selects it if no nearby range is available.
|
|
81
|
+
* - For block components: executes behavior based on `selectMode`:
|
|
82
|
+
* - `auto`: Move cursor to the next line if possible, otherwise select the component.
|
|
83
|
+
* - `select`: Always select the inserted component.
|
|
84
|
+
* - `line`: Move cursor to the next line if possible, or create a new line and move there.
|
|
85
|
+
* - `none`: Do nothing.
|
|
86
|
+
*/
|
|
87
|
+
insertBehavior?: SunEditor.ComponentInsertType;
|
|
88
|
+
};
|
|
89
|
+
export type ImageState = {
|
|
90
|
+
/**
|
|
91
|
+
* - Size unit (`'px'` or `'%'`)
|
|
92
|
+
*/
|
|
93
|
+
sizeUnit: string;
|
|
94
|
+
/**
|
|
95
|
+
* - Whether only percentage sizing is allowed
|
|
96
|
+
*/
|
|
97
|
+
onlyPercentage: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* - Image production index for batch operations
|
|
100
|
+
*/
|
|
101
|
+
produceIndex: number;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* @typedef {Object} ImagePluginOptions
|
|
105
|
+
* @property {boolean} [canResize=true] - Whether the image element can be resized.
|
|
106
|
+
* @property {boolean} [showHeightInput=true] - Whether to display the height input field.
|
|
107
|
+
* @property {string} [defaultWidth="auto"] - The default width of the image. If a number is provided, `"px"` will be appended.
|
|
108
|
+
* @property {string} [defaultHeight="auto"] - The default height of the image. If a number is provided, `"px"` will be appended.
|
|
109
|
+
* @property {boolean} [percentageOnlySize=false] - Whether to allow only percentage-based sizing.
|
|
110
|
+
* @property {boolean} [createFileInput=true] - Whether to create a file input element for image uploads.
|
|
111
|
+
* @property {boolean} [createUrlInput=true] - Whether to create a URL input element for image insertion.
|
|
112
|
+
* @property {string} [uploadUrl] - The URL endpoint for image file uploads.
|
|
113
|
+
* @property {Object<string, string>} [uploadHeaders] - Additional headers to include in the file upload request.
|
|
114
|
+
* @property {number} [uploadSizeLimit] - The total upload size limit in bytes.
|
|
115
|
+
* @property {number} [uploadSingleSizeLimit] - The single file upload size limit in bytes.
|
|
116
|
+
* @property {boolean} [allowMultiple=false] - Whether multiple image uploads are allowed.
|
|
117
|
+
* @property {string} [acceptedFormats="image/*"] - The accepted file formats for image uploads.
|
|
118
|
+
* @property {boolean} [useFormatType=true] - Whether to enable format type selection (`block` or `inline`).
|
|
119
|
+
* @property {'block'|'inline'} [defaultFormatType="block"] - The default image format type (`"block"` or `"inline"`).
|
|
120
|
+
* @property {boolean} [keepFormatType=false] - Whether to retain the chosen format type after image insertion.
|
|
121
|
+
* @property {boolean} [linkEnableFileUpload] - Whether to enable file uploads for linked images.
|
|
122
|
+
* @property {SunEditor.Module.Figure.Controls} [controls] - Figure controls.
|
|
123
|
+
* @property {SunEditor.ComponentInsertType} [insertBehavior] - Component insertion behavior for selection and cursor placement. [default: `options.get('componentInsertBehavior')`]
|
|
124
|
+
* - For inline components: places the cursor near the inserted component or selects it if no nearby range is available.
|
|
125
|
+
* - For block components: executes behavior based on `selectMode`:
|
|
126
|
+
* - `auto`: Move cursor to the next line if possible, otherwise select the component.
|
|
127
|
+
* - `select`: Always select the inserted component.
|
|
128
|
+
* - `line`: Move cursor to the next line if possible, or create a new line and move there.
|
|
129
|
+
* - `none`: Do nothing.
|
|
130
|
+
*/
|
|
131
|
+
/**
|
|
132
|
+
* @typedef {Object} ImageState
|
|
133
|
+
* @property {string} sizeUnit - Size unit (`'px'` or `'%'`)
|
|
134
|
+
* @property {boolean} onlyPercentage - Whether only percentage sizing is allowed
|
|
135
|
+
* @property {number} produceIndex - Image production index for batch operations
|
|
136
|
+
*/
|
|
137
|
+
/**
|
|
138
|
+
* @class
|
|
139
|
+
* @description Image plugin.
|
|
140
|
+
* - This plugin provides image insertion functionality within the editor, supporting both file upload and URL input.
|
|
141
|
+
*/
|
|
142
|
+
declare class Image_ extends PluginModal {
|
|
143
|
+
/**
|
|
144
|
+
* @param {Element} node - The node to check.
|
|
145
|
+
* @returns {Element|null} Returns a node if the node is a valid component.
|
|
146
|
+
*/
|
|
147
|
+
static component(node: Element): Element | null;
|
|
148
|
+
/**
|
|
149
|
+
* @constructor
|
|
150
|
+
* @param {SunEditor.Kernel} editor - The core kernel
|
|
151
|
+
* @param {ImagePluginOptions} pluginOptions
|
|
152
|
+
*/
|
|
153
|
+
constructor(editor: SunEditor.Kernel, pluginOptions: ImagePluginOptions);
|
|
154
|
+
title: any;
|
|
155
|
+
pluginOptions: {
|
|
156
|
+
canResize: boolean;
|
|
157
|
+
showHeightInput: boolean;
|
|
158
|
+
defaultWidth: string;
|
|
159
|
+
defaultHeight: string;
|
|
160
|
+
percentageOnlySize: boolean;
|
|
161
|
+
createFileInput: boolean;
|
|
162
|
+
createUrlInput: boolean;
|
|
163
|
+
uploadUrl: string;
|
|
164
|
+
uploadHeaders: {
|
|
165
|
+
[x: string]: string;
|
|
166
|
+
};
|
|
167
|
+
uploadSizeLimit: number;
|
|
168
|
+
uploadSingleSizeLimit: number;
|
|
169
|
+
allowMultiple: boolean;
|
|
170
|
+
acceptedFormats: string;
|
|
171
|
+
useFormatType: boolean;
|
|
172
|
+
defaultFormatType: 'block' | 'inline';
|
|
173
|
+
keepFormatType: boolean;
|
|
174
|
+
insertBehavior: SunEditor.ComponentInsertType;
|
|
175
|
+
};
|
|
176
|
+
alignForm: HTMLElement;
|
|
177
|
+
anchor: ModalAnchorEditor;
|
|
178
|
+
modal: Modal;
|
|
179
|
+
figure: Figure;
|
|
180
|
+
fileManager: FileManager;
|
|
181
|
+
/** @type {ImageState} */
|
|
182
|
+
state: ImageState;
|
|
183
|
+
fileModalWrapper: HTMLElement;
|
|
184
|
+
imgInputFile: HTMLInputElement;
|
|
185
|
+
imgUrlFile: HTMLInputElement;
|
|
186
|
+
focusElement: HTMLInputElement;
|
|
187
|
+
altText: HTMLInputElement;
|
|
188
|
+
captionCheckEl: HTMLInputElement;
|
|
189
|
+
captionEl: HTMLElement;
|
|
190
|
+
previewSrc: HTMLElement;
|
|
191
|
+
as: 'block' | 'inline';
|
|
192
|
+
sizeService: ImageSizeService;
|
|
193
|
+
uploadService: ImageUploadService;
|
|
194
|
+
asBlock: HTMLButtonElement;
|
|
195
|
+
asInline: HTMLButtonElement;
|
|
196
|
+
/**
|
|
197
|
+
* @template {keyof ImageState} K
|
|
198
|
+
* @param {K} key
|
|
199
|
+
* @param {ImageState[K]} value
|
|
200
|
+
*/
|
|
201
|
+
setState<K extends keyof ImageState>(key: K, value: ImageState[K]): void;
|
|
202
|
+
retainFormat(): {
|
|
203
|
+
query: string;
|
|
204
|
+
method: (element: HTMLElement) => void;
|
|
205
|
+
};
|
|
206
|
+
onFilePasteAndDrop(params: SunEditor.HookParams.FilePasteDrop): void;
|
|
207
|
+
modalOn(isUpdate: boolean): void;
|
|
208
|
+
modalAction(): Promise<boolean>;
|
|
209
|
+
modalInit(): void;
|
|
210
|
+
componentSelect(target: HTMLElement): void | boolean;
|
|
211
|
+
componentEdit(target: HTMLElement): void;
|
|
212
|
+
componentDestroy(target: HTMLElement): Promise<void>;
|
|
213
|
+
/**
|
|
214
|
+
* @description Create an `image` component using the provided files.
|
|
215
|
+
* @param {FileList|File[]} fileList File object list
|
|
216
|
+
* @returns {Promise<boolean>} If return `false`, the file upload will be canceled
|
|
217
|
+
*/
|
|
218
|
+
submitFile(fileList: FileList | File[]): Promise<boolean>;
|
|
219
|
+
/**
|
|
220
|
+
* @description Create an `image` component using the provided url.
|
|
221
|
+
* @param {string} url File url
|
|
222
|
+
* @returns {Promise<boolean>} If return `false`, the file upload will be canceled
|
|
223
|
+
*/
|
|
224
|
+
submitURL(url: string): Promise<boolean>;
|
|
225
|
+
/**
|
|
226
|
+
* @description Creates a new image component, wraps it in a figure container with an optional anchor,
|
|
227
|
+
* - applies size and alignment settings, and inserts it into the editor.
|
|
228
|
+
* @param {string} src - The URL of the image to be inserted.
|
|
229
|
+
* @param {?Node} anchor - An optional anchor element to wrap the image. If provided, a clone is used.
|
|
230
|
+
* @param {string} width - The width value to be applied to the image.
|
|
231
|
+
* @param {string} height - The height value to be applied to the image.
|
|
232
|
+
* @param {string} align - The alignment setting for the image (e.g., 'left', 'center', 'right').
|
|
233
|
+
* @param {{name: string, size: number}} file - File metadata associated with the image
|
|
234
|
+
* @param {string} alt - The alternative text for the image.
|
|
235
|
+
* @param {boolean} isLast - Indicates whether this is the last file in the batch (used for scroll and insert actions).
|
|
236
|
+
*/
|
|
237
|
+
create(
|
|
238
|
+
src: string,
|
|
239
|
+
anchor: Node | null,
|
|
240
|
+
width: string,
|
|
241
|
+
height: string,
|
|
242
|
+
align: string,
|
|
243
|
+
file: {
|
|
244
|
+
name: string;
|
|
245
|
+
size: number;
|
|
246
|
+
},
|
|
247
|
+
alt: string,
|
|
248
|
+
isLast: boolean,
|
|
249
|
+
): void;
|
|
250
|
+
/**
|
|
251
|
+
* @description Creates a new inline image component, wraps it in an inline figure container with an optional anchor,
|
|
252
|
+
* - applies size settings, and inserts it into the editor.
|
|
253
|
+
* @param {string} src - The URL of the image to be inserted.
|
|
254
|
+
* @param {?Node} anchor - An optional anchor element to wrap the image. If provided, a clone is used.
|
|
255
|
+
* @param {string} width - The width value to be applied to the image.
|
|
256
|
+
* @param {string} height - The height value to be applied to the image.
|
|
257
|
+
* @param {{name: string, size: number}} file - File metadata associated with the image
|
|
258
|
+
* @param {string} alt - The alternative text for the image.
|
|
259
|
+
* @param {boolean} isLast - Indicates whether this is the last file in the batch (used for scroll and insert actions).
|
|
260
|
+
*/
|
|
261
|
+
createInline(
|
|
262
|
+
src: string,
|
|
263
|
+
anchor: Node | null,
|
|
264
|
+
width: string,
|
|
265
|
+
height: string,
|
|
266
|
+
file: {
|
|
267
|
+
name: string;
|
|
268
|
+
size: number;
|
|
269
|
+
},
|
|
270
|
+
alt: string,
|
|
271
|
+
isLast: boolean,
|
|
272
|
+
): void;
|
|
273
|
+
#private;
|
|
274
|
+
}
|
|
275
|
+
import { PluginModal } from '../../../interfaces';
|
|
276
|
+
import { Modal } from '../../../modules/contract';
|
|
277
|
+
import { Figure } from '../../../modules/contract';
|
|
278
|
+
import { FileManager } from '../../../modules/manager';
|
|
279
|
+
import { ModalAnchorEditor } from '../../../modules/ui';
|
|
280
|
+
import ImageSizeService from './services/image.size';
|
|
281
|
+
import ImageUploadService from './services/image.upload';
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @typedef {Object} ModalReturns_image
|
|
4
|
+
* @property {HTMLElement} html
|
|
5
|
+
* @property {HTMLElement} alignForm
|
|
6
|
+
* @property {HTMLElement} fileModalWrapper
|
|
7
|
+
* @property {HTMLInputElement} imgInputFile
|
|
8
|
+
* @property {HTMLInputElement} imgUrlFile
|
|
9
|
+
* @property {HTMLInputElement} altText
|
|
10
|
+
* @property {HTMLInputElement} captionCheckEl
|
|
11
|
+
* @property {HTMLElement} previewSrc
|
|
12
|
+
* @property {HTMLElement} tabs
|
|
13
|
+
* @property {HTMLButtonElement} galleryButton
|
|
14
|
+
* @property {HTMLInputElement} proportion
|
|
15
|
+
* @property {HTMLInputElement} inputX
|
|
16
|
+
* @property {HTMLInputElement} inputY
|
|
17
|
+
* @property {HTMLButtonElement} revertBtn
|
|
18
|
+
* @property {HTMLButtonElement} asBlock
|
|
19
|
+
* @property {HTMLButtonElement} asInline
|
|
20
|
+
* @property {HTMLButtonElement} fileRemoveBtn
|
|
21
|
+
*
|
|
22
|
+
* @param {SunEditor.Deps} $
|
|
23
|
+
* @param {*} pluginOptions
|
|
24
|
+
* @returns {ModalReturns_image}
|
|
25
|
+
*/
|
|
26
|
+
export function CreateHTML_modal({ lang, icons, plugins }: SunEditor.Deps, pluginOptions: any): ModalReturns_image;
|
|
27
|
+
export type ModalReturns_image = {
|
|
28
|
+
html: HTMLElement;
|
|
29
|
+
alignForm: HTMLElement;
|
|
30
|
+
fileModalWrapper: HTMLElement;
|
|
31
|
+
imgInputFile: HTMLInputElement;
|
|
32
|
+
imgUrlFile: HTMLInputElement;
|
|
33
|
+
altText: HTMLInputElement;
|
|
34
|
+
captionCheckEl: HTMLInputElement;
|
|
35
|
+
previewSrc: HTMLElement;
|
|
36
|
+
tabs: HTMLElement;
|
|
37
|
+
galleryButton: HTMLButtonElement;
|
|
38
|
+
proportion: HTMLInputElement;
|
|
39
|
+
inputX: HTMLInputElement;
|
|
40
|
+
inputY: HTMLInputElement;
|
|
41
|
+
revertBtn: HTMLButtonElement;
|
|
42
|
+
asBlock: HTMLButtonElement;
|
|
43
|
+
asInline: HTMLButtonElement;
|
|
44
|
+
fileRemoveBtn: HTMLButtonElement;
|
|
45
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @class ImageSizeService
|
|
4
|
+
* @description Handles image resizing, proportion calculations, and size input management.
|
|
5
|
+
*/
|
|
6
|
+
export class ImageSizeService {
|
|
7
|
+
/**
|
|
8
|
+
* @param {import('../index').default} main - The main Image_ plugin instance.
|
|
9
|
+
* @param {import('../render/image.html').ModalReturns_image} modalEl - Modal element
|
|
10
|
+
*/
|
|
11
|
+
constructor(main: import('../index').default, modalEl: import('../render/image.html').ModalReturns_image);
|
|
12
|
+
/**
|
|
13
|
+
* @description Sets the width and height input values.
|
|
14
|
+
* @param {string} w - Width value
|
|
15
|
+
* @param {string} h - Height value
|
|
16
|
+
*/
|
|
17
|
+
setInputSize(w: string, h: string): void;
|
|
18
|
+
/**
|
|
19
|
+
* @description Gets the current width and height input values.
|
|
20
|
+
* @returns {{w: string, h: string}}
|
|
21
|
+
*/
|
|
22
|
+
getInputSize(): {
|
|
23
|
+
w: string;
|
|
24
|
+
h: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* @description Sets the original width and height of the image.
|
|
28
|
+
* @param {string} w - Original width
|
|
29
|
+
* @param {string} h - Original height
|
|
30
|
+
*/
|
|
31
|
+
setOriginSize(w: string, h: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* @description Applies the specified width and height to the image.
|
|
34
|
+
* @param {string} w - Image width.
|
|
35
|
+
* @param {string} h - Image height.
|
|
36
|
+
*/
|
|
37
|
+
applySize(w: string, h: string): void;
|
|
38
|
+
/**
|
|
39
|
+
* @description Called when the modal is opened. Resets size inputs to default.
|
|
40
|
+
*/
|
|
41
|
+
on(): void;
|
|
42
|
+
/**
|
|
43
|
+
* @description Prepares the size inputs and proportion state when an image is selected.
|
|
44
|
+
* @param {SunEditor.Module.Figure.TargetInfo} figureInfo - Figure size information
|
|
45
|
+
* @param {string} w - Current width
|
|
46
|
+
* @param {string} h - Current height
|
|
47
|
+
*/
|
|
48
|
+
ready(figureInfo: SunEditor.Module.Figure.TargetInfo, w: string, h: string): void;
|
|
49
|
+
/**
|
|
50
|
+
* @description Initializes the size service state.
|
|
51
|
+
*/
|
|
52
|
+
init(): void;
|
|
53
|
+
#private;
|
|
54
|
+
}
|
|
55
|
+
export default ImageSizeService;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @class ImageUploadService
|
|
4
|
+
* @description Handles image upload operations including file upload, URL upload, and `Base64` conversion.
|
|
5
|
+
*/
|
|
6
|
+
export class ImageUploadService {
|
|
7
|
+
/**
|
|
8
|
+
* @param {import('../index').default} main - The main Image_ plugin instance.
|
|
9
|
+
*/
|
|
10
|
+
constructor(main: import('../index').default);
|
|
11
|
+
_base64RenderIndex: number;
|
|
12
|
+
/**
|
|
13
|
+
* @description Uploads the image to the server.
|
|
14
|
+
* @param {SunEditor.EventParams.ImageInfo} info - Image upload info.
|
|
15
|
+
*/
|
|
16
|
+
serverUpload(info: SunEditor.EventParams.ImageInfo): void;
|
|
17
|
+
/**
|
|
18
|
+
* @description Handles image upload via URL.
|
|
19
|
+
* @param {*} info - Image information.
|
|
20
|
+
*/
|
|
21
|
+
urlUpload(info: any): void;
|
|
22
|
+
#private;
|
|
23
|
+
}
|
|
24
|
+
export default ImageUploadService;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type {} from '../../../../typedef';
|
|
2
|
+
/**
|
|
3
|
+
* @description Image plugin constants
|
|
4
|
+
*/
|
|
5
|
+
export const DEFAULT_SVG_SIZE: '30%';
|
|
6
|
+
export namespace SIZE_UNIT {
|
|
7
|
+
let PERCENTAGE: string;
|
|
8
|
+
let PIXEL: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @type {{ BLOCK: 'block', INLINE: 'inline' }}
|
|
12
|
+
*/
|
|
13
|
+
export const FORMAT_TYPE: {
|
|
14
|
+
BLOCK: 'block';
|
|
15
|
+
INLINE: 'inline';
|
|
16
|
+
};
|
|
17
|
+
export const DEFAULT_ACCEPTED_FORMATS: 'image/*';
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
+
import type {} from '../../typedef';
|
|
1
2
|
export default Link;
|
|
2
|
-
export type
|
|
3
|
-
/**
|
|
4
|
-
* - Whether to display the link text.
|
|
5
|
-
*/
|
|
6
|
-
textToDisplay?: boolean;
|
|
7
|
-
/**
|
|
8
|
-
* - Whether to display the link title.
|
|
9
|
-
*/
|
|
10
|
-
title?: boolean;
|
|
3
|
+
export type LinkOptions = {
|
|
11
4
|
/**
|
|
12
5
|
* - The URL endpoint for file uploads.
|
|
13
6
|
*/
|
|
@@ -31,99 +24,86 @@ export type LinkPluginOptions = {
|
|
|
31
24
|
*/
|
|
32
25
|
acceptedFormats?: string;
|
|
33
26
|
};
|
|
27
|
+
export type LinkPluginOptions = Omit<LinkOptions & import('../../modules/ui/ModalAnchorEditor').ModalAnchorEditorParams, ''>;
|
|
34
28
|
/**
|
|
35
|
-
* @typedef {Object}
|
|
36
|
-
* @property {boolean} [textToDisplay=true] - Whether to display the link text.
|
|
37
|
-
* @property {boolean} [title=true] - Whether to display the link title.
|
|
29
|
+
* @typedef {Object} LinkOptions
|
|
38
30
|
* @property {string} [uploadUrl] - The URL endpoint for file uploads.
|
|
39
31
|
* @property {Object<string, string>} [uploadHeaders] - Additional headers for file upload requests.
|
|
40
32
|
* @property {number} [uploadSizeLimit] - The total file upload size limit in bytes.
|
|
41
33
|
* @property {number} [uploadSingleSizeLimit] - The single file upload size limit in bytes.
|
|
42
34
|
* @property {string} [acceptedFormats] - Accepted file formats for link uploads.
|
|
43
35
|
*/
|
|
36
|
+
/**
|
|
37
|
+
* @typedef {Omit<LinkOptions & import('../../modules/ui/ModalAnchorEditor').ModalAnchorEditorParams, ''>} LinkPluginOptions
|
|
38
|
+
*/
|
|
44
39
|
/**
|
|
45
40
|
* @class
|
|
46
41
|
* @description Link plugin.
|
|
47
42
|
* - This plugin provides link insertion and editing functionality within the editor.
|
|
48
43
|
* - It also supports file uploads if an upload URL is provided.
|
|
49
44
|
*/
|
|
50
|
-
declare class Link extends
|
|
51
|
-
static key: string;
|
|
52
|
-
static type: string;
|
|
53
|
-
static className: string;
|
|
45
|
+
declare class Link extends PluginModal {
|
|
54
46
|
/**
|
|
55
47
|
* @constructor
|
|
56
|
-
* @param {
|
|
48
|
+
* @param {SunEditor.Kernel} editor - The core kernel
|
|
57
49
|
* @param {LinkPluginOptions} pluginOptions
|
|
58
50
|
*/
|
|
59
|
-
constructor(editor:
|
|
51
|
+
constructor(editor: SunEditor.Kernel, pluginOptions: LinkPluginOptions);
|
|
60
52
|
title: any;
|
|
61
|
-
|
|
53
|
+
target: HTMLAnchorElement;
|
|
62
54
|
isUpdateState: boolean;
|
|
63
55
|
pluginOptions: {
|
|
64
56
|
uploadUrl: string;
|
|
65
57
|
uploadHeaders: {
|
|
66
58
|
[x: string]: string;
|
|
59
|
+
} & {
|
|
60
|
+
[x: string]: string;
|
|
67
61
|
};
|
|
68
62
|
uploadSizeLimit: number;
|
|
69
63
|
uploadSingleSizeLimit: number;
|
|
70
64
|
acceptedFormats: string;
|
|
71
65
|
enableFileUpload: boolean;
|
|
72
66
|
/**
|
|
73
|
-
* -
|
|
67
|
+
* - Modal title display.
|
|
68
|
+
*/
|
|
69
|
+
title?: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* - Create Text to display input.
|
|
74
72
|
*/
|
|
75
73
|
textToDisplay?: boolean;
|
|
76
74
|
/**
|
|
77
|
-
* -
|
|
75
|
+
* - Default checked value of the "Open in new window" checkbox.
|
|
78
76
|
*/
|
|
79
|
-
|
|
77
|
+
openNewWindow?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* - If `true`, disables the automatic prefixing of the host URL to the value of the link.
|
|
80
|
+
*/
|
|
81
|
+
noAutoPrefix?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* - The `rel` attribute list of anchor tag.
|
|
84
|
+
*/
|
|
85
|
+
relList?: Array<string>;
|
|
86
|
+
/**
|
|
87
|
+
* - Default `rel` attributes of anchor tag.
|
|
88
|
+
*/
|
|
89
|
+
defaultRel?: {
|
|
90
|
+
default?: string;
|
|
91
|
+
check_new_window?: string;
|
|
92
|
+
check_bookmark?: string;
|
|
93
|
+
};
|
|
80
94
|
};
|
|
81
95
|
anchor: ModalAnchorEditor;
|
|
82
96
|
modal: Modal;
|
|
83
97
|
controller: Controller;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
* @returns {boolean} - Whether the plugin is active
|
|
89
|
-
* - If it returns "undefined", it will no longer be called in this scope.
|
|
90
|
-
*/
|
|
91
|
-
active(element?: (HTMLElement | null) | undefined): boolean;
|
|
92
|
-
/**
|
|
93
|
-
* @editorMethod Modules.Modal
|
|
94
|
-
* @description Executes the method that is called when a "Modal" module's is opened.
|
|
95
|
-
*/
|
|
96
|
-
open(): void;
|
|
97
|
-
/**
|
|
98
|
-
* @editorMethod Modules.Modal
|
|
99
|
-
* @description Executes the method that is called when a plugin's modal is opened.
|
|
100
|
-
* @param {boolean} isUpdate "Indicates whether the modal is for editing an existing component (true) or registering a new one (false)."
|
|
101
|
-
*/
|
|
102
|
-
on(isUpdate: boolean): void;
|
|
103
|
-
/**
|
|
104
|
-
* @editorMethod Modules.Modal
|
|
105
|
-
* @description This function is called when a form within a modal window is "submit".
|
|
106
|
-
* @returns {boolean} Success or failure
|
|
107
|
-
*/
|
|
108
|
-
modalAction(): boolean;
|
|
109
|
-
/**
|
|
110
|
-
* @editorMethod Modules.Modal
|
|
111
|
-
* @description This function is called before the modal window is opened, but before it is closed.
|
|
112
|
-
*/
|
|
113
|
-
init(): void;
|
|
114
|
-
/**
|
|
115
|
-
* @editorMethod Modules.Controller
|
|
116
|
-
* @description Executes the method that is called when a button is clicked in the "controller".
|
|
117
|
-
* @param {HTMLButtonElement} target Target button element
|
|
118
|
-
*/
|
|
98
|
+
active(element: HTMLElement | null, target: HTMLElement | null): boolean | void;
|
|
99
|
+
modalOn(isUpdate: boolean): void;
|
|
100
|
+
modalAction(): Promise<boolean>;
|
|
101
|
+
modalInit(): void;
|
|
119
102
|
controllerAction(target: HTMLButtonElement): void;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
* @description This function is called before the "controller" before it is closed.
|
|
123
|
-
*/
|
|
124
|
-
close(): void;
|
|
103
|
+
controllerClose(): void;
|
|
104
|
+
#private;
|
|
125
105
|
}
|
|
126
|
-
import
|
|
127
|
-
import {
|
|
128
|
-
import {
|
|
129
|
-
import {
|
|
106
|
+
import { PluginModal } from '../../interfaces';
|
|
107
|
+
import { Modal } from '../../modules/contract';
|
|
108
|
+
import { Controller } from '../../modules/contract';
|
|
109
|
+
import { ModalAnchorEditor } from '../../modules/ui';
|