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
@@ -0,0 +1,227 @@
1
+ /**
2
+ * @fileoverview Contract interfaces for SunEditor plugins.
3
+ * These interfaces define callback methods that modules and editor core call on plugin instances.
4
+ * Use `@implements` to get type hints for these hooks in your plugin.
5
+ */
6
+
7
+ // =====================================================================================================================================================
8
+ // Modal Module Hooks
9
+ // =====================================================================================================================================================
10
+
11
+ /**
12
+ * Modal plugin hook methods interface.
13
+ * `modalAction` is required, other methods are optional.
14
+ * @interface
15
+ */
16
+ export class ModuleModal {
17
+ /**
18
+ * @abstract
19
+ * This function is called when a form within a modal window is `submit`.
20
+ * @returns {Promise<boolean>}
21
+ * - `true`: modal and loading are closed
22
+ * - `false`: only loading is closed
23
+ * - `undefined`: only modal is closed
24
+ */
25
+ async modalAction() {
26
+ return true;
27
+ }
28
+
29
+ /**
30
+ * @optional
31
+ * Executes the method that is called when a plugin's modal is opened.
32
+ * @param {boolean} isUpdate - Indicates whether the modal is for editing an existing component (`true`) or registering a new one (`false`).
33
+ * @returns {void}
34
+ */
35
+ modalOn(isUpdate) {}
36
+
37
+ /**
38
+ * @optional
39
+ * This function is called before the modal window is opened, but before it is closed.
40
+ * @returns {void}
41
+ */
42
+ modalInit() {}
43
+
44
+ /**
45
+ * @optional
46
+ * Modal off callback.
47
+ * @param {boolean} isUpdate - Indicates whether the modal is for editing an existing component (`true`) or registering a new one (`false`).
48
+ * @returns {void}
49
+ */
50
+ modalOff(isUpdate) {}
51
+
52
+ /**
53
+ * @optional
54
+ * Modal resize callback (optional).
55
+ * @returns {void}
56
+ */
57
+ modalResize() {}
58
+ }
59
+
60
+ // =====================================================================================================================================================
61
+ // Controller Module Hooks
62
+ // =====================================================================================================================================================
63
+
64
+ /**
65
+ * Controller plugin hook methods interface.
66
+ * `controllerAction` is required, other methods are optional.
67
+ * @interface
68
+ */
69
+ export class ModuleController {
70
+ /**
71
+ * @abstract
72
+ * Executes the method that is called when a button is clicked in the `controller`.
73
+ * @param {HTMLButtonElement} target Action button element
74
+ * @returns {void}
75
+ */
76
+ controllerAction(target) {}
77
+
78
+ /**
79
+ * @optional
80
+ * This function is called after the `controller` is opened.
81
+ * @param {HTMLFormElement} form Controller form element
82
+ * @param {Node|Range} target Controller target element
83
+ * @returns {void}
84
+ */
85
+ controllerOn(form, target) {}
86
+
87
+ /**
88
+ * @optional
89
+ * This function is called before the `controller` is closed.
90
+ * @returns {void}
91
+ */
92
+ controllerClose() {}
93
+ }
94
+
95
+ // =====================================================================================================================================================
96
+ // Browser Module Hooks
97
+ // =====================================================================================================================================================
98
+
99
+ /**
100
+ * Browser plugin hook methods interface.
101
+ * All methods are optional - implement only what you need.
102
+ * @interface
103
+ */
104
+ export class ModuleBrowser {
105
+ /**
106
+ * @optional
107
+ * Executes the method that is called when a `Browser` module's is opened.
108
+ * @returns {void}
109
+ */
110
+ browserInit() {}
111
+ }
112
+
113
+ // =====================================================================================================================================================
114
+ // ColorPicker Module Hooks
115
+ // =====================================================================================================================================================
116
+
117
+ /**
118
+ * ColorPicker plugin hook methods interface.
119
+ * All methods are optional - implement only what you need.
120
+ * @interface
121
+ */
122
+ export class ModuleColorPicker {
123
+ /**
124
+ * @optional
125
+ * Executes the method called when a button of `ColorPicker` module is clicked.
126
+ * - This plugin is by applying the `ColorPicker` module globally to the `dropdown` menu, the default `action` method is not called.
127
+ * @param {SunEditor.Module.HueSlider.Color} color - Selected color information
128
+ * @returns {void}
129
+ */
130
+ colorPickerAction(color) {}
131
+
132
+ /**
133
+ * @optional
134
+ * Executes the method called when the `HueSlider` module is opened.
135
+ * @returns {void}
136
+ */
137
+ colorPickerHueSliderOpen() {}
138
+
139
+ /**
140
+ * @optional
141
+ * Executes the method called when the `HueSlider` module is closed.
142
+ * @returns {void}
143
+ */
144
+ colorPickerHueSliderClose() {}
145
+ }
146
+
147
+ // =====================================================================================================================================================
148
+ // HueSlider Module Hooks
149
+ // =====================================================================================================================================================
150
+
151
+ /**
152
+ * HueSlider plugin hook methods interface.
153
+ * All methods are optional - implement only what you need.
154
+ * @interface
155
+ */
156
+ export class ModuleHueSlider {
157
+ /**
158
+ * @abstract
159
+ * This method is called when the color is selected in the hue slider.
160
+ * @returns {void}
161
+ */
162
+ hueSliderAction() {}
163
+
164
+ /**
165
+ * @optional
166
+ * This method is called when the hue slider is closed.
167
+ * @returns {void}
168
+ */
169
+ hueSliderCancelAction() {}
170
+ }
171
+
172
+ // =====================================================================================================================================================
173
+ // Editor Component Hooks
174
+ // =====================================================================================================================================================
175
+
176
+ /**
177
+ * Component plugin hook methods interface.
178
+ * `componentSelect` is required, other methods are optional.
179
+ *
180
+ * **`inst._element` Requirement:**
181
+ * Plugins with `static component` method must define a public `_element` property
182
+ * that references the currently controlled DOM element.
183
+ * - Used to detect clicks on the target element and prevent accidental `controller` closure.
184
+ *
185
+ * @interface
186
+ */
187
+ export class EditorComponent {
188
+ /**
189
+ * @abstract
190
+ * Executes the method that is called when a component of a plugin is selected.
191
+ * @param {HTMLElement} target - Target component element
192
+ * @returns {void|boolean} - If return `true`, Special components that are not wrapping as `figure`
193
+ */
194
+ componentSelect(target) {}
195
+
196
+ /**
197
+ * @optional
198
+ * Called when a container is deselected.
199
+ * @param {HTMLElement} target - Target element
200
+ * @returns {void}
201
+ */
202
+ componentDeselect(target) {}
203
+
204
+ /**
205
+ * @optional
206
+ * Executes the method that is called when a component is being edited.
207
+ * @param {HTMLElement} target - Target element
208
+ * @returns {void}
209
+ */
210
+ componentEdit(target) {}
211
+
212
+ /**
213
+ * @optional
214
+ * Method to delete a component of a plugin, called by the `FileManager`, `Controller` module.
215
+ * @param {HTMLElement} target - Target element
216
+ * @returns {Promise<void>}
217
+ */
218
+ async componentDestroy(target) {}
219
+
220
+ /**
221
+ * @optional
222
+ * Executes the method that is called when a component copy is requested.
223
+ * @param {SunEditor.HookParams.CopyComponent} params - Copy component event information
224
+ * @returns {boolean|void} - If return `false`, the copy will be canceled
225
+ */
226
+ componentCopy(params) {}
227
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @fileoverview Plugin hook interface exports for SunEditor.
3
+ * These types define plugin lifecycle hook methods.
4
+ */
5
+
6
+ export * from './plugins';
7
+ export * from './contracts';
@@ -0,0 +1,239 @@
1
+ /**
2
+ * @fileoverview Plugin interface definitions for SunEditor.
3
+ * These types define required methods for different plugin types.
4
+ */
5
+
6
+ import KernelInjector from '../core/kernel/kernelInjector';
7
+
8
+ /**
9
+ * @abstract
10
+ * Base class for all plugins - contains common properties
11
+ */
12
+ class Base extends KernelInjector {
13
+ /** @type {string} - Plugin type (`browser`|`command`|`dropdown`|`field`|`input`|`modal`|`popup`) */
14
+ static type = '';
15
+
16
+ /** @type {string} - Unique plugin identifier */
17
+ static key = '';
18
+ /** @type {string} - CSS class name for the plugin button */
19
+ static className = '';
20
+
21
+ /**
22
+ * Plugin-specific options
23
+ * @type {{eventIndex?: number, isInputComponent?: boolean}}
24
+ * @property {number} [eventIndex=0] - Plugin event handler execution priority (higher = later)
25
+ * @property {boolean} [isInputComponent=false] - Allow keyboard input inside component (e.g., table cells), prevents auto-selection on arrow keys
26
+ */
27
+ static options = {};
28
+
29
+ /**
30
+ * @constructor
31
+ * @param {SunEditor.Kernel} editor - The core kernel
32
+ */
33
+ constructor(editor) {
34
+ super(editor);
35
+
36
+ // plugin basic properties
37
+ /** @type {string} */
38
+ this.title = '';
39
+ /** @type {string} */
40
+ this.icon = '';
41
+
42
+ /** @type {HTMLElement} */
43
+ this.beforeItem = null;
44
+ /** @type {HTMLElement} */
45
+ this.afterItem = null;
46
+ /** @type {HTMLElement} */
47
+ this.replaceButton = null;
48
+ }
49
+ }
50
+
51
+ // =====================================================================================================================================================
52
+
53
+ /**
54
+ * @abstract
55
+ * @interface
56
+ * Base class for Browser plugins
57
+ * Child classes MUST implement open(), close(), and onSelectFile() methods
58
+ */
59
+ export class PluginBrowser extends Base {
60
+ static type = 'browser';
61
+
62
+ /**
63
+ * @abstract
64
+ * @description Executes the method that is called when a `Browser` module's is opened.
65
+ * @param {?(target: Node) => *} [onSelectfunction] - Method to be executed after selecting an item in the gallery
66
+ * @returns {void}
67
+ */
68
+ open(onSelectfunction) {
69
+ throw new Error(`[${this.constructor.name}] Abstract method 'open()' must be implemented`);
70
+ }
71
+
72
+ /**
73
+ * @abstract
74
+ * @description Executes the method that is called when a `Browser` module's is closed.
75
+ * @returns {void}
76
+ */
77
+ close() {
78
+ throw new Error(`[${this.constructor.name}] Abstract method 'close()' must be implemented`);
79
+ }
80
+ }
81
+
82
+ /**
83
+ * @abstract
84
+ * @interface
85
+ * Base class for Command plugins
86
+ * Child classes MUST implement the action() method
87
+ */
88
+ export class PluginCommand extends Base {
89
+ static type = 'command';
90
+
91
+ /**
92
+ * @abstract
93
+ * @description Executes the main execution method of the plugin.
94
+ * - It is executed by clicking a toolbar `command` button or calling an API.
95
+ * - MUST be overridden by child classes
96
+ * @param {HTMLElement} [target] - The plugin's toolbar button element
97
+ * @returns {void | Promise<void>}
98
+ */
99
+ action(target) {
100
+ throw new Error(`[${this.constructor.name}] Abstract method 'action()' must be implemented`);
101
+ }
102
+ }
103
+
104
+ /**
105
+ * @abstract
106
+ * @interface
107
+ * Base class for Dropdown plugins
108
+ * Child classes MUST implement the action() method
109
+ * Child classes MAY optionally implement on() and off() methods
110
+ */
111
+ export class PluginDropdown extends Base {
112
+ static type = 'dropdown';
113
+
114
+ /**
115
+ * @optional
116
+ * @description Executes the method that is called when a plugin's dropdown menu is opened.
117
+ * @param {HTMLElement} [target] - The dropdown target element
118
+ * @returns {void}
119
+ */
120
+ on(target) {}
121
+
122
+ /**
123
+ * @abstract
124
+ * @description Executes the main execution method of the plugin.
125
+ * - Called when an item in the `dropdown` menu is clicked.
126
+ * - MUST be overridden by child classes
127
+ * @param {HTMLElement} target - The clicked dropdown item element
128
+ * @returns {void | Promise<void>}
129
+ */
130
+ action(target) {
131
+ throw new Error(`[${this.constructor.name}] Abstract method 'action()' must be implemented`);
132
+ }
133
+ }
134
+
135
+ /**
136
+ * @abstract
137
+ * @interface
138
+ * Base class for Dropdown-Free plugins
139
+ * These plugins handle their own event logic without automatic action() calls
140
+ * Typically used for complex UI components like ColorPicker or Table
141
+ * Child classes MAY optionally implement on() and off() methods
142
+ */
143
+ export class PluginDropdownFree extends Base {
144
+ static type = 'dropdown-free';
145
+
146
+ /**
147
+ * @optional
148
+ * @description Executes the method that is called when a plugin's dropdown menu is opened.
149
+ * @param {HTMLElement} [target] - The dropdown target element
150
+ * @returns {void}
151
+ */
152
+ on(target) {
153
+ void target;
154
+ }
155
+
156
+ /**
157
+ * @optional
158
+ * @description Executes the method that is called when a plugin's dropdown menu is closed.
159
+ * @returns {void}
160
+ */
161
+ off() {}
162
+ }
163
+
164
+ /**
165
+ * @abstract
166
+ * @interface
167
+ * Base class for Field plugins
168
+ * These plugins typically respond to input events in the wysiwyg area
169
+ *
170
+ * **Commonly used hooks:**
171
+ * - `onInput()` - Responds to input events in the editor (See: `mention` plugin)
172
+ * - Other event hooks can be used as needed (`onKeydown`, `onClick`, etc.)
173
+ *
174
+ * Child classes MAY optionally implement event hook methods
175
+ * @see {Mention} - Example implementation using onInput hook
176
+ */
177
+ export class PluginField extends Base {
178
+ static type = 'field';
179
+
180
+ /**
181
+ * @optional
182
+ * @description Executes when user inputs text in the editor.
183
+ * - Commonly used in field plugins to detect trigger characters or patterns
184
+ * @type {SunEditor.Hook.Event.OnInput}
185
+ * @type {SunEditor.Hook.Event.OnInputAsync}
186
+ */
187
+ // onInput() {}
188
+ }
189
+
190
+ export class PluginInput extends Base {
191
+ static type = 'input';
192
+
193
+ /**
194
+ * @optional
195
+ * @description Executes the event function of toolbar's input tag - `keydown`.
196
+ * @param {SunEditor.HookParams.ToolbarInputKeyDown} params - Input event information
197
+ * @returns {void}
198
+ */
199
+ toolbarInputKeyDown(params) {
200
+ void params;
201
+ }
202
+
203
+ /**
204
+ * @optional
205
+ * @description Executes the event function of toolbar's input tag - `change`.
206
+ * @param {SunEditor.HookParams.ToolbarInputChange} params - Input event information
207
+ * @returns {void}
208
+ */
209
+ toolbarInputChange(params) {
210
+ void params;
211
+ }
212
+ }
213
+
214
+ export class PluginModal extends Base {
215
+ static type = 'modal';
216
+
217
+ /**
218
+ * @abstract
219
+ * Opens the modal window (Plugin's public API called by toolbar/external code)
220
+ * @param {HTMLElement} [target] - The plugin's toolbar button element
221
+ * @returns {void}
222
+ */
223
+ open(target) {
224
+ throw new Error(`[${this.constructor.name}] Abstract method 'open()' must be implemented`);
225
+ }
226
+ }
227
+
228
+ export class PluginPopup extends Base {
229
+ static type = 'popup';
230
+
231
+ /**
232
+ * @abstract
233
+ * Called when a popup is shown
234
+ * @returns {void}
235
+ */
236
+ show() {
237
+ throw new Error(`[${this.constructor.name}] Abstract method 'show()' must be implemented`);
238
+ }
239
+ }
package/src/langs/ckb.js CHANGED
@@ -9,7 +9,7 @@
9
9
  throw new Error('SUNEDITOR_LANG a window with a document');
10
10
  }
11
11
  return factory(w);
12
- };
12
+ };
13
13
  } else {
14
14
  factory(global);
15
15
  }
@@ -206,7 +206,7 @@
206
206
  video_modal_url: 'YouTube/Vimeo به‌سته‌ری له‌ناودانان وه‌ك ',
207
207
  width: 'پانی',
208
208
  message_copy_success: 'لە پەڕگەی لەبەرگرتووەدا هاوپەڕ کرا',
209
- message_copy_fail: 'هاوپەڕکردن سەرکەوتوو نەبوو. تکایە بەدەست هاوپەڕ بکە.'
209
+ message_copy_fail: 'هاوپەڕکردن سەرکەوتوو نەبوو. تکایە بەدەست هاوپەڕ بکە.',
210
210
  };
211
211
 
212
212
  if (typeof noGlobal === typeof undefined) {
@@ -215,7 +215,7 @@
215
215
  enumerable: true,
216
216
  writable: false,
217
217
  configurable: false,
218
- value: {}
218
+ value: {},
219
219
  });
220
220
  }
221
221
 
@@ -223,7 +223,7 @@
223
223
  enumerable: true,
224
224
  writable: true,
225
225
  configurable: true,
226
- value: lang
226
+ value: lang,
227
227
  });
228
228
  }
229
229
 
package/src/langs/cs.js CHANGED
@@ -9,7 +9,7 @@
9
9
  throw new Error('SUNEDITOR_LANG a window with a document');
10
10
  }
11
11
  return factory(w);
12
- };
12
+ };
13
13
  } else {
14
14
  factory(global);
15
15
  }
@@ -206,7 +206,7 @@
206
206
  video_modal_url: 'URL pro vložení médií, YouTube/Vimeo',
207
207
  width: 'Šířka',
208
208
  message_copy_success: 'Zkopírováno do schránky',
209
- message_copy_fail: 'Kopírování selhalo. Zkopírujte prosím ručně.'
209
+ message_copy_fail: 'Kopírování selhalo. Zkopírujte prosím ručně.',
210
210
  };
211
211
 
212
212
  if (typeof noGlobal === typeof undefined) {
@@ -215,7 +215,7 @@
215
215
  enumerable: true,
216
216
  writable: false,
217
217
  configurable: false,
218
- value: {}
218
+ value: {},
219
219
  });
220
220
  }
221
221
 
@@ -223,7 +223,7 @@
223
223
  enumerable: true,
224
224
  writable: true,
225
225
  configurable: true,
226
- value: lang
226
+ value: lang,
227
227
  });
228
228
  }
229
229
 
package/src/langs/da.js CHANGED
@@ -9,7 +9,7 @@
9
9
  throw new Error('SUNEDITOR_LANG a window with a document');
10
10
  }
11
11
  return factory(w);
12
- };
12
+ };
13
13
  } else {
14
14
  factory(global);
15
15
  }
@@ -206,7 +206,7 @@
206
206
  video_modal_url: 'Indlejr video / YouTube,Vimeo',
207
207
  width: 'Bredde',
208
208
  message_copy_success: 'Kopieret til udklipsholderen',
209
- message_copy_fail: 'Kopiering mislykkedes. Kopiér venligst manuelt.'
209
+ message_copy_fail: 'Kopiering mislykkedes. Kopiér venligst manuelt.',
210
210
  };
211
211
 
212
212
  if (typeof noGlobal === typeof undefined) {
@@ -215,7 +215,7 @@
215
215
  enumerable: true,
216
216
  writable: false,
217
217
  configurable: false,
218
- value: {}
218
+ value: {},
219
219
  });
220
220
  }
221
221
 
@@ -223,7 +223,7 @@
223
223
  enumerable: true,
224
224
  writable: true,
225
225
  configurable: true,
226
- value: lang
226
+ value: lang,
227
227
  });
228
228
  }
229
229
 
package/src/langs/de.js CHANGED
@@ -9,7 +9,7 @@
9
9
  throw new Error('SUNEDITOR_LANG a window with a document');
10
10
  }
11
11
  return factory(w);
12
- };
12
+ };
13
13
  } else {
14
14
  factory(global);
15
15
  }
@@ -206,7 +206,7 @@
206
206
  video_modal_url: 'Video-URL, YouTube/Vimeo',
207
207
  width: 'Breite',
208
208
  message_copy_success: 'In die Zwischenablage kopiert',
209
- message_copy_fail: 'Kopieren fehlgeschlagen. Bitte manuell kopieren.'
209
+ message_copy_fail: 'Kopieren fehlgeschlagen. Bitte manuell kopieren.',
210
210
  };
211
211
 
212
212
  if (typeof noGlobal === typeof undefined) {
@@ -215,7 +215,7 @@
215
215
  enumerable: true,
216
216
  writable: false,
217
217
  configurable: false,
218
- value: {}
218
+ value: {},
219
219
  });
220
220
  }
221
221
 
@@ -223,7 +223,7 @@
223
223
  enumerable: true,
224
224
  writable: true,
225
225
  configurable: true,
226
- value: lang
226
+ value: lang,
227
227
  });
228
228
  }
229
229
 
package/src/langs/en.js CHANGED
@@ -8,7 +8,7 @@
8
8
  throw new Error('SUNEDITOR_LANG a window with a document');
9
9
  }
10
10
  return factory(w);
11
- };
11
+ };
12
12
  } else {
13
13
  factory(global);
14
14
  }
@@ -205,7 +205,7 @@
205
205
  video_modal_url: 'Media embed URL, YouTube/Vimeo',
206
206
  width: 'Width',
207
207
  message_copy_success: 'Copied to clipboard',
208
- message_copy_fail: 'Copy failed. Please copy manually.'
208
+ message_copy_fail: 'Copy failed. Please copy manually.',
209
209
  };
210
210
 
211
211
  if (typeof noGlobal === typeof undefined) {
@@ -214,7 +214,7 @@
214
214
  enumerable: true,
215
215
  writable: false,
216
216
  configurable: false,
217
- value: {}
217
+ value: {},
218
218
  });
219
219
  }
220
220
 
@@ -222,7 +222,7 @@
222
222
  enumerable: true,
223
223
  writable: true,
224
224
  configurable: true,
225
- value: lang
225
+ value: lang,
226
226
  });
227
227
  }
228
228
 
package/src/langs/es.js CHANGED
@@ -9,7 +9,7 @@
9
9
  throw new Error('SUNEDITOR_LANG a window with a document');
10
10
  }
11
11
  return factory(w);
12
- };
12
+ };
13
13
  } else {
14
14
  factory(global);
15
15
  }
@@ -206,7 +206,7 @@
206
206
  video_modal_url: 'URL del vídeo',
207
207
  width: 'Ancho',
208
208
  message_copy_success: 'Copiado al portapapeles',
209
- message_copy_fail: 'Error al copiar. Por favor, copie manualmente.'
209
+ message_copy_fail: 'Error al copiar. Por favor, copie manualmente.',
210
210
  };
211
211
 
212
212
  if (typeof noGlobal === typeof undefined) {
@@ -215,7 +215,7 @@
215
215
  enumerable: true,
216
216
  writable: false,
217
217
  configurable: false,
218
- value: {}
218
+ value: {},
219
219
  });
220
220
  }
221
221
 
@@ -223,7 +223,7 @@
223
223
  enumerable: true,
224
224
  writable: true,
225
225
  configurable: true,
226
- value: lang
226
+ value: lang,
227
227
  });
228
228
  }
229
229