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.
Files changed (380) hide show
  1. package/README.md +65 -57
  2. package/dist/suneditor-contents.min.css +1 -0
  3. package/dist/suneditor.min.css +1 -1
  4. package/dist/suneditor.min.js +1 -1
  5. package/package.json +110 -61
  6. package/src/assets/design/color.css +36 -17
  7. package/src/assets/design/size.css +2 -0
  8. package/src/assets/icons/defaultIcons.js +17 -2
  9. package/src/assets/suneditor-contents.css +51 -16
  10. package/src/assets/suneditor.css +116 -43
  11. package/src/core/config/contextProvider.js +288 -0
  12. package/src/core/config/eventManager.js +188 -0
  13. package/src/core/config/instanceCheck.js +59 -0
  14. package/src/core/config/optionProvider.js +452 -0
  15. package/src/core/editor.js +166 -1637
  16. package/src/core/event/actions/index.js +229 -0
  17. package/src/core/event/effects/common.registry.js +74 -0
  18. package/src/core/event/effects/keydown.registry.js +573 -0
  19. package/src/core/event/effects/ruleHelpers.js +148 -0
  20. package/src/core/event/eventOrchestrator.js +944 -0
  21. package/src/core/event/executor.js +27 -0
  22. package/src/core/{base/eventHandlers → event/handlers}/handler_toolbar.js +27 -28
  23. package/src/core/{base/eventHandlers → event/handlers}/handler_ww_clipboard.js +10 -8
  24. package/src/core/{base/eventHandlers → event/handlers}/handler_ww_dragDrop.js +22 -23
  25. package/src/core/event/handlers/handler_ww_input.js +75 -0
  26. package/src/core/event/handlers/handler_ww_key.js +228 -0
  27. package/src/core/event/handlers/handler_ww_mouse.js +166 -0
  28. package/src/core/event/ports.js +211 -0
  29. package/src/core/event/reducers/keydown.reducer.js +97 -0
  30. package/src/core/event/rules/keydown.rule.arrow.js +63 -0
  31. package/src/core/event/rules/keydown.rule.backspace.js +208 -0
  32. package/src/core/event/rules/keydown.rule.delete.js +132 -0
  33. package/src/core/event/rules/keydown.rule.enter.js +150 -0
  34. package/src/core/event/rules/keydown.rule.tab.js +35 -0
  35. package/src/core/event/support/defaultLineManager.js +136 -0
  36. package/src/core/event/support/selectionState.js +204 -0
  37. package/src/core/kernel/coreKernel.js +320 -0
  38. package/src/core/kernel/kernelInjector.js +19 -0
  39. package/src/core/kernel/store.js +173 -0
  40. package/src/core/{class → logic/dom}/char.js +42 -45
  41. package/src/core/logic/dom/format.js +1075 -0
  42. package/src/core/{class → logic/dom}/html.js +743 -624
  43. package/src/core/logic/dom/inline.js +1847 -0
  44. package/src/core/logic/dom/listFormat.js +601 -0
  45. package/src/core/{class → logic/dom}/nodeTransform.js +92 -72
  46. package/src/core/{class → logic/dom}/offset.js +254 -317
  47. package/src/core/logic/dom/selection.js +754 -0
  48. package/src/core/logic/panel/menu.js +389 -0
  49. package/src/core/logic/panel/toolbar.js +449 -0
  50. package/src/core/logic/panel/viewer.js +761 -0
  51. package/src/core/logic/shell/_commandExecutor.js +380 -0
  52. package/src/core/logic/shell/commandDispatcher.js +241 -0
  53. package/src/core/logic/shell/component.js +970 -0
  54. package/src/core/logic/shell/focusManager.js +110 -0
  55. package/src/core/{base → logic/shell}/history.js +110 -60
  56. package/src/core/logic/shell/pluginManager.js +363 -0
  57. package/src/core/logic/shell/shortcuts.js +130 -0
  58. package/src/core/logic/shell/ui.js +904 -0
  59. package/src/core/schema/context.js +66 -0
  60. package/src/core/schema/frameContext.js +160 -0
  61. package/src/core/schema/options.js +628 -0
  62. package/src/core/section/constructor.js +194 -500
  63. package/src/core/section/documentType.js +297 -222
  64. package/src/events.js +808 -543
  65. package/src/helper/clipboard.js +27 -16
  66. package/src/helper/converter.js +100 -78
  67. package/src/helper/dom/domCheck.js +56 -30
  68. package/src/helper/dom/domQuery.js +159 -89
  69. package/src/helper/dom/domUtils.js +114 -49
  70. package/src/helper/dom/index.js +5 -1
  71. package/src/helper/env.js +26 -26
  72. package/src/helper/index.js +1 -1
  73. package/src/helper/keyCodeMap.js +25 -28
  74. package/src/helper/numbers.js +4 -8
  75. package/src/helper/unicode.js +4 -8
  76. package/src/hooks/base.js +307 -0
  77. package/src/hooks/params.js +130 -0
  78. package/src/interfaces/contracts.js +227 -0
  79. package/src/interfaces/index.js +7 -0
  80. package/src/interfaces/plugins.js +239 -0
  81. package/src/langs/ckb.js +4 -4
  82. package/src/langs/cs.js +4 -4
  83. package/src/langs/da.js +4 -4
  84. package/src/langs/de.js +4 -4
  85. package/src/langs/en.js +4 -4
  86. package/src/langs/es.js +4 -4
  87. package/src/langs/fa.js +4 -4
  88. package/src/langs/fr.js +4 -4
  89. package/src/langs/he.js +4 -4
  90. package/src/langs/hu.js +4 -4
  91. package/src/langs/it.js +4 -4
  92. package/src/langs/ja.js +4 -4
  93. package/src/langs/km.js +4 -4
  94. package/src/langs/ko.js +4 -4
  95. package/src/langs/lv.js +4 -4
  96. package/src/langs/nl.js +4 -4
  97. package/src/langs/pl.js +4 -4
  98. package/src/langs/pt_br.js +13 -13
  99. package/src/langs/ro.js +4 -4
  100. package/src/langs/ru.js +4 -4
  101. package/src/langs/se.js +4 -4
  102. package/src/langs/tr.js +4 -4
  103. package/src/langs/uk.js +4 -4
  104. package/src/langs/ur.js +4 -4
  105. package/src/langs/zh_cn.js +4 -4
  106. package/src/modules/{Browser.js → contract/Browser.js} +119 -128
  107. package/src/modules/{ColorPicker.js → contract/ColorPicker.js} +132 -142
  108. package/src/modules/contract/Controller.js +589 -0
  109. package/src/modules/{Figure.js → contract/Figure.js} +591 -411
  110. package/src/modules/{HueSlider.js → contract/HueSlider.js} +125 -86
  111. package/src/modules/contract/Modal.js +357 -0
  112. package/src/modules/contract/index.js +9 -0
  113. package/src/modules/manager/ApiManager.js +197 -0
  114. package/src/modules/{FileManager.js → manager/FileManager.js} +128 -160
  115. package/src/modules/manager/index.js +5 -0
  116. package/src/modules/{ModalAnchorEditor.js → ui/ModalAnchorEditor.js} +108 -138
  117. package/src/modules/{SelectMenu.js → ui/SelectMenu.js} +119 -120
  118. package/src/modules/{_DragHandle.js → ui/_DragHandle.js} +1 -1
  119. package/src/modules/ui/index.js +6 -0
  120. package/src/plugins/browser/audioGallery.js +23 -26
  121. package/src/plugins/browser/fileBrowser.js +25 -28
  122. package/src/plugins/browser/fileGallery.js +20 -23
  123. package/src/plugins/browser/imageGallery.js +24 -23
  124. package/src/plugins/browser/videoGallery.js +27 -29
  125. package/src/plugins/command/blockquote.js +11 -17
  126. package/src/plugins/command/exportPDF.js +26 -26
  127. package/src/plugins/command/fileUpload.js +138 -133
  128. package/src/plugins/command/list_bulleted.js +48 -44
  129. package/src/plugins/command/list_numbered.js +48 -44
  130. package/src/plugins/dropdown/align.js +64 -50
  131. package/src/plugins/dropdown/backgroundColor.js +34 -35
  132. package/src/plugins/dropdown/{formatBlock.js → blockStyle.js} +43 -37
  133. package/src/plugins/dropdown/font.js +50 -36
  134. package/src/plugins/dropdown/fontColor.js +34 -35
  135. package/src/plugins/dropdown/hr.js +55 -50
  136. package/src/plugins/dropdown/layout.js +20 -15
  137. package/src/plugins/dropdown/lineHeight.js +46 -30
  138. package/src/plugins/dropdown/list.js +32 -33
  139. package/src/plugins/dropdown/paragraphStyle.js +40 -34
  140. package/src/plugins/dropdown/table/index.js +915 -0
  141. package/src/plugins/dropdown/table/render/table.html.js +308 -0
  142. package/src/plugins/dropdown/table/render/table.menu.js +121 -0
  143. package/src/plugins/dropdown/table/services/table.cell.js +465 -0
  144. package/src/plugins/dropdown/table/services/table.clipboard.js +414 -0
  145. package/src/plugins/dropdown/table/services/table.grid.js +504 -0
  146. package/src/plugins/dropdown/table/services/table.resize.js +463 -0
  147. package/src/plugins/dropdown/table/services/table.selection.js +466 -0
  148. package/src/plugins/dropdown/table/services/table.style.js +844 -0
  149. package/src/plugins/dropdown/table/shared/table.constants.js +109 -0
  150. package/src/plugins/dropdown/table/shared/table.utils.js +219 -0
  151. package/src/plugins/dropdown/template.js +20 -15
  152. package/src/plugins/dropdown/textStyle.js +28 -22
  153. package/src/plugins/field/mention.js +54 -49
  154. package/src/plugins/index.js +5 -5
  155. package/src/plugins/input/fontSize.js +100 -97
  156. package/src/plugins/input/pageNavigator.js +13 -10
  157. package/src/plugins/modal/audio.js +208 -219
  158. package/src/plugins/modal/drawing.js +99 -104
  159. package/src/plugins/modal/embed.js +323 -312
  160. package/src/plugins/modal/image/index.js +942 -0
  161. package/src/plugins/modal/image/render/image.html.js +150 -0
  162. package/src/plugins/modal/image/services/image.size.js +198 -0
  163. package/src/plugins/modal/image/services/image.upload.js +216 -0
  164. package/src/plugins/modal/image/shared/image.constants.js +20 -0
  165. package/src/plugins/modal/link.js +74 -54
  166. package/src/plugins/modal/math.js +126 -119
  167. package/src/plugins/modal/video/index.js +858 -0
  168. package/src/plugins/modal/video/render/video.html.js +131 -0
  169. package/src/plugins/modal/video/services/video.size.js +281 -0
  170. package/src/plugins/modal/video/services/video.upload.js +92 -0
  171. package/src/plugins/popup/anchor.js +57 -49
  172. package/src/suneditor.js +73 -61
  173. package/src/themes/cobalt.css +155 -0
  174. package/src/themes/dark.css +143 -120
  175. package/src/typedef.js +214 -63
  176. package/types/assets/icons/defaultIcons.d.ts +8 -0
  177. package/types/assets/suneditor-contents.css.d.ts +1 -0
  178. package/types/assets/suneditor.css.d.ts +1 -0
  179. package/types/core/config/contextProvider.d.ts +148 -0
  180. package/types/core/config/eventManager.d.ts +68 -0
  181. package/types/core/config/instanceCheck.d.ts +33 -0
  182. package/types/core/config/optionProvider.d.ts +147 -0
  183. package/types/core/editor.d.ts +27 -586
  184. package/types/core/event/actions/index.d.ts +50 -0
  185. package/types/core/event/effects/common.registry.d.ts +56 -0
  186. package/types/core/event/effects/keydown.registry.d.ts +80 -0
  187. package/types/core/event/effects/ruleHelpers.d.ts +36 -0
  188. package/types/core/event/eventOrchestrator.d.ts +191 -0
  189. package/types/core/event/executor.d.ts +13 -0
  190. package/types/core/event/handlers/handler_toolbar.d.ts +38 -0
  191. package/types/core/event/handlers/handler_ww_clipboard.d.ts +36 -0
  192. package/types/core/event/handlers/handler_ww_dragDrop.d.ts +26 -0
  193. package/types/core/event/handlers/handler_ww_input.d.ts +38 -0
  194. package/types/core/event/handlers/handler_ww_key.d.ts +40 -0
  195. package/types/core/event/handlers/handler_ww_mouse.d.ts +47 -0
  196. package/types/core/event/ports.d.ts +256 -0
  197. package/types/core/event/reducers/keydown.reducer.d.ts +84 -0
  198. package/types/core/event/rules/keydown.rule.arrow.d.ts +19 -0
  199. package/types/core/event/rules/keydown.rule.backspace.d.ts +18 -0
  200. package/types/core/event/rules/keydown.rule.delete.d.ts +18 -0
  201. package/types/core/event/rules/keydown.rule.enter.d.ts +18 -0
  202. package/types/core/event/rules/keydown.rule.tab.d.ts +18 -0
  203. package/types/core/event/support/defaultLineManager.d.ts +22 -0
  204. package/types/core/event/support/selectionState.d.ts +29 -0
  205. package/types/core/kernel/coreKernel.d.ts +219 -0
  206. package/types/core/kernel/kernelInjector.d.ts +16 -0
  207. package/types/core/kernel/store.d.ts +170 -0
  208. package/types/core/logic/dom/char.d.ts +46 -0
  209. package/types/core/logic/dom/format.d.ts +234 -0
  210. package/types/core/logic/dom/html.d.ts +290 -0
  211. package/types/core/logic/dom/inline.d.ts +93 -0
  212. package/types/core/logic/dom/listFormat.d.ts +101 -0
  213. package/types/core/logic/dom/nodeTransform.d.ts +110 -0
  214. package/types/core/logic/dom/offset.d.ts +335 -0
  215. package/types/core/logic/dom/selection.d.ts +165 -0
  216. package/types/core/logic/panel/menu.d.ts +93 -0
  217. package/types/core/logic/panel/toolbar.d.ts +128 -0
  218. package/types/core/logic/panel/viewer.d.ts +89 -0
  219. package/types/core/logic/shell/_commandExecutor.d.ts +18 -0
  220. package/types/core/logic/shell/commandDispatcher.d.ts +65 -0
  221. package/types/core/logic/shell/component.d.ts +182 -0
  222. package/types/core/logic/shell/focusManager.d.ts +31 -0
  223. package/types/core/{base → logic/shell}/history.d.ts +13 -12
  224. package/types/core/logic/shell/pluginManager.d.ts +115 -0
  225. package/types/core/logic/shell/shortcuts.d.ts +131 -0
  226. package/types/core/logic/shell/ui.d.ts +261 -0
  227. package/types/core/schema/context.d.ts +104 -0
  228. package/types/core/schema/frameContext.d.ts +320 -0
  229. package/types/core/schema/options.d.ts +1241 -0
  230. package/types/core/section/constructor.d.ts +117 -652
  231. package/types/core/section/documentType.d.ts +43 -61
  232. package/types/events.d.ts +796 -65
  233. package/types/helper/clipboard.d.ts +5 -4
  234. package/types/helper/converter.d.ts +55 -43
  235. package/types/helper/dom/domCheck.d.ts +27 -19
  236. package/types/helper/dom/domQuery.d.ts +76 -57
  237. package/types/helper/dom/domUtils.d.ts +62 -39
  238. package/types/helper/dom/index.d.ts +87 -1
  239. package/types/helper/env.d.ts +16 -13
  240. package/types/helper/index.d.ts +8 -2
  241. package/types/helper/keyCodeMap.d.ts +24 -23
  242. package/types/helper/numbers.d.ts +4 -6
  243. package/types/helper/unicode.d.ts +4 -3
  244. package/types/hooks/base.d.ts +239 -0
  245. package/types/hooks/params.d.ts +65 -0
  246. package/types/index.d.ts +20 -117
  247. package/types/interfaces/contracts.d.ts +183 -0
  248. package/types/interfaces/index.d.ts +3 -0
  249. package/types/interfaces/plugins.d.ts +168 -0
  250. package/types/langs/_Lang.d.ts +2 -2
  251. package/types/langs/index.d.ts +2 -2
  252. package/types/modules/contract/Browser.d.ts +262 -0
  253. package/types/modules/contract/ColorPicker.d.ts +99 -0
  254. package/types/modules/contract/Controller.d.ts +204 -0
  255. package/types/modules/contract/Figure.d.ts +529 -0
  256. package/types/modules/{HueSlider.d.ts → contract/HueSlider.d.ts} +39 -28
  257. package/types/modules/contract/Modal.d.ts +62 -0
  258. package/types/modules/contract/index.d.ts +7 -0
  259. package/types/modules/manager/ApiManager.d.ts +106 -0
  260. package/types/modules/manager/FileManager.d.ts +124 -0
  261. package/types/modules/manager/index.d.ts +3 -0
  262. package/types/modules/ui/ModalAnchorEditor.d.ts +152 -0
  263. package/types/modules/ui/SelectMenu.d.ts +107 -0
  264. package/types/modules/{_DragHandle.d.ts → ui/_DragHandle.d.ts} +1 -0
  265. package/types/modules/ui/index.d.ts +4 -0
  266. package/types/plugins/browser/audioGallery.d.ts +33 -41
  267. package/types/plugins/browser/fileBrowser.d.ts +42 -50
  268. package/types/plugins/browser/fileGallery.d.ts +33 -41
  269. package/types/plugins/browser/imageGallery.d.ts +30 -37
  270. package/types/plugins/browser/videoGallery.d.ts +33 -41
  271. package/types/plugins/command/blockquote.d.ts +4 -21
  272. package/types/plugins/command/exportPDF.d.ts +23 -33
  273. package/types/plugins/command/fileUpload.d.ts +80 -100
  274. package/types/plugins/command/list_bulleted.d.ts +9 -35
  275. package/types/plugins/command/list_numbered.d.ts +9 -35
  276. package/types/plugins/dropdown/align.d.ts +23 -46
  277. package/types/plugins/dropdown/backgroundColor.d.ts +35 -53
  278. package/types/plugins/dropdown/blockStyle.d.ts +45 -0
  279. package/types/plugins/dropdown/font.d.ts +18 -41
  280. package/types/plugins/dropdown/fontColor.d.ts +35 -53
  281. package/types/plugins/dropdown/hr.d.ts +26 -52
  282. package/types/plugins/dropdown/layout.d.ts +19 -25
  283. package/types/plugins/dropdown/lineHeight.d.ts +21 -39
  284. package/types/plugins/dropdown/list.d.ts +6 -34
  285. package/types/plugins/dropdown/paragraphStyle.d.ts +34 -45
  286. package/types/plugins/dropdown/table/index.d.ts +158 -0
  287. package/types/plugins/dropdown/table/render/table.html.d.ts +71 -0
  288. package/types/plugins/dropdown/table/render/table.menu.d.ts +59 -0
  289. package/types/plugins/dropdown/table/services/table.cell.d.ts +76 -0
  290. package/types/plugins/dropdown/table/services/table.clipboard.d.ts +26 -0
  291. package/types/plugins/dropdown/table/services/table.grid.d.ts +77 -0
  292. package/types/plugins/dropdown/table/services/table.resize.d.ts +72 -0
  293. package/types/plugins/dropdown/table/services/table.selection.d.ts +59 -0
  294. package/types/plugins/dropdown/table/services/table.style.d.ts +162 -0
  295. package/types/plugins/dropdown/table/shared/table.constants.d.ts +134 -0
  296. package/types/plugins/dropdown/table/shared/table.utils.d.ts +91 -0
  297. package/types/plugins/dropdown/template.d.ts +19 -25
  298. package/types/plugins/dropdown/textStyle.d.ts +23 -30
  299. package/types/plugins/field/mention.d.ts +66 -72
  300. package/types/plugins/index.d.ts +41 -40
  301. package/types/plugins/input/fontSize.d.ts +57 -96
  302. package/types/plugins/input/pageNavigator.d.ts +5 -8
  303. package/types/plugins/modal/audio.d.ts +60 -153
  304. package/types/plugins/modal/drawing.d.ts +16 -118
  305. package/types/plugins/modal/embed.d.ts +46 -166
  306. package/types/plugins/modal/image/index.d.ts +281 -0
  307. package/types/plugins/modal/image/render/image.html.d.ts +45 -0
  308. package/types/plugins/modal/image/services/image.size.d.ts +55 -0
  309. package/types/plugins/modal/image/services/image.upload.d.ts +24 -0
  310. package/types/plugins/modal/image/shared/image.constants.d.ts +17 -0
  311. package/types/plugins/modal/link.d.ts +46 -66
  312. package/types/plugins/modal/math.d.ts +17 -86
  313. package/types/plugins/modal/{video.d.ts → video/index.d.ts} +89 -221
  314. package/types/plugins/modal/video/render/video.html.d.ts +37 -0
  315. package/types/plugins/modal/video/services/video.size.d.ts +74 -0
  316. package/types/plugins/modal/video/services/video.upload.d.ts +19 -0
  317. package/types/plugins/popup/anchor.d.ts +8 -38
  318. package/types/suneditor.d.ts +55 -24
  319. package/types/typedef.d.ts +344 -228
  320. package/CONTRIBUTING.md +0 -186
  321. package/src/core/base/eventHandlers/handler_ww_key_input.js +0 -1200
  322. package/src/core/base/eventHandlers/handler_ww_mouse.js +0 -194
  323. package/src/core/base/eventManager.js +0 -1523
  324. package/src/core/class/component.js +0 -856
  325. package/src/core/class/format.js +0 -3433
  326. package/src/core/class/menu.js +0 -346
  327. package/src/core/class/selection.js +0 -610
  328. package/src/core/class/shortcuts.js +0 -98
  329. package/src/core/class/toolbar.js +0 -431
  330. package/src/core/class/ui.js +0 -424
  331. package/src/core/class/viewer.js +0 -750
  332. package/src/core/section/actives.js +0 -266
  333. package/src/core/section/context.js +0 -102
  334. package/src/editorInjector/_classes.js +0 -36
  335. package/src/editorInjector/_core.js +0 -87
  336. package/src/editorInjector/index.js +0 -73
  337. package/src/modules/ApiManager.js +0 -191
  338. package/src/modules/Controller.js +0 -474
  339. package/src/modules/Modal.js +0 -346
  340. package/src/modules/index.js +0 -14
  341. package/src/plugins/dropdown/table.js +0 -4034
  342. package/src/plugins/modal/image.js +0 -1376
  343. package/src/plugins/modal/video.js +0 -1226
  344. package/types/core/base/eventHandlers/handler_toolbar.d.ts +0 -41
  345. package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +0 -40
  346. package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +0 -35
  347. package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +0 -45
  348. package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +0 -39
  349. package/types/core/base/eventManager.d.ts +0 -401
  350. package/types/core/class/char.d.ts +0 -61
  351. package/types/core/class/component.d.ts +0 -213
  352. package/types/core/class/format.d.ts +0 -623
  353. package/types/core/class/html.d.ts +0 -430
  354. package/types/core/class/menu.d.ts +0 -126
  355. package/types/core/class/nodeTransform.d.ts +0 -93
  356. package/types/core/class/offset.d.ts +0 -522
  357. package/types/core/class/selection.d.ts +0 -188
  358. package/types/core/class/shortcuts.d.ts +0 -142
  359. package/types/core/class/toolbar.d.ts +0 -189
  360. package/types/core/class/ui.d.ts +0 -164
  361. package/types/core/class/viewer.d.ts +0 -140
  362. package/types/core/section/actives.d.ts +0 -46
  363. package/types/core/section/context.d.ts +0 -45
  364. package/types/editorInjector/_classes.d.ts +0 -41
  365. package/types/editorInjector/_core.d.ts +0 -87
  366. package/types/editorInjector/index.d.ts +0 -69
  367. package/types/modules/ApiManager.d.ts +0 -125
  368. package/types/modules/Browser.d.ts +0 -326
  369. package/types/modules/ColorPicker.d.ts +0 -135
  370. package/types/modules/Controller.d.ts +0 -251
  371. package/types/modules/Figure.d.ts +0 -517
  372. package/types/modules/FileManager.d.ts +0 -202
  373. package/types/modules/Modal.d.ts +0 -111
  374. package/types/modules/ModalAnchorEditor.d.ts +0 -236
  375. package/types/modules/SelectMenu.d.ts +0 -194
  376. package/types/modules/index.d.ts +0 -26
  377. package/types/plugins/dropdown/formatBlock.d.ts +0 -55
  378. package/types/plugins/dropdown/table.d.ts +0 -627
  379. package/types/plugins/modal/image.d.ts +0 -451
  380. /package/{LICENSE → LICENSE.txt} +0 -0
@@ -1,53 +1,85 @@
1
+ import type {} from '../../typedef';
1
2
  export default FileUpload;
3
+ export type FileUploadPluginOptions = {
4
+ /**
5
+ * - Server request URL for file upload
6
+ */
7
+ uploadUrl: string;
8
+ /**
9
+ * - Server request headers
10
+ */
11
+ uploadHeaders?: {
12
+ [x: string]: string;
13
+ };
14
+ /**
15
+ * - Total upload size limit in bytes
16
+ */
17
+ uploadSizeLimit?: number;
18
+ /**
19
+ * - Single file size limit in bytes
20
+ */
21
+ uploadSingleSizeLimit?: number;
22
+ /**
23
+ * - Allow multiple file uploads
24
+ */
25
+ allowMultiple?: boolean;
26
+ /**
27
+ * - Accepted file formats (e.g., 'image/*, .pdf')
28
+ */
29
+ acceptedFormats?: string;
30
+ /**
31
+ * - Specify the default form of the file component as `box` or `link`
32
+ */
33
+ as?: string;
34
+ /**
35
+ * - Additional controls to be added to the figure
36
+ */
37
+ controls?: Array<string>;
38
+ /**
39
+ * - Component insertion behavior for selection and cursor placement. [default: `options.get('componentInsertBehavior')`]
40
+ * - `auto`: Move cursor to the next line if possible, otherwise select the component.
41
+ * - `select`: Always select the inserted component.
42
+ * - `line`: Move cursor to the next line if possible, or create a new line and move there.
43
+ * - `none`: Do nothing.
44
+ */
45
+ insertBehavior?: SunEditor.ComponentInsertType;
46
+ };
47
+ /**
48
+ * @typedef FileUploadPluginOptions
49
+ * @property {string} uploadUrl - Server request URL for file upload
50
+ * @property {Object<string, string>} [uploadHeaders] - Server request headers
51
+ * @property {number} [uploadSizeLimit] - Total upload size limit in bytes
52
+ * @property {number} [uploadSingleSizeLimit] - Single file size limit in bytes
53
+ * @property {boolean} [allowMultiple=false] - Allow multiple file uploads
54
+ * @property {string} [acceptedFormats="*"] - Accepted file formats (e.g., 'image/*, .pdf')
55
+ * @property {string} [as="box"] - Specify the default form of the file component as `box` or `link`
56
+ * @property {Array<string>} [controls] - Additional controls to be added to the figure
57
+ * @property {SunEditor.ComponentInsertType} [insertBehavior] - Component insertion behavior for selection and cursor placement. [default: `options.get('componentInsertBehavior')`]
58
+ * - `auto`: Move cursor to the next line if possible, otherwise select the component.
59
+ * - `select`: Always select the inserted component.
60
+ * - `line`: Move cursor to the next line if possible, or create a new line and move there.
61
+ * - `none`: Do nothing.
62
+ */
2
63
  /**
3
64
  * @class
4
65
  * @description File upload plugin
5
66
  */
6
- declare class FileUpload extends EditorInjector {
7
- static key: string;
8
- static type: string;
9
- static className: string;
67
+ declare class FileUpload extends PluginCommand {
10
68
  static options: {
11
69
  eventIndex: number;
12
70
  };
13
71
  /**
14
- * @this {FileUpload}
15
72
  * @param {HTMLElement} node - The node to check.
16
73
  * @returns {HTMLElement|null} Returns a node if the node is a valid component.
17
74
  */
18
- static component(this: FileUpload, node: HTMLElement): HTMLElement | null;
75
+ static component(node: HTMLElement): HTMLElement | null;
19
76
  /**
20
77
  * @constructor
21
- * @param {__se__EditorCore} editor - The root editor instance
22
- * @param {Object} pluginOptions - plugin options
23
- * @param {string} pluginOptions.uploadUrl - server request url
24
- * @param {Object<string, string>=} pluginOptions.uploadHeaders - server request headers
25
- * @param {string=} pluginOptions.uploadSizeLimit - upload size limit
26
- * @param {string=} pluginOptions.uploadSingleSizeLimit - upload single size limit
27
- * @param {boolean=} pluginOptions.allowMultiple - allow multiple files
28
- * @param {string=} pluginOptions.acceptedFormats - accepted formats
29
- * @param {string=} pluginOptions.as - Whether to use the 'Box' or 'Link' conversion button
30
- * @param {Array<string>} pluginOptions.controls - Additional controls to be added to the figure
78
+ * @param {SunEditor.Kernel} editor - The core kernel
79
+ * @param {FileUploadPluginOptions} pluginOptions - plugin options
31
80
  */
32
- constructor(
33
- editor: __se__EditorCore,
34
- pluginOptions: {
35
- uploadUrl: string;
36
- uploadHeaders?:
37
- | {
38
- [x: string]: string;
39
- }
40
- | undefined;
41
- uploadSizeLimit?: string | undefined;
42
- uploadSingleSizeLimit?: string | undefined;
43
- allowMultiple?: boolean | undefined;
44
- acceptedFormats?: string | undefined;
45
- as?: string | undefined;
46
- controls: Array<string>;
47
- }
48
- );
81
+ constructor(editor: SunEditor.Kernel, pluginOptions: FileUploadPluginOptions);
49
82
  title: any;
50
- icon: string;
51
83
  uploadUrl: string;
52
84
  uploadHeaders: {
53
85
  [x: string]: string;
@@ -56,72 +88,35 @@ declare class FileUpload extends EditorInjector {
56
88
  uploadSingleSizeLimit: number;
57
89
  allowMultiple: boolean;
58
90
  acceptedFormats: string;
59
- _acceptedCheck: string[];
60
91
  as: string;
92
+ insertBehavior: SunEditor.ComponentInsertType;
61
93
  input: HTMLElement;
62
- _element: HTMLElement;
63
94
  figure: Figure;
64
95
  fileManager: FileManager;
65
96
  controller: Controller;
66
97
  editInput: HTMLInputElement;
67
- /**
68
- * @editorMethod Editor.core
69
- * @description Executes the main execution method of the plugin.
70
- * - It is executed by clicking a toolbar "command" button or calling an API.
71
- */
72
- action(): void;
73
- /**
74
- * @editorMethod Editor.Component
75
- * @description Executes the method that is called when a component of a plugin is selected.
76
- * @param {HTMLElement} target Target component element
77
- */
78
- select(target: HTMLElement): boolean;
79
- /**
80
- * @editorMethod Editor.EventManager
81
- * @description Executes the event function of "paste" or "drop".
82
- * @param {Object} params { frameContext, event, file }
83
- * @param {__se__FrameContext} params.frameContext Frame context
84
- * @param {ClipboardEvent} params.event Event object
85
- * @param {File} params.file File object
86
- * @returns {boolean} - If return false, the file upload will be canceled
87
- */
88
- onFilePasteAndDrop({ file }: { frameContext: __se__FrameContext; event: ClipboardEvent; file: File }): boolean;
89
- /**
90
- * @editorMethod Modules.Controller
91
- * @description Executes the method that is called when a target component is edited.
92
- * @param {HTMLElement|Text} target Target element
93
- */
94
- edit(target: HTMLElement | Text): void;
95
- /**
96
- * @editorMethod Modules.Controller
97
- * @description Executes the method that is called when a button is clicked in the "controller".
98
- * @param {HTMLButtonElement} target Target button element
99
- */
98
+ onFilePasteAndDrop(params: SunEditor.HookParams.FilePasteDrop): void;
100
99
  controllerAction(target: HTMLButtonElement): void;
100
+ componentSelect(target: HTMLElement): void | boolean;
101
+ componentEdit(target: HTMLElement): void;
102
+ componentDestroy(target: HTMLElement): Promise<void>;
101
103
  /**
102
- * @editorMethod Editor.Component
103
- * @description Method to delete a component of a plugin, called by the "FileManager", "Controller" module.
104
- * @param {HTMLElement} target Target element
105
- * @returns {Promise<void>}
106
- */
107
- destroy(target: HTMLElement): Promise<void>;
108
- /**
109
- * @description Create an "file" component using the provided files.
104
+ * @description Create a `file` component using the provided files.
110
105
  * @param {File[]|FileList} fileList File object list
111
106
  * @returns {Promise<boolean>} If return false, the file upload will be canceled
112
107
  */
113
108
  submitFile(fileList: File[] | FileList): Promise<boolean>;
114
109
  /**
115
- * @description Convert format to link or block
110
+ * @description Convert format to `link` or `block`
116
111
  * @param {HTMLElement} target Target element
117
- * @param {string} value 'link' or 'block'
112
+ * @param {string} value `link` or `block`
118
113
  */
119
114
  convertFormat(target: HTMLElement, value: string): void;
120
115
  /**
121
116
  * @description Create file element
122
117
  * @param {string} url File URL
123
118
  * @param {File|{name: string, size: number}} file File object
124
- * @param {boolean} isLast Is last file
119
+ * @param {boolean} isLast Indicates whether this is the last file in the batch (used for scroll and insert actions).
125
120
  */
126
121
  create(
127
122
  url: string,
@@ -131,26 +126,11 @@ declare class FileUpload extends EditorInjector {
131
126
  name: string;
132
127
  size: number;
133
128
  },
134
- isLast: boolean
129
+ isLast: boolean,
135
130
  ): void;
136
- /**
137
- * @private
138
- * @description Processes the server response after file upload.
139
- * - Registers the uploaded files in the editor.
140
- * @param {Object<string, *>} response - The response object from the server.
141
- */
142
- private _register;
143
- /**
144
- * @private
145
- * @description Handles file upload errors.
146
- * - Displays an error message if the upload fails.
147
- * @param {Object<string, *>} response - The error response from the server.
148
- * @returns {Promise<void>}
149
- */
150
- private _error;
151
131
  #private;
152
132
  }
153
- import EditorInjector from '../../editorInjector';
154
- import { Figure } from '../../modules';
155
- import { FileManager } from '../../modules';
156
- import { Controller } from '../../modules';
133
+ import { PluginCommand } from '../../interfaces';
134
+ import { Figure } from '../../modules/contract';
135
+ import { Controller } from '../../modules/contract';
136
+ import { FileManager } from '../../modules/manager';
@@ -1,47 +1,21 @@
1
+ import type {} from '../../typedef';
1
2
  export default List_bulleted;
2
3
  /**
3
4
  * @class
5
+ * @implements {PluginDropdown}
4
6
  * @description List bulleted plugin, Several types of lists are provided.
5
7
  */
6
- declare class List_bulleted extends EditorInjector {
7
- static key: string;
8
- static type: string;
9
- static className: string;
8
+ declare class List_bulleted extends PluginCommand implements PluginDropdown {
10
9
  title: any;
11
- icon: string;
12
- afterItem: HTMLElement;
13
- listItems: NodeListOf<Element>;
14
- /**
15
- * @editorMethod Editor.EventManager
16
- * @description Executes the method that is called whenever the cursor position changes.
17
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
18
- * @param {?HTMLElement=} target - The plugin's toolbar button element
19
- * @returns {boolean} - Whether the plugin is active
20
- * - If it returns "undefined", it will no longer be called in this scope.
21
- */
22
- active(element?: (HTMLElement | null) | undefined, target?: (HTMLElement | null) | undefined): boolean;
23
- /**
24
- * @editorMethod Modules.Dropdown
25
- * @description Executes the method that is called when a plugin's dropdown menu is opened.
26
- */
27
- on(): void;
28
- /**
29
- * @editorMethod Editor.core
30
- * @description Executes the main execution method of the plugin.
31
- * - Called when an item in the "dropdown" menu is clicked.
32
- * @param {HTMLElement} target - The plugin's toolbar button element
33
- */
34
- action(target: HTMLElement): void;
35
- /**
36
- * @editorMethod Editor.core
37
- * @description Executes methods called by shortcut keys.
38
- * @param {__se__PluginShortcutInfo} params - Information of the "shortcut" plugin
39
- */
40
- shortcut({ range, info }: __se__PluginShortcutInfo): void;
10
+ active(element: HTMLElement | null, target: HTMLElement | null): boolean | void;
11
+ on(target?: HTMLElement): void;
12
+ shortcut(params: SunEditor.HookParams.Shortcut): void;
41
13
  /**
42
14
  * @description Add a bulleted list
43
15
  * @param {string} [type=""] List type
44
16
  */
45
17
  submit(type?: string): void;
18
+ #private;
46
19
  }
47
- import EditorInjector from '../../editorInjector';
20
+ import { PluginDropdown } from '../../interfaces';
21
+ import { PluginCommand } from '../../interfaces';
@@ -1,47 +1,21 @@
1
+ import type {} from '../../typedef';
1
2
  export default List_numbered;
2
3
  /**
3
4
  * @class
5
+ * @implements {PluginDropdown}
4
6
  * @description List numbered plugin, Several types of lists are provided.
5
7
  */
6
- declare class List_numbered extends EditorInjector {
7
- static key: string;
8
- static type: string;
9
- static className: string;
8
+ declare class List_numbered extends PluginCommand implements PluginDropdown {
10
9
  title: any;
11
- icon: string;
12
- afterItem: HTMLElement;
13
- listItems: NodeListOf<Element>;
14
- /**
15
- * @editorMethod Editor.EventManager
16
- * @description Executes the method that is called whenever the cursor position changes.
17
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
18
- * @param {?HTMLElement=} target - The plugin's toolbar button element
19
- * @returns {boolean} - Whether the plugin is active
20
- * - If it returns "undefined", it will no longer be called in this scope.
21
- */
22
- active(element?: (HTMLElement | null) | undefined, target?: (HTMLElement | null) | undefined): boolean;
23
- /**
24
- * @editorMethod Modules.Dropdown
25
- * @description Executes the method that is called when a plugin's dropdown menu is opened.
26
- */
27
- on(): void;
28
- /**
29
- * @editorMethod Editor.core
30
- * @description Executes the main execution method of the plugin.
31
- * - Called when an item in the "dropdown" menu is clicked.
32
- * @param {HTMLElement} target - The plugin's toolbar button element
33
- */
34
- action(target: HTMLElement): void;
35
- /**
36
- * @editorMethod Editor.core
37
- * @description Executes methods called by shortcut keys.
38
- * @param {__se__PluginShortcutInfo} params - Information of the "shortcut" plugin
39
- */
40
- shortcut({ range, info }: __se__PluginShortcutInfo): void;
10
+ active(element: HTMLElement | null, target: HTMLElement | null): boolean | void;
11
+ on(target?: HTMLElement): void;
12
+ shortcut(params: SunEditor.HookParams.Shortcut): void;
41
13
  /**
42
14
  * @description Add a numbered list
43
15
  * @param {string} [type=""] List type
44
16
  */
45
17
  submit(type?: string): void;
18
+ #private;
46
19
  }
47
- import EditorInjector from '../../editorInjector';
20
+ import { PluginDropdown } from '../../interfaces';
21
+ import { PluginCommand } from '../../interfaces';
@@ -1,61 +1,38 @@
1
+ import type {} from '../../typedef';
1
2
  export default Align;
3
+ export type AlignPluginOptions = {
4
+ /**
5
+ * - Align items
6
+ */
7
+ items?: Array<'right' | 'center' | 'left' | 'justify'>;
8
+ };
9
+ /**
10
+ * @typedef {Object} AlignPluginOptions
11
+ * @property {Array.<"right"|"center"|"left"|"justify">} [items] - Align items
12
+ */
2
13
  /**
3
14
  * @class
4
15
  * @description Align plugin
5
16
  */
6
- declare class Align extends EditorInjector {
7
- static key: string;
8
- static type: string;
9
- static className: string;
17
+ declare class Align extends PluginDropdown {
10
18
  /**
11
- * @param {__se__EditorCore} editor - The root editor instance
12
- * @param {Object} pluginOptions
13
- * @param {Array.<"right"|"center"|"left"|"justify">} pluginOptions.items - Align items
19
+ * @param {SunEditor.Kernel} editor - The core kernel
20
+ * @param {AlignPluginOptions} pluginOptions - Plugin options
14
21
  */
15
- constructor(
16
- editor: __se__EditorCore,
17
- pluginOptions: {
18
- items: Array<'right' | 'center' | 'left' | 'justify'>;
19
- }
20
- );
22
+ constructor(editor: SunEditor.Kernel, pluginOptions: AlignPluginOptions);
21
23
  title: any;
22
- icon: string;
23
24
  _itemMenu: HTMLUListElement;
24
25
  defaultDir: string;
25
26
  alignIcons: {
26
- justify: string;
27
- left: string;
28
- right: string;
29
- center: string;
27
+ justify: any;
28
+ left: any;
29
+ right: any;
30
+ center: any;
30
31
  };
31
32
  alignList: NodeListOf<Element>;
32
- /**
33
- * @editorMethod Editor.EventManager
34
- * @description Executes the method that is called whenever the cursor position changes.
35
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
36
- * @param {?HTMLElement=} target - The plugin's toolbar button element
37
- * @returns {boolean} - Whether the plugin is active
38
- * - If it returns "undefined", it will no longer be called in this scope.
39
- */
40
- active(element?: (HTMLElement | null) | undefined, target?: (HTMLElement | null) | undefined): boolean;
41
- /**
42
- * @editorMethod Modules.Dropdown
43
- * @description Executes the method that is called when a plugin's dropdown menu is opened.
44
- * @param {HTMLElement} target Line element at the current cursor position
45
- */
46
- on(target: HTMLElement): void;
47
- /**
48
- * @editorMethod Editor.core
49
- * @description Executes the method called when the rtl, ltr mode changes. ("editor.setDir")
50
- * @param {string} dir Direction ("rtl" or "ltr")
51
- */
33
+ active(element: HTMLElement | null, target: HTMLElement | null): boolean | void;
52
34
  setDir(dir: string): void;
53
- /**
54
- * @editorMethod Editor.core
55
- * @description Executes the main execution method of the plugin.
56
- * - Called when an item in the "dropdown" menu is clicked.
57
- * @param {HTMLElement} target - The plugin's toolbar button element
58
- */
59
- action(target: HTMLElement): void;
35
+ init(): void;
36
+ #private;
60
37
  }
61
- import EditorInjector from '../../editorInjector';
38
+ import { PluginDropdown } from '../../interfaces';
@@ -1,64 +1,46 @@
1
+ import type {} from '../../typedef';
1
2
  export default BackgroundColor;
3
+ export type BackgroundColorPluginOptions = {
4
+ /**
5
+ * - Color list
6
+ */
7
+ items?: Array<
8
+ | string
9
+ | {
10
+ value: string;
11
+ name: string;
12
+ }
13
+ >;
14
+ /**
15
+ * - Number of colors per line
16
+ */
17
+ splitNum?: number;
18
+ /**
19
+ * - Disable HEX input
20
+ */
21
+ disableHEXInput?: boolean;
22
+ };
23
+ /**
24
+ * @typedef {Object} BackgroundColorPluginOptions
25
+ * @property {Array<string|{value: string, name: string}>} [items] - Color list
26
+ * @property {number} [splitNum] - Number of colors per line
27
+ * @property {boolean} [disableHEXInput] - Disable HEX input
28
+ */
2
29
  /**
3
30
  * @class
4
31
  * @description Text background color plugin
5
32
  */
6
- declare class BackgroundColor extends EditorInjector {
7
- static key: string;
8
- static type: string;
9
- static className: string;
33
+ declare class BackgroundColor extends PluginDropdownFree {
10
34
  /**
11
35
  * @constructor
12
- * @param {__se__EditorCore} editor - The root editor instance
13
- * @param {Object} pluginOptions
14
- * @param {Array<string|{value: string, name: string}>} pluginOptions.items - Color list
15
- * @param {number} pluginOptions.splitNum - Number of colors per line
16
- * @param {boolean} pluginOptions.disableHEXInput - Disable HEX input
36
+ * @param {SunEditor.Kernel} editor - The core kernel
37
+ * @param {BackgroundColorPluginOptions} pluginOptions - Plugin options
17
38
  */
18
- constructor(
19
- editor: __se__EditorCore,
20
- pluginOptions: {
21
- items: Array<
22
- | string
23
- | {
24
- value: string;
25
- name: string;
26
- }
27
- >;
28
- splitNum: number;
29
- disableHEXInput: boolean;
30
- }
31
- );
39
+ constructor(editor: SunEditor.Kernel, pluginOptions: BackgroundColorPluginOptions);
32
40
  title: any;
33
- icon: string;
34
41
  colorPicker: ColorPicker;
35
- /**
36
- * @editorMethod Editor.EventManager
37
- * @description Executes the method that is called whenever the cursor position changes.
38
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
39
- * @param {?HTMLElement=} target - The plugin's toolbar button element
40
- * @returns {boolean} - Whether the plugin is active
41
- * - If it returns "undefined", it will no longer be called in this scope.
42
- */
43
- active(element?: (HTMLElement | null) | undefined, target?: (HTMLElement | null) | undefined): boolean;
44
- /**
45
- * @editorMethod Modules.Dropdown
46
- * @description Executes the method that is called when a plugin's "dropdown" menu is opened.
47
- * @param {HTMLElement} target Line element at the current cursor position
48
- */
49
- on(target: HTMLElement): void;
50
- /**
51
- * @editorMethod Modules.Dropdown
52
- * @description Executes the method that is called when a plugin's "dropdown" menu is closed.
53
- */
54
- off(): void;
55
- /**
56
- * @editorMethod Modules.ColorPicker
57
- * @description Executes the method called when a button of "ColorPicker" module is clicked.
58
- * - This plugin is by applying the "ColorPicker" module globally to the "dropdown" menu, the default "action" method is not called.
59
- * @param {string} color - Color code (hex)
60
- */
61
- colorPickerAction(color: string): void;
42
+ active(element: HTMLElement | null, target: HTMLElement | null): boolean | void;
43
+ colorPickerAction(color: SunEditor.Module.HueSlider.Color): void;
62
44
  }
63
- import EditorInjector from '../../editorInjector';
64
- import ColorPicker from '../../modules/ColorPicker';
45
+ import { PluginDropdownFree } from '../../interfaces';
46
+ import { ColorPicker } from '../../modules/contract';
@@ -0,0 +1,45 @@
1
+ import type {} from '../../typedef';
2
+ export default BlockStyle;
3
+ export type BlockStyleItem = {
4
+ tag: string;
5
+ command: 'line' | 'br-line' | 'block';
6
+ name?: string;
7
+ class?: string;
8
+ };
9
+ export type BlockStylePluginOptions = {
10
+ /**
11
+ * - Format list
12
+ */
13
+ items?: Array<'p' | 'div' | 'blockquote' | 'pre' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | string | BlockStyleItem>;
14
+ };
15
+ /**
16
+ * @typedef {{tag: string, command: "line"|"br-line"|"block", name?: string, class?: string}} BlockStyleItem
17
+ */
18
+ /**
19
+ * @typedef {Object} BlockStylePluginOptions
20
+ * @property {Array<"p"|"div"|"blockquote"|"pre"|"h1"|"h2"|"h3"|"h4"|"h5"|"h6"|string|BlockStyleItem>} [items] - Format list
21
+ */
22
+ /**
23
+ * @class
24
+ * @description BlockStyle Plugin (`P`, `BLOCKQUOTE`, `PRE`, `H1`, `H2`...)
25
+ */
26
+ declare class BlockStyle extends PluginDropdown {
27
+ /**
28
+ * @constructor
29
+ * @param {SunEditor.Kernel} editor - The core kernel
30
+ * @param {BlockStylePluginOptions} pluginOptions - Plugin options
31
+ */
32
+ constructor(editor: SunEditor.Kernel, pluginOptions: BlockStylePluginOptions);
33
+ title: any;
34
+ inner: string;
35
+ formatList: NodeListOf<Element>;
36
+ currentFormat: string;
37
+ active(element: HTMLElement | null, target: HTMLElement | null): boolean | void;
38
+ /**
39
+ * @description Create a header tag, call by `shortcut` class
40
+ * - (e.g. shortcuts._h1: ['c+s+49+$~blockStyle.applyHeaderByShortcut', ''])
41
+ * @param {SunEditor.HookParams.Shortcut} params - Information of the `shortcut` plugin
42
+ */
43
+ applyHeaderByShortcut({ keyCode }: SunEditor.HookParams.Shortcut): void;
44
+ }
45
+ import { PluginDropdown } from '../../interfaces';
@@ -1,55 +1,32 @@
1
+ import type {} from '../../typedef';
1
2
  export default Font;
3
+ export type FontPluginOptions = {
4
+ /**
5
+ * - Font list
6
+ */
7
+ items?: Array<string>;
8
+ };
9
+ /**
10
+ * @typedef {Object} FontPluginOptions
11
+ * @property {Array<string>} [items] - Font list
12
+ */
2
13
  /**
3
14
  * @class
4
15
  * @description Text font plugin
5
16
  */
6
- declare class Font extends EditorInjector {
7
- static key: string;
8
- static type: string;
9
- static className: string;
17
+ declare class Font extends PluginDropdown {
10
18
  /**
11
19
  * @constructor
12
- * @param {__se__EditorCore} editor - The root editor instance
13
- * @param {Object} pluginOptions
14
- * @param {Array<string>} pluginOptions.items - Font list
15
- * @param {number} pluginOptions.splitNum - Number of colors per line
16
- * @param {boolean} pluginOptions.disableHEXInput - Disable HEX input
20
+ * @param {SunEditor.Kernel} editor - The core kernel
21
+ * @param {FontPluginOptions} pluginOptions - plugin options
17
22
  */
18
- constructor(
19
- editor: __se__EditorCore,
20
- pluginOptions: {
21
- items: Array<string>;
22
- splitNum: number;
23
- disableHEXInput: boolean;
24
- }
25
- );
23
+ constructor(editor: SunEditor.Kernel, pluginOptions: FontPluginOptions);
26
24
  title: any;
27
25
  inner: string;
28
26
  currentFont: string;
29
27
  fontList: NodeListOf<Element>;
30
28
  fontArray: string[];
31
- /**
32
- * @editorMethod Editor.EventManager
33
- * @description Executes the method that is called whenever the cursor position changes.
34
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
35
- * @param {?HTMLElement=} target - The plugin's toolbar button element
36
- * @returns {boolean} - Whether the plugin is active
37
- * - If it returns "undefined", it will no longer be called in this scope.
38
- */
39
- active(element?: (HTMLElement | null) | undefined, target?: (HTMLElement | null) | undefined): boolean;
40
- /**
41
- * @editorMethod Modules.Dropdown
42
- * @description Executes the method that is called when a plugin's dropdown menu is opened.
43
- * @param {HTMLElement} target Line element at the current cursor position
44
- */
45
- on(target: HTMLElement): void;
46
- /**
47
- * @editorMethod Editor.core
48
- * @description Executes the main execution method of the plugin.
49
- * - Called when an item in the "dropdown" menu is clicked.
50
- * @param {HTMLElement} target - The plugin's toolbar button element
51
- * @returns {Promise<void>}
52
- */
53
- action(target: HTMLElement): Promise<void>;
29
+ active(element: HTMLElement | null, target: HTMLElement | null): boolean | void;
30
+ #private;
54
31
  }
55
- import EditorInjector from '../../editorInjector';
32
+ import { PluginDropdown } from '../../interfaces';