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,61 +1,52 @@
1
+ import type {} from '../../typedef';
1
2
  /**
2
3
  * @description Create shortcuts desc span.
3
4
  * @param {string} command Command string
4
- * @param {Array<string>} values options.shortcuts[command]
5
- * @param {Element|null} button Command button element
5
+ * @param {Array<string>} values `options.shortcuts[command]`
6
+ * @param {?Element} button Command button element
6
7
  * @param {Map<string, *>} keyMap Map to store shortcut key info
7
- * @param {Array} rc "_reverseCommandArray" option
8
- * @param {Array} reverseKeys Reverse key array
8
+ * @param {Array} rc `_reverseCommandArray` option
9
+ * @param {Set} reverseKeys Reverse key array
10
+ */
11
+ export function CreateShortcuts(command: string, button: Element | null, values: Array<string>, keyMap: Map<string, any>, rc: any[], reverseKeys: Set<any>): void;
12
+ /**
13
+ * @typedef {Object} InitOptionsReturnType
14
+ * @property {Map<string, *>} o - Processed base options (`Map` containing {@link AllBaseOptions_constructor} keys)
15
+ * @property {Object<string, string>} i - Icon set
16
+ * @property {Object<string, string>} l - Language pack
17
+ * @property {?string} v - Initial editor value
18
+ * @property {SunEditor.UI.ButtonList} buttons - Toolbar button list (arrays for groups, strings for single buttons)
19
+ * @property {?SunEditor.UI.ButtonList} subButtons - Sub-toolbar button list
20
+ * @property {?Element} statusbarContainer - Container element for status bar (if specified)
21
+ * @property {Map<string|null, SunEditor.FrameOptions>} frameMap - Map of frame-specific options (frame key => `SunEditor.FrameOptions`)
9
22
  */
10
- export function CreateShortcuts(command: string, button: Element | null, values: Array<string>, keyMap: Map<string, any>, rc: any[], reverseKeys: any[]): void;
11
23
  /**
12
24
  * @description Initialize options
13
- * @param {EditorInitOptions} options Configuration options for the editor.
14
- * @param {Array<{target: Element, key: *, options: EditorFrameOptions}>} editorTargets Target textarea
25
+ * @param {SunEditor.InitOptions} options Configuration options for the editor.
26
+ * @param {Array<{target: Element, key: *, options: SunEditor.InitFrameOptions}>} editorTargets Target textarea
15
27
  * @param {Object<string, *>} plugins Plugins object
16
- * @returns {{o: Map<string, *>, i: Object<string, string>, l: Object<string, string>, v: string, buttons: Array<string[]|string>, subButtons: Array<string[]|string>, statusbarContainer: Element|null, frameMap: Map<*, *>}}
17
- * - o: options
18
- * - i: icons
19
- * - l: lang
20
- * - v: value
21
- * - buttons: Toolbar button list
22
- * - subButtons: Sub-Toolbar button list
23
- * - statusbarContainer: statusbar container
24
- * - frameMap: converted options map
28
+ * @returns {InitOptionsReturnType} Initialized options and configuration
25
29
  */
26
30
  export function InitOptions(
27
- options: EditorInitOptions,
31
+ options: SunEditor.InitOptions,
28
32
  editorTargets: Array<{
29
33
  target: Element;
30
34
  key: any;
31
- options: EditorFrameOptions;
35
+ options: SunEditor.InitFrameOptions;
32
36
  }>,
33
37
  plugins: {
34
38
  [x: string]: any;
35
- }
36
- ): {
37
- o: Map<string, any>;
38
- i: {
39
- [x: string]: string;
40
- };
41
- l: {
42
- [x: string]: string;
43
- };
44
- v: string;
45
- buttons: Array<string[] | string>;
46
- subButtons: Array<string[] | string>;
47
- statusbarContainer: Element | null;
48
- frameMap: Map<any, any>;
49
- };
39
+ },
40
+ ): InitOptionsReturnType;
50
41
  /**
51
42
  * @description Create a context object for the editor frame.
52
- * @param {Map<string, *>} targetOptions - editor.frameOptions
43
+ * @param {SunEditor.FrameOptions} targetOptions - `editor.frameOptions`
53
44
  * @param {HTMLElement} statusbar - statusbar element
54
45
  * @returns {{statusbar: HTMLElement, navigation: HTMLElement, charWrapper: HTMLElement, charCounter: HTMLElement}}
55
46
  */
56
47
  export function CreateStatusbar(
57
- targetOptions: Map<string, any>,
58
- statusbar: HTMLElement
48
+ targetOptions: SunEditor.FrameOptions,
49
+ statusbar: HTMLElement,
59
50
  ): {
60
51
  statusbar: HTMLElement;
61
52
  navigation: HTMLElement;
@@ -64,7 +55,7 @@ export function CreateStatusbar(
64
55
  };
65
56
  /**
66
57
  * @description Update a button state, attributes, and icons
67
- * @param {HTMLElement|null} element Button element
58
+ * @param {?HTMLElement} element Button element
68
59
  * @param {Object<string, *>} plugin Plugin
69
60
  * @param {Object<string, string>} icons Icons
70
61
  * @param {Object<string, string>} lang lang
@@ -79,15 +70,15 @@ export function UpdateButton(
79
70
  },
80
71
  lang: {
81
72
  [x: string]: string;
82
- }
73
+ },
83
74
  ): void;
84
75
  /**
85
76
  * @description Create editor HTML
86
- * @param {Array} buttonList option.buttonList
77
+ * @param {Array} buttonList `option.buttonList`
87
78
  * @param {?Object<string, *>} plugins Plugins
88
- * @param {Map<string, *>} options options
89
- * @param {Object<string, string>} icons icons
90
- * @param {Object<string, string>} lang lang
79
+ * @param {Map<string, *>|SunEditor.Options} options Options
80
+ * @param {Object<string, string>} icons Icons
81
+ * @param {Object<string, string>} lang Lang
91
82
  * @param {boolean} isUpdate Is update
92
83
  * @returns {{element: HTMLElement, pluginCallButtons: Object<string, Array<HTMLElement>>, responsiveButtons: Array<HTMLElement>, buttonTray: HTMLElement, updateButtons: Array<{button: HTMLElement, plugin: *, key: string}>}}}
93
84
  */
@@ -96,14 +87,14 @@ export function CreateToolBar(
96
87
  plugins: {
97
88
  [x: string]: any;
98
89
  } | null,
99
- options: Map<string, any>,
90
+ options: Map<string, any> | SunEditor.Options,
100
91
  icons: {
101
92
  [x: string]: string;
102
93
  },
103
94
  lang: {
104
95
  [x: string]: string;
105
96
  },
106
- isUpdate: boolean
97
+ isUpdate: boolean,
107
98
  ): {
108
99
  element: HTMLElement;
109
100
  pluginCallButtons: {
@@ -117,674 +108,148 @@ export function CreateToolBar(
117
108
  key: string;
118
109
  }>;
119
110
  };
120
- /**
121
- * @typedef {Object} EditorFrameOptions
122
- * @property {string} [value=""] - Initial value for the editor.
123
- * @property {string} [placeholder=""] - Placeholder text.
124
- * @property {Object<string, string>} [editableFrameAttributes={}] - Attributes for the editable frame[.sun-editor-editable]. (e.g. [key]: value)
125
- * @property {string} [width="100%"] - Width for the editor.
126
- * @property {string} [minWidth=""] - Min width for the editor.
127
- * @property {string} [maxWidth=""] - Max width for the editor.
128
- * @property {string} [height="auto"] - Height for the editor.
129
- * @property {string} [minHeight=""] - Min height for the editor.
130
- * @property {string} [maxHeight=""] - Max height for the editor.
131
- * @property {string} [editorStyle=""] - Style string of the top frame of the editor. (e.g. "border: 1px solid #ccc;").
132
- * @property {boolean} [iframe=false] - Content will be placed in an iframe and isolated from the rest of the page.
133
- * @property {boolean} [iframe_fullPage=false] - Allows the usage of HTML, HEAD, BODY tags and DOCTYPE declaration on the "iframe".
134
- * @property {Object<string, string>} [iframe_attributes={}] - Attributes of the "iframe". (e.g. {'scrolling': 'no'})
135
- * @property {string} [iframe_cssFileName="suneditor"] - Name or Array of the CSS file to apply inside the iframe.
136
- * - You can also use regular expressions.
137
- * - Applied by searching by filename in the link tag of document,
138
- * - or put the URL value (".css" can be omitted).
139
- * @property {boolean} [statusbar=true] - Enables the status bar.
140
- * @property {boolean} [statusbar_showPathLabel=true] - Displays the current node structure to status bar.
141
- * @property {boolean} [statusbar_resizeEnable=true] - Enables resize function of bottom status bar
142
- * @property {boolean} [charCounter=false] - Shows the number of characters in the editor.
143
- * - If the maxCharCount option has a value, it becomes true.
144
- * @property {number} [charCounter_max] - The maximum number of characters allowed to be inserted into the editor.
145
- * @property {string} [charCounter_label] - Text to be displayed in the "charCounter" area of the bottom bar. (e.g. "Characters : 20/200")
146
- * @property {"char"|"byte"|"byte-html"} [charCounter_type="char"] - Defines the calculation method of the "charCounter" option.
147
- * - 'char': Characters length.
148
- * - 'byte': Binary data size of characters.
149
- * - 'byte-html': Binary data size of the full HTML string.
150
- */
151
- /**
152
- * @typedef {Object} EditorBaseOptions
153
- * @property {Object<string, *>|Array<Object<string, *>>} [plugins] - Plugin configuration.
154
- * @property {Array<string>} [excludedPlugins] - Plugin configuration.
155
- * @property {Array<string[]|string>} [buttonList] - List of toolbar buttons, grouped by sub-arrays.
156
- * @property {boolean} [v2Migration=false] - Enables migration mode for SunEditor v2.
157
- * @property {boolean|{tagFilter: boolean, formatFilter: boolean, classFilter: boolean, styleNodeFilter: boolean, attrFilter: boolean, styleFilter: boolean}} [strictMode=true] - Enables strict filtering of tags, attributes, and styles.
158
- * @property {"classic"|"inline"|"balloon"|"balloon-always"} [mode="classic"] - Toolbar mode: "classic", "inline", "balloon", "balloon-always".
159
- * @property {string} [type=""] - Editor type: "document:header,page".
160
- * @property {string} [theme=""] - Editor theme.
161
- * @property {Object<string, string>} [lang] - Language configuration.
162
- * @property {Array<string>} [fontSizeUnits=["px", "pt", "em", "rem"]] - Allowed font size units.
163
- * @property {string} [allowedClassName] - Allowed class names.
164
- * @property {boolean} [closeModalOutsideClick=false] - Closes modals when clicking outside.
165
- * @property {boolean} [copyFormatKeepOn=false] - Keeps the format of the copied content.
166
- * @property {boolean} [syncTabIndent=true] - Synchronizes tab indent with spaces.
167
- * @property {boolean} [tabDisable=false] - Disables tab key input.
168
- * @property {boolean} [autoLinkify] - Automatically converts URLs into hyperlinks. ("Link" plugin required)
169
- * @property {Array<string>} [autoStyleify=["bold", "underline", "italic", "strike"]] - Styles applied automatically on text input.
170
- * @property {Object<string, string|number>} [scrollToOptions={behavior: "auto", block: "nearest"}] - Configuration for scroll behavior when navigating editor content.
171
- * @property {Object<string, string|number>} [componentScrollToOptions={behavior: "smooth", block: "center"}] - Configuration for scroll behavior when navigating components.
172
- * @property {"repeat"|"always"|"none"} [retainStyleMode="repeat"] - This option determines how inline elements (such as <span>, <strong>, etc.) are handled when deleting text.
173
- * - "repeat": Inline styles are retained unless the backspace key is repeatedly pressed. If the user continuously presses backspace, the styles will eventually be removed.
174
- * - "none": Inline styles are not retained at all. When deleting text, the associated inline elements are immediately removed along with it.
175
- * - "always": Inline styles persist indefinitely unless explicitly removed. Even if all text inside an inline element is deleted, the element itself remains until manually removed.
176
- * @property {Object<string, boolean>} [allowedExtraTags={script: false, style: false, meta: false, link: false, "[a-z]+:[a-z]+": false}] - Specifies extra allowed or disallowed tags.
177
- * @property {Object<string, (...args: *) => *>} [events={}] - Custom event handlers.
178
- * @property {string} [__textStyleTags="strong|span|font|b|var|i|em|u|ins|s|strike|del|sub|sup|mark|a|label|code|summary"] - The basic tags that serves as the base for "textStyleTags"
179
- * @property {string} [textStyleTags="strong|span|font|b|var|i|em|u|ins|s|strike|del|sub|sup|mark|a|label|code|summary"] - Additional text style tags.
180
- * @property {Object<string, string>} [convertTextTags={bold: "strong", underline: "u", italic: "em", strike: "del", subscript: "sub", superscript: "sup"}] - Maps text styles to specific HTML tags.
181
- * @property {string} [allUsedStyles] - Specifies additional styles to the list of allowed styles. Delimiter: "|" (e.g. "color|background-color").
182
- * @property {Object<string, string>} [__tagStyles={
183
- 'table|th|td': 'border|border-[a-z]+|color|background-color|text-align|float|font-weight|text-decoration|font-style|vertical-align|text-align',
184
- 'table|td': 'width',
185
- tr: 'height',
186
- col: 'width',
187
- 'ol|ul': 'list-style-type'
188
- }] - The basic tags that serves as the base for "tagStyles"
189
- * @property {Object<string, string>} [tagStyles={}] - Specifies allowed styles for HTML tags.
190
- * @property {string} [spanStyles="font-family|font-size|color|background-color"] - Specifies allowed styles for the "span" tag.
191
- * @property {string} [lineStyles="text-align|margin-left|margin-right|line-height"] - Specifies allowed styles for the "line" element (p..).
192
- * @property {string} [textDirection="ltr"] - Text direction: "ltr" or "rtl".
193
- * @property {Array<string>} [reverseButtons=['indent-outdent']] - An array of command pairs whose shortcut icons should be opposite each other, depending on the "textDirection" mode.
194
- * @property {number} [historyStackDelayTime=400] - Delay time for history stack updates (ms).
195
- * @property {string} [lineAttrReset=""] - Line properties that should be reset when changing lines (e.g. "id|name").
196
- * @property {string} [printClass=""] - Class name for printing.
197
- * @property {string} [defaultLine="p"] - Default line element when inserting new lines.
198
- * @property {"line"|"br"} [defaultLineBreakFormat="line"] - Specifies the default line break format.
199
- * - [Recommended] "line" : is a line break that is divided into general tags.
200
- * - [Not recommended] "br" : Line breaks are treated as <br> on the same line. (like shift+enter)
201
- * - Line breaks are handled as <br> within "line".
202
- * - You can create a new "line" by entering a line break twice in a row.
203
- * - Formats that include "line", such as "Quote", still operate on a "line" basis.
204
- * - ● suneditor processes work in "line" units.
205
- * - ● When set to "br", performance may decrease when editing a lot of data.
206
- * @property {Array<string>} [scopeSelectionTags=["td", "table", "li", "ol", "ul", "pre", "figcaption", "blockquote", "dl", "dt", "dd"]] - Tags treated as whole units when selecting all content.
207
- * @property {string} [__defaultElementWhitelist="br|div"] - Default allowed HTML elements. The default values are maintained.
208
- * @property {string} [elementWhitelist=""] - Allowed HTML elements. Delimiter: "|" (e.g. "p|div", "*").
209
- * @property {string} [elementBlacklist=""] - Disallowed HTML elements. Delimiter: "|" (e.g. "script|style").
210
- * @property {string} [__defaultAttributeWhitelist] - Allowed attributes. Delimiter: "|" (e.g. "href|target").
211
- * @property {Object<string, string>} [attributeWhitelist=""] - Allowed attributes. (e.g. {a: "href|target", img: "src|alt"}).
212
- * @property {Object<string, string>} [attributeBlacklist=""] - Disallowed attributes. (e.g. {a: "href|target", img: "src|alt"}).
213
- * @property {string} [__defaultFormatLine="P|DIV|H[1-6]|LI|TH|TD|DETAILS"] - Overrides the editor's default "line" element.
214
- * @property {string} [formatLine="P|DIV|H[1-6]|LI|TH|TD|DETAILS"] - Specifies the editor's "line" elements.
215
- * - (P, DIV, H[1-6], PRE, LI | class="__se__format__line_xxx")
216
- * - "line" element also contain "brLine" element
217
- * @property {string} [__defaultFormatBrLine="PRE"] - Overrides the editor's default "brLine" element.
218
- * @property {string} [formatBrLine="PRE"] - Specifies the editor's "brLine" elements. (e.g. "PRE").
219
- * - (PRE | class="__se__format__br_line_xxx")
220
- * - "brLine" elements is included in the "line" element.
221
- * - "brLine" elements's line break is "BR" tag.
222
- * ※ Entering the Enter key in the space on the last line ends "brLine" and appends "line".
223
- * @property {string} [__defaultFormatClosureBrLine=""] - Overrides the editor's default "closureBrLine" element.
224
- * @property {string} [formatClosureBrLine=""] - Specifies the editor's "closureBrLine" elements.
225
- * - (class="__se__format__br_line__closure_xxx")
226
- * - "closureBrLine" elements is included in the "brLine".
227
- * - "closureBrLine" elements's line break is "BR" tag.
228
- * - ※ You cannot exit this format with the Enter key or Backspace key.
229
- * - ※ Use it only in special cases. ([ex] format of table cells)
230
- * @property {string} [__defaultFormatBlock="BLOCKQUOTE|OL|UL|FIGCAPTION|TABLE|THEAD|TBODY|TR|CAPTION|DETAILS"] - Overrides the editor's default "block" element.
231
- * @property {string} [formatBlock="BLOCKQUOTE|OL|UL|FIGCAPTION|TABLE|THEAD|TBODY|TR|CAPTION|DETAILS"] - Specifies the editor's "block" elements.
232
- * - (BLOCKQUOTE, OL, UL, FIGCAPTION, TABLE, THEAD, TBODY, TR, TH, TD | class="__se__format__block_xxx")
233
- * - "block" is wrap the "line" and "component"
234
- * @property {string} [__defaultFormatClosureBlock="TH|TD"] - Overrides the editor's default "closureBlock" element.
235
- * @property {string} [formatClosureBlock="TH|TD"] - Specifies the editor's "closureBlock" elements.
236
- * - (TH, TD | class="__se__format__block_closure_xxx")
237
- * - "closureBlock" elements is included in the "block".
238
- * - "closureBlock" element is wrap the "line" and "component"
239
- * - ※ You cannot exit this format with the Enter key or Backspace key.
240
- * - ※ Use it only in special cases. ([ex] format of table cells)
241
- * @property {string} [allowedEmptyTags=".se-component, pre, blockquote, hr, li, table, img, iframe, video, audio, canvas, details"] - Allowed empty tags.
242
- * @property {number|string} [toolbar_width="auto"] - Toolbar width.
243
- * @property {Element|string} [toolbar_container] - Container element for the toolbar.
244
- * @property {number} [toolbar_sticky=0] - Enables sticky toolbar with optional offset.
245
- * @property {boolean} [toolbar_hide=false] - Hides toolbar initially.
246
- * @property {Object} [subToolbar] - Sub-toolbar configuration.
247
- * @property {Array<Array<string>>} [subToolbar.buttonList] - List of Sub-toolbar buttons, grouped by sub-arrays.
248
- * @property {"balloon"|"balloon-always"} [subToolbar.mode="balloon"] - Sub-toolbar mode: "balloon", "balloon-always".
249
- * @property {number|string} [subToolbar.width="auto"] - Sub-toolbar width.
250
- * @property {Element|string} [statusbar_container] - Container element for the status bar.
251
- * @property {boolean} [shortcutsHint=true] - Displays shortcut hints in tooltips.
252
- * @property {boolean} [shortcutsDisable=false] - Disables keyboard shortcuts.
253
- * @property {Object<string, Array<string>>} [shortcuts] - Custom keyboard shortcuts.
254
- * @property {number} [fullScreenOffset=0] - Offset applied when entering fullscreen mode.
255
- * @property {string} [previewTemplate] - Custom template for preview mode.
256
- * @property {string} [printTemplate] - Custom template for print mode.
257
- * @property {boolean} [componentAutoSelect=false] - Enables automatic selection of inserted components.
258
- * @property {string} [defaultUrlProtocol] - Default URL protocol for links.
259
- * @property {Object<"copy", number>} [toastMessageTime] - {"copy": 1500} - Duration for displaying toast messages.
260
- * @property {Object<string, string>} [icons] - Overrides the default icons.
261
- * @property {string} [freeCodeViewMode=false] - Enables free code view mode.
262
- * @property {boolean} [__lineFormatFilter=true] - Line format filter configuration.
263
- * @property {boolean} [__pluginRetainFilter=true] - Plugin retain filter configuration.
264
- * @property {Array<string>} [__listCommonStyle=["fontSize", "color", "fontFamily", "fontWeight", "fontStyle"]] - Defines the list of styles that are applied directly to the `<li>` element
265
- * - when a text style is applied to the entire list item.
266
- * - For example, when changing the font size or color of a list item (`<li>`),
267
- * - these styles will be applied to the `<li>` tag instead of wrapping the content inside additional tags.
268
- * @property {Object<string, *>} [externalLibs] - External libraries like CodeMirror or MathJax.
269
- *
270
- * @property {Object<string, *>} [Dynamic_pluginOptions] - Dynamic plugin options, where the key is the plugin name and the value is its configuration.
271
- */
272
- /**
273
- * @typedef {EditorBaseOptions & EditorFrameOptions} EditorInitOptions
274
- */
275
- /** ------------- [OPTIONS FRAG] ------------- */
276
- /**
277
- * @description For all EditorInitOptions keys, only boolean | null values are allowed.
278
- * - 'fixed' → Immutable / null → Resettable.
279
- * @type {Partial<Record<keyof EditorInitOptions, "fixed" | true>>}
280
- */
281
- export const OPTION_FRAME_FIXED_FLAG: Partial<Record<keyof EditorInitOptions, 'fixed' | true>>;
282
- /**
283
- * @description For all EditorInitOptions keys, only boolean | null values are allowed.
284
- * - 'fixed' → Immutable / null → Resettable.
285
- * @type {Partial<Record<keyof EditorInitOptions, "fixed" | true>>}
286
- */
287
- export const OPTION_FIXED_FLAG: Partial<Record<keyof EditorInitOptions, 'fixed' | true>>;
288
111
  export default Constructor;
289
- export type EditorFrameOptions = {
290
- /**
291
- * - Initial value for the editor.
292
- */
293
- value?: string;
294
- /**
295
- * - Placeholder text.
296
- */
297
- placeholder?: string;
298
- /**
299
- * - Attributes for the editable frame[.sun-editor-editable]. (e.g. [key]: value)
300
- */
301
- editableFrameAttributes?: {
302
- [x: string]: string;
303
- };
304
- /**
305
- * - Width for the editor.
306
- */
307
- width?: string;
308
- /**
309
- * - Min width for the editor.
310
- */
311
- minWidth?: string;
312
- /**
313
- * - Max width for the editor.
314
- */
315
- maxWidth?: string;
316
- /**
317
- * - Height for the editor.
318
- */
319
- height?: string;
320
- /**
321
- * - Min height for the editor.
322
- */
323
- minHeight?: string;
324
- /**
325
- * - Max height for the editor.
326
- */
327
- maxHeight?: string;
328
- /**
329
- * - Style string of the top frame of the editor. (e.g. "border: 1px solid #ccc;").
330
- */
331
- editorStyle?: string;
332
- /**
333
- * - Content will be placed in an iframe and isolated from the rest of the page.
334
- */
335
- iframe?: boolean;
336
- /**
337
- * - Allows the usage of HTML, HEAD, BODY tags and DOCTYPE declaration on the "iframe".
338
- */
339
- iframe_fullPage?: boolean;
340
- /**
341
- * - Attributes of the "iframe". (e.g. {'scrolling': 'no'})
342
- */
343
- iframe_attributes?: {
344
- [x: string]: string;
345
- };
112
+ export type AllBaseOptions_constructor = import('../schema/options').AllBaseOptions;
113
+ export type ConstructorReturnType = {
346
114
  /**
347
- * - Name or Array of the CSS file to apply inside the iframe.
348
- * - You can also use regular expressions.
349
- * - Applied by searching by filename in the link tag of document,
350
- * - or put the URL value (".css" can be omitted).
115
+ * - Editor context object
351
116
  */
352
- iframe_cssFileName?: string;
117
+ context: SunEditor.Context;
353
118
  /**
354
- * - Enables the status bar.
119
+ * - Carrier wrapper element
355
120
  */
356
- statusbar?: boolean;
121
+ carrierWrapper: HTMLElement;
357
122
  /**
358
- * - Displays the current node structure to status bar.
123
+ * - Processed editor options (`Map`)
359
124
  */
360
- statusbar_showPathLabel?: boolean;
125
+ options: Map<string, any>;
361
126
  /**
362
- * - Enables resize function of bottom status bar
127
+ * - Loaded plugins
363
128
  */
364
- statusbar_resizeEnable?: boolean;
365
- /**
366
- * - Shows the number of characters in the editor.
367
- * - If the maxCharCount option has a value, it becomes true.
368
- */
369
- charCounter?: boolean;
370
- /**
371
- * - The maximum number of characters allowed to be inserted into the editor.
372
- */
373
- charCounter_max?: number;
374
- /**
375
- * - Text to be displayed in the "charCounter" area of the bottom bar. (e.g. "Characters : 20/200")
376
- */
377
- charCounter_label?: string;
378
- /**
379
- * - Defines the calculation method of the "charCounter" option.
380
- * - 'char': Characters length.
381
- * - 'byte': Binary data size of characters.
382
- * - 'byte-html': Binary data size of the full HTML string.
383
- */
384
- charCounter_type?: 'char' | 'byte' | 'byte-html';
385
- };
386
- export type EditorBaseOptions = {
387
- /**
388
- * - Plugin configuration.
389
- */
390
- plugins?:
391
- | {
392
- [x: string]: any;
393
- }
394
- | Array<{
395
- [x: string]: any;
396
- }>;
397
- /**
398
- * - Plugin configuration.
399
- */
400
- excludedPlugins?: Array<string>;
401
- /**
402
- * - List of toolbar buttons, grouped by sub-arrays.
403
- */
404
- buttonList?: Array<string[] | string>;
405
- /**
406
- * - Enables migration mode for SunEditor v2.
407
- */
408
- v2Migration?: boolean;
409
- /**
410
- * - Enables strict filtering of tags, attributes, and styles.
411
- */
412
- strictMode?:
413
- | boolean
414
- | {
415
- tagFilter: boolean;
416
- formatFilter: boolean;
417
- classFilter: boolean;
418
- styleNodeFilter: boolean;
419
- attrFilter: boolean;
420
- styleFilter: boolean;
421
- };
422
- /**
423
- * - Toolbar mode: "classic", "inline", "balloon", "balloon-always".
424
- */
425
- mode?: 'classic' | 'inline' | 'balloon' | 'balloon-always';
426
- /**
427
- * - Editor type: "document:header,page".
428
- */
429
- type?: string;
430
- /**
431
- * - Editor theme.
432
- */
433
- theme?: string;
434
- /**
435
- * - Language configuration.
436
- */
437
- lang?: {
438
- [x: string]: string;
439
- };
440
- /**
441
- * - Allowed font size units.
442
- */
443
- fontSizeUnits?: Array<string>;
444
- /**
445
- * - Allowed class names.
446
- */
447
- allowedClassName?: string;
448
- /**
449
- * - Closes modals when clicking outside.
450
- */
451
- closeModalOutsideClick?: boolean;
452
- /**
453
- * - Keeps the format of the copied content.
454
- */
455
- copyFormatKeepOn?: boolean;
456
- /**
457
- * - Synchronizes tab indent with spaces.
458
- */
459
- syncTabIndent?: boolean;
460
- /**
461
- * - Disables tab key input.
462
- */
463
- tabDisable?: boolean;
464
- /**
465
- * - Automatically converts URLs into hyperlinks. ("Link" plugin required)
466
- */
467
- autoLinkify?: boolean;
468
- /**
469
- * - Styles applied automatically on text input.
470
- */
471
- autoStyleify?: Array<string>;
472
- /**
473
- * - Configuration for scroll behavior when navigating editor content.
474
- */
475
- scrollToOptions?: {
476
- [x: string]: string | number;
477
- };
478
- /**
479
- * - Configuration for scroll behavior when navigating components.
480
- */
481
- componentScrollToOptions?: {
482
- [x: string]: string | number;
483
- };
484
- /**
485
- * - This option determines how inline elements (such as <span>, <strong>, etc.) are handled when deleting text.
486
- * - "repeat": Inline styles are retained unless the backspace key is repeatedly pressed. If the user continuously presses backspace, the styles will eventually be removed.
487
- * - "none": Inline styles are not retained at all. When deleting text, the associated inline elements are immediately removed along with it.
488
- * - "always": Inline styles persist indefinitely unless explicitly removed. Even if all text inside an inline element is deleted, the element itself remains until manually removed.
489
- */
490
- retainStyleMode?: 'repeat' | 'always' | 'none';
491
- /**
492
- * - Specifies extra allowed or disallowed tags.
493
- */
494
- allowedExtraTags?: {
495
- [x: string]: boolean;
496
- };
497
- /**
498
- * - Custom event handlers.
499
- */
500
- events?: {
501
- [x: string]: (...args: any) => any;
502
- };
503
- /**
504
- * - The basic tags that serves as the base for "textStyleTags"
505
- */
506
- __textStyleTags?: string;
507
- /**
508
- * - Additional text style tags.
509
- */
510
- textStyleTags?: string;
511
- /**
512
- * - Maps text styles to specific HTML tags.
513
- */
514
- convertTextTags?: {
515
- [x: string]: string;
129
+ plugins: {
130
+ [x: string]: any;
516
131
  };
517
132
  /**
518
- * - Specifies additional styles to the list of allowed styles. Delimiter: "|" (e.g. "color|background-color").
519
- */
520
- allUsedStyles?: string;
521
- /**
522
- * - The basic tags that serves as the base for "tagStyles"
133
+ * - Icon set
523
134
  */
524
- __tagStyles?: {
135
+ icons: {
525
136
  [x: string]: string;
526
137
  };
527
138
  /**
528
- * - Specifies allowed styles for HTML tags.
139
+ * - Language pack
529
140
  */
530
- tagStyles?: {
141
+ lang: {
531
142
  [x: string]: string;
532
143
  };
533
144
  /**
534
- * - Specifies allowed styles for the "span" tag.
535
- */
536
- spanStyles?: string;
537
- /**
538
- * - Specifies allowed styles for the "line" element (p..).
539
- */
540
- lineStyles?: string;
541
- /**
542
- * - Text direction: "ltr" or "rtl".
543
- */
544
- textDirection?: string;
545
- /**
546
- * - An array of command pairs whose shortcut icons should be opposite each other, depending on the "textDirection" mode.
547
- */
548
- reverseButtons?: Array<string>;
549
- /**
550
- * - Delay time for history stack updates (ms).
145
+ * - Initial editor value
551
146
  */
552
- historyStackDelayTime?: number;
147
+ value: string | null;
553
148
  /**
554
- * - Line properties that should be reset when changing lines (e.g. "id|name").
149
+ * - Root frame ID
555
150
  */
556
- lineAttrReset?: string;
151
+ rootId: string | null;
557
152
  /**
558
- * - Class name for printing.
153
+ * - Array of frame keys
559
154
  */
560
- printClass?: string;
155
+ rootKeys: Array<string | null>;
561
156
  /**
562
- * - Default line element when inserting new lines.
157
+ * - Map of frame contexts
563
158
  */
564
- defaultLine?: string;
159
+ frameRoots: Map<string | null, ReturnType<typeof CreateFrameContext>>;
565
160
  /**
566
- * - Specifies the default line break format.
567
- * - [Recommended] "line" : is a line break that is divided into general tags.
568
- * - [Not recommended] "br" : Line breaks are treated as <br> on the same line. (like shift+enter)
569
- * - Line breaks are handled as <br> within "line".
570
- * - You can create a new "line" by entering a line break twice in a row.
571
- * - Formats that include "line", such as "Quote", still operate on a "line" basis.
572
- * - ● suneditor processes work in "line" units.
573
- * - ● When set to "br", performance may decrease when editing a lot of data.
161
+ * - Plugin toolbar buttons
574
162
  */
575
- defaultLineBreakFormat?: 'line' | 'br';
576
- /**
577
- * - Tags treated as whole units when selecting all content.
578
- */
579
- scopeSelectionTags?: Array<string>;
580
- /**
581
- * - Default allowed HTML elements. The default values are maintained.
582
- */
583
- __defaultElementWhitelist?: string;
584
- /**
585
- * - Allowed HTML elements. Delimiter: "|" (e.g. "p|div", "*").
586
- */
587
- elementWhitelist?: string;
588
- /**
589
- * - Disallowed HTML elements. Delimiter: "|" (e.g. "script|style").
590
- */
591
- elementBlacklist?: string;
592
- /**
593
- * - Allowed attributes. Delimiter: "|" (e.g. "href|target").
594
- */
595
- __defaultAttributeWhitelist?: string;
596
- /**
597
- * - Allowed attributes. (e.g. {a: "href|target", img: "src|alt"}).
598
- */
599
- attributeWhitelist?: {
600
- [x: string]: string;
601
- };
602
- /**
603
- * - Disallowed attributes. (e.g. {a: "href|target", img: "src|alt"}).
604
- */
605
- attributeBlacklist?: {
606
- [x: string]: string;
163
+ pluginCallButtons: {
164
+ [x: string]: HTMLElement[];
607
165
  };
608
166
  /**
609
- * - Overrides the editor's default "line" element.
610
- */
611
- __defaultFormatLine?: string;
612
- /**
613
- * - Specifies the editor's "line" elements.
614
- * - (P, DIV, H[1-6], PRE, LI | class="__se__format__line_xxx")
615
- * - "line" element also contain "brLine" element
616
- */
617
- formatLine?: string;
618
- /**
619
- * - Overrides the editor's default "brLine" element.
620
- */
621
- __defaultFormatBrLine?: string;
622
- /**
623
- * - Specifies the editor's "brLine" elements. (e.g. "PRE").
624
- * - (PRE | class="__se__format__br_line_xxx")
625
- * - "brLine" elements is included in the "line" element.
626
- * - "brLine" elements's line break is "BR" tag.
627
- * ※ Entering the Enter key in the space on the last line ends "brLine" and appends "line".
628
- */
629
- formatBrLine?: string;
630
- /**
631
- * - Overrides the editor's default "closureBrLine" element.
632
- */
633
- __defaultFormatClosureBrLine?: string;
634
- /**
635
- * - Specifies the editor's "closureBrLine" elements.
636
- * - (class="__se__format__br_line__closure_xxx")
637
- * - "closureBrLine" elements is included in the "brLine".
638
- * - "closureBrLine" elements's line break is "BR" tag.
639
- * - ※ You cannot exit this format with the Enter key or Backspace key.
640
- * - ※ Use it only in special cases. ([ex] format of table cells)
641
- */
642
- formatClosureBrLine?: string;
643
- /**
644
- * - Overrides the editor's default "block" element.
645
- */
646
- __defaultFormatBlock?: string;
647
- /**
648
- * - Specifies the editor's "block" elements.
649
- * - (BLOCKQUOTE, OL, UL, FIGCAPTION, TABLE, THEAD, TBODY, TR, TH, TD | class="__se__format__block_xxx")
650
- * - "block" is wrap the "line" and "component"
651
- */
652
- formatBlock?: string;
653
- /**
654
- * - Overrides the editor's default "closureBlock" element.
655
- */
656
- __defaultFormatClosureBlock?: string;
657
- /**
658
- * - Specifies the editor's "closureBlock" elements.
659
- * - (TH, TD | class="__se__format__block_closure_xxx")
660
- * - "closureBlock" elements is included in the "block".
661
- * - "closureBlock" element is wrap the "line" and "component"
662
- * - ※ You cannot exit this format with the Enter key or Backspace key.
663
- * - ※ Use it only in special cases. ([ex] format of table cells)
664
- */
665
- formatClosureBlock?: string;
666
- /**
667
- * - Allowed empty tags.
668
- */
669
- allowedEmptyTags?: string;
670
- /**
671
- * - Toolbar width.
672
- */
673
- toolbar_width?: number | string;
674
- /**
675
- * - Container element for the toolbar.
676
- */
677
- toolbar_container?: Element | string;
678
- /**
679
- * - Enables sticky toolbar with optional offset.
680
- */
681
- toolbar_sticky?: number;
682
- /**
683
- * - Hides toolbar initially.
684
- */
685
- toolbar_hide?: boolean;
686
- /**
687
- * - Sub-toolbar configuration.
167
+ * - Responsive toolbar buttons
688
168
  */
689
- subToolbar?: {
690
- buttonList?: Array<Array<string>>;
691
- mode?: 'balloon' | 'balloon-always';
692
- width?: number | string;
693
- };
169
+ responsiveButtons: Array<HTMLElement>;
694
170
  /**
695
- * - Container element for the status bar.
171
+ * - Sub-toolbar plugin buttons
696
172
  */
697
- statusbar_container?: Element | string;
173
+ pluginCallButtons_sub:
174
+ | {
175
+ [x: string]: Array<HTMLElement>;
176
+ }
177
+ | [];
698
178
  /**
699
- * - Displays shortcut hints in tooltips.
179
+ * - Sub-toolbar responsive buttons
700
180
  */
701
- shortcutsHint?: boolean;
181
+ responsiveButtons_sub: Array<HTMLElement>;
182
+ };
183
+ export type InitOptionsReturnType = {
702
184
  /**
703
- * - Disables keyboard shortcuts.
185
+ * - Processed base options (`Map` containing {@link AllBaseOptions_constructor} keys)
704
186
  */
705
- shortcutsDisable?: boolean;
187
+ o: Map<string, any>;
706
188
  /**
707
- * - Custom keyboard shortcuts.
189
+ * - Icon set
708
190
  */
709
- shortcuts?: {
710
- [x: string]: string[];
191
+ i: {
192
+ [x: string]: string;
711
193
  };
712
194
  /**
713
- * - Offset applied when entering fullscreen mode.
714
- */
715
- fullScreenOffset?: number;
716
- /**
717
- * - Custom template for preview mode.
718
- */
719
- previewTemplate?: string;
720
- /**
721
- * - Custom template for print mode.
722
- */
723
- printTemplate?: string;
724
- /**
725
- * - Enables automatic selection of inserted components.
195
+ * - Language pack
726
196
  */
727
- componentAutoSelect?: boolean;
728
- /**
729
- * - Default URL protocol for links.
730
- */
731
- defaultUrlProtocol?: string;
732
- /**
733
- * - {"copy": 1500} - Duration for displaying toast messages.
734
- */
735
- toastMessageTime?: any;
736
- /**
737
- * - Overrides the default icons.
738
- */
739
- icons?: {
197
+ l: {
740
198
  [x: string]: string;
741
199
  };
742
200
  /**
743
- * - Enables free code view mode.
201
+ * - Initial editor value
744
202
  */
745
- freeCodeViewMode?: string;
203
+ v: string | null;
746
204
  /**
747
- * - Line format filter configuration.
205
+ * - Toolbar button list (arrays for groups, strings for single buttons)
748
206
  */
749
- __lineFormatFilter?: boolean;
207
+ buttons: SunEditor.UI.ButtonList;
750
208
  /**
751
- * - Plugin retain filter configuration.
209
+ * - Sub-toolbar button list
752
210
  */
753
- __pluginRetainFilter?: boolean;
211
+ subButtons: SunEditor.UI.ButtonList | null;
754
212
  /**
755
- * - Defines the list of styles that are applied directly to the `<li>` element
756
- * - when a text style is applied to the entire list item.
757
- * - For example, when changing the font size or color of a list item (`<li>`),
758
- * - these styles will be applied to the `<li>` tag instead of wrapping the content inside additional tags.
213
+ * - Container element for status bar (if specified)
759
214
  */
760
- __listCommonStyle?: Array<string>;
761
- /**
762
- * - External libraries like CodeMirror or MathJax.
763
- */
764
- externalLibs?: {
765
- [x: string]: any;
766
- };
215
+ statusbarContainer: Element | null;
767
216
  /**
768
- * - Dynamic plugin options, where the key is the plugin name and the value is its configuration.
217
+ * - Map of frame-specific options (frame key => `SunEditor.FrameOptions`)
769
218
  */
770
- Dynamic_pluginOptions?: {
771
- [x: string]: any;
772
- };
219
+ frameMap: Map<string | null, SunEditor.FrameOptions>;
773
220
  };
774
- export type EditorInitOptions = EditorBaseOptions & EditorFrameOptions;
221
+ /**
222
+ * @typedef {import('../schema/options').AllBaseOptions} AllBaseOptions_constructor
223
+ */
224
+ /**
225
+ * @typedef {Object} ConstructorReturnType
226
+ * @property {SunEditor.Context} context - Editor context object
227
+ * @property {HTMLElement} carrierWrapper - Carrier wrapper element
228
+ * @property {Map<string, *>} options - Processed editor options (`Map`)
229
+ * @property {Object<string, *>} plugins - Loaded plugins
230
+ * @property {Object<string, string>} icons - Icon set
231
+ * @property {Object<string, string>} lang - Language pack
232
+ * @property {?string} value - Initial editor value
233
+ * @property {?string} rootId - Root frame ID
234
+ * @property {Array<string|null>} rootKeys - Array of frame keys
235
+ * @property {Map<string|null, ReturnType<import('../schema/frameContext').CreateFrameContext>>} frameRoots - Map of frame contexts
236
+ * @property {Object<string, Array<HTMLElement>>} pluginCallButtons - Plugin toolbar buttons
237
+ * @property {Array<HTMLElement>} responsiveButtons - Responsive toolbar buttons
238
+ * @property {Object<string, Array<HTMLElement>>|[]} pluginCallButtons_sub - Sub-toolbar plugin buttons
239
+ * @property {Array<HTMLElement>} responsiveButtons_sub - Sub-toolbar responsive buttons
240
+ */
775
241
  /**
776
242
  * @description Creates a new SunEditor instance with specified options.
777
- * @param {Array<{target: Element, key: *, options: EditorFrameOptions}>} editorTargets - Target element or multi-root object.
778
- * @param {EditorInitOptions} options - Configuration options for the editor.
779
- * @returns {Object<string, *>} - SunEditor instance with context, options, and DOM elements.
243
+ * @param {Array<{target: Element, key: *, options: SunEditor.InitFrameOptions}>} editorTargets - Target element or multi-root object.
244
+ * @param {SunEditor.InitOptions} options - Configuration options for the editor.
245
+ * @returns {ConstructorReturnType} - SunEditor instance with context, options, and DOM elements.
780
246
  */
781
247
  declare function Constructor(
782
248
  editorTargets: Array<{
783
249
  target: Element;
784
250
  key: any;
785
- options: EditorFrameOptions;
251
+ options: SunEditor.InitFrameOptions;
786
252
  }>,
787
- options: EditorInitOptions
788
- ): {
789
- [x: string]: any;
790
- };
253
+ options: SunEditor.InitOptions,
254
+ ): ConstructorReturnType;
255
+ import { CreateFrameContext } from '../schema/frameContext';