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,266 +0,0 @@
1
- import { dom, env, keyCodeMap } from '../../helper';
2
- const { NO_EVENT } = env;
3
-
4
- /**
5
- * @constant {Object.<string, string[]>} StyleMap - Map of font styles to CSS properties.
6
- */
7
- const StyleMap = {
8
- bold: ['font-weight'],
9
- underline: ['text-decoration'],
10
- italic: ['font-style'],
11
- strike: ['text-decoration']
12
- };
13
-
14
- let __globalEventKeydown = null;
15
- let __globalEventMousedown = null;
16
-
17
- /**
18
- * @private
19
- * @this {__se__EditorCore}
20
- * @param {Node} ww Wywsiwyg element
21
- * @param {Node} button Button element
22
- */
23
- const __RemoveCopyformt = function (ww, button) {
24
- __globalEventKeydown = this.eventManager.removeGlobalEvent('keydown', __globalEventKeydown);
25
- __globalEventMousedown = this.eventManager.removeGlobalEvent('mousedown', __globalEventMousedown);
26
- this._onCopyFormatInfo = null;
27
- this._onCopyFormatInitMethod = null;
28
- dom.utils.removeClass(ww, 'se-copy-format-cursor');
29
- dom.utils.removeClass(button, 'on');
30
-
31
- return true;
32
- };
33
-
34
- /**
35
- * @private
36
- * @description Finds the first and last child elements in a selection area.
37
- * @param {Element} selectArea Selection area element
38
- * @returns {{ first: Node, last: Node}} Object containing the first and last child elements
39
- */
40
- const __findFirstAndLast = function (selectArea) {
41
- const isContentLess = dom.check.isContentLess;
42
- const isTable = dom.check.isTable;
43
- const first =
44
- dom.query.getEdgeChild(
45
- dom.query.getEdgeChild(selectArea, (current) => !isContentLess(current), false),
46
- (current) => {
47
- return current.childNodes.length === 0 || current.nodeType === 3 || isTable(current);
48
- },
49
- false
50
- ) || selectArea.firstChild;
51
- const last =
52
- dom.query.getEdgeChild(
53
- selectArea.lastChild,
54
- (current) => {
55
- return current.childNodes.length === 0 || current.nodeType === 3 || isTable(current);
56
- },
57
- true
58
- ) || selectArea.lastChild;
59
-
60
- return { first, last };
61
- };
62
-
63
- /**
64
- * @description List of commands that trigger active event handling in the editor.
65
- * - These commands typically apply inline formatting or structural changes.
66
- * @constant {string[]}
67
- */
68
- export const ACTIVE_EVENT_COMMANDS = ['bold', 'underline', 'italic', 'strike', 'subscript', 'superscript', 'indent', 'outdent'];
69
-
70
- /**
71
- * @description List of basic editor commands, including active event commands and additional actions
72
- * - such as undo, redo, saving, full-screen toggle, and text direction commands.
73
- * @constant {string[]}
74
- */
75
- export const BASIC_COMMANDS = ACTIVE_EVENT_COMMANDS.concat(['undo', 'redo', 'save', 'fullScreen', 'showBlocks', 'codeView', 'dir', 'dir_ltr', 'dir_rtl']);
76
-
77
- /**
78
- * @description Selects all content in the editor.
79
- * @param {__se__EditorCore} editor - The root editor instance
80
- */
81
- export function SELECT_ALL(editor) {
82
- editor.ui._offCurrentController();
83
- editor.menu.containerOff();
84
-
85
- // check all tags
86
- const ww = editor.frameContext.get('wysiwyg');
87
- let prevScopeTag = null;
88
- let prevScopeTagName = '';
89
- const scopeSelectionTags = editor.options.get('scopeSelectionTags');
90
- const range = editor.selection.getRange();
91
- if (!range.collapsed) {
92
- let commonNode = range.commonAncestorContainer;
93
- let commonNodeName = commonNode.nodeName?.toLowerCase();
94
-
95
- while (commonNode && ((!commonNode.nextSibling && !commonNode.previousSibling && !scopeSelectionTags.includes(commonNodeName)) || dom.check.isContentLess(commonNodeName)) && commonNode !== ww) {
96
- commonNode = commonNode.parentElement;
97
- commonNodeName = commonNode.nodeName?.toLowerCase();
98
- }
99
-
100
- if (scopeSelectionTags.includes(commonNodeName)) {
101
- prevScopeTag = commonNode;
102
- prevScopeTagName = commonNodeName;
103
- }
104
- }
105
-
106
- // select all
107
- const scopeTagList = scopeSelectionTags.filter((tagName) => tagName !== prevScopeTagName);
108
- const scopeBaseTag = dom.query.getParentElement(prevScopeTag || editor.selection.getNode(), (current) => scopeTagList.includes(current.nodeName?.toLowerCase()));
109
-
110
- let selectArea = scopeBaseTag || ww;
111
- let { first, last } = __findFirstAndLast(selectArea);
112
-
113
- if (!first || !last) return;
114
-
115
- const isZeroWidth = dom.check.isZeroWidth;
116
- while (isZeroWidth(first) && isZeroWidth(last) && selectArea !== ww) {
117
- selectArea = selectArea.parentElement;
118
- ({ first, last } = __findFirstAndLast(dom.query.getParentElement(selectArea, (current) => scopeTagList.includes(current.nodeName?.toLowerCase())) || ww));
119
- }
120
-
121
- if (!first || !last) return;
122
-
123
- let info = null;
124
- if (dom.check.isMedia(first) || (info = editor.component.get(first.parentElement)) || dom.check.isTableElements(first)) {
125
- const br = dom.utils.createElement('BR');
126
- const format = dom.utils.createElement(editor.options.get('defaultLine'), null, br);
127
- first = info ? info.container || info.cover : first;
128
- first.parentElement.insertBefore(format, first);
129
- first = br;
130
- }
131
-
132
- if (dom.check.isMedia(last) || (info = editor.component.get(last.parentElement)) || dom.check.isTableElements(last)) {
133
- const br = dom.utils.createElement('BR');
134
- const format = dom.utils.createElement(editor.options.get('defaultLine'), null, br);
135
- last = info ? info.container || info.cover : last;
136
- last.parentElement.appendChild(format);
137
- last = br;
138
- }
139
-
140
- editor.toolbar._showBalloon(editor.selection.setRange(first, 0, last, last.textContent.length));
141
- }
142
-
143
- /**
144
- * @description Toggles direction button active state.
145
- * @param {__se__EditorCore} editor - The root editor instance
146
- * @param {boolean} rtl - Whether the text direction is right-to-left.
147
- */
148
- export function DIR_BTN_ACTIVE(editor, rtl) {
149
- const icons = editor.icons;
150
- const commandTargets = editor.commandTargets;
151
- const shortcutsKeyMap = editor.shortcutsKeyMap;
152
-
153
- // change reverse shortcuts key
154
- editor.reverseKeys.forEach((e) => {
155
- const info = shortcutsKeyMap.get(e);
156
- if (!info) return;
157
- const temp = info.c;
158
- info.c = info.r;
159
- info.r = temp;
160
- });
161
-
162
- // change dir buttons
163
- editor.applyCommandTargets('dir', (e) => {
164
- dom.utils.changeTxt(e.querySelector('.se-tooltip-text'), editor.lang[rtl ? 'dir_ltr' : 'dir_rtl']);
165
- dom.utils.changeElement(e.firstElementChild, icons[rtl ? 'dir_ltr' : 'dir_rtl']);
166
- });
167
-
168
- if (rtl) {
169
- dom.utils.addClass(commandTargets.get('dir_rtl'), 'active');
170
- dom.utils.removeClass(commandTargets.get('dir_ltr'), 'active');
171
- } else {
172
- dom.utils.addClass(commandTargets.get('dir_ltr'), 'active');
173
- dom.utils.removeClass(commandTargets.get('dir_rtl'), 'active');
174
- }
175
- }
176
-
177
- /**
178
- * @description Saves the editor content.
179
- * @param {__se__EditorCore} editor - The root editor instance
180
- * @returns {Promise<void>}
181
- */
182
- export async function SAVE(editor) {
183
- const fc = editor.frameContext;
184
- if (!fc.get('isChanged')) return;
185
-
186
- const data = editor.html.get();
187
- const saved = await editor.triggerEvent('onSave', { frameContext: fc, data });
188
- if (saved === NO_EVENT) {
189
- const origin = fc.get('originElement');
190
- if (/^TEXTAREA$/i.test(origin.nodeName)) {
191
- origin.value = data;
192
- } else {
193
- origin.innerHTML = data;
194
- }
195
- } else if (saved === false) {
196
- return;
197
- }
198
-
199
- fc.set('isChanged', false);
200
- fc.set('savedIndex', editor.history.getRootStack()[editor.status.rootKey].index);
201
-
202
- // set save button disable
203
- editor.applyCommandTargets('save', (e) => {
204
- e.disabled = true;
205
- });
206
- }
207
-
208
- /**
209
- * @description Copies formatting from selected text.
210
- * @param {__se__EditorCore} editor - The root editor instance
211
- * @param {Node} button - The button triggering the copy format function.
212
- */
213
- export function COPY_FORMAT(editor, button) {
214
- if (typeof editor._onCopyFormatInitMethod === 'function') {
215
- editor._onCopyFormatInitMethod();
216
- return;
217
- }
218
-
219
- const ww = editor.frameContext.get('wysiwyg');
220
- editor._onCopyFormatInfo = [...editor.eventManager.__cacheStyleNodes];
221
- editor._onCopyFormatInitMethod = __RemoveCopyformt.bind(editor, ww, button);
222
- dom.utils.addClass(ww, 'se-copy-format-cursor');
223
- dom.utils.addClass(button, 'on');
224
-
225
- __globalEventKeydown = editor.eventManager.addGlobalEvent('keydown', (e) => {
226
- if (!keyCodeMap.isEsc(e.code)) return;
227
- editor._onCopyFormatInitMethod?.();
228
- });
229
- __globalEventMousedown = editor.eventManager.addGlobalEvent('mousedown', (e) => {
230
- if (ww.contains(e.target) || e.target === button) return;
231
- editor._onCopyFormatInitMethod?.();
232
- });
233
- }
234
-
235
- /**
236
- * @description Applies font styling to selected text.
237
- * @param {__se__EditorCore} editor - The root editor instance
238
- * @param {string} command - The font style command (e.g., bold, italic, underline).
239
- */
240
- export function FONT_STYLE(editor, command) {
241
- command = editor.options.get('_defaultTagCommand')[command.toLowerCase()] || command;
242
- let nodeName = editor.options.get('convertTextTags')[command] || command;
243
- const nodesMap = editor.status.currentNodesMap;
244
- const el = nodesMap.includes(editor.options.get('_styleCommandMap')[nodeName]) ? null : dom.utils.createElement(nodeName);
245
-
246
- if (/^sub$/i.test(nodeName) && nodesMap.includes('superscript')) {
247
- nodeName = 'sup';
248
- } else if (/^sup$/i.test(nodeName) && nodesMap.includes('subscript')) {
249
- nodeName = 'sub';
250
- }
251
-
252
- editor.format.applyInlineElement(el, { stylesToModify: StyleMap[command] || null, nodesToRemove: [nodeName], strictRemove: false });
253
- editor.focus();
254
- }
255
-
256
- /**
257
- * @description Inserts a page break element into the editor.
258
- * @param {__se__EditorCore} editor - The root editor instance
259
- */
260
- export function PAGE_BREAK(editor) {
261
- const pageBreak = dom.utils.createElement('DIV', { class: 'se-component se-component-line-break se-page-break' });
262
- editor.component.insert(pageBreak, { skipCharCount: true, skipSelection: true, skipHistory: false });
263
- const line = pageBreak.nextElementSibling || editor.format.addLine(pageBreak);
264
- editor.selection.setRange(line, 1, line, 1);
265
- editor.history.push(false);
266
- }
@@ -1,102 +0,0 @@
1
- import { get as getNumber } from '../../helper/numbers';
2
-
3
- /**
4
- * @description Elements and variables you should have
5
- * @param {{target: Element, key: *, options: __se__FrameOptions}} editorTarget Target textarea
6
- * @param {HTMLElement} top Editor top area
7
- * @param {HTMLElement} wwFrame Editor wysiwyg frame
8
- * @param {HTMLElement} codeWrapper Editor code view wrapper
9
- * @param {HTMLElement} codeFrame Editor code view frame
10
- * @param {{inner: HTMLElement, page: HTMLElement, pageMirror: HTMLElement}} documentTypeInner Document type elements
11
- * @param {?HTMLElement} statusbar Editor statusbar
12
- * @param {*} key root key
13
- * @returns {__se__FrameContext}
14
- */
15
- export function CreateFrameContext(editorTarget, top, wwFrame, codeWrapper, codeFrame, statusbar, documentTypeInner, key) {
16
- const m = new Map([
17
- ['key', key],
18
- ['options', editorTarget.options],
19
- ['originElement', editorTarget.target],
20
- ['topArea', top],
21
- ['container', top.querySelector('.se-container')],
22
- ['wrapper', top.querySelector('.se-wrapper')],
23
- ['documentTypeInner', documentTypeInner.inner],
24
- ['documentTypePage', documentTypeInner.page],
25
- ['documentTypePageMirror', documentTypeInner.pageMirror],
26
- ['wysiwygFrame', wwFrame],
27
- ['wysiwyg', wwFrame], // options.iframe ? wwFrame.contentDocument.body : wwFrame
28
- ['codeWrapper', codeWrapper],
29
- ['code', codeFrame],
30
- ['codeNumbers', /** @type {HTMLTextAreaElement} */ (codeWrapper?.querySelector('.se-code-view-line'))],
31
- ['lineBreaker_t', top.querySelector('.se-line-breaker-component-t')],
32
- ['lineBreaker_b', top.querySelector('.se-line-breaker-component-b')],
33
- ['_stickyDummy', top.querySelector('.se-toolbar-sticky-dummy')],
34
- ['_toolbarShadow', top.querySelector('.se-toolbar-shadow')],
35
- ['_minHeight', getNumber(wwFrame.style.minHeight || '65', 0)],
36
- ['isCodeView', false],
37
- ['isFullScreen', false],
38
- ['isReadOnly', false],
39
- ['isDisabled', false],
40
- ['isChanged', -1],
41
- ['historyIndex', -1],
42
- ['savedIndex', -1],
43
- ['eventwysiwyg', null]
44
- ]);
45
-
46
- if (statusbar) UpdateStatusbarContext(statusbar, m);
47
-
48
- const placeholder = top.querySelector('.se-placeholder');
49
- if (placeholder) m.set('placeholder', placeholder);
50
-
51
- return m;
52
- }
53
-
54
- /**
55
- * @description Update statusbar context
56
- * @param {HTMLElement} statusbar Statusbar element
57
- * @param {__se__FrameContext} mapper FrameContext map
58
- */
59
- export function UpdateStatusbarContext(statusbar, mapper) {
60
- statusbar ? mapper.set('statusbar', statusbar) : mapper.delete('statusbar');
61
- const navigation = statusbar ? statusbar.querySelector('.se-navigation') : null;
62
- const charWrapper = statusbar ? statusbar.querySelector('.se-char-counter-wrapper') : null;
63
- const charCounter = statusbar ? statusbar.querySelector('.se-char-counter-wrapper .se-char-counter') : null;
64
- navigation ? mapper.set('navigation', navigation) : mapper.delete('navigation');
65
- charWrapper ? mapper.set('charWrapper', charWrapper) : mapper.delete('charWrapper');
66
- charCounter ? mapper.set('charCounter', charCounter) : mapper.delete('charCounter');
67
- }
68
-
69
- /**
70
- * @description Common elements and variables you should have
71
- * @param {HTMLElement} toolbar Toolbar frame
72
- * @param {HTMLElement|null} toolbarContainer Toolbar container
73
- * @param {HTMLElement} menuTray menu tray
74
- * @param {HTMLElement|null} subbar sub toolbar
75
- * @returns {__se__Context}
76
- */
77
- export function CreateContext(toolbar, toolbarContainer, menuTray, subbar, statusbarContainer) {
78
- const m = new Map([
79
- ['menuTray', menuTray],
80
- ['toolbar.main', toolbar],
81
- ['toolbar.buttonTray', toolbar.querySelector('.se-btn-tray')],
82
- ['toolbar._arrow', toolbar.querySelector('.se-arrow')]
83
- ]);
84
-
85
- if (subbar) {
86
- m.set('toolbar.sub.main', subbar);
87
- m.set('toolbar.sub.buttonTray', subbar.querySelector('.se-btn-tray'));
88
- m.set('toolbar.sub._arrow', subbar.querySelector('.se-arrow'));
89
- m.set('toolbar.sub._wrapper', subbar.parentElement.parentElement);
90
- }
91
-
92
- if (toolbarContainer) {
93
- m.set('toolbar._wrapper', toolbarContainer.querySelector('.sun-editor'));
94
- m.set('_stickyDummy', toolbarContainer.querySelector('.se-toolbar-sticky-dummy'));
95
- }
96
-
97
- if (statusbarContainer) {
98
- m.set('statusbar._wrapper', statusbarContainer.querySelector('.sun-editor'));
99
- }
100
-
101
- return m;
102
- }
@@ -1,36 +0,0 @@
1
- /**
2
- * @private
3
- * @description Add all inner classes to the editor instance.
4
- * @param {__se__EditorCore} editor - The root editor instance
5
- */
6
- function ClassInjector(editor) {
7
- /** @description Toolbar class instance @type {__se__EditorCore['toolbar']} */
8
- this.toolbar = editor.toolbar;
9
- /** @description Sub-Toolbar class instance @type {__se__EditorCore['subToolbar']|null} */
10
- this.subToolbar = null;
11
- if (editor.subToolbar) this.subToolbar = editor.subToolbar;
12
- /** @description Char class instance @type {__se__EditorCore['char']} */
13
- this.char = editor.char;
14
- /** @description Component class instance @type {__se__EditorCore['component']} */
15
- this.component = editor.component;
16
- /** @description Format class instance @type {__se__EditorCore['format']} */
17
- this.format = editor.format;
18
- /** @description HTML class instance @type {__se__EditorCore['html']} */
19
- this.html = editor.html;
20
- /** @description Menu class instance @type {__se__EditorCore['menu']} */
21
- this.menu = editor.menu;
22
- /** @description NodeTransform class instance @type {__se__EditorCore['nodeTransform']} */
23
- this.nodeTransform = editor.nodeTransform;
24
- /** @description Offset class instance @type {__se__EditorCore['offset']} */
25
- this.offset = editor.offset;
26
- /** @description Selection class instance @type {__se__EditorCore['selection']} */
27
- this.selection = editor.selection;
28
- /** @description Shortcuts class instance @type {__se__EditorCore['shortcuts']} */
29
- this.shortcuts = editor.shortcuts;
30
- /** @description UI class instance @type {__se__EditorCore['ui']} */
31
- this.ui = editor.ui;
32
- /** @description Viewer class instance @type {__se__EditorCore['viewer']} */
33
- this.viewer = editor.viewer;
34
- }
35
-
36
- export default ClassInjector;
@@ -1,87 +0,0 @@
1
- /**
2
- * @description Add default properties to the editor core object.
3
- * @param {__se__EditorCore} editor - The root editor instance
4
- */
5
- export default function CoreInjector(editor) {
6
- /**
7
- * @description The root editor instance.
8
- * @type {__se__EditorCore}
9
- */
10
- this.editor = editor;
11
-
12
- // base
13
- /**
14
- * @description The event manager instance.
15
- * @type {__se__EditorCore['eventManager']}
16
- */
17
- this.eventManager = editor.eventManager;
18
- /**
19
- * @description The history manager instance.
20
- * @type {__se__EditorCore['history']}
21
- */
22
- this.history = editor.history;
23
- /**
24
- * @description The events instance.
25
- * @type {__se__EditorCore['events']}
26
- */
27
- this.events = editor.events;
28
- /**
29
- * @description The function to trigger an event.
30
- * @type {__se__EditorCore['triggerEvent']}
31
- */
32
- this.triggerEvent = editor.triggerEvent;
33
- /**
34
- * @description The wrapper element for carrying elements.
35
- * @type {__se__EditorCore['carrierWrapper']}
36
- */
37
- this.carrierWrapper = editor.carrierWrapper;
38
-
39
- // environment variables
40
- /**
41
- * @description The plugins used by the editor.
42
- * @type {__se__EditorCore['plugins']}
43
- */
44
- this.plugins = editor.plugins;
45
- /**
46
- * @description The status of the editor.
47
- * @type {__se__EditorStatus}
48
- */
49
- this.status = editor.status;
50
- /**
51
- * @description The editor's context map.
52
- * @type {__se__EditorCore['context']}
53
- */
54
- this.context = editor.context;
55
- /**
56
- * @description The editor's options map.
57
- * @type {__se__EditorCore['options']}
58
- */
59
- this.options = editor.options;
60
- /**
61
- * @description The editor's icons.
62
- * @type {__se__EditorCore['icons']}
63
- */
64
- this.icons = editor.icons;
65
- /**
66
- * @description The language settings.
67
- * @type {__se__EditorCore['lang']}
68
- */
69
- this.lang = editor.lang;
70
- /**
71
- * @description editor.frameRoots map.
72
- * @type {__se__EditorCore['frameRoots']}
73
- */
74
- this.frameRoots = editor.frameRoots;
75
-
76
- // window, document, shadowRoot
77
- /**
78
- * @description The window object.
79
- * @type {Window}
80
- */
81
- this._w = editor._w;
82
- /**
83
- * @description The document object.
84
- * @type {Document}
85
- */
86
- this._d = editor._d;
87
- }
@@ -1,73 +0,0 @@
1
- import CoreInjector from './_core';
2
- import ClassInjector from './_classes';
3
-
4
- /**
5
- * @description Initializes and adds inner classes and default properties of the editor.
6
- * @param {__se__EditorCore} editor - The root editor instance
7
- */
8
- function EditorInjector(editor) {
9
- // CoreInjector props
10
- /** @type {__se__EditorCore} */
11
- this.editor;
12
- /** @type {import('./_core').default['eventManager']} */
13
- this.eventManager;
14
- /** @type {import('./_core').default['history']} */
15
- this.history;
16
- /** @type {import('./_core').default['events']} */
17
- this.events;
18
- /** @type {import('./_core').default['triggerEvent']} */
19
- this.triggerEvent;
20
- /** @type {import('./_core').default['carrierWrapper']} */
21
- this.carrierWrapper;
22
- /** @type {import('./_core').default['plugins']} */
23
- this.plugins;
24
- /** @type {import('./_core').default['status']} */
25
- this.status;
26
- /** @type {import('./_core').default['context']} */
27
- this.context;
28
- /** @type {import('./_core').default['options']} */
29
- this.options;
30
- /** @type {import('./_core').default['icons']} */
31
- this.icons;
32
- /** @type {import('./_core').default['lang']} */
33
- this.lang;
34
- /** @type {import('./_core').default['frameRoots']} */
35
- this.frameRoots;
36
- /** @type {import('./_core').default['_w']} */
37
- this._w;
38
- /** @type {import('./_core').default['_d']} */
39
- this._d;
40
-
41
- // ClassInjector props
42
- /** @type {import('./_classes').default['toolbar']} */
43
- this.toolbar;
44
- /** @type {import('./_classes').default['subToolbar']} */
45
- this.subToolbar;
46
- /** @type {import('./_classes').default['char']} */
47
- this.char;
48
- /** @type {import('./_classes').default['component']} */
49
- this.component;
50
- /** @type {import('./_classes').default['format']} */
51
- this.format;
52
- /** @type {import('./_classes').default['html']} */
53
- this.html;
54
- /** @type {import('./_classes').default['menu']} */
55
- this.menu;
56
- /** @type {import('./_classes').default['nodeTransform']} */
57
- this.nodeTransform;
58
- /** @type {import('./_classes').default['offset']} */
59
- this.offset;
60
- /** @type {import('./_classes').default['selection']} */
61
- this.selection;
62
- /** @type {import('./_classes').default['shortcuts']} */
63
- this.shortcuts;
64
- /** @type {import('./_classes').default['ui']} */
65
- this.ui;
66
- /** @type {import('./_classes').default['viewer']} */
67
- this.viewer;
68
-
69
- CoreInjector.call(this, editor);
70
- ClassInjector.call(this, editor);
71
- }
72
-
73
- export default EditorInjector;