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,66 @@
1
+ /**
2
+ * @typedef {Object} ContextStore
3
+ *
4
+ * This object stores **global editor-level UI references** for a SunEditor instance.
5
+ *
6
+ * - Primarily manages **toolbar, menu tray, and status bar containers**.
7
+ * - Used by the editor to control **sticky behavior, sub-toolbars, and global layout**.
8
+ * - Shared across all frames in a multi-frame editor (unlike FrameContextStore which is per-frame).
9
+ * -----------------
10
+ *
11
+ * === Main UI Containers ===
12
+ * @property {HTMLElement} menuTray - The **top menu tray** that holds buttons, dropdowns, or custom menus.
13
+ * @property {HTMLElement} toolbar_main - The **main toolbar** element containing editor actions.
14
+ * @property {HTMLElement} toolbar_buttonTray - The **container for main toolbar buttons**.
15
+ * @property {HTMLElement} toolbar_arrow - The **arrow indicator** in the toolbar (used for dropdown/tool menu navigation).
16
+ * @property {HTMLElement} [toolbar_wrapper] - The **wrapper for the main toolbar and editor frame** (groups UI together).
17
+ *
18
+ * === Sub-Toolbar (Contextual/Balloon) ===
19
+ * @property {HTMLElement} [toolbar_sub_main] - The **sub-toolbar** element (used for contextual or balloon toolbars).
20
+ * @property {HTMLElement} [toolbar_sub_buttonTray] - The **container for sub-toolbar buttons**.
21
+ * @property {HTMLElement} [toolbar_sub_arrow] - The **arrow indicator** in the sub-toolbar.
22
+ * @property {HTMLElement} [toolbar_sub_wrapper] - The **wrapper for the sub-toolbar**, containing its structure.
23
+ *
24
+ * === Status Bar ===
25
+ * @property {HTMLElement} [statusbar_wrapper] - The **wrapper for the status bar** (footer area for resize handles, info, etc.).
26
+ *
27
+ * === Sticky Mode Helpers ===
28
+ * @property {HTMLElement} [_stickyDummy] - A **dummy placeholder** used when the toolbar is in sticky mode (to prevent layout shift).
29
+ * ================================================================================================================================
30
+ */
31
+
32
+ /**
33
+ * @description Creates a context map of commonly accessed DOM elements for the editor.
34
+ * @param {Element} toolbar - Main toolbar element.
35
+ * @param {?Element} toolbarContainer - Container element for the toolbar.
36
+ * @param {Element} menuTray - Main menu tray element.
37
+ * @param {?Element} subbar - Sub-toolbar element.
38
+ * @param {?Element} statusbarContainer - Status bar container element.
39
+ * @returns {SunEditor.Context} - A map of key DOM nodes used throughout the editor.
40
+ */
41
+ export function CreateContext(toolbar, toolbarContainer, menuTray, subbar, statusbarContainer) {
42
+ const m = new Map([
43
+ ['menuTray', menuTray],
44
+ ['toolbar_main', toolbar],
45
+ ['toolbar_buttonTray', toolbar.querySelector('.se-btn-tray')],
46
+ ['toolbar_arrow', toolbar.querySelector('.se-arrow')],
47
+ ]);
48
+
49
+ if (subbar) {
50
+ m.set('toolbar_sub_main', subbar);
51
+ m.set('toolbar_sub_buttonTray', subbar.querySelector('.se-btn-tray'));
52
+ m.set('toolbar_sub_arrow', subbar.querySelector('.se-arrow'));
53
+ m.set('toolbar_sub_wrapper', subbar.parentElement.parentElement);
54
+ }
55
+
56
+ if (toolbarContainer) {
57
+ m.set('toolbar_wrapper', toolbarContainer.querySelector('.sun-editor'));
58
+ m.set('_stickyDummy', toolbarContainer.querySelector('.se-toolbar-sticky-dummy'));
59
+ }
60
+
61
+ if (statusbarContainer) {
62
+ m.set('statusbar_wrapper', statusbarContainer.querySelector('.sun-editor'));
63
+ }
64
+
65
+ return /** @type {SunEditor.Context} */ (/** @type {unknown} */ (m));
66
+ }
@@ -0,0 +1,160 @@
1
+ import { get as getNumber } from '../../helper/numbers';
2
+
3
+ /**
4
+ * @typedef {Object} FrameContextStore
5
+ *
6
+ * This object stores **all frame-specific states and DOM references** for a SunEditor instance.
7
+ *
8
+ * - Used to manage **multi-root editors** (each frame has its own context).
9
+ * - Holds references to all **key DOM nodes** (WYSIWYG area, toolbars, status bar, code view, etc.).
10
+ * - Maintains **editor state flags** (fullscreen, readonly, code view, content changes).
11
+ * - Provides storage for **document-type editing features** (page layout, headers, etc.).
12
+ * - Keeps **history positions** and other runtime values for undo/redo operations.
13
+ *
14
+ * This structure is **core to how SunEditor manages each editing frame** and is accessed throughout
15
+ * the editor modules (history, toolbar actions, plugins, etc.).
16
+ * -----------------
17
+ *
18
+ * === Identification ===
19
+ * @property {*} key - Unique key identifying this editor instance (useful for multi-root editors).
20
+ * @property {SunEditor.FrameOptions} options - Frame-specific options (toolbar, plugins, behaviors, etc.).
21
+ *
22
+ * === Core DOM References ===
23
+ * @property {HTMLElement & HTMLTextAreaElement} originElement - The original source element (usually a <textarea> or target element).
24
+ * @property {HTMLElement} topArea - The outermost container wrapping the entire editor (toolbar + editor + status bar).
25
+ * @property {HTMLElement} container - The `.se-container` element that holds the editor's UI.
26
+ * @property {HTMLElement} wrapper - The `.se-wrapper` element containing the editable area and internal components.
27
+ * @property {SunEditor.WysiwygFrame} wysiwygFrame - The WYSIWYG frame element (either an <iframe> or a div in inline mode).
28
+ * @property {HTMLElement} wysiwyg - The actual editable content area (usually the iframe’s <body> or a contentEditable div).
29
+ * @property {SunEditor.EventWysiwyg} eventWysiwyg - Internal reference for wysiwyg events (set on initialization).
30
+ * @property {HTMLElement} codeWrapper - Wrapper element for the code-view mode.
31
+ * @property {HTMLElement & HTMLTextAreaElement} code - Code view editing element (a <textarea> or <pre>).
32
+ * @property {HTMLTextAreaElement} codeNumbers - Element displaying line numbers in code view mode.
33
+ * @property {HTMLElement} placeholder - Placeholder element shown when the editor is empty.
34
+ * @property {HTMLElement} statusbar - Editor status bar element (for resizing, info, etc.).
35
+ * @property {HTMLElement} navigation - Navigation element (e.g., for outline or bookmarks).
36
+ * @property {HTMLElement} charWrapper - Wrapper for the character counter element.
37
+ * @property {HTMLElement} charCounter - Element showing the character counter.
38
+ * @property {Window} [_ww] - The window object of the WYSIWYG frame (iframe window).
39
+ * @property {Document} [_wd] - The document object of the WYSIWYG frame (iframe document).
40
+ *
41
+ * === UI Utilities & Visual Components ===
42
+ * @property {HTMLElement} lineBreaker_t - Top floating line-breaker UI element (for line insertion).
43
+ * @property {HTMLElement} lineBreaker_b - Bottom floating line-breaker UI element (for line insertion).
44
+ * @property {HTMLElement} [_stickyDummy] - Placeholder element used for sticky toolbar behavior.
45
+ * @property {HTMLElement} [_toolbarShadow] - Shadow element below the toolbar for visual effects.
46
+ * @property {{main: HTMLElement, border: HTMLElement, display: HTMLElement, handles: HTMLElement[]}} [_figure] - Current active figure component (image, table, etc.).
47
+ *
48
+ * === State Flags ===
49
+ * @property {boolean} isCodeView - Whether the editor is currently in code view mode.
50
+ * @property {boolean} isFullScreen - Whether the editor is currently in fullscreen mode.
51
+ * @property {boolean} isReadOnly - Whether the editor is set to readonly mode.
52
+ * @property {boolean} isDisabled - Whether the editor is currently disabled.
53
+ * @property {boolean} [isShowBlocks] - Whether block structure visualization is enabled.
54
+ * @property {boolean} isChanged - Whether the content has been changed (-1 means initial state).
55
+ *
56
+ * === History Tracking ===
57
+ * @property {number} historyIndex - Current index in the history stack (undo/redo).
58
+ * @property {number} savedIndex - Last saved index in the history stack.
59
+ *
60
+ * === DocumentType Editing (Optional) ===
61
+ * @property {*} [documentType] - Document-type specific configuration or module reference.
62
+ * @property {HTMLElement} [documentTypeInner] - Inner container for document-type editors.
63
+ * @property {HTMLElement} [documentTypePage] - Page wrapper for paginated editing mode.
64
+ * @property {HTMLElement} [documentTypePageMirror] - Mirror page element used for selection/layout adjustments.
65
+ * @property {boolean} [documentType_use_header] - Whether headers are used in document-type mode.
66
+ * @property {boolean} [documentType_use_page] - Whether page layout is enabled in document-type mode.
67
+ *
68
+ * === Runtime / Computed Values ===
69
+ * @property {number} _minHeight - Minimum height of the wysiwyg area (parsed from inline style or options).
70
+ * @property {CSSStyleDeclaration} [wwComputedStyle] - Cached computed styles for the wysiwyg element.
71
+ * - Set during editor initialization via `window.getComputedStyle(wysiwyg)`.
72
+ * - Used for retrieving runtime CSS values (padding, margins, font-family, etc.).
73
+ * - Improves performance by avoiding repeated `getComputedStyle()` calls.
74
+ * @property {HTMLElement} [_iframeAuto] - Auto-resizing helper iframe (used for dynamic sizing).
75
+ * @property {number} [_editorHeight] - Current height of the editor.
76
+ * ================================================================================================================================
77
+ */
78
+
79
+ /** @typedef {Map<keyof FrameContextStore, *>} FrameContexType */
80
+
81
+ /**
82
+ * @description Elements and variables you should have
83
+ * @param {{target: Element, key: *, options: SunEditor.FrameOptions}} editorTarget Target textarea
84
+ * @param {HTMLElement} top Editor top area
85
+ * @param {HTMLElement} wwFrame Editor wysiwyg frame
86
+ * @param {HTMLElement} codeWrapper Editor code view wrapper
87
+ * @param {HTMLElement} codeFrame Editor code view frame
88
+ * @param {{inner: HTMLElement, page: HTMLElement, pageMirror: HTMLElement}} documentTypeInner Document type elements
89
+ * @param {?HTMLElement} statusbar Editor statusbar
90
+ * @param {*} key root key
91
+ * @returns {FrameContexType}
92
+ */
93
+ export function CreateFrameContext(editorTarget, top, wwFrame, codeWrapper, codeFrame, statusbar, documentTypeInner, key) {
94
+ const m = /** @type {FrameContexType} */ (
95
+ new Map([
96
+ ['key', key],
97
+ ['options', editorTarget.options],
98
+ ['originElement', editorTarget.target],
99
+ ['topArea', top],
100
+ ['container', top.querySelector('.se-container')],
101
+ ['wrapper', top.querySelector('.se-wrapper')],
102
+ ['wysiwygFrame', wwFrame],
103
+ ['wysiwyg', wwFrame], // options.iframe ? wwFrame.contentDocument.body : wwFrame
104
+ ['codeWrapper', codeWrapper],
105
+ ['code', codeFrame],
106
+ ['codeNumbers', /** @type {HTMLTextAreaElement} */ (codeWrapper?.querySelector('.se-code-view-line'))],
107
+ ['lineBreaker_t', top.querySelector('.se-line-breaker-component-t')],
108
+ ['lineBreaker_b', top.querySelector('.se-line-breaker-component-b')],
109
+ ['_stickyDummy', top.querySelector('.se-toolbar-sticky-dummy')],
110
+ ['_toolbarShadow', top.querySelector('.se-toolbar-shadow')],
111
+ ['_minHeight', getNumber(wwFrame.style.minHeight || '65', 0)],
112
+ ['isCodeView', false],
113
+ ['isFullScreen', false],
114
+ ['isReadOnly', false],
115
+ ['isDisabled', false],
116
+ ['isChanged', false],
117
+ ['historyIndex', -1],
118
+ ['savedIndex', -1],
119
+ ['documentTypeInner', documentTypeInner.inner],
120
+ ['documentTypePage', documentTypeInner.page],
121
+ ['documentTypePageMirror', documentTypeInner.pageMirror],
122
+ // Runtime properties (set dynamically during editor lifecycle)
123
+ /*
124
+ ['eventWysiwyg', null], // Set in eventManager.js during event initialization
125
+ ['wwComputedStyle', null], // Set in editor.js (#setEditorParams) via getComputedStyle
126
+ ['_ww', null], // Set in editor.js (#setEditorParams) - iframe window object
127
+ ['_wd', null], // Set in editor.js (#setEditorParams) - iframe document object
128
+ ['_iframeAuto', null], // Set in editor.js for iframe auto-resize mode
129
+ ['_editorHeight', null], // Set during resize operations
130
+ ['_figure', null], // Set when figure component (image/table) is active
131
+ ['isShowBlocks', false], // Set by toggleShowBlocks in viewer.js
132
+ ['documentType', null], // Set for document-type editors
133
+ ['documentType_use_header', false], // Set when document uses headers
134
+ ['documentType_use_page', false], // Set when document uses page layout
135
+ */
136
+ ])
137
+ );
138
+
139
+ if (statusbar) UpdateStatusbarContext(statusbar, m);
140
+
141
+ const placeholder = top.querySelector('.se-placeholder');
142
+ if (placeholder) m.set('placeholder', placeholder);
143
+
144
+ return m;
145
+ }
146
+
147
+ /**
148
+ * @description Update statusbar context
149
+ * @param {HTMLElement} statusbar Statusbar element
150
+ * @param {FrameContexType|import('../config/contextProvider').FrameContextMap} mapper FrameContext map
151
+ */
152
+ export function UpdateStatusbarContext(statusbar, mapper) {
153
+ statusbar ? mapper.set('statusbar', statusbar) : mapper.delete('statusbar');
154
+ const navigation = statusbar ? statusbar.querySelector('.se-navigation') : null;
155
+ const charWrapper = statusbar ? statusbar.querySelector('.se-char-counter-wrapper') : null;
156
+ const charCounter = statusbar ? statusbar.querySelector('.se-char-counter-wrapper .se-char-counter') : null;
157
+ navigation ? mapper.set('navigation', navigation) : mapper.delete('navigation');
158
+ charWrapper ? mapper.set('charWrapper', charWrapper) : mapper.delete('charWrapper');
159
+ charCounter ? mapper.set('charCounter', charCounter) : mapper.delete('charCounter');
160
+ }