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,45 +1,63 @@
1
+ import type {} from '../../typedef';
1
2
  export default FontSize;
3
+ export type FontSizePluginOptions = {
4
+ /**
5
+ * - The unit for the font size.
6
+ * - Accepted values include: `'px'`, `'pt'`, `'em'`, `'rem'`, `'vw'`, `'vh'`, `'%'` or `'text'`.
7
+ * - If `'text'` is used, a text-based font size list is applied.
8
+ */
9
+ sizeUnit?: string;
10
+ /**
11
+ * - Determines whether the default size label is displayed in the dropdown menu.
12
+ */
13
+ showDefaultSizeLabel?: boolean;
14
+ /**
15
+ * - When `true`, displays increase and decrease buttons for font size adjustments.
16
+ */
17
+ showIncDecControls?: boolean;
18
+ /**
19
+ * - When `true`, disables the direct font size input box.
20
+ */
21
+ disableInput?: boolean;
22
+ /**
23
+ * - Optional object to override or extend the default unit mapping for font sizes.
24
+ */
25
+ unitMap?: {
26
+ [x: string]: {
27
+ default: number;
28
+ inc: number;
29
+ min: number;
30
+ max: number;
31
+ list: Array<number>;
32
+ };
33
+ };
34
+ };
35
+ /**
36
+ * @typedef {Object} FontSizePluginOptions
37
+ * @property {string} [sizeUnit='px'] - The unit for the font size.
38
+ * - Accepted values include: `'px'`, `'pt'`, `'em'`, `'rem'`, `'vw'`, `'vh'`, `'%'` or `'text'`.
39
+ * - If `'text'` is used, a text-based font size list is applied.
40
+ * @property {boolean} [showDefaultSizeLabel=true] - Determines whether the default size label is displayed in the dropdown menu.
41
+ * @property {boolean} [showIncDecControls=false] - When `true`, displays increase and decrease buttons for font size adjustments.
42
+ * @property {boolean} [disableInput=true] - When `true`, disables the direct font size input box.
43
+ * @property {Object<string, {default: number, inc: number, min: number, max: number, list: Array<number>}>} [unitMap={}] - Optional object to override or extend the default unit mapping for font sizes.
44
+ */
2
45
  /**
3
46
  * @class
47
+ * @implements {PluginCommand}
48
+ * @implements {PluginDropdown}
4
49
  * @description FontSize Plugin
5
50
  * - This plugin enables users to modify the font size of selected text within the editor.
6
51
  * - It supports various measurement units (e.g., 'px', 'pt', 'em', 'rem', 'vw', 'vh', '%') and
7
52
  * - provides multiple interfaces: dropdown menus, direct input, and optional increment/decrement buttons.
8
53
  */
9
- declare class FontSize extends EditorInjector {
10
- static key: string;
11
- static type: string;
12
- static className: string;
54
+ declare class FontSize extends PluginInput implements PluginCommand, PluginDropdown {
13
55
  /**
14
56
  * @constructor
15
- * @param {__se__EditorCore} editor - The root editor instance
16
- * @param {Object} pluginOptions - Configuration options for the FontSize plugin.
17
- * @param {string=} [pluginOptions.sizeUnit='px'] - The unit for the font size.
18
- * - Accepted values include: 'px', 'pt', 'em', 'rem', 'vw', 'vh', '%' or 'text'.
19
- * - If 'text' is used, a text-based font size list is applied.
20
- * @param {boolean=} [pluginOptions.showDefaultSizeLabel=true] - Determines whether the default size label is displayed in the dropdown menu.
21
- * @param {boolean=} [pluginOptions.showIncDecControls=false] - When true, displays increase and decrease buttons for font size adjustments.
22
- * @param {boolean=} [pluginOptions.disableInput=true] - When true, disables the direct font size input box.
23
- * @param {Object<string, {default: number, inc: number, min: number, max: number, list: Array<number>}>} [pluginOptions.unitMap={}] - Optional object to override or extend the default unit mapping for font sizes.
57
+ * @param {SunEditor.Kernel} editor - The core kernel
58
+ * @param {FontSizePluginOptions} pluginOptions - Configuration options for the FontSize plugin.
24
59
  */
25
- constructor(
26
- editor: __se__EditorCore,
27
- pluginOptions: {
28
- sizeUnit?: string | undefined;
29
- showDefaultSizeLabel?: boolean | undefined;
30
- showIncDecControls?: boolean | undefined;
31
- disableInput?: boolean | undefined;
32
- unitMap?: {
33
- [x: string]: {
34
- default: number;
35
- inc: number;
36
- min: number;
37
- max: number;
38
- list: Array<number>;
39
- };
40
- };
41
- }
42
- );
60
+ constructor(editor: SunEditor.Kernel, pluginOptions: FontSizePluginOptions);
43
61
  unitMap: {
44
62
  text: {
45
63
  default: string;
@@ -97,75 +115,18 @@ declare class FontSize extends EditorInjector {
97
115
  list: number[];
98
116
  };
99
117
  };
100
- sizeUnit: any;
118
+ sizeUnit: string;
101
119
  title: any;
102
120
  inner: string | boolean;
103
- beforeItem: HTMLElement;
104
- afterItem: HTMLElement;
105
- replaceButton: HTMLElement;
106
121
  currentSize: string;
107
122
  sizeList: NodeListOf<Element>;
108
123
  hasInputFocus: boolean;
109
124
  isInputActive: boolean;
110
- _disableInput: boolean;
111
- /**
112
- * @editorMethod Editor.EventManager
113
- * @description Executes the method that is called whenever the cursor position changes.
114
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
115
- * @param {?HTMLElement=} target - The plugin's toolbar button element
116
- * @returns {boolean} - Whether the plugin is active
117
- * - If it returns "undefined", it will no longer be called in this scope.
118
- */
119
- active(element?: (HTMLElement | null) | undefined, target?: (HTMLElement | null) | undefined): boolean;
120
- /**
121
- * @editorMethod Editor.Toolbar
122
- * @description Executes the event function of toolbar's input tag - "keydown".
123
- * @param {Object} params
124
- * @param {HTMLElement} params.target Input element
125
- * @param {KeyboardEvent} params.event Event object
126
- */
127
- onInputKeyDown({ target, event }: { target: HTMLElement; event: KeyboardEvent }): void;
128
- /**
129
- * @editorMethod Editor.Toolbar
130
- * @description Executes the event function of toolbar's input tag - "change".
131
- * @param {__se__PluginToolbarInputChangeEventInfo} params
132
- */
133
- onInputChange({ target, value: changeValue, event }: __se__PluginToolbarInputChangeEventInfo): void;
134
- /**
135
- * @editorMethod Modules.Dropdown
136
- * @description Executes the method that is called when a plugin's dropdown menu is opened.
137
- * @param {HTMLElement} target Line element at the current cursor position
138
- */
139
- on(target: HTMLElement): void;
140
- /**
141
- * @editorMethod Editor.core
142
- * @description Executes the main execution method of the plugin.
143
- * - Called when an item in the "dropdown" menu is clicked.
144
- * @param {HTMLElement} target - The plugin's toolbar button element
145
- */
146
- action(target: HTMLElement): void;
147
- /**
148
- * @private
149
- * @description Retrieves the default font size of the editor.
150
- * @returns {string} - The computed font size from the editor.
151
- */
152
- private _getDefaultSize;
153
- /**
154
- * @private
155
- * @description Extracts the font size and unit from the given element or input value.
156
- * @param {string|Element} target - The target input or element.
157
- * @returns {{ unit: string, value: number|string }} - An object containing:
158
- * - `unit` (string): The detected font size unit.
159
- * - `value` (number|string): The numeric font size value or text-based size.
160
- */
161
- private _getSize;
162
- /**
163
- * @private
164
- * @description Sets the font size in the toolbar input field or button label.
165
- * @param {HTMLElement} target - The target element in the toolbar.
166
- * @param {string|number} value - The font size value.
167
- * @returns {string|number} - The applied font size.
168
- */
169
- private _setSize;
125
+ active(element: HTMLElement | null, target: HTMLElement | null): boolean | void;
126
+ on(target?: HTMLElement): void;
127
+ action(target?: HTMLElement): void | Promise<void>;
128
+ #private;
170
129
  }
171
- import EditorInjector from '../../editorInjector';
130
+ import { PluginCommand } from '../../interfaces';
131
+ import { PluginDropdown } from '../../interfaces';
132
+ import { PluginInput } from '../../interfaces';
@@ -1,3 +1,4 @@
1
+ import type {} from '../../typedef';
1
2
  export default PageNavigator;
2
3
  /**
3
4
  * @class
@@ -7,22 +8,18 @@ export default PageNavigator;
7
8
  * - the total number of pages. When the user changes the value in the input field, the plugin triggers
8
9
  * - a page navigation event through the editor's document context.
9
10
  */
10
- declare class PageNavigator extends EditorInjector {
11
- static key: string;
12
- static type: string;
13
- static className: string;
11
+ declare class PageNavigator extends PluginInput {
14
12
  title: any;
15
13
  inner: HTMLInputElement;
16
- afterItem: HTMLElement;
17
14
  pageNum: number;
18
15
  totalPages: number;
19
16
  /**
20
- * @editorMethod Editor.documentType
21
- * @description Updates the displayed page number and total pages in the navigator.
17
+ * Updates the displayed page number and total pages in the navigator.
22
18
  * @param {number} pageNum - The current page number to display.
23
19
  * @param {number} totalPages - The total number of pages in the document.
20
+ * @returns {void}
24
21
  */
25
22
  display(pageNum: number, totalPages: number): void;
26
23
  #private;
27
24
  }
28
- import EditorInjector from '../../editorInjector';
25
+ import { PluginInput } from '../../interfaces';
@@ -1,12 +1,12 @@
1
+ import type {} from '../../typedef';
1
2
  export default Audio_;
2
- export type AudioInfo_audio = import('../../events').AudioInfo;
3
3
  export type AudioPluginOptions = {
4
4
  /**
5
- * - The default width of the audio tag (e.g., "300px").
5
+ * - The default width of the `AUDIO` tag (e.g., `"300px"`).
6
6
  */
7
7
  defaultWidth?: string;
8
8
  /**
9
- * - The default height of the audio tag (e.g., "150px").
9
+ * - The default height of the `AUDIO` tag (e.g., `"150px"`).
10
10
  */
11
11
  defaultHeight?: string;
12
12
  /**
@@ -14,7 +14,7 @@ export type AudioPluginOptions = {
14
14
  */
15
15
  createFileInput?: boolean;
16
16
  /**
17
- * - Whether to create a URL input element (default is true if file input is not created).
17
+ * - Whether to create a URL input element (default is `true` if file input is not created).
18
18
  */
19
19
  createUrlInput?: boolean;
20
20
  /**
@@ -40,55 +40,60 @@ export type AudioPluginOptions = {
40
40
  */
41
41
  allowMultiple?: boolean;
42
42
  /**
43
- * - Accepted file formats (default is "audio/*").
43
+ * - Accepted file formats (default is `"audio/*"`).
44
44
  */
45
45
  acceptedFormats?: string;
46
46
  /**
47
- * - Additional attributes to set on the audio tag.
47
+ * - Additional attributes to set on the `AUDIO` tag.
48
48
  */
49
49
  audioTagAttributes?: {
50
50
  [x: string]: string;
51
51
  };
52
+ /**
53
+ * - Component insertion behavior for selection and cursor placement. [default: `options.get('componentInsertBehavior')`]
54
+ * - `auto`: Move cursor to the next line if possible, otherwise select the component.
55
+ * - `select`: Always select the inserted component.
56
+ * - `line`: Move cursor to the next line if possible, or create a new line and move there.
57
+ * - `none`: Do nothing.
58
+ */
59
+ insertBehavior?: SunEditor.ComponentInsertType;
52
60
  };
53
- /**
54
- * @typedef {import('../../events').AudioInfo} AudioInfo_audio
55
- */
56
61
  /**
57
62
  * @typedef {Object} AudioPluginOptions
58
- * @property {string} [defaultWidth="300px"] - The default width of the audio tag (e.g., "300px").
59
- * @property {string} [defaultHeight="150px"] - The default height of the audio tag (e.g., "150px").
63
+ * @property {string} [defaultWidth="300px"] - The default width of the `AUDIO` tag (e.g., `"300px"`).
64
+ * @property {string} [defaultHeight="150px"] - The default height of the `AUDIO` tag (e.g., `"150px"`).
60
65
  * @property {boolean} [createFileInput] - Whether to create a file input element.
61
- * @property {boolean} [createUrlInput] - Whether to create a URL input element (default is true if file input is not created).
66
+ * @property {boolean} [createUrlInput] - Whether to create a URL input element (default is `true` if file input is not created).
62
67
  * @property {string} [uploadUrl] - The URL to which files will be uploaded.
63
68
  * @property {Object<string, string>} [uploadHeaders] - Headers to include in the file upload request.
64
69
  * @property {number} [uploadSizeLimit] - The total upload size limit in bytes.
65
70
  * @property {number} [uploadSingleSizeLimit] - The single file size limit in bytes.
66
71
  * @property {boolean} [allowMultiple] - Whether to allow multiple file uploads.
67
- * @property {string} [acceptedFormats="audio/*"] - Accepted file formats (default is "audio/*").
68
- * @property {Object<string, string>} [audioTagAttributes] - Additional attributes to set on the audio tag.
72
+ * @property {string} [acceptedFormats="audio/*"] - Accepted file formats (default is `"audio/*"`).
73
+ * @property {Object<string, string>} [audioTagAttributes] - Additional attributes to set on the `AUDIO` tag.
74
+ * @property {SunEditor.ComponentInsertType} [insertBehavior] - Component insertion behavior for selection and cursor placement. [default: `options.get('componentInsertBehavior')`]
75
+ * - `auto`: Move cursor to the next line if possible, otherwise select the component.
76
+ * - `select`: Always select the inserted component.
77
+ * - `line`: Move cursor to the next line if possible, or create a new line and move there.
78
+ * - `none`: Do nothing.
69
79
  */
70
80
  /**
71
81
  * @class
72
82
  * @description Audio modal plugin.
73
83
  */
74
- declare class Audio_ extends EditorInjector {
75
- static key: string;
76
- static type: string;
77
- static className: string;
84
+ declare class Audio_ extends PluginModal {
78
85
  /**
79
- * @this {Audio_}
80
86
  * @param {HTMLElement} node - The node to check.
81
87
  * @returns {HTMLElement|null} Returns a node if the node is a valid component.
82
88
  */
83
- static component(this: Audio_, node: HTMLElement): HTMLElement | null;
89
+ static component(node: HTMLElement): HTMLElement | null;
84
90
  /**
85
91
  * @constructor
86
- * @param {__se__EditorCore} editor - The root editor instance
92
+ * @param {SunEditor.Kernel} editor - The core kernel
87
93
  * @param {AudioPluginOptions} pluginOptions
88
94
  */
89
- constructor(editor: __se__EditorCore, pluginOptions: AudioPluginOptions);
95
+ constructor(editor: SunEditor.Kernel, pluginOptions: AudioPluginOptions);
90
96
  title: any;
91
- icon: string;
92
97
  pluginOptions: {
93
98
  defaultWidth: string;
94
99
  defaultHeight: string;
@@ -105,6 +110,7 @@ declare class Audio_ extends EditorInjector {
105
110
  audioTagAttributes: {
106
111
  [x: string]: string;
107
112
  };
113
+ insertBehavior: SunEditor.ComponentInsertType;
108
114
  };
109
115
  modal: Modal;
110
116
  controller: Controller;
@@ -118,152 +124,53 @@ declare class Audio_ extends EditorInjector {
118
124
  audioUrlFile: HTMLInputElement;
119
125
  /** @type {HTMLElement} */
120
126
  preview: HTMLElement;
121
- /** @type {HTMLAudioElement} */
122
- _element: HTMLAudioElement;
123
- defaultWidth: string;
124
- defaultHeight: string;
125
- urlValue: string;
126
- /**
127
- * @editorMethod Modules.Modal
128
- * @description Executes the method that is called when a "Modal" module's is opened.
129
- */
130
- open(): void;
131
- /**
132
- * @editorMethod Modules.Modal
133
- * @description Executes the method that is called when a plugin's modal is opened.
134
- * @param {boolean} isUpdate "Indicates whether the modal is for editing an existing component (true) or registering a new one (false)."
135
- */
136
- on(isUpdate: boolean): void;
137
- /**
138
- * @editorMethod Editor.EventManager
139
- * @description Executes the event function of "paste" or "drop".
140
- * @param {Object} params { frameContext, event, file }
141
- * @param {__se__FrameContext} params.frameContext Frame context
142
- * @param {ClipboardEvent} params.event Event object
143
- * @param {File} params.file File object
144
- * @returns {boolean} - If return false, the file upload will be canceled
145
- */
146
- onFilePasteAndDrop({ file }: { frameContext: __se__FrameContext; event: ClipboardEvent; file: File }): boolean;
147
- /**
148
- * @editorMethod Modules.Modal
149
- * @description This function is called when a form within a modal window is "submit".
150
- * @returns {Promise<boolean>} Success or failure
151
- */
152
- modalAction(): Promise<boolean>;
153
- /**
154
- * @editorMethod Modules.Modal
155
- * @description This function is called before the modal window is opened, but before it is closed.
156
- */
157
- init(): void;
158
- /**
159
- * @editorMethod Modules.Controller
160
- * @description Executes the method that is called when a button is clicked in the "controller".
161
- * @param {HTMLButtonElement} target Target button element
162
- */
163
- controllerAction(target: HTMLButtonElement): void;
164
- /**
165
- * @editorMethod Editor.core
166
- * @description This method is used to validate and preserve the format of the component within the editor.
167
- * - It ensures that the structure and attributes of the element are maintained and secure.
168
- * - The method checks if the element is already wrapped in a valid container and updates its attributes if necessary.
169
- * - If the element isn't properly contained, a new container is created to retain the format.
170
- * @returns {{query: string, method: (element: HTMLAudioElement) => void}} The format retention object containing the query and method to process the element.
171
- * - query: The selector query to identify the relevant elements (in this case, 'audio').
172
- * - method:The function to execute on the element to validate and preserve its format.
173
- * - The function takes the element as an argument, checks if it is contained correctly, and applies necessary adjustments.
174
- */
175
127
  retainFormat(): {
176
128
  query: string;
177
- method: (element: HTMLAudioElement) => void;
129
+ method: (element: HTMLElement) => void;
178
130
  };
131
+ onFilePasteAndDrop(params: SunEditor.HookParams.FilePasteDrop): void;
132
+ modalOn(isUpdate: boolean): void;
133
+ modalAction(): Promise<boolean>;
134
+ modalInit(): void;
135
+ controllerAction(target: HTMLButtonElement): void;
136
+ componentSelect(target: HTMLElement): void | boolean;
137
+ componentDestroy(target: HTMLElement): Promise<void>;
179
138
  /**
180
- * @editorMethod Editor.Component
181
- * @description Executes the method that is called when a component of a plugin is selected.
182
- * @param {HTMLElement} target Target component element
183
- */
184
- select(target: HTMLElement): void;
185
- /**
186
- * @private
187
- * @description Prepares the component for selection.
188
- * - Ensures that the controller is properly positioned and initialized.
189
- * - Prevents duplicate event handling if the component is already selected.
190
- * @param {HTMLElement} target - The selected element.
191
- */
192
- private _ready;
193
- /**
194
- * @editorMethod Editor.Component
195
- * @description Method to delete a component of a plugin, called by the "FileManager", "Controller" module.
196
- * @param {HTMLElement=} target Target element, if null current selected element
197
- * @returns {Promise<void>}
198
- */
199
- destroy(target?: HTMLElement | undefined): Promise<void>;
200
- /**
201
- * @private
202
- * @description Registers uploaded audio files and creates the corresponding audio elements.
203
- * - Iterates through the uploaded files and inserts them into the editor.
204
- * @param {AudioInfo_audio} info - Upload metadata, including `isUpdate` flag and `element`.
205
- * @param {Object<string, *>} response - Server response containing uploaded file details.
206
- */
207
- private _register;
208
- /**
209
- * @description Create an "audio" component using the provided files.
139
+ * @description Create an `audio` component using the provided files.
210
140
  * @param {FileList|File[]} fileList File object list
211
- * @returns {Promise<boolean>} If return false, the file upload will be canceled
141
+ * @returns {Promise<boolean>} If return `false`, the file upload will be canceled
212
142
  */
213
143
  submitFile(fileList: FileList | File[]): Promise<boolean>;
214
144
  /**
215
- * @description Create an "audio" component using the provided url.
145
+ * @description Create an `audio` component using the provided url.
216
146
  * @param {string} url File url
217
147
  * @returns {Promise<boolean>}
218
148
  */
219
149
  submitURL(url: string): Promise<boolean>;
220
150
  /**
221
- * @private
222
- * @description Creates or updates an audio component within the editor.
151
+ * @description Creates or updates an `audio` component within the editor.
223
152
  * - If `isUpdate` is `true`, updates the existing element's `src`.
224
- * - Otherwise, inserts a new audio component with the given file.
225
- * @param {HTMLAudioElement} element - The target audio element.
153
+ * - Otherwise, inserts a new `audio` component with the given file.
154
+ * @param {HTMLAudioElement} element - The target `AUDIO` element.
226
155
  * @param {string} src - The source URL of the audio file.
227
156
  * @param {{name: string, size: number}} file - The file metadata (name, size).
228
157
  * @param {boolean} isUpdate - Whether to update an existing element.
229
- */
230
- private _createComp;
231
- /**
232
- * @private
233
- * @description Creates a new `<audio>` element with default attributes.
234
- * - Applies width, height, and additional attributes from plugin options.
235
- * @returns {HTMLAudioElement} - The newly created `<audio>` element.
236
- */
237
- private _createAudioTag;
238
- /**
239
- * @private
240
- * @description Sets attributes on an audio element based on plugin options.
241
- * - Adds the `controls` attribute and applies any custom attributes.
242
- * @param {HTMLElement} element - The `<audio>` element to modify.
243
- */
244
- private _setTagAttrs;
245
- /**
246
- * @private
247
- * @description Uploads audio files to the server.
248
- * - Sends a request to the configured upload URL and processes the response.
249
- * @param {AudioInfo_audio} info - Upload metadata, including `files` and `isUpdate`.
250
- * @param {FileList|File[]} files - The files to be uploaded.
251
- */
252
- private _serverUpload;
253
- /**
254
- * @private
255
- * @description Handles errors that occur during the audio upload process.
256
- * - Triggers the `onAudioUploadError` event to allow custom handling of errors.
257
- * - Displays an error message in the editor's UI.
258
- * - Logs the error to the console for debugging.
259
- * @param {Object<string, *>} response - The error response object from the server or upload process.
260
- * @returns {Promise<void>}
261
- */
262
- private _error;
158
+ * @param {boolean} isLast - Indicates whether this is the last file in the batch (used for scroll and insert actions).
159
+ */
160
+ create(
161
+ element: HTMLAudioElement,
162
+ src: string,
163
+ file: {
164
+ name: string;
165
+ size: number;
166
+ },
167
+ isUpdate: boolean,
168
+ isLast: boolean,
169
+ ): void;
263
170
  #private;
264
171
  }
265
- import EditorInjector from '../../editorInjector';
266
- import { Modal } from '../../modules';
267
- import { Controller } from '../../modules';
268
- import { FileManager } from '../../modules';
269
- import { Figure } from '../../modules';
172
+ import { PluginModal } from '../../interfaces';
173
+ import { Modal } from '../../modules/contract';
174
+ import { Controller } from '../../modules/contract';
175
+ import { Figure } from '../../modules/contract';
176
+ import { FileManager } from '../../modules/manager';