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,11 +1,12 @@
1
+ import type {} from '../typedef';
1
2
  /**
2
3
  * @description Write the content to the clipboard
3
- * - Iframe is replaced with a placeholder : <div data-se-iframe-holder-src="iframe.src">[iframe: iframe.src]</div>
4
- * - "iframe placeholder" is re-rendered in html.clean when pasted into the editor.
4
+ * - Iframe is replaced with a placeholder : `<div data-se-iframe-holder-src="iframe.src">[iframe: iframe.src]</div>`
5
+ * - `iframe placeholder` is re-rendered in `html.clean` when pasted into the editor.
5
6
  * @param {Element|Text|string} content Content to be copied to the clipboard
6
- * @returns {Promise<void>}
7
+ * @returns {Promise<void|false>} If it fails, it returns `false`.
7
8
  */
8
- export function write(content: Element | Text | string): Promise<void>;
9
+ export function write(content: Element | Text | string): Promise<void | false>;
9
10
  declare namespace _default {
10
11
  export { write };
11
12
  }
@@ -1,7 +1,13 @@
1
+ import type {} from '../typedef';
1
2
  /**
2
3
  * @description Parses an HTML string into a DOM tree, then recursively traverses the nodes to convert them into a structured JSON representation.
3
- * -Each element includes its tag name, attributes, and children.
4
- * -Text nodes are represented as { type: 'text', content: '...' }.
4
+ * - Each element includes its tag name, attributes, and children.
5
+ * - Text nodes are represented as `{ type: 'text', content: '...' }`.
6
+ * @example
7
+ * const json = converter.htmlToJson('<p class="txt">Hello</p>');
8
+ * // { type: 'element', tag: 'p', attributes: { class: 'txt' }, children: [
9
+ * // { type: 'text', content: 'Hello' }
10
+ * // ]}
5
11
  * @param {string} content HTML string
6
12
  * @returns {Object<string, *>} JSON data
7
13
  */
@@ -10,9 +16,15 @@ export function htmlToJson(content: string): {
10
16
  };
11
17
  /**
12
18
  * @description Takes a JSON structure representing HTML elements and recursively serializes it into a valid HTML string.
13
- * -It rebuilds each tag with attributes and inner content.
19
+ * - It rebuilds each tag with attributes and inner content.
14
20
  * Text content and attributes are safely escaped to prevent parsing issues or XSS.
15
21
  * Useful for restoring dynamic HTML from a data format.
22
+ * @example
23
+ * const html = converter.jsonToHtml({
24
+ * type: 'element', tag: 'p', attributes: { class: 'txt' },
25
+ * children: [{ type: 'text', content: 'Hello' }],
26
+ * });
27
+ * // '<p class="txt">Hello</p>'
16
28
  * @param {Object<string, *>} jsonData
17
29
  * @returns {string} HTML string
18
30
  */
@@ -21,7 +33,6 @@ export function jsonToHtml(jsonData: { [x: string]: any }): string;
21
33
  * @description Convert HTML string to HTML Entity
22
34
  * @param {string} content
23
35
  * @returns {string} Content string
24
- * @private
25
36
  */
26
37
  export function htmlToEntity(content: string): string;
27
38
  /**
@@ -59,35 +70,40 @@ export function mergeMaps(...mapsToMerge: Map<any, any>[]): Map<any, any>;
59
70
  */
60
71
  export function getValues(obj: any): Array<any>;
61
72
  /**
62
- * @description Convert the CamelCase To the KebabCase.
73
+ * @description Convert the `CamelCase` To the `KebabCase`.
63
74
  * @param {string|Array<string>} param [Camel string]
64
75
  */
65
76
  export function camelToKebabCase(param: string | Array<string>): any;
66
77
  /**
67
78
  * @overload
68
- * @param {string} param - Kebab-case string.
69
- * @returns {string} CamelCase string.
79
+ * @param {string} param - `Kebab-case` string.
80
+ * @returns {string} `CamelCase` string.
70
81
  */
71
82
  export function kebabToCamelCase(param: string): string;
72
83
  /**
73
84
  * @overload
74
- * @param {Array<string>} param - Array of Kebab-case strings.
75
- * @returns {Array<string>} Array of CamelCase strings.
85
+ * @param {Array<string>} param - Array of `Kebab-case` strings.
86
+ * @returns {Array<string>} Array of `CamelCase` strings.
76
87
  */
77
88
  export function kebabToCamelCase(param: Array<string>): Array<string>;
78
89
  /**
79
- *
90
+ * @description Converts a font size string from one CSS unit to another.
91
+ * @example
92
+ * converter.toFontUnit('px', '1rem'); // '16px'
93
+ * converter.toFontUnit('em', '16px'); // '1.00em'
94
+ * converter.toFontUnit('pt', '16px'); // '12pt'
95
+ * converter.toFontUnit('%', '16px'); // '100%'
80
96
  * @param {"em"|"rem"|"%"|"pt"|"px"} to Size units to be converted
81
- * @param {string} size siSize to convert with units (ex: "15rem")
97
+ * @param {string} size Size to convert with units (ex: `"15rem"`)
82
98
  * @returns {string}
83
99
  */
84
100
  export function toFontUnit(to: 'em' | 'rem' | '%' | 'pt' | 'px', size: string): string;
85
101
  /**
86
102
  * @description Convert the node list to an array. If not, returns an empty array.
87
- * @param {?__se__NodeCollection} nodeList
103
+ * @param {?SunEditor.NodeCollection} [nodeList]
88
104
  * @returns Array
89
105
  */
90
- export function nodeListToArray(nodeList: __se__NodeCollection | null): any;
106
+ export function nodeListToArray(nodeList?: SunEditor.NodeCollection | null): any;
91
107
  /**
92
108
  * @description Returns a new object with keys and values swapped.
93
109
  * @param {Object<*, *>} obj object
@@ -95,14 +111,14 @@ export function nodeListToArray(nodeList: __se__NodeCollection | null): any;
95
111
  */
96
112
  export function swapKeyValue(obj: any): any;
97
113
  /**
98
- * @description Create whitelist RegExp object.
99
- * @param {string} list Tags list ("br|p|div|pre...")
114
+ * @description Create whitelist `RegExp` object.
115
+ * @param {string} list Tags list (`"br|p|div|pre..."`)
100
116
  * @returns {RegExp} Return RegExp format: new RegExp("<\\/?\\b(?!" + list + ")\\b[^>^<]*+>", "gi")
101
117
  */
102
118
  export function createElementWhitelist(list: string): RegExp;
103
119
  /**
104
- * @description Create blacklist RegExp object.
105
- * @param {string} list Tags list ("br|p|div|pre...")
120
+ * @description Create blacklist `RegExp` object.
121
+ * @param {string} list Tags list (`"br|p|div|pre..."`)
106
122
  * @returns {RegExp} Return RegExp format: new RegExp("<\\/?\\b(?:" + list + ")\\b[^>^<]*+>", "gi")
107
123
  */
108
124
  export function createElementBlacklist(list: string): RegExp;
@@ -112,7 +128,7 @@ export function createElementBlacklist(list: string): RegExp;
112
128
  */
113
129
  export function isHexColor(str: string): boolean;
114
130
  /**
115
- * @description Function to convert hex format to a rgb color
131
+ * @description Function to convert hex format to a `rgb` color
116
132
  * @param {string} rgba RGBA color format
117
133
  * @returns {string}
118
134
  */
@@ -120,19 +136,19 @@ export function rgb2hex(rgba: string): string;
120
136
  /**
121
137
  * @description Computes the width as a percentage of the parent's width, and returns this value rounded to two decimal places.
122
138
  * @param {HTMLElement} target The target element for which to calculate the width percentage.
123
- * @param {?HTMLElement=} parentTarget The parent element to use as the reference for the width calculation. If not provided, the target's parent element is used.
139
+ * @param {?HTMLElement} [parentTarget] The parent element to use as the reference for the width calculation. If not provided, the target's parent element is used.
124
140
  * @returns {number}
125
141
  */
126
- export function getWidthInPercentage(target: HTMLElement, parentTarget?: (HTMLElement | null) | undefined): number;
142
+ export function getWidthInPercentage(target: HTMLElement, parentTarget?: HTMLElement | null): number;
127
143
  /**
128
144
  * @description Convert url pattern text node to anchor node
129
145
  * @param {Node} node Text node
130
- * @returns {boolean} Return true if the text node is converted to an anchor node
146
+ * @returns {boolean} Return `true` if the text node is converted to an anchor node
131
147
  */
132
148
  export function textToAnchor(node: Node): boolean;
133
149
  /**
134
- * Converts styles within a <span> tag to corresponding HTML tags (e.g., <strong>, <em>, <u>, <s>).
135
- * Maintains the original <span> tag and wraps its content with the new tags.
150
+ * Converts styles within a `<span>` tag to corresponding HTML tags (e.g., `<strong>`, `<em>`, `<u>`, `<s>`).
151
+ * Maintains the original `<span>` tag and wraps its content with the new tags.
136
152
  * @param {{ regex: RegExp, tag: string }} styleToTag An object mapping style properties to HTML tags. ex) {bold: { regex: /font-weight\s*:\s*bold/i, tag: 'strong' },}
137
153
  * @param {Node} node Node
138
154
  */
@@ -141,7 +157,7 @@ export function spanToStyleNode(
141
157
  regex: RegExp;
142
158
  tag: string;
143
159
  },
144
- node: Node
160
+ node: Node,
145
161
  ): void;
146
162
  /**
147
163
  * Adds a query string to a URL. If the URL already contains a query string, the new query is appended to the existing one.
@@ -150,34 +166,30 @@ export function spanToStyleNode(
150
166
  * @returns {string} The updated URL with the query string appended.
151
167
  */
152
168
  export function addUrlQuery(url: string, query: string): string;
169
+ /**
170
+ * @typedef {import('../core/schema/options').OptionStyleResult} OptionStyleResult_converter
171
+ */
153
172
  /**
154
173
  * @description Converts options-related styles and returns them for each frame.
155
- * @param {Map<string, *>} fo editor.frameOptions
174
+ * @param {SunEditor.FrameOptions} fo `editor.frameOptions`
156
175
  * @param {string} cssText Style string
157
- * @returns {{top: string, frame: string, editor: string}}
158
- * @private
159
- */
160
- export function _setDefaultOptionStyle(
161
- fo: Map<string, any>,
162
- cssText: string
163
- ): {
164
- top: string;
165
- frame: string;
166
- editor: string;
167
- };
176
+ * @returns {OptionStyleResult_converter}
177
+ */
178
+ export function _setDefaultOptionStyle(fo: SunEditor.FrameOptions, cssText: string): OptionStyleResult_converter;
168
179
  /**
169
- * @description Set default style tag of the iframe
170
- * @param {Array<string>} linkNames link names array of CSS files
171
- * @returns {string} "<link rel="stylesheet" href=".." />.."
180
+ * @description Set default style tag of the `iframe`
181
+ * @param {Array<string>} linkNames link names array of CSS files or `'*'` for all stylesheets
182
+ * @returns {string} `"<link rel="stylesheet" href=".." />.."`
172
183
  */
173
184
  export function _setIframeStyleLinks(linkNames: Array<string>): string;
174
185
  /**
175
- * @description When iframe height options is "auto" return "<style>" tag that required.
176
- * @param {string} frameHeight height
177
- * @returns {string} "<style>...</style>"
186
+ * @description When `iframe` height options is `"auto"` return `"<style>"` tag that required.
187
+ * @param {string|number} frameHeight height
188
+ * @returns {string} `"<style>...</style>"`
178
189
  */
179
- export function _setAutoHeightStyle(frameHeight: string): string;
190
+ export function _setAutoHeightStyle(frameHeight: string | number): string;
180
191
  export default converter;
192
+ export type OptionStyleResult_converter = import('../core/schema/options').OptionStyleResult;
181
193
  declare namespace converter {
182
194
  export { htmlToJson };
183
195
  export { jsonToHtml };
@@ -1,5 +1,6 @@
1
+ import type {} from '../../typedef';
1
2
  /**
2
- * @description A method that checks If the text is blank or to see if it contains 'ZERO WIDTH SPACE' or empty (unicode.zeroWidthSpace)
3
+ * @description A method that checks If the text is blank or to see if it contains `ZERO WIDTH SPACE` or empty (`unicode.zeroWidthSpace`)
3
4
  * @param {string|Node} text String value or Node
4
5
  * @returns {boolean}
5
6
  */
@@ -8,34 +9,34 @@ export function isZeroWidth(text: string | Node): boolean;
8
9
  * @description Determine if this offset is the edge offset of container
9
10
  * @param {Node} container The node of the selection object. (range.startContainer..)
10
11
  * @param {number} offset The offset of the selection object. (core.getRange().startOffset...)
11
- * @param {?"front"|"end"=} dir Select check point - Both edge, Front edge or End edge. ("front": Front edge, "end": End edge, undefined: Both edge)
12
+ * @param {?("front"|"end")} [dir] Select check point - Both edge, Front edge or End edge. (`"front"`: Front edge, `"end"`: End edge, `undefined`: Both edge)
12
13
  * @returns {boolean}
13
14
  */
14
- export function isEdgePoint(container: Node, offset: number, dir?: (('front' | 'end') | null) | undefined): boolean;
15
+ export function isEdgePoint(container: Node, offset: number, dir?: ('front' | 'end') | null): boolean;
15
16
  /**
16
17
  * @description Check the node is a text node.
17
- * @param {?Node} node The node to check
18
+ * @param {?*} node The node to check
18
19
  * @returns {node is Text}
19
20
  */
20
- export function isText(node: Node | null): node is Text;
21
+ export function isText(node: any | null): node is Text;
21
22
  /**
22
23
  * @description Check the node is an HTMLElement node.
23
- * @param {?Node} node The node to check
24
+ * @param {?*} node The node to check
24
25
  * @returns {node is HTMLElement}
25
26
  */
26
- export function isElement(node: Node | null): node is HTMLElement;
27
+ export function isElement(node: any | null): node is HTMLElement;
27
28
  /**
28
29
  * @description It is judged whether it is the input element (INPUT, TEXTAREA)
29
- * @param {?Node} node The node to check
30
+ * @param {?*} node The node to check
30
31
  * @returns {node is HTMLInputElement}
31
32
  */
32
- export function isInputElement(node: Node | null): node is HTMLInputElement;
33
+ export function isInputElement(node: any | null): node is HTMLInputElement;
33
34
  /**
34
35
  * @description It is judged whether it is the button element
35
- * @param {?Node} node The node to check
36
+ * @param {?*} node The node to check
36
37
  * @returns {node is HTMLButtonElement}
37
38
  */
38
- export function isButtonElement(node: Node | null): node is HTMLButtonElement;
39
+ export function isButtonElement(node: any | null): node is HTMLButtonElement;
39
40
  /**
40
41
  * @description Check the node is a list (ol, ul)
41
42
  * @param {?Node|string} node The element or element name to check
@@ -109,25 +110,31 @@ export function isFigure(node: (Node | string) | null): boolean;
109
110
  */
110
111
  export function isContentLess(node: (Node | string) | null): boolean;
111
112
  /**
112
- * @description Check the line element is empty.
113
- * @param {Node} node "line" element node
113
+ * @description Check the `line` element is empty.
114
+ * @param {Node} node `line` element node
114
115
  * @returns {boolean}
115
116
  */
116
117
  export function isEmptyLine(node: Node): boolean;
117
118
  /**
118
- * @description It is judged whether it is the edit region top div element or iframe's body tag.
119
+ * @description Checks if the given node is a container component (class `se-component-container`).
120
+ * @param {Node} element
121
+ * @returns {boolean} `true` if the node is a container component, otherwise `false`.
122
+ */
123
+ export function isComponentContainer(element: Node): boolean;
124
+ /**
125
+ * @description It is judged whether it is the edit region top `div` element or `iframe`'s `body` tag.
119
126
  * @param {?Node} node The node to check
120
127
  * @returns {node is HTMLElement}
121
128
  */
122
129
  export function isWysiwygFrame(node: Node | null): node is HTMLElement;
123
130
  /**
124
- * @description It is judged whether it is the contenteditable property is false.
131
+ * @description It is judged whether it is the `contenteditable` property is `false`.
125
132
  * @param {?Node} node The node to check
126
133
  * @returns {node is HTMLElement}
127
134
  */
128
135
  export function isNonEditable(node: Node | null): node is HTMLElement;
129
136
  /**
130
- * @description Check the span's attributes are empty.
137
+ * @description Check the `span`'s attributes are empty.
131
138
  * @param {?Node} node Element node
132
139
  * @returns {boolean}
133
140
  */
@@ -140,14 +147,14 @@ export function isSpanWithoutAttr(node: Node | null): boolean;
140
147
  */
141
148
  export function isSameAttributes(a: Node, b: Node): boolean;
142
149
  /**
143
- * @description It is judged whether it is the not checking node. (class="katex", "MathJax", "se-exclude-format")
150
+ * @description It is judged whether it is the not checking node. (class=`katex`, `MathJax`, `se-exclude-format`)
144
151
  * @param {Node} node The node to check
145
152
  * @returns {node is HTMLElement}
146
153
  */
147
154
  export function isExcludeFormat(node: Node): node is HTMLElement;
148
155
  /**
149
- * @description Checks for "__se__uneditable" in the class list.
150
- * - Components with class "__se__uneditable" cannot be modified.
156
+ * @description Checks for `__se__uneditable` in the class list.
157
+ * - Components with class `__se__uneditable` cannot be modified.
151
158
  * @param {Node} node The element to check
152
159
  * @returns {boolean}
153
160
  */
@@ -179,6 +186,7 @@ declare namespace check {
179
186
  export { isFigure };
180
187
  export { isContentLess };
181
188
  export { isEmptyLine };
189
+ export { isComponentContainer };
182
190
  export { isWysiwygFrame };
183
191
  export { isNonEditable };
184
192
  export { isSpanWithoutAttr };
@@ -1,3 +1,4 @@
1
+ import type {} from '../../typedef';
1
2
  /**
2
3
  * @description Returns the index compared to other sibling nodes.
3
4
  * @param {Node} node The Node to find index
@@ -5,53 +6,61 @@
5
6
  */
6
7
  export function getPositionIndex(node: Node): number;
7
8
  /**
8
- * @description Returns the position of the "node" in the "parentNode" in a numerical array.
9
+ * @description Returns the position of the `node` in the `parentNode` in a numerical array.
9
10
  * - e.g.) <p><span>aa</span><span>bb</span></p> : getNodePath(node: "bb", parentNode: "<P>") -> [1, 0]
10
11
  * @param {Node} node The Node to find position path
11
- * @param {?Node} parentNode Parent node. If null, wysiwyg div area
12
- * @param {?{s: number, e: number}=} _newOffsets If you send an object of the form "{s: 0, e: 0}", the text nodes that are attached together are merged into one, centered on the "node" argument.
13
- * "_newOffsets.s" stores the length of the combined characters after "node" and "_newOffsets.e" stores the length of the combined characters before "node".
12
+ * @param {?Node} parentNode Parent node. If `null`, wysiwyg `div` area
13
+ * @param {?{s: number, e: number}} [_newOffsets] If you send an object of the form `{s: 0, e: 0}`, the text nodes that are attached together are merged into one, centered on the `node` argument.
14
+ * `_newOffsets.s` stores the length of the combined characters after `node` and `_newOffsets.e` stores the length of the combined characters before `node`.
14
15
  * Do not use unless absolutely necessary.
15
16
  * @returns {Array<number>}
16
17
  */
17
18
  export function getNodePath(
18
19
  node: Node,
19
20
  parentNode: Node | null,
20
- _newOffsets?:
21
- | ({
22
- s: number;
23
- e: number;
24
- } | null)
25
- | undefined
21
+ _newOffsets?: {
22
+ s: number;
23
+ e: number;
24
+ } | null,
26
25
  ): Array<number>;
27
26
  /**
28
27
  * @template {Node} T
29
- * @description Returns the node in the location of the path array obtained from "helper.dom.getNodePath".
30
- * @param {Array<number>} offsets Position array, array obtained from "helper.dom.getNodePath"
28
+ * @description Returns the node in the location of the path array obtained from `helper.dom.getNodePath`.
29
+ * @param {Array<number>} offsets Position array, array obtained from `helper.dom.getNodePath`
31
30
  * @param {Node} parentNode Base parent element
32
31
  * @returns {T}
33
32
  */
34
33
  export function getNodeFromPath<T extends Node>(offsets: Array<number>, parentNode: Node): T;
35
34
  /**
36
35
  * @template {HTMLElement} T
37
- * @description Get all "children" of the argument value element (Without text nodes)
36
+ * @description Get all `child node` of the argument value element
38
37
  * @param {Node} element element to get child node
39
38
  * @param {?(current: *) => boolean} validation Conditional function
39
+ * @returns {T|null}
40
+ */
41
+ export function getChildNode<T extends HTMLElement>(element: Node, validation: ((current: any) => boolean) | null): T | null;
42
+ /**
43
+ * @template {HTMLElement} T
44
+ * @description Get all `children` of the argument value element (Without text nodes)
45
+ * @param {Node} element element to get child node
46
+ * @param {?(current: *) => boolean} validation Conditional function
47
+ * @param {?number} depth Number of child levels to depth.
40
48
  * @returns {Array<T>}
41
49
  */
42
- export function getListChildren<T extends HTMLElement>(element: Node, validation: ((current: any) => boolean) | null): Array<T>;
50
+ export function getListChildren<T extends HTMLElement>(element: Node, validation: ((current: any) => boolean) | null, depth: number | null): Array<T>;
43
51
  /**
44
52
  * @template {Node} T
45
- * @description Get all "childNodes" of the argument value element (Include text nodes)
53
+ * @description Get all `childNodes` of the argument value element (Include text nodes)
46
54
  * @param {Node} element element to get child node
47
55
  * @param {?(current: *) => boolean} validation Conditional function
56
+ * @param {?number} depth Number of child levels to depth.
48
57
  * @returns {Array<T>}
49
58
  */
50
- export function getListChildNodes<T extends Node>(element: Node, validation: ((current: any) => boolean) | null): Array<T>;
59
+ export function getListChildNodes<T extends Node>(element: Node, validation: ((current: any) => boolean) | null, depth: number | null): Array<T>;
51
60
  /**
52
61
  * @description Returns the number of parents nodes.
53
- * - "0" when the parent node is the WYSIWYG area.
54
- * - '-1' when the element argument is the WYSIWYG area.
62
+ * - `0` when the parent node is the WYSIWYG area.
63
+ * - `-1` when the element argument is the WYSIWYG area.
55
64
  * @param {Node} node The element to check
56
65
  * @returns {number}
57
66
  */
@@ -59,18 +68,18 @@ export function getNodeDepth(node: Node): number;
59
68
  /**
60
69
  * @description Sort a node array by depth of element.
61
70
  * @param {Array<Node>} array Node array
62
- * @param {boolean} des true: descending order / false: ascending order
71
+ * @param {boolean} des `true`: descending order / `false`: ascending order
63
72
  */
64
73
  export function sortNodeByDepth(array: Array<Node>, des: boolean): void;
65
74
  /**
66
75
  * @description Compares two elements to find a common ancestor, and returns the order of the two elements.
67
76
  * @param {Node} a Node to compare.
68
77
  * @param {Node} b Node to compare.
69
- * @returns {{ancestor: HTMLElement|null, a: Node, b: Node, result: number}} { ancesstor, a, b, result: (a > b ? 1 : a < b ? -1 : 0) };
78
+ * @returns {{ancestor: ?HTMLElement, a: Node, b: Node, result: number}} { ancesstor, a, b, result: (a > b ? 1 : a < b ? -1 : 0) };
70
79
  */
71
80
  export function compareElements(
72
81
  a: Node,
73
- b: Node
82
+ b: Node,
74
83
  ): {
75
84
  ancestor: HTMLElement | null;
76
85
  a: Node;
@@ -81,29 +90,38 @@ export function compareElements(
81
90
  * @template {HTMLElement} T
82
91
  * @description Get the parent element of the argument value.
83
92
  * - A tag that satisfies the query condition is imported.
93
+ * @example
94
+ * // Find by tag name
95
+ * const table = dom.query.getParentElement(cell, 'TABLE');
96
+ *
97
+ * // Find by CSS class
98
+ * const wrapper = dom.query.getParentElement(node, '.se-wrapper');
99
+ *
100
+ * // Find by validation function
101
+ * const line = dom.query.getParentElement(node, (el) => el.nodeType === 1);
84
102
  * @param {Node} element Reference element
85
- * @param {string|((current: *) => boolean)|Node} query Query String (nodeName, .className, #ID, :name) or validation function.
103
+ * @param {string|((current: *) => boolean)|Node} query Query String (`nodeName`, `.className`, `#ID`, `:name`) or validation function.
86
104
  * - Not use it like jquery.
87
105
  * - Only one condition can be entered at a time.
88
- * @param {?number=} depth Number of parent levels to depth.
89
- * @returns {T|null} Not found: null
106
+ * @param {?number} [depth] Number of parent levels to depth.
107
+ * @returns {T|null} Not found: `null`
90
108
  */
91
- export function getParentElement<T extends HTMLElement>(element: Node, query: string | ((current: any) => boolean) | Node, depth?: (number | null) | undefined): T | null;
109
+ export function getParentElement<T extends HTMLElement>(element: Node, query: string | ((current: any) => boolean) | Node, depth?: number | null): T | null;
92
110
  /**
93
111
  * @template {HTMLElement} T
94
112
  * @description Gets all ancestors of the argument value.
95
113
  * - Get all tags that satisfy the query condition.
96
114
  * @param {Node} element Reference element
97
- * @param {string|((current: *) => boolean)|Node} query Query String (nodeName, .className, #ID, :name) or validation function.
115
+ * @param {string|((current: *) => boolean)|Node} query Query String (`nodeName`, `.className`, `#ID`, `:name`) or validation function.
98
116
  * Not use it like jquery.
99
117
  * Only one condition can be entered at a time.
100
- * @param {?number=} depth Number of parent levels to depth.
118
+ * @param {?number} [depth] Number of parent levels to depth.
101
119
  * @returns {Array<T>} Returned in an array in order.
102
120
  */
103
- export function getParentElements<T extends HTMLElement>(element: Node, query: string | ((current: any) => boolean) | Node, depth?: (number | null) | undefined): Array<T>;
121
+ export function getParentElements<T extends HTMLElement>(element: Node, query: string | ((current: any) => boolean) | Node, depth?: number | null): Array<T>;
104
122
  /**
105
123
  * @template {HTMLElement} T
106
- * @description Gets the element with "data-command" attribute among the parent elements.
124
+ * @description Gets the element with `data-command` attribute among the parent elements.
107
125
  * @param {Node} target Target element
108
126
  * @returns {T|null}
109
127
  */
@@ -120,25 +138,25 @@ export function getEventTarget<T extends HTMLElement>(event: Event): T | null;
120
138
  * @description Get the child element of the argument value.
121
139
  * - A tag that satisfies the query condition is imported.
122
140
  * @param {Node} node Reference element
123
- * @param {string|((current: *) => boolean)|Node} query Query String (nodeName, .className, #ID, :name) or validation function.
124
- * @param {boolean} last If true returns the last node among the found child nodes. (default: first node)
141
+ * @param {string|((current: *) => boolean)|Node} query Query String (`nodeName`, `.className`, `#ID`, `:name`) or validation function.
142
+ * @param {boolean} last If `true` returns the last node among the found child nodes. (default: first node)
125
143
  * Not use it like jquery.
126
144
  * Only one condition can be entered at a time.
127
- * @returns {T|null} Not found: null
145
+ * @returns {T|null} Not found: `null`
128
146
  */
129
147
  export function getEdgeChild<T extends Node>(node: Node, query: string | ((current: any) => boolean) | Node, last: boolean): T | null;
130
148
  /**
131
149
  * @description Get edge child nodes of the argument value.
132
- * - 1. The first node of all the child nodes of the "first" element is returned.
133
- * - 2. The last node of all the child nodes of the "last" element is returned.
134
- * - 3. When there is no "last" element, the first and last nodes of all the children of the "first" element are returned.
150
+ * - 1. The first node of all the child nodes of the `first` element is returned.
151
+ * - 2. The last node of all the child nodes of the `last` element is returned.
152
+ * - 3. When there is no `last` element, the first and last nodes of all the children of the `first` element are returned.
135
153
  * @param {Node} first First element
136
- * @param {Node|null} last Last element
137
- * @returns {{sc: Node, ec: Node}} { sc: "first", ec: "last" }
154
+ * @param {?Node} last Last element
155
+ * @returns {{sc: Node, ec: Node}} { sc: `first`, ec: `last` }
138
156
  */
139
157
  export function getEdgeChildNodes(
140
158
  first: Node,
141
- last: Node | null
159
+ last: Node | null,
142
160
  ): {
143
161
  sc: Node;
144
162
  ec: Node;
@@ -147,31 +165,31 @@ export function getEdgeChildNodes(
147
165
  * @template {Node} T
148
166
  * @description Gets the previous sibling last child. If there is no sibling, then it'll take it from the closest ancestor with child
149
167
  * @param {Node} node Reference element
150
- * @param {?Node=} ceiling Highest boundary allowed
151
- * @returns {T|null} Not found: null
168
+ * @param {?Node} [ceiling] Highest boundary allowed
169
+ * @returns {T|null} Not found: `null`
152
170
  */
153
- export function getPreviousDeepestNode<T extends Node>(node: Node, ceiling?: (Node | null) | undefined): T | null;
171
+ export function getPreviousDeepestNode<T extends Node>(node: Node, ceiling?: Node | null): T | null;
154
172
  /**
155
173
  * @template {Node} T
156
174
  * @description Gets the next sibling first child. If there is no sibling, then it'll take it from the closest ancestor with child
157
175
  * @param {Node} node Reference element
158
- * @param {?Node=} ceiling Highest boundary allowed
159
- * @returns {T|null} Not found: null
176
+ * @param {?Node} [ceiling] Highest boundary allowed
177
+ * @returns {T|null} Not found: `null`
160
178
  */
161
- export function getNextDeepestNode<T extends Node>(node: Node, ceiling?: (Node | null) | undefined): T | null;
179
+ export function getNextDeepestNode<T extends Node>(node: Node, ceiling?: Node | null): T | null;
162
180
  /**
163
- * @description Find the index of the text node in the line element.
164
- * @param {Node} line Line element (p, div, etc.)
181
+ * @description Find the index of the text node in the `line` element.
182
+ * @param {Node} line `line` element (p, div, etc.)
165
183
  * @param {Node} offsetContainer Base node to start searching
166
184
  * @param {number} offset Base offset to start searching
167
- * @param {?(current: *) => boolean=} validate Validation function
185
+ * @param {?(current: *) => boolean} [validate] Validation function
168
186
  * @returns {number}
169
187
  */
170
- export function findTextIndexOnLine(line: Node, offsetContainer: Node, offset: number, validate?: (((current: any) => boolean) | null) | undefined): number;
188
+ export function findTextIndexOnLine(line: Node, offsetContainer: Node, offset: number, validate?: ((current: any) => boolean) | null): number;
171
189
  /**
172
190
  * @description Find the end index of a sequence of at least minTabSize consecutive non-breaking spaces or spaces
173
191
  * - which are interpreted as a tab key, occurring after a given base index in a text string.
174
- * @param {Node} line Line element (p, div, etc.)
192
+ * @param {Node} line `line` element (p, div, etc.)
175
193
  * @param {number} baseIndex Base index to start searching
176
194
  * @param {number} minTabSize Minimum number of consecutive spaces to consider as a tab
177
195
  * @returns {number} The adjusted index within the line element accounting for non-space characters
@@ -179,21 +197,21 @@ export function findTextIndexOnLine(line: Node, offsetContainer: Node, offset: n
179
197
  export function findTabEndIndex(line: Node, baseIndex: number, minTabSize: number): number;
180
198
  /**
181
199
  * @description Finds the table cell that appears visually at the bottom-right position,
182
- * considering both rowSpan and colSpan, even if smaller cells are placed after large merged cells.
200
+ * considering both `rowSpan` and `colSpan`, even if smaller cells are placed after large merged cells.
183
201
  *
184
202
  * @param {HTMLTableCellElement[]} cells
185
203
  * @returns {HTMLTableCellElement|null}
186
204
  */
187
205
  export function findVisualLastCell(cells: HTMLTableCellElement[]): HTMLTableCellElement | null;
188
206
  /**
189
- * @description Get nearest scrollable parent
190
- * @param {Node} element Element
191
- * @returns {HTMLElement|null}
207
+ * @description Finds and returns parent containers that are scrollable.
208
+ * @param {HTMLElement} element - Element to start with
209
+ * @returns {HTMLElement[]} - Array (in descending order)
192
210
  */
193
- export function getScrollParent(element: Node): HTMLElement | null;
211
+ export function getScrollParents(element: HTMLElement): HTMLElement[];
194
212
  /**
195
- * @description Get the argument iframe's document object if use the "iframe" or "fullPage" options
196
- * @param {HTMLIFrameElement} iframe Iframe element (this.editor.frameContext.get('wysiwygFrame'))
213
+ * @description Get the argument iframe's document object if use the `iframe` or `fullPage` options
214
+ * @param {HTMLIFrameElement} iframe Iframe element (`this.frameContext.get('wysiwygFrame')`)
197
215
  * @returns {Document}
198
216
  */
199
217
  export function getIframeDocument(iframe: HTMLIFrameElement): Document;
@@ -202,6 +220,7 @@ declare namespace query {
202
220
  export { getPositionIndex };
203
221
  export { getNodePath };
204
222
  export { getNodeFromPath };
223
+ export { getChildNode };
205
224
  export { getListChildren };
206
225
  export { getListChildNodes };
207
226
  export { getNodeDepth };
@@ -218,6 +237,6 @@ declare namespace query {
218
237
  export { findTextIndexOnLine };
219
238
  export { findTabEndIndex };
220
239
  export { findVisualLastCell };
221
- export { getScrollParent };
240
+ export { getScrollParents };
222
241
  export { getIframeDocument };
223
242
  }