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,15 +1,16 @@
1
+ import type {} from '../../typedef';
1
2
  export default Drawing;
2
3
  export type DrawingPluginOptions = {
3
4
  /**
4
- * - The output format of the drawing. Options: "dataurl", "svg".
5
+ * - The output format of the drawing. Options: `"dataurl"`, `"svg"`.
5
6
  */
6
7
  outputFormat?: string;
7
8
  /**
8
- * - Whether to enable format type selection (block vs inline).
9
+ * - Whether to enable format type selection (`block` vs `inline`).
9
10
  */
10
11
  useFormatType?: boolean;
11
12
  /**
12
- * - The default format type, either "block" or "inline".
13
+ * - The default format type, either `"block"` or `"inline"`.
13
14
  */
14
15
  defaultFormatType?: string;
15
16
  /**
@@ -25,7 +26,7 @@ export type DrawingPluginOptions = {
25
26
  */
26
27
  lineReconnect?: boolean;
27
28
  /**
28
- * - The style of the line cap ("butt", "round", or "square").
29
+ * - The style of the line cap (`"butt"`, `"round"`, or `"square"`).
29
30
  */
30
31
  lineCap?: CanvasLineCap;
31
32
  /**
@@ -54,13 +55,13 @@ export type DrawingPluginOptions = {
54
55
  };
55
56
  /**
56
57
  * @typedef {Object} DrawingPluginOptions
57
- * @property {string} [outputFormat="dataurl"] - The output format of the drawing. Options: "dataurl", "svg".
58
- * @property {boolean} [useFormatType=false] - Whether to enable format type selection (block vs inline).
59
- * @property {string} [defaultFormatType="block"] - The default format type, either "block" or "inline".
58
+ * @property {string} [outputFormat="dataurl"] - The output format of the drawing. Options: `"dataurl"`, `"svg"`.
59
+ * @property {boolean} [useFormatType=false] - Whether to enable format type selection (`block` vs `inline`).
60
+ * @property {string} [defaultFormatType="block"] - The default format type, either `"block"` or `"inline"`.
60
61
  * @property {boolean} [keepFormatType=false] - Whether to maintain the chosen format type after drawing.
61
62
  * @property {number} [lineWidth=5] - The width of the drawing line.
62
63
  * @property {boolean} [lineReconnect=false] - Whether to reconnect lines when drawing.
63
- * @property {CanvasLineCap} [lineCap="round"] - The style of the line cap ("butt", "round", or "square").
64
+ * @property {CanvasLineCap} [lineCap="round"] - The style of the line cap (`"butt"`, `"round"`, or `"square"`).
64
65
  * @property {string} [lineColor=""] - The color of the drawing line.
65
66
  * @property {boolean} [canResize=true] - Whether the modal form can be resized.
66
67
  * @property {boolean} [maintainRatio=true] - Whether to maintain the aspect ratio when resizing.
@@ -76,18 +77,14 @@ export type DrawingPluginOptions = {
76
77
  * @class
77
78
  * @description Drawing modal plugin.
78
79
  */
79
- declare class Drawing extends EditorInjector {
80
- static key: string;
81
- static type: string;
82
- static className: string;
80
+ declare class Drawing extends PluginModal {
83
81
  /**
84
82
  * @constructor
85
- * @param {__se__EditorCore} editor - The root editor instance
83
+ * @param {SunEditor.Kernel} editor - The core kernel
86
84
  * @param {DrawingPluginOptions} pluginOptions
87
85
  */
88
- constructor(editor: __se__EditorCore, pluginOptions: DrawingPluginOptions);
86
+ constructor(editor: SunEditor.Kernel, pluginOptions: DrawingPluginOptions);
89
87
  title: any;
90
- icon: string;
91
88
  pluginOptions: {
92
89
  outputFormat: string;
93
90
  useFormatType: boolean;
@@ -139,108 +136,9 @@ declare class Drawing extends EditorInjector {
139
136
  points: any[];
140
137
  paths: any[];
141
138
  resizeObserver: ResizeObserver;
142
- __events: {
143
- mousedown: any;
144
- mousemove: any;
145
- mouseup: any;
146
- mouseleave: any;
147
- mouseenter: any;
148
- };
149
- __eventsRegister: {
150
- mousedown: any;
151
- mousemove: any;
152
- mouseup: any;
153
- mouseleave: any;
154
- mouseenter: any;
155
- };
156
- __eventNameMap: {
157
- mousedown: string;
158
- mousemove: string;
159
- mouseup: string;
160
- mouseleave: string;
161
- mouseenter: string;
162
- };
163
- /**
164
- * @editorMethod Modules.Modal
165
- * @description Executes the method that is called when a "Modal" module's is opened.
166
- */
167
- open(): void;
168
- /**
169
- * @editorMethod Modules.Modal
170
- * @description Executes the method that is called when a plugin's "modal" is closed.
171
- */
172
- off(): void;
173
- /**
174
- * @editorMethod Modules.Modal
175
- * @description This function is called when a form within a modal window is "submit".
176
- * @returns {boolean} Success or failure
177
- */
178
- modalAction(): boolean;
179
- /**
180
- * @private
181
- * @description Initializes the drawing canvas, sets up event listeners, and configures resize handling.
182
- */
183
- private _initDrawing;
184
- /**
185
- * @private
186
- * @description Destroys the drawing canvas, removes event listeners, and clears stored drawing data.
187
- */
188
- private _destroyDrawing;
189
- /**
190
- * @private
191
- * @description Configures the drawing context (canvas settings like line width, color, etc.).
192
- */
193
- private _setCtx;
194
- /**
195
- * @private
196
- * @description Draws the current stroke based on collected points.
197
- */
198
- private _draw;
199
- /**
200
- * @private
201
- * @description Redraws all stored paths onto the canvas.
202
- */
203
- private _drawAll;
204
- /**
205
- * @private
206
- * @description Adjusts all stored paths to fit new canvas dimensions after a resize event.
207
- * @param {number} prevWidth - The previous width of the canvas.
208
- * @param {number} prevHeight - The previous height of the canvas.
209
- * @param {number} newWidth - The new width of the canvas.
210
- * @param {number} newHeight - The new height of the canvas.
211
- */
212
- private _adjustPathsToNewDimensions;
213
- /**
214
- * @private
215
- * @description Clears the canvas and resets stored drawing paths.
216
- */
217
- private _clearCanvas;
218
- /**
219
- * @private
220
- * @description Generates an SVG representation of the drawn content.
221
- * @returns {*} The generated SVG element.
222
- */
223
- private _getSVG;
224
- /**
225
- * @private
226
- * @description Converts the SVG element into a downloadable file.
227
- * @returns {FileList} A FileList containing the generated SVG file.
228
- */
229
- private _getSVGFileList;
230
- /**
231
- * @private
232
- * @description Retrieves touch coordinates relative to the canvas.
233
- * @param {TouchEvent} e - The touch event.
234
- * @returns {{x: number, y: number}} An object containing the x and y coordinates.
235
- */
236
- private _getCanvasTouchPointer;
237
- /**
238
- * @private
239
- * @description Activates either block or inline format mode for inserted drawings.
240
- * @param {boolean} isInline - Whether the drawing should be inserted as an inline element.
241
- */
242
- private _activeAsInline;
139
+ modalOff(isUpdate: boolean): void;
140
+ modalAction(): Promise<boolean>;
243
141
  #private;
244
142
  }
245
- import EditorInjector from '../../editorInjector';
246
- import { Modal } from '../../modules';
143
+ import { PluginModal } from '../../interfaces';
144
+ import { Modal } from '../../modules/contract';
@@ -1,6 +1,5 @@
1
+ import type {} from '../../typedef';
1
2
  export default Embed;
2
- export type ProcessInfo_embed = import('../../events').ProcessInfo;
3
- export type FigureControls_embed = import('../../modules/Figure').FigureControls;
4
3
  export type EmbedPluginOptions = {
5
4
  /**
6
5
  * - Whether the embed element can be resized.
@@ -41,7 +40,7 @@ export type EmbedPluginOptions = {
41
40
  */
42
41
  uploadSingleSizeLimit?: number;
43
42
  /**
44
- * - Additional attributes to set on the iframe tag.
43
+ * - Additional attributes to set on the `IFRAME` tag.
45
44
  */
46
45
  iframeTagAttributes?: {
47
46
  [x: string]: string;
@@ -89,14 +88,16 @@ export type EmbedPluginOptions = {
89
88
  /**
90
89
  * - Figure controls.
91
90
  */
92
- controls?: FigureControls_embed;
91
+ controls?: SunEditor.Module.Figure.Controls;
92
+ /**
93
+ * - Component insertion behavior for selection and cursor placement. [default: `options.get('componentInsertBehavior')`]
94
+ * - `auto`: Move cursor to the next line if possible, otherwise select the component.
95
+ * - `select`: Always select the inserted component.
96
+ * - `line`: Move cursor to the next line if possible, or create a new line and move there.
97
+ * - `none`: Do nothing.
98
+ */
99
+ insertBehavior?: SunEditor.ComponentInsertType;
93
100
  };
94
- /**
95
- * @typedef {import('../../events').ProcessInfo} ProcessInfo_embed
96
- */
97
- /**
98
- * @typedef {import('../../modules/Figure').FigureControls} FigureControls_embed
99
- */
100
101
  /**
101
102
  * @typedef {Object} EmbedPluginOptions
102
103
  * @property {boolean} [canResize=true] - Whether the embed element can be resized.
@@ -108,7 +109,7 @@ export type EmbedPluginOptions = {
108
109
  * @property {Object<string, string>} [uploadHeaders] - Headers to include in file upload requests.
109
110
  * @property {number} [uploadSizeLimit] - The total file upload size limit in bytes.
110
111
  * @property {number} [uploadSingleSizeLimit] - The single file upload size limit in bytes.
111
- * @property {Object<string, string>} [iframeTagAttributes] - Additional attributes to set on the iframe tag.
112
+ * @property {Object<string, string>} [iframeTagAttributes] - Additional attributes to set on the `IFRAME` tag.
112
113
  * @property {string} [query_youtube] - YouTube query parameter.
113
114
  * @property {string} [query_vimeo] - Vimeo query parameter.
114
115
  * @property {Array<RegExp>} [urlPatterns] - Additional URL patterns for embed.
@@ -131,31 +132,39 @@ export type EmbedPluginOptions = {
131
132
  * },
132
133
  * // Additional services...
133
134
  * }
134
- * @property {FigureControls_embed} [controls] - Figure controls.
135
+ * @property {SunEditor.Module.Figure.Controls} [controls] - Figure controls.
136
+ * @property {SunEditor.ComponentInsertType} [insertBehavior] - Component insertion behavior for selection and cursor placement. [default: `options.get('componentInsertBehavior')`]
137
+ * - `auto`: Move cursor to the next line if possible, otherwise select the component.
138
+ * - `select`: Always select the inserted component.
139
+ * - `line`: Move cursor to the next line if possible, or create a new line and move there.
140
+ * - `none`: Do nothing.
135
141
  */
136
142
  /**
137
143
  * @class
138
144
  * @description Embed modal plugin.
139
- * - This plugin provides a modal interface for embedding external content (e.g., videos, iframes) into the editor.
145
+ * - This plugin provides a modal interface for embedding external content (e.g., videos, `IFRAME` elements) into the editor.
140
146
  */
141
- declare class Embed extends EditorInjector {
142
- static key: string;
143
- static type: string;
144
- static className: string;
147
+ declare class Embed extends PluginModal {
145
148
  /**
146
- * @this {Embed}
147
149
  * @param {HTMLElement} node - The node to check.
148
150
  * @returns {HTMLElement|null} Returns a node if the node is a valid component.
149
151
  */
150
- static component(this: Embed, node: HTMLElement): HTMLElement | null;
152
+ static component(node: HTMLElement): HTMLElement | null;
153
+ /**
154
+ * @description Checks if the given URL matches any of the defined URL patterns.
155
+ * @param {string} url - The URL to check.
156
+ * @returns {boolean} `true` if the URL matches a known pattern; otherwise, `false`.
157
+ */
158
+ static #checkContentType(url: string): boolean;
159
+ /** @type {Array<RegExp>} */
160
+ static #urlPatterns: Array<RegExp>;
151
161
  /**
152
162
  * @constructor
153
- * @param {__se__EditorCore} editor - The root editor instance
163
+ * @param {SunEditor.Kernel} editor - The core kernel
154
164
  * @param {EmbedPluginOptions} pluginOptions
155
165
  */
156
- constructor(editor: __se__EditorCore, pluginOptions: EmbedPluginOptions);
166
+ constructor(editor: SunEditor.Kernel, pluginOptions: EmbedPluginOptions);
157
167
  title: any;
158
- icon: string;
159
168
  pluginOptions: {
160
169
  canResize: boolean;
161
170
  showHeightInput: boolean;
@@ -173,6 +182,7 @@ declare class Embed extends EditorInjector {
173
182
  };
174
183
  query_youtube: string;
175
184
  query_vimeo: string;
185
+ insertBehavior: SunEditor.ComponentInsertType;
176
186
  };
177
187
  modal: Modal;
178
188
  figure: Figure;
@@ -180,26 +190,10 @@ declare class Embed extends EditorInjector {
180
190
  embedInput: HTMLInputElement;
181
191
  focusElement: HTMLInputElement;
182
192
  previewSrc: HTMLElement;
183
- _linkValue: string;
184
- _align: string;
185
- _defaultSizeX: string;
186
- _defaultSizeY: string;
187
193
  sizeUnit: string;
188
194
  proportion: HTMLInputElement;
189
195
  inputX: HTMLInputElement;
190
196
  inputY: HTMLInputElement;
191
- _element: any;
192
- _cover: HTMLElement;
193
- _container: any;
194
- _ratio: {
195
- w: number;
196
- h: number;
197
- };
198
- _origin_w: string;
199
- _origin_h: string;
200
- _resizing: boolean;
201
- _onlyPercentage: boolean;
202
- _nonResizing: boolean;
203
197
  query: {
204
198
  facebook: {
205
199
  pattern: RegExp;
@@ -237,82 +231,21 @@ declare class Embed extends EditorInjector {
237
231
  tag: string;
238
232
  };
239
233
  };
240
- urlPatterns: RegExp[];
241
- /**
242
- * @editorMethod Modules.Modal
243
- * @description Executes the method that is called when a "Modal" module's is opened.
244
- */
245
- open(): void;
246
- /**
247
- * @editorMethod Modules.Controller(Figure)
248
- * @description Executes the method that is called when a target component is edited.
249
- */
250
- edit(): void;
251
- /**
252
- * @editorMethod Modules.Modal
253
- * @description Executes the method that is called when a plugin's modal is opened.
254
- * @param {boolean} isUpdate "Indicates whether the modal is for editing an existing component (true) or registering a new one (false)."
255
- */
256
- on(isUpdate: boolean): void;
257
- /**
258
- * @editorMethod Modules.Modal
259
- * @description This function is called when a form within a modal window is "submit".
260
- * @returns {Promise<boolean>} Success / failure
261
- */
262
- modalAction(): Promise<boolean>;
263
- /**
264
- * @editorMethod Editor.core
265
- * @description This method is used to validate and preserve the format of the component within the editor.
266
- * - It ensures that the structure and attributes of the element are maintained and secure.
267
- * - The method checks if the element is already wrapped in a valid container and updates its attributes if necessary.
268
- * - If the element isn't properly contained, a new container is created to retain the format.
269
- * @returns {{query: string, method: (element: HTMLIFrameElement) => void}} The format retention object containing the query and method to process the element.
270
- * - query: The selector query to identify the relevant elements (in this case, 'audio').
271
- * - method:The function to execute on the element to validate and preserve its format.
272
- * - The function takes the element as an argument, checks if it is contained correctly, and applies necessary adjustments.
273
- */
274
234
  retainFormat(): {
275
235
  query: string;
276
- method: (element: HTMLIFrameElement) => void;
236
+ method: (element: HTMLElement) => void;
277
237
  };
278
- /**
279
- * @editorMethod Modules.Modal
280
- * @description This function is called before the modal window is opened, but before it is closed.
281
- */
282
- init(): void;
283
- /**
284
- * @editorMethod Editor.Component
285
- * @description Executes the method that is called when a component of a plugin is selected.
286
- * @param {HTMLElement} target Target component element
287
- */
288
- select(target: HTMLElement): void;
289
- /**
290
- * @private
291
- * @description Prepares the component for selection.
292
- * - Ensures that the controller is properly positioned and initialized.
293
- * - Prevents duplicate event handling if the component is already selected.
294
- * @param {HTMLElement} target - The selected element.
295
- */
296
- private _ready;
297
- _caption: HTMLElement;
298
- /**
299
- * @editorMethod Editor.Component
300
- * @description Method to delete a component of a plugin, called by the "FileManager", "Controller" module.
301
- * @param {HTMLElement} target Target element
302
- * @returns {Promise<void>}
303
- */
304
- destroy(target: HTMLElement): Promise<void>;
305
- /**
306
- * @description Checks if the given URL matches any of the defined URL patterns.
307
- * @param {string} url - The URL to check.
308
- * @returns {boolean} True if the URL matches a known pattern; otherwise, false.
309
- */
310
- checkContentType(url: string): boolean;
238
+ modalOn(isUpdate: boolean): void;
239
+ modalAction(): Promise<boolean>;
240
+ modalInit(): void;
241
+ componentSelect(target: HTMLElement): void | boolean;
242
+ componentEdit(target: HTMLElement): void;
243
+ componentDestroy(target: HTMLElement): Promise<void>;
311
244
  /**
312
245
  * @description Finds and processes the URL for embedding by matching it against known service patterns.
313
246
  * @param {string} url - The original URL.
314
- * @returns {{origin: string, url: string, tag: string}|null} An object containing the original URL, the processed URL, and the tag type (e.g., 'iframe'),
315
- * or null if no matching pattern is found.
247
+ * @returns {{origin: string, url: string, tag: string}|null} An object containing the original URL, the processed URL, and the tag type (e.g., `iframe`),
248
+ * or `null` if no matching pattern is found.
316
249
  */
317
250
  findProcessUrl(url: string): {
318
251
  origin: string;
@@ -323,65 +256,12 @@ declare class Embed extends EditorInjector {
323
256
  * @description Processes the provided source (URL or embed code) and submits it for embedding.
324
257
  * - It parses the input, triggers any necessary events, and creates or updates the embed component.
325
258
  * @param {string} [src] - The embed source. If not provided, uses the internally stored link value.
326
- * @returns {Promise<boolean>} A promise that resolves to true on success or false on failure.
259
+ * @returns {Promise<boolean>} A promise that resolves to `true` on success or `false` on failure.
327
260
  */
328
261
  submitSRC(src?: string): Promise<boolean>;
329
- /**
330
- * @private
331
- * @description Creates an iframe element for embedding external content.
332
- * @returns {HTMLIFrameElement} The created iframe element.
333
- */
334
- private _createIframeTag;
335
- /**
336
- * @private
337
- * @description Creates an blockquote element for embedding external content.
338
- * @returns {HTMLElement} The created iframe element.
339
- */
340
- private _createEmbedTag;
341
- /**
342
- * @private
343
- * @description Creates an embed component (iframe or blockquote) and inserts it into the editor.
344
- * @param {?ProcessInfo_embed} process - Processed embed information.
345
- * @param {?string} src - The source URL.
346
- * @param {?Node[]} children - The embed elements.
347
- * @param {string} width - The width of the embed component.
348
- * @param {string} height - The height of the embed component.
349
- * @param {string} align - The alignment of the embed component.
350
- * @param {boolean} isUpdate - Whether this is an update to an existing embed component.
351
- */
352
- private _create;
353
- /**
354
- * @private
355
- * @description Updates an existing embed component within the editor.
356
- * @param {HTMLIFrameElement} oFrame - The existing embed element to be updated.
357
- */
358
- private _update;
359
- /**
360
- * @private
361
- * @description Applies width and height to the embed component.
362
- * @param {string|number} w - The width to apply.
363
- * @param {string|number} h - The height to apply.
364
- */
365
- private _applySize;
366
- /**
367
- * @private
368
- * @description Retrieves embed component size and alignment information.
369
- * @returns {{inputWidth: string, inputHeight: string, align: string, isUpdate: boolean, element: Element}} An object containing
370
- * - inputWidth : The width of the embed component.
371
- * - inputHeight : The height of the embed component.
372
- * - align : The alignment of the embed component.
373
- * - isUpdate : Whether the component is being updated.
374
- * - element : The target element.
375
- */
376
- private _getInfo;
377
- /**
378
- * @private
379
- * @description Sets default attributes for an iframe element.
380
- * @param {HTMLIFrameElement} element - The iframe element to modify.
381
- */
382
- private _setIframeAttrs;
262
+ _caption: HTMLElement;
383
263
  #private;
384
264
  }
385
- import EditorInjector from '../../editorInjector';
386
- import { Modal } from '../../modules';
387
- import { Figure } from '../../modules';
265
+ import { PluginModal } from '../../interfaces';
266
+ import { Modal } from '../../modules/contract';
267
+ import { Figure } from '../../modules/contract';