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,335 @@
1
+ import type {} from '../../../typedef';
2
+ export default Offset;
3
+ /**
4
+ * Bounding rectangle information of the selection range.
5
+ */
6
+ export type RectsInfo = {
7
+ /**
8
+ * - The left position of the selection.
9
+ */
10
+ left: number;
11
+ /**
12
+ * - The right position of the selection.
13
+ */
14
+ right: number;
15
+ /**
16
+ * - The top position of the selection.
17
+ */
18
+ top: number;
19
+ /**
20
+ * - The bottom position of the selection.
21
+ */
22
+ bottom: number;
23
+ /**
24
+ * - Whether the selection contains text.
25
+ */
26
+ noText?: boolean;
27
+ /**
28
+ * - The width of the selection.
29
+ */
30
+ width?: number;
31
+ /**
32
+ * - The height of the selection.
33
+ */
34
+ height?: number;
35
+ };
36
+ export type OffsetInfo = {
37
+ /**
38
+ * - The top position of the node relative to the entire document, including iframe offsets.
39
+ */
40
+ top: number;
41
+ /**
42
+ * - The left position of the node relative to the entire document, including iframe offsets.
43
+ */
44
+ left: number;
45
+ };
46
+ export type OffsetLocalInfo = {
47
+ /**
48
+ * - The top position of the node relative to the WYSIWYG editor.
49
+ */
50
+ top: number;
51
+ /**
52
+ * - The left position of the node relative to the WYSIWYG editor.
53
+ */
54
+ left: number;
55
+ /**
56
+ * - The right position of the node relative to the WYSIWYG editor.
57
+ */
58
+ right: number;
59
+ /**
60
+ * - The horizontal scroll offset inside the WYSIWYG editor.
61
+ */
62
+ scrollX: number;
63
+ /**
64
+ * - The vertical scroll offset inside the WYSIWYG editor.
65
+ */
66
+ scrollY: number;
67
+ /**
68
+ * - The vertical scroll height inside the WYSIWYG editor.
69
+ */
70
+ scrollH: number;
71
+ };
72
+ export type OffsetGlobalInfo = {
73
+ /**
74
+ * - The top position of the element relative to the entire document.
75
+ */
76
+ top: number;
77
+ /**
78
+ * - The left position of the element relative to the entire document.
79
+ */
80
+ left: number;
81
+ /**
82
+ * - The top position within the current viewport, without taking scrolling into account.
83
+ */
84
+ fixedTop: number;
85
+ /**
86
+ * - The left position within the current viewport, without taking scrolling into account.
87
+ */
88
+ fixedLeft: number;
89
+ /**
90
+ * - The total width of the element, including its content, padding, and border.
91
+ */
92
+ width: number;
93
+ /**
94
+ * - The total height of the element, including its content, padding, and border.
95
+ */
96
+ height: number;
97
+ };
98
+ export type OffsetGlobalScrollInfo = {
99
+ /**
100
+ * - Total top scroll distance
101
+ */
102
+ top: number;
103
+ /**
104
+ * - Total left scroll distance
105
+ */
106
+ left: number;
107
+ /**
108
+ * - Total width including scrollable area
109
+ */
110
+ width: number;
111
+ /**
112
+ * - Total height including scrollable area
113
+ */
114
+ height: number;
115
+ /**
116
+ * - Horizontal offset from the top reference element
117
+ */
118
+ x: number;
119
+ /**
120
+ * - Vertical offset from the top reference element
121
+ */
122
+ y: number;
123
+ /**
124
+ * - Element or window used as the vertical scroll reference
125
+ */
126
+ ohOffsetEl: HTMLElement | Window | null;
127
+ /**
128
+ * - Element or window used as the horizontal scroll reference
129
+ */
130
+ owOffsetEl: HTMLElement | Window | null;
131
+ /**
132
+ * - Height of the vertical scrollable area (clientHeight)
133
+ */
134
+ oh: number;
135
+ /**
136
+ * - Width of the horizontal scrollable area (clientWidth)
137
+ */
138
+ ow: number;
139
+ /**
140
+ * - Indicates if the vertical scroll reference is the editor area
141
+ */
142
+ heightEditorRefer: boolean;
143
+ /**
144
+ * - Indicates if the horizontal scroll reference is the editor area
145
+ */
146
+ widthEditorRefer: boolean;
147
+ /**
148
+ * - Top position of the height offset element relative to the viewport
149
+ */
150
+ ts: number;
151
+ /**
152
+ * - Left position of the width offset element relative to the viewport
153
+ */
154
+ ls: number;
155
+ };
156
+ export type OffsetWWScrollInfo = {
157
+ /**
158
+ * - The top scroll offset inside the WYSIWYG editor.
159
+ */
160
+ top: number;
161
+ /**
162
+ * - The left scroll offset inside the WYSIWYG editor.
163
+ */
164
+ left: number;
165
+ /**
166
+ * - The total width of the WYSIWYG editor's scrollable area.
167
+ */
168
+ width: number;
169
+ /**
170
+ * - The total height of the WYSIWYG editor's scrollable area.
171
+ */
172
+ height: number;
173
+ /**
174
+ * - The sum of `top` and `height`, representing the bottom-most scrollable position.
175
+ */
176
+ bottom: number;
177
+ };
178
+ /**
179
+ * @typedef {Object} RectsInfo Bounding rectangle information of the selection range.
180
+ * @property {number} rects.left - The left position of the selection.
181
+ * @property {number} rects.right - The right position of the selection.
182
+ * @property {number} rects.top - The top position of the selection.
183
+ * @property {number} rects.bottom - The bottom position of the selection.
184
+ * @property {boolean} [rects.noText] - Whether the selection contains text.
185
+ * @property {number} [rects.width] - The width of the selection.
186
+ * @property {number} [rects.height] - The height of the selection.
187
+ */
188
+ /**
189
+ * @typedef {Object} OffsetInfo
190
+ * @property {number} top - The top position of the node relative to the entire document, including iframe offsets.
191
+ * @property {number} left - The left position of the node relative to the entire document, including iframe offsets.
192
+ */
193
+ /**
194
+ * @typedef {Object} OffsetLocalInfo
195
+ * @property {number} top - The top position of the node relative to the WYSIWYG editor.
196
+ * @property {number} left - The left position of the node relative to the WYSIWYG editor.
197
+ * @property {number} right - The right position of the node relative to the WYSIWYG editor.
198
+ * @property {number} scrollX - The horizontal scroll offset inside the WYSIWYG editor.
199
+ * @property {number} scrollY - The vertical scroll offset inside the WYSIWYG editor.
200
+ * @property {number} scrollH - The vertical scroll height inside the WYSIWYG editor.
201
+ */
202
+ /**
203
+ * @typedef {Object} OffsetGlobalInfo
204
+ * @property {number} top - The top position of the element relative to the entire document.
205
+ * @property {number} left - The left position of the element relative to the entire document.
206
+ * @property {number} fixedTop - The top position within the current viewport, without taking scrolling into account.
207
+ * @property {number} fixedLeft - The left position within the current viewport, without taking scrolling into account.
208
+ * @property {number} width - The total width of the element, including its content, padding, and border.
209
+ * @property {number} height - The total height of the element, including its content, padding, and border.
210
+ */
211
+ /**
212
+ * @typedef {Object} OffsetGlobalScrollInfo
213
+ * @property {number} top - Total top scroll distance
214
+ * @property {number} left - Total left scroll distance
215
+ * @property {number} width - Total width including scrollable area
216
+ * @property {number} height - Total height including scrollable area
217
+ * @property {number} x - Horizontal offset from the top reference element
218
+ * @property {number} y - Vertical offset from the top reference element
219
+ * @property {HTMLElement|Window|null} ohOffsetEl - Element or window used as the vertical scroll reference
220
+ * @property {HTMLElement|Window|null} owOffsetEl - Element or window used as the horizontal scroll reference
221
+ * @property {number} oh - Height of the vertical scrollable area (clientHeight)
222
+ * @property {number} ow - Width of the horizontal scrollable area (clientWidth)
223
+ * @property {boolean} heightEditorRefer - Indicates if the vertical scroll reference is the editor area
224
+ * @property {boolean} widthEditorRefer - Indicates if the horizontal scroll reference is the editor area
225
+ * @property {number} ts - Top position of the height offset element relative to the viewport
226
+ * @property {number} ls - Left position of the width offset element relative to the viewport
227
+ */
228
+ /**
229
+ * @typedef {Object} OffsetWWScrollInfo
230
+ * @property {number} top - The top scroll offset inside the WYSIWYG editor.
231
+ * @property {number} left - The left scroll offset inside the WYSIWYG editor.
232
+ * @property {number} width - The total width of the WYSIWYG editor's scrollable area.
233
+ * @property {number} height - The total height of the WYSIWYG editor's scrollable area.
234
+ * @property {number} bottom - The sum of `top` and `height`, representing the bottom-most scrollable position.
235
+ */
236
+ /**
237
+ * @description Offset class, get the position of the element
238
+ */
239
+ declare class Offset {
240
+ /**
241
+ * @constructor
242
+ * @param {SunEditor.Kernel} kernel
243
+ */
244
+ constructor(kernel: SunEditor.Kernel);
245
+ /**
246
+ * @description Gets the position just outside the argument's internal editor (wysiwygFrame).
247
+ * @param {Node} node Target node.
248
+ * @returns {OffsetInfo} Position relative to the editor frame.
249
+ */
250
+ get(node: Node): OffsetInfo;
251
+ /**
252
+ * @description Gets the position inside the internal editor of the argument.
253
+ * @param {Node} node Target node.
254
+ * @returns {OffsetLocalInfo} Position relative to the WYSIWYG editor.
255
+ */
256
+ getLocal(node: Node): OffsetLocalInfo;
257
+ /**
258
+ * @description Returns the position of the argument relative to the global document.
259
+ * This is a refactored version using getBoundingClientRect for better performance and accuracy.
260
+ * @param {?Node} [node] Target element.
261
+ * @returns {OffsetGlobalInfo} Global position and scroll values.
262
+ */
263
+ getGlobal(node?: Node | null): OffsetGlobalInfo;
264
+ /**
265
+ * @description Gets the current editor-relative scroll offset.
266
+ * @param {?Node} [node] Target element.
267
+ * @returns {OffsetGlobalScrollInfo} Global scroll information.
268
+ */
269
+ getGlobalScroll(node?: Node | null): OffsetGlobalScrollInfo;
270
+ /**
271
+ * @description Get the scroll info of the WYSIWYG area.
272
+ * @returns {OffsetWWScrollInfo} Scroll information within the editor.
273
+ */
274
+ getWWScroll(): OffsetWWScrollInfo;
275
+ /**
276
+ * @description Sets the relative position of an element
277
+ * @param {HTMLElement} element Element to position
278
+ * @param {HTMLElement} e_container Element's root container
279
+ * @param {HTMLElement} target Target element to position against
280
+ * @param {HTMLElement} t_container Target's root container
281
+ */
282
+ setRelPosition(element: HTMLElement, e_container: HTMLElement, target: HTMLElement, t_container: HTMLElement): void;
283
+ /**
284
+ * @description Sets the absolute position of an element
285
+ * @param {HTMLElement} element Element to position
286
+ * @param {HTMLElement} target Target element
287
+ * @param {Object} params Position parameters
288
+ * @param {boolean} [params.isWWTarget=false] Whether the target is within the editor's WYSIWYG area
289
+ * @param {{left:number, top:number}} [params.addOffset={left:0, top:0}] Additional offset
290
+ * @param {"bottom"|"top"} [params.position="bottom"] Position ('bottom'|'top')
291
+ * @param {*} params.inst Instance object of caller
292
+ * @param {HTMLElement} [params.sibling=null] The sibling controller element
293
+ * @returns {{position: "top" | "bottom"} | undefined} Success -> {position: current position}
294
+ */
295
+ setAbsPosition(
296
+ element: HTMLElement,
297
+ target: HTMLElement,
298
+ params: {
299
+ isWWTarget?: boolean;
300
+ addOffset?: {
301
+ left: number;
302
+ top: number;
303
+ };
304
+ position?: 'bottom' | 'top';
305
+ inst: any;
306
+ sibling?: HTMLElement;
307
+ },
308
+ ):
309
+ | {
310
+ position: 'top' | 'bottom';
311
+ }
312
+ | undefined;
313
+ /**
314
+ * @description Sets the position of an element relative to a range
315
+ * @param {HTMLElement} element Element to position
316
+ * @param {?Range} range Range to position against.
317
+ * - if null, the current selection range is used
318
+ * @param {Object} [options={}] Position options
319
+ * @param {"bottom"|"top"} [options.position="bottom"] Position ('bottom'|'top')
320
+ * @param {number} [options.addTop=0] Additional top offset
321
+ * @returns {boolean} Success / Failure
322
+ */
323
+ setRangePosition(
324
+ element: HTMLElement,
325
+ range: Range | null,
326
+ {
327
+ position,
328
+ addTop,
329
+ }?: {
330
+ position?: 'bottom' | 'top';
331
+ addTop?: number;
332
+ },
333
+ ): boolean;
334
+ #private;
335
+ }
@@ -0,0 +1,165 @@
1
+ import type {} from '../../../typedef';
2
+ export default Selection_;
3
+ /**
4
+ * @description Selection, Range related class
5
+ */
6
+ declare class Selection_ {
7
+ /**
8
+ * @constructor
9
+ * @param {SunEditor.Kernel} kernel
10
+ */
11
+ constructor(kernel: SunEditor.Kernel);
12
+ /** @type {Range} */
13
+ range: Range;
14
+ /** @type {HTMLElement|Text} */
15
+ selectionNode: HTMLElement | Text;
16
+ /** @internal */
17
+ __iframeFocus: boolean;
18
+ /**
19
+ * @description Get window selection obejct
20
+ * @returns {Selection}
21
+ */
22
+ get(): Selection;
23
+ /**
24
+ * @description Check if the range object is valid
25
+ * @param {*} range Range object
26
+ * @returns {range is Range}
27
+ */
28
+ isRange(range: any): range is Range;
29
+ /**
30
+ * @description Get current editor's range object
31
+ * @returns {Range}
32
+ */
33
+ getRange(): Range;
34
+ /**
35
+ * @description Set current editor's range object and return.
36
+ * @param {Node|Range} startCon Range object or The `startContainer` property of the selection object
37
+ * @param {number} [startOff] The `startOffset` property of the selection object.
38
+ * @param {Node} [endCon] The `endContainer` property of the selection object.
39
+ * @param {number} [endOff] The `endOffset` property of the selection object.
40
+ * @returns {Range}
41
+ * @example
42
+ * // Set range using container and offset
43
+ * const textNode = editor.selection.getNode();
44
+ * editor.selection.setRange(textNode, 0, textNode, 5);
45
+ *
46
+ * // Set range using Range object
47
+ * const range = document.createRange();
48
+ * range.selectNodeContents(someElement);
49
+ * editor.selection.setRange(range);
50
+ *
51
+ * // Collapse cursor to start of element
52
+ * editor.selection.setRange(element, 0, element, 0);
53
+ */
54
+ setRange(startCon: Node | Range, startOff?: number, endCon?: Node, endOff?: number): Range;
55
+ /**
56
+ * @description Remove range object and button effect
57
+ */
58
+ removeRange(): void;
59
+ /**
60
+ * @description Returns the range (container and offset) near the given target node.
61
+ * - If the target node has a next sibling, it returns the next sibling with an offset of 0.
62
+ * - If there is no next sibling but a previous sibling exists, it returns the previous sibling with an offset of 1.
63
+ * @param {Node} target Target node whose neighboring range is to be determined.
64
+ * @returns {{container: Node, offset: number}|null} An object containing the nearest container node and its offset.
65
+ */
66
+ getNearRange(target: Node): {
67
+ container: Node;
68
+ offset: number;
69
+ } | null;
70
+ /**
71
+ * @description If the `range` object is a non-editable area, add a line at the top of the editor and update the `range` object.
72
+ * @param {Range} range core.getRange()
73
+ * @param {?Node} [container] If there is `container` argument, it creates a line in front of the container.
74
+ * @returns {Range} a new `range` or argument `range`.
75
+ */
76
+ getRangeAndAddLine(range: Range, container?: Node | null): Range;
77
+ /**
78
+ * @description Get current select node
79
+ * @returns {HTMLElement|Text}
80
+ */
81
+ getNode(): HTMLElement | Text;
82
+ /**
83
+ * @description Get the Rects object.
84
+ * @param {?(Range|Node)} target `Range` | `Node` | `null`
85
+ * @param {"start"|"end"} position It is based on the position of the rect object to be returned in case of range selection.
86
+ * @returns {{rects: import('./offset').RectsInfo, position: "start"|"end", scrollLeft: number, scrollTop: number}}
87
+ * @example
88
+ * // Get rects at start of selection
89
+ * const { rects, position, scrollLeft, scrollTop } = editor.selection.getRects(null, 'start');
90
+ * console.log(rects.left, rects.top, rects.right, rects.bottom);
91
+ *
92
+ * // Get rects for specific node
93
+ * const node = editor.selection.getNode();
94
+ * const rectsInfo = editor.selection.getRects(node, 'end');
95
+ *
96
+ * // Use rects for positioning UI elements
97
+ * const { rects } = editor.selection.getRects(null, 'start');
98
+ * tooltip.style.left = rects.left + 'px';
99
+ * tooltip.style.top = rects.top + 'px';
100
+ */
101
+ getRects(
102
+ target: (Range | Node) | null,
103
+ position: 'start' | 'end',
104
+ ): {
105
+ rects: import('./offset').RectsInfo;
106
+ position: 'start' | 'end';
107
+ scrollLeft: number;
108
+ scrollTop: number;
109
+ };
110
+ /**
111
+ * @description Get the custom range object of the event.
112
+ * @param {DragEvent} e Event object
113
+ * @returns {{sc: Node, so: number, ec: Node, eo: number}} {sc: `startContainer`, so: `startOffset`, ec: `endContainer`, eo: `endOffset`}
114
+ */
115
+ getDragEventLocationRange(e: DragEvent): {
116
+ sc: Node;
117
+ so: number;
118
+ ec: Node;
119
+ eo: number;
120
+ };
121
+ /**
122
+ * @description Scroll to the corresponding selection or range position.
123
+ * @param {Selection|Range|Node} ref selection or range object
124
+ * @param {Object<string, *>} [scrollOption] option of scrollTo
125
+ * @example
126
+ * // Scroll to current selection smoothly
127
+ * editor.selection.scrollTo(editor.selection.get());
128
+ *
129
+ * // Scroll to specific node
130
+ * const targetNode = document.querySelector('.target-element');
131
+ * editor.selection.scrollTo(targetNode);
132
+ *
133
+ * // Scroll with custom options
134
+ * editor.selection.scrollTo(editor.selection.getRange(), {
135
+ * behavior: 'auto',
136
+ * block: 'center'
137
+ * });
138
+ */
139
+ scrollTo(
140
+ ref: Selection | Range | Node,
141
+ scrollOption?: {
142
+ [x: string]: any;
143
+ },
144
+ ): void;
145
+ /**
146
+ * @description Normalizes and resets the selection range to properly target text nodes instead of element nodes for accurate text editing.
147
+ * @returns {boolean} Returns `false` if there is no valid selection.
148
+ */
149
+ resetRangeToTextNode(): boolean;
150
+ /**
151
+ * @description Saving the range object and the currently selected node of editor
152
+ */
153
+ init(): HTMLInputElement;
154
+ /**
155
+ * @internal
156
+ * @description Sets focus to the editor's wysiwyg contenteditable area and restores the last selection range within iframe context.
157
+ */
158
+ __focus(): void;
159
+ /**
160
+ * @internal
161
+ * @description Initialize the scroll information when the editor first loads
162
+ */
163
+ __init(): void;
164
+ #private;
165
+ }
@@ -0,0 +1,93 @@
1
+ import type {} from '../../../typedef';
2
+ export default Menu;
3
+ /**
4
+ * @description Dropdown and container menu management class
5
+ */
6
+ declare class Menu {
7
+ /**
8
+ * @constructor
9
+ * @param {SunEditor.Kernel} kernel
10
+ */
11
+ constructor(kernel: SunEditor.Kernel);
12
+ /** @type {Object<string, HTMLElement>} */
13
+ targetMap: {
14
+ [x: string]: HTMLElement;
15
+ };
16
+ index: number;
17
+ menus: any[];
18
+ currentButton: HTMLButtonElement;
19
+ currentDropdown: HTMLElement;
20
+ currentDropdownActiveButton: HTMLButtonElement;
21
+ currentDropdownName: string;
22
+ currentDropdownType: string;
23
+ currentContainer: HTMLElement;
24
+ currentContainerActiveButton: HTMLButtonElement;
25
+ currentContainerName: string;
26
+ currentDropdownPlugin: any;
27
+ /**
28
+ * @description Method for managing dropdown element.
29
+ * - You must add the `dropdown` element using this method at custom plugin.
30
+ * @param {{key: string, type: string}} classObj Class object
31
+ * @param {Node} menu Dropdown element
32
+ */
33
+ initDropdownTarget(
34
+ {
35
+ key,
36
+ type,
37
+ }: {
38
+ key: string;
39
+ type: string;
40
+ },
41
+ menu: Node,
42
+ ): void;
43
+ /**
44
+ * @description Opens the dropdown menu for the specified button.
45
+ * @param {Node} button Dropdown's button element to call
46
+ */
47
+ dropdownOn(button: Node): void;
48
+ /**
49
+ * @description Closes the currently open dropdown menu.
50
+ */
51
+ dropdownOff(): void;
52
+ /**
53
+ * @description Shows a previously hidden dropdown menu that is still in `on` state.
54
+ * - Only works when a dropdown is active (`currentButton` exists)
55
+ * - Re-displays the dropdown that was hidden by `dropdownHide()`
56
+ * - Recalculates menu position by calling `dropdownOn()` again
57
+ */
58
+ dropdownShow(): void;
59
+ /**
60
+ * @description Temporarily hides the currently active dropdown menu without closing it.
61
+ * - Unlike `dropdownOff()`, this does not clear the dropdown state or event listeners
62
+ * - The dropdown remains `on` but visually hidden
63
+ * - Use `dropdownShow()` to make it visible again
64
+ */
65
+ dropdownHide(): void;
66
+ /**
67
+ * @description Opens the menu container for the specified button.
68
+ * @param {Node} button Container's button element to call
69
+ */
70
+ containerOn(button: Node): void;
71
+ /**
72
+ * @description Closes the currently open menu container.
73
+ */
74
+ containerOff(): void;
75
+ /**
76
+ * @internal
77
+ * @description Reset the menu position.
78
+ * @param {Node} element Button element
79
+ * @param {HTMLElement} menu Menu element
80
+ */
81
+ __resetMenuPosition(element: Node, menu: HTMLElement): void;
82
+ /**
83
+ * @internal
84
+ * @description Restore the last menu position using previously stored button and menu elements.
85
+ */
86
+ __restoreMenuPosition(): void;
87
+ /**
88
+ * @internal
89
+ * @description Destroy the Menu instance and release memory
90
+ */
91
+ _destroy(): void;
92
+ #private;
93
+ }