suneditor 3.0.0-beta.9 → 3.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/README.md +65 -57
  2. package/dist/suneditor-contents.min.css +1 -0
  3. package/dist/suneditor.min.css +1 -1
  4. package/dist/suneditor.min.js +1 -1
  5. package/package.json +110 -61
  6. package/src/assets/design/color.css +36 -17
  7. package/src/assets/design/size.css +2 -0
  8. package/src/assets/icons/defaultIcons.js +17 -2
  9. package/src/assets/suneditor-contents.css +51 -16
  10. package/src/assets/suneditor.css +116 -43
  11. package/src/core/config/contextProvider.js +288 -0
  12. package/src/core/config/eventManager.js +188 -0
  13. package/src/core/config/instanceCheck.js +59 -0
  14. package/src/core/config/optionProvider.js +452 -0
  15. package/src/core/editor.js +166 -1637
  16. package/src/core/event/actions/index.js +229 -0
  17. package/src/core/event/effects/common.registry.js +74 -0
  18. package/src/core/event/effects/keydown.registry.js +573 -0
  19. package/src/core/event/effects/ruleHelpers.js +148 -0
  20. package/src/core/event/eventOrchestrator.js +944 -0
  21. package/src/core/event/executor.js +27 -0
  22. package/src/core/{base/eventHandlers → event/handlers}/handler_toolbar.js +27 -28
  23. package/src/core/{base/eventHandlers → event/handlers}/handler_ww_clipboard.js +10 -8
  24. package/src/core/{base/eventHandlers → event/handlers}/handler_ww_dragDrop.js +22 -23
  25. package/src/core/event/handlers/handler_ww_input.js +75 -0
  26. package/src/core/event/handlers/handler_ww_key.js +228 -0
  27. package/src/core/event/handlers/handler_ww_mouse.js +166 -0
  28. package/src/core/event/ports.js +211 -0
  29. package/src/core/event/reducers/keydown.reducer.js +97 -0
  30. package/src/core/event/rules/keydown.rule.arrow.js +63 -0
  31. package/src/core/event/rules/keydown.rule.backspace.js +208 -0
  32. package/src/core/event/rules/keydown.rule.delete.js +132 -0
  33. package/src/core/event/rules/keydown.rule.enter.js +150 -0
  34. package/src/core/event/rules/keydown.rule.tab.js +35 -0
  35. package/src/core/event/support/defaultLineManager.js +136 -0
  36. package/src/core/event/support/selectionState.js +204 -0
  37. package/src/core/kernel/coreKernel.js +320 -0
  38. package/src/core/kernel/kernelInjector.js +19 -0
  39. package/src/core/kernel/store.js +173 -0
  40. package/src/core/{class → logic/dom}/char.js +42 -45
  41. package/src/core/logic/dom/format.js +1075 -0
  42. package/src/core/{class → logic/dom}/html.js +743 -624
  43. package/src/core/logic/dom/inline.js +1847 -0
  44. package/src/core/logic/dom/listFormat.js +601 -0
  45. package/src/core/{class → logic/dom}/nodeTransform.js +92 -72
  46. package/src/core/{class → logic/dom}/offset.js +254 -317
  47. package/src/core/logic/dom/selection.js +754 -0
  48. package/src/core/logic/panel/menu.js +389 -0
  49. package/src/core/logic/panel/toolbar.js +449 -0
  50. package/src/core/logic/panel/viewer.js +761 -0
  51. package/src/core/logic/shell/_commandExecutor.js +380 -0
  52. package/src/core/logic/shell/commandDispatcher.js +241 -0
  53. package/src/core/logic/shell/component.js +970 -0
  54. package/src/core/logic/shell/focusManager.js +110 -0
  55. package/src/core/{base → logic/shell}/history.js +110 -60
  56. package/src/core/logic/shell/pluginManager.js +363 -0
  57. package/src/core/logic/shell/shortcuts.js +130 -0
  58. package/src/core/logic/shell/ui.js +904 -0
  59. package/src/core/schema/context.js +66 -0
  60. package/src/core/schema/frameContext.js +160 -0
  61. package/src/core/schema/options.js +628 -0
  62. package/src/core/section/constructor.js +194 -500
  63. package/src/core/section/documentType.js +297 -222
  64. package/src/events.js +808 -543
  65. package/src/helper/clipboard.js +27 -16
  66. package/src/helper/converter.js +100 -78
  67. package/src/helper/dom/domCheck.js +56 -30
  68. package/src/helper/dom/domQuery.js +159 -89
  69. package/src/helper/dom/domUtils.js +114 -49
  70. package/src/helper/dom/index.js +5 -1
  71. package/src/helper/env.js +26 -26
  72. package/src/helper/index.js +1 -1
  73. package/src/helper/keyCodeMap.js +25 -28
  74. package/src/helper/numbers.js +4 -8
  75. package/src/helper/unicode.js +4 -8
  76. package/src/hooks/base.js +307 -0
  77. package/src/hooks/params.js +130 -0
  78. package/src/interfaces/contracts.js +227 -0
  79. package/src/interfaces/index.js +7 -0
  80. package/src/interfaces/plugins.js +239 -0
  81. package/src/langs/ckb.js +4 -4
  82. package/src/langs/cs.js +4 -4
  83. package/src/langs/da.js +4 -4
  84. package/src/langs/de.js +4 -4
  85. package/src/langs/en.js +4 -4
  86. package/src/langs/es.js +4 -4
  87. package/src/langs/fa.js +4 -4
  88. package/src/langs/fr.js +4 -4
  89. package/src/langs/he.js +4 -4
  90. package/src/langs/hu.js +4 -4
  91. package/src/langs/it.js +4 -4
  92. package/src/langs/ja.js +4 -4
  93. package/src/langs/km.js +4 -4
  94. package/src/langs/ko.js +4 -4
  95. package/src/langs/lv.js +4 -4
  96. package/src/langs/nl.js +4 -4
  97. package/src/langs/pl.js +4 -4
  98. package/src/langs/pt_br.js +13 -13
  99. package/src/langs/ro.js +4 -4
  100. package/src/langs/ru.js +4 -4
  101. package/src/langs/se.js +4 -4
  102. package/src/langs/tr.js +4 -4
  103. package/src/langs/uk.js +4 -4
  104. package/src/langs/ur.js +4 -4
  105. package/src/langs/zh_cn.js +4 -4
  106. package/src/modules/{Browser.js → contract/Browser.js} +119 -128
  107. package/src/modules/{ColorPicker.js → contract/ColorPicker.js} +132 -142
  108. package/src/modules/contract/Controller.js +589 -0
  109. package/src/modules/{Figure.js → contract/Figure.js} +591 -411
  110. package/src/modules/{HueSlider.js → contract/HueSlider.js} +125 -86
  111. package/src/modules/contract/Modal.js +357 -0
  112. package/src/modules/contract/index.js +9 -0
  113. package/src/modules/manager/ApiManager.js +197 -0
  114. package/src/modules/{FileManager.js → manager/FileManager.js} +128 -160
  115. package/src/modules/manager/index.js +5 -0
  116. package/src/modules/{ModalAnchorEditor.js → ui/ModalAnchorEditor.js} +108 -138
  117. package/src/modules/{SelectMenu.js → ui/SelectMenu.js} +119 -120
  118. package/src/modules/{_DragHandle.js → ui/_DragHandle.js} +1 -1
  119. package/src/modules/ui/index.js +6 -0
  120. package/src/plugins/browser/audioGallery.js +23 -26
  121. package/src/plugins/browser/fileBrowser.js +25 -28
  122. package/src/plugins/browser/fileGallery.js +20 -23
  123. package/src/plugins/browser/imageGallery.js +24 -23
  124. package/src/plugins/browser/videoGallery.js +27 -29
  125. package/src/plugins/command/blockquote.js +11 -17
  126. package/src/plugins/command/exportPDF.js +26 -26
  127. package/src/plugins/command/fileUpload.js +138 -133
  128. package/src/plugins/command/list_bulleted.js +48 -44
  129. package/src/plugins/command/list_numbered.js +48 -44
  130. package/src/plugins/dropdown/align.js +64 -50
  131. package/src/plugins/dropdown/backgroundColor.js +34 -35
  132. package/src/plugins/dropdown/{formatBlock.js → blockStyle.js} +43 -37
  133. package/src/plugins/dropdown/font.js +50 -36
  134. package/src/plugins/dropdown/fontColor.js +34 -35
  135. package/src/plugins/dropdown/hr.js +55 -50
  136. package/src/plugins/dropdown/layout.js +20 -15
  137. package/src/plugins/dropdown/lineHeight.js +46 -30
  138. package/src/plugins/dropdown/list.js +32 -33
  139. package/src/plugins/dropdown/paragraphStyle.js +40 -34
  140. package/src/plugins/dropdown/table/index.js +915 -0
  141. package/src/plugins/dropdown/table/render/table.html.js +308 -0
  142. package/src/plugins/dropdown/table/render/table.menu.js +121 -0
  143. package/src/plugins/dropdown/table/services/table.cell.js +465 -0
  144. package/src/plugins/dropdown/table/services/table.clipboard.js +414 -0
  145. package/src/plugins/dropdown/table/services/table.grid.js +504 -0
  146. package/src/plugins/dropdown/table/services/table.resize.js +463 -0
  147. package/src/plugins/dropdown/table/services/table.selection.js +466 -0
  148. package/src/plugins/dropdown/table/services/table.style.js +844 -0
  149. package/src/plugins/dropdown/table/shared/table.constants.js +109 -0
  150. package/src/plugins/dropdown/table/shared/table.utils.js +219 -0
  151. package/src/plugins/dropdown/template.js +20 -15
  152. package/src/plugins/dropdown/textStyle.js +28 -22
  153. package/src/plugins/field/mention.js +54 -49
  154. package/src/plugins/index.js +5 -5
  155. package/src/plugins/input/fontSize.js +100 -97
  156. package/src/plugins/input/pageNavigator.js +13 -10
  157. package/src/plugins/modal/audio.js +208 -219
  158. package/src/plugins/modal/drawing.js +99 -104
  159. package/src/plugins/modal/embed.js +323 -312
  160. package/src/plugins/modal/image/index.js +942 -0
  161. package/src/plugins/modal/image/render/image.html.js +150 -0
  162. package/src/plugins/modal/image/services/image.size.js +198 -0
  163. package/src/plugins/modal/image/services/image.upload.js +216 -0
  164. package/src/plugins/modal/image/shared/image.constants.js +20 -0
  165. package/src/plugins/modal/link.js +74 -54
  166. package/src/plugins/modal/math.js +126 -119
  167. package/src/plugins/modal/video/index.js +858 -0
  168. package/src/plugins/modal/video/render/video.html.js +131 -0
  169. package/src/plugins/modal/video/services/video.size.js +281 -0
  170. package/src/plugins/modal/video/services/video.upload.js +92 -0
  171. package/src/plugins/popup/anchor.js +57 -49
  172. package/src/suneditor.js +73 -61
  173. package/src/themes/cobalt.css +155 -0
  174. package/src/themes/dark.css +143 -120
  175. package/src/typedef.js +214 -63
  176. package/types/assets/icons/defaultIcons.d.ts +8 -0
  177. package/types/assets/suneditor-contents.css.d.ts +1 -0
  178. package/types/assets/suneditor.css.d.ts +1 -0
  179. package/types/core/config/contextProvider.d.ts +148 -0
  180. package/types/core/config/eventManager.d.ts +68 -0
  181. package/types/core/config/instanceCheck.d.ts +33 -0
  182. package/types/core/config/optionProvider.d.ts +147 -0
  183. package/types/core/editor.d.ts +27 -586
  184. package/types/core/event/actions/index.d.ts +50 -0
  185. package/types/core/event/effects/common.registry.d.ts +56 -0
  186. package/types/core/event/effects/keydown.registry.d.ts +80 -0
  187. package/types/core/event/effects/ruleHelpers.d.ts +36 -0
  188. package/types/core/event/eventOrchestrator.d.ts +191 -0
  189. package/types/core/event/executor.d.ts +13 -0
  190. package/types/core/event/handlers/handler_toolbar.d.ts +38 -0
  191. package/types/core/event/handlers/handler_ww_clipboard.d.ts +36 -0
  192. package/types/core/event/handlers/handler_ww_dragDrop.d.ts +26 -0
  193. package/types/core/event/handlers/handler_ww_input.d.ts +38 -0
  194. package/types/core/event/handlers/handler_ww_key.d.ts +40 -0
  195. package/types/core/event/handlers/handler_ww_mouse.d.ts +47 -0
  196. package/types/core/event/ports.d.ts +256 -0
  197. package/types/core/event/reducers/keydown.reducer.d.ts +84 -0
  198. package/types/core/event/rules/keydown.rule.arrow.d.ts +19 -0
  199. package/types/core/event/rules/keydown.rule.backspace.d.ts +18 -0
  200. package/types/core/event/rules/keydown.rule.delete.d.ts +18 -0
  201. package/types/core/event/rules/keydown.rule.enter.d.ts +18 -0
  202. package/types/core/event/rules/keydown.rule.tab.d.ts +18 -0
  203. package/types/core/event/support/defaultLineManager.d.ts +22 -0
  204. package/types/core/event/support/selectionState.d.ts +29 -0
  205. package/types/core/kernel/coreKernel.d.ts +219 -0
  206. package/types/core/kernel/kernelInjector.d.ts +16 -0
  207. package/types/core/kernel/store.d.ts +170 -0
  208. package/types/core/logic/dom/char.d.ts +46 -0
  209. package/types/core/logic/dom/format.d.ts +234 -0
  210. package/types/core/logic/dom/html.d.ts +290 -0
  211. package/types/core/logic/dom/inline.d.ts +93 -0
  212. package/types/core/logic/dom/listFormat.d.ts +101 -0
  213. package/types/core/logic/dom/nodeTransform.d.ts +110 -0
  214. package/types/core/logic/dom/offset.d.ts +335 -0
  215. package/types/core/logic/dom/selection.d.ts +165 -0
  216. package/types/core/logic/panel/menu.d.ts +93 -0
  217. package/types/core/logic/panel/toolbar.d.ts +128 -0
  218. package/types/core/logic/panel/viewer.d.ts +89 -0
  219. package/types/core/logic/shell/_commandExecutor.d.ts +18 -0
  220. package/types/core/logic/shell/commandDispatcher.d.ts +65 -0
  221. package/types/core/logic/shell/component.d.ts +182 -0
  222. package/types/core/logic/shell/focusManager.d.ts +31 -0
  223. package/types/core/{base → logic/shell}/history.d.ts +13 -12
  224. package/types/core/logic/shell/pluginManager.d.ts +115 -0
  225. package/types/core/logic/shell/shortcuts.d.ts +131 -0
  226. package/types/core/logic/shell/ui.d.ts +261 -0
  227. package/types/core/schema/context.d.ts +104 -0
  228. package/types/core/schema/frameContext.d.ts +320 -0
  229. package/types/core/schema/options.d.ts +1241 -0
  230. package/types/core/section/constructor.d.ts +117 -652
  231. package/types/core/section/documentType.d.ts +43 -61
  232. package/types/events.d.ts +796 -65
  233. package/types/helper/clipboard.d.ts +5 -4
  234. package/types/helper/converter.d.ts +55 -43
  235. package/types/helper/dom/domCheck.d.ts +27 -19
  236. package/types/helper/dom/domQuery.d.ts +76 -57
  237. package/types/helper/dom/domUtils.d.ts +62 -39
  238. package/types/helper/dom/index.d.ts +87 -1
  239. package/types/helper/env.d.ts +16 -13
  240. package/types/helper/index.d.ts +8 -2
  241. package/types/helper/keyCodeMap.d.ts +24 -23
  242. package/types/helper/numbers.d.ts +4 -6
  243. package/types/helper/unicode.d.ts +4 -3
  244. package/types/hooks/base.d.ts +239 -0
  245. package/types/hooks/params.d.ts +65 -0
  246. package/types/index.d.ts +20 -117
  247. package/types/interfaces/contracts.d.ts +183 -0
  248. package/types/interfaces/index.d.ts +3 -0
  249. package/types/interfaces/plugins.d.ts +168 -0
  250. package/types/langs/_Lang.d.ts +2 -2
  251. package/types/langs/index.d.ts +2 -2
  252. package/types/modules/contract/Browser.d.ts +262 -0
  253. package/types/modules/contract/ColorPicker.d.ts +99 -0
  254. package/types/modules/contract/Controller.d.ts +204 -0
  255. package/types/modules/contract/Figure.d.ts +529 -0
  256. package/types/modules/{HueSlider.d.ts → contract/HueSlider.d.ts} +39 -28
  257. package/types/modules/contract/Modal.d.ts +62 -0
  258. package/types/modules/contract/index.d.ts +7 -0
  259. package/types/modules/manager/ApiManager.d.ts +106 -0
  260. package/types/modules/manager/FileManager.d.ts +124 -0
  261. package/types/modules/manager/index.d.ts +3 -0
  262. package/types/modules/ui/ModalAnchorEditor.d.ts +152 -0
  263. package/types/modules/ui/SelectMenu.d.ts +107 -0
  264. package/types/modules/{_DragHandle.d.ts → ui/_DragHandle.d.ts} +1 -0
  265. package/types/modules/ui/index.d.ts +4 -0
  266. package/types/plugins/browser/audioGallery.d.ts +33 -41
  267. package/types/plugins/browser/fileBrowser.d.ts +42 -50
  268. package/types/plugins/browser/fileGallery.d.ts +33 -41
  269. package/types/plugins/browser/imageGallery.d.ts +30 -37
  270. package/types/plugins/browser/videoGallery.d.ts +33 -41
  271. package/types/plugins/command/blockquote.d.ts +4 -21
  272. package/types/plugins/command/exportPDF.d.ts +23 -33
  273. package/types/plugins/command/fileUpload.d.ts +80 -100
  274. package/types/plugins/command/list_bulleted.d.ts +9 -35
  275. package/types/plugins/command/list_numbered.d.ts +9 -35
  276. package/types/plugins/dropdown/align.d.ts +23 -46
  277. package/types/plugins/dropdown/backgroundColor.d.ts +35 -53
  278. package/types/plugins/dropdown/blockStyle.d.ts +45 -0
  279. package/types/plugins/dropdown/font.d.ts +18 -41
  280. package/types/plugins/dropdown/fontColor.d.ts +35 -53
  281. package/types/plugins/dropdown/hr.d.ts +26 -52
  282. package/types/plugins/dropdown/layout.d.ts +19 -25
  283. package/types/plugins/dropdown/lineHeight.d.ts +21 -39
  284. package/types/plugins/dropdown/list.d.ts +6 -34
  285. package/types/plugins/dropdown/paragraphStyle.d.ts +34 -45
  286. package/types/plugins/dropdown/table/index.d.ts +158 -0
  287. package/types/plugins/dropdown/table/render/table.html.d.ts +71 -0
  288. package/types/plugins/dropdown/table/render/table.menu.d.ts +59 -0
  289. package/types/plugins/dropdown/table/services/table.cell.d.ts +76 -0
  290. package/types/plugins/dropdown/table/services/table.clipboard.d.ts +26 -0
  291. package/types/plugins/dropdown/table/services/table.grid.d.ts +77 -0
  292. package/types/plugins/dropdown/table/services/table.resize.d.ts +72 -0
  293. package/types/plugins/dropdown/table/services/table.selection.d.ts +59 -0
  294. package/types/plugins/dropdown/table/services/table.style.d.ts +162 -0
  295. package/types/plugins/dropdown/table/shared/table.constants.d.ts +134 -0
  296. package/types/plugins/dropdown/table/shared/table.utils.d.ts +91 -0
  297. package/types/plugins/dropdown/template.d.ts +19 -25
  298. package/types/plugins/dropdown/textStyle.d.ts +23 -30
  299. package/types/plugins/field/mention.d.ts +66 -72
  300. package/types/plugins/index.d.ts +41 -40
  301. package/types/plugins/input/fontSize.d.ts +57 -96
  302. package/types/plugins/input/pageNavigator.d.ts +5 -8
  303. package/types/plugins/modal/audio.d.ts +60 -153
  304. package/types/plugins/modal/drawing.d.ts +16 -118
  305. package/types/plugins/modal/embed.d.ts +46 -166
  306. package/types/plugins/modal/image/index.d.ts +281 -0
  307. package/types/plugins/modal/image/render/image.html.d.ts +45 -0
  308. package/types/plugins/modal/image/services/image.size.d.ts +55 -0
  309. package/types/plugins/modal/image/services/image.upload.d.ts +24 -0
  310. package/types/plugins/modal/image/shared/image.constants.d.ts +17 -0
  311. package/types/plugins/modal/link.d.ts +46 -66
  312. package/types/plugins/modal/math.d.ts +17 -86
  313. package/types/plugins/modal/{video.d.ts → video/index.d.ts} +89 -221
  314. package/types/plugins/modal/video/render/video.html.d.ts +37 -0
  315. package/types/plugins/modal/video/services/video.size.d.ts +74 -0
  316. package/types/plugins/modal/video/services/video.upload.d.ts +19 -0
  317. package/types/plugins/popup/anchor.d.ts +8 -38
  318. package/types/suneditor.d.ts +55 -24
  319. package/types/typedef.d.ts +344 -228
  320. package/CONTRIBUTING.md +0 -186
  321. package/src/core/base/eventHandlers/handler_ww_key_input.js +0 -1200
  322. package/src/core/base/eventHandlers/handler_ww_mouse.js +0 -194
  323. package/src/core/base/eventManager.js +0 -1523
  324. package/src/core/class/component.js +0 -856
  325. package/src/core/class/format.js +0 -3433
  326. package/src/core/class/menu.js +0 -346
  327. package/src/core/class/selection.js +0 -610
  328. package/src/core/class/shortcuts.js +0 -98
  329. package/src/core/class/toolbar.js +0 -431
  330. package/src/core/class/ui.js +0 -424
  331. package/src/core/class/viewer.js +0 -750
  332. package/src/core/section/actives.js +0 -266
  333. package/src/core/section/context.js +0 -102
  334. package/src/editorInjector/_classes.js +0 -36
  335. package/src/editorInjector/_core.js +0 -87
  336. package/src/editorInjector/index.js +0 -73
  337. package/src/modules/ApiManager.js +0 -191
  338. package/src/modules/Controller.js +0 -474
  339. package/src/modules/Modal.js +0 -346
  340. package/src/modules/index.js +0 -14
  341. package/src/plugins/dropdown/table.js +0 -4034
  342. package/src/plugins/modal/image.js +0 -1376
  343. package/src/plugins/modal/video.js +0 -1226
  344. package/types/core/base/eventHandlers/handler_toolbar.d.ts +0 -41
  345. package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +0 -40
  346. package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +0 -35
  347. package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +0 -45
  348. package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +0 -39
  349. package/types/core/base/eventManager.d.ts +0 -401
  350. package/types/core/class/char.d.ts +0 -61
  351. package/types/core/class/component.d.ts +0 -213
  352. package/types/core/class/format.d.ts +0 -623
  353. package/types/core/class/html.d.ts +0 -430
  354. package/types/core/class/menu.d.ts +0 -126
  355. package/types/core/class/nodeTransform.d.ts +0 -93
  356. package/types/core/class/offset.d.ts +0 -522
  357. package/types/core/class/selection.d.ts +0 -188
  358. package/types/core/class/shortcuts.d.ts +0 -142
  359. package/types/core/class/toolbar.d.ts +0 -189
  360. package/types/core/class/ui.d.ts +0 -164
  361. package/types/core/class/viewer.d.ts +0 -140
  362. package/types/core/section/actives.d.ts +0 -46
  363. package/types/core/section/context.d.ts +0 -45
  364. package/types/editorInjector/_classes.d.ts +0 -41
  365. package/types/editorInjector/_core.d.ts +0 -87
  366. package/types/editorInjector/index.d.ts +0 -69
  367. package/types/modules/ApiManager.d.ts +0 -125
  368. package/types/modules/Browser.d.ts +0 -326
  369. package/types/modules/ColorPicker.d.ts +0 -135
  370. package/types/modules/Controller.d.ts +0 -251
  371. package/types/modules/Figure.d.ts +0 -517
  372. package/types/modules/FileManager.d.ts +0 -202
  373. package/types/modules/Modal.d.ts +0 -111
  374. package/types/modules/ModalAnchorEditor.d.ts +0 -236
  375. package/types/modules/SelectMenu.d.ts +0 -194
  376. package/types/modules/index.d.ts +0 -26
  377. package/types/plugins/dropdown/formatBlock.d.ts +0 -55
  378. package/types/plugins/dropdown/table.d.ts +0 -627
  379. package/types/plugins/modal/image.d.ts +0 -451
  380. /package/{LICENSE → LICENSE.txt} +0 -0
@@ -0,0 +1,166 @@
1
+ import { dom, env } from '../../../helper';
2
+ import { _DragHandle } from '../../../modules/ui';
3
+
4
+ const { _w } = env;
5
+
6
+ /**
7
+ * @typedef {import('../eventOrchestrator').default} EventManagerThis_handler_ww_mouse
8
+ */
9
+
10
+ /**
11
+ * @this {EventManagerThis_handler_ww_mouse}
12
+ * @param {SunEditor.FrameContext} fc - Frame context object
13
+ * @param {MouseEvent} e - Event object
14
+ */
15
+ export async function OnMouseDown_wysiwyg(fc, e) {
16
+ const eventTarget = dom.query.getEventTarget(e);
17
+
18
+ this.$.store.set('_mousedown', true);
19
+ if (this.__onDownEv) _offDownFn.call(this);
20
+ this.__onDownEv = this.$.eventManager.addGlobalEvent('mouseup', _offDownFn.bind(this));
21
+
22
+ if (fc.get('isReadOnly') || dom.check.isNonEditable(fc.get('wysiwyg'))) return;
23
+ if (this.$.format._isExcludeSelectionElement(eventTarget)) {
24
+ e.preventDefault();
25
+ return;
26
+ }
27
+
28
+ this._setSelectionSync();
29
+
30
+ // Defer selection.init — browser finalizes selection/range after mousedown event returns
31
+ _w.setTimeout(this.$.selection.init.bind(this.$.selection), 0);
32
+
33
+ // user event
34
+ if ((await this.$.eventManager.triggerEvent('onMouseDown', { frameContext: fc, event: e })) === false) return;
35
+
36
+ // plugin event
37
+ if ((await this._callPluginEventAsync('onMouseDown', { frameContext: fc, event: e })) === false) return;
38
+
39
+ if (this.$.store.mode.isBalloon) {
40
+ this._hideToolbar();
41
+ } else if (this.$.store.mode.isSubBalloon) {
42
+ this._hideToolbar_sub();
43
+ }
44
+
45
+ if (/FIGURE/i.test(eventTarget?.nodeName)) e.preventDefault();
46
+ }
47
+
48
+ /**
49
+ * @this {EventManagerThis_handler_ww_mouse}
50
+ */
51
+ function _offDownFn() {
52
+ this.$.store.set('_mousedown', false);
53
+ this.__onDownEv = this.$.eventManager.removeGlobalEvent(this.__onDownEv);
54
+ }
55
+
56
+ /**
57
+ * @this {EventManagerThis_handler_ww_mouse}
58
+ * @param {SunEditor.FrameContext} fc - Frame context object
59
+ * @param {MouseEvent} e - Event object
60
+ */
61
+ export async function OnMouseUp_wysiwyg(fc, e) {
62
+ // user event
63
+ if ((await this.$.eventManager.triggerEvent('onMouseUp', { frameContext: fc, event: e })) === false) return;
64
+
65
+ // plugin event
66
+ await this._callPluginEventAsync('onMouseUp', { frameContext: fc, event: e });
67
+ }
68
+
69
+ /**
70
+ * @this {EventManagerThis_handler_ww_mouse}
71
+ * @param {SunEditor.FrameContext} fc - Frame context object
72
+ * @param {MouseEvent} e - Event object
73
+ */
74
+ export async function OnClick_wysiwyg(fc, e) {
75
+ const eventTarget = dom.query.getEventTarget(e);
76
+
77
+ if (fc.get('isReadOnly')) {
78
+ e.preventDefault();
79
+ if (dom.check.isAnchor(eventTarget)) {
80
+ _w.open(eventTarget.href, eventTarget.target);
81
+ }
82
+ return false;
83
+ }
84
+
85
+ if (dom.check.isNonEditable(fc.get('wysiwyg'))) return;
86
+
87
+ // user event
88
+ if ((await this.$.eventManager.triggerEvent('onClick', { frameContext: fc, event: e })) === false) return;
89
+ // plugin event
90
+ if ((await this._callPluginEventAsync('onClick', { frameContext: fc, event: e })) === false) return;
91
+
92
+ const componentInfo = this.$.component.get(eventTarget);
93
+ if (componentInfo) {
94
+ e.preventDefault();
95
+ this.$.component.select(componentInfo.target, componentInfo.pluginName);
96
+ return;
97
+ }
98
+
99
+ this.$.selection.init();
100
+
101
+ if (e.detail === 3) {
102
+ const range = this.$.selection.getRange();
103
+ if (this.$.format.isLine(range.endContainer) && range.endOffset === 0) {
104
+ this.$.selection.setRange(range.startContainer, range.startOffset, range.startContainer, range.startContainer.textContent.length);
105
+ }
106
+ }
107
+
108
+ const selectionNode = this.$.selection.getNode();
109
+ const formatEl = this.$.format.getLine(selectionNode, null);
110
+ const rangeEl = this.$.format.getBlock(selectionNode, null);
111
+ if (!formatEl && !dom.check.isNonEditable(eventTarget) && !dom.check.isList(rangeEl)) {
112
+ const range = this.$.selection.getRange();
113
+ if (this.$.format.getLine(range.startContainer) === this.$.format.getLine(range.endContainer)) {
114
+ if (dom.check.isList(rangeEl)) {
115
+ e.preventDefault();
116
+ const prevLi = selectionNode.nextElementSibling;
117
+ const oLi = dom.utils.createElement('LI', null, selectionNode);
118
+ rangeEl.insertBefore(oLi, prevLi);
119
+ this.$.focusManager.focus();
120
+ } else if (
121
+ !dom.check.isWysiwygFrame(selectionNode) &&
122
+ !this.$.component.is(selectionNode) &&
123
+ (!dom.check.isTableElements(selectionNode) || dom.check.isTableCell(selectionNode)) &&
124
+ this._setDefaultLine(this.$.format.isBlock(rangeEl) ? 'DIV' : this.$.options.get('defaultLine')) !== null
125
+ ) {
126
+ e.preventDefault();
127
+ this.$.focusManager.focus();
128
+ }
129
+ }
130
+ }
131
+
132
+ // copy format
133
+ this.$.commandDispatcher._copyFormat();
134
+
135
+ // Defer balloon toggle — selection range is finalized after mouseup event returns
136
+ if (this.$.store.mode.isBalloon || this.$.store.mode.isSubBalloon) _w.setTimeout(this._toggleToolbarBalloon.bind(this), 0);
137
+ }
138
+
139
+ /**
140
+ * @this {EventManagerThis_handler_ww_mouse}
141
+ * @param {SunEditor.FrameContext} fc - Frame context object
142
+ * @param {MouseEvent} e - Event object
143
+ */
144
+ export function OnMouseMove_wysiwyg(fc, e) {
145
+ if (fc.get('isReadOnly') || fc.get('isDisabled')) return false;
146
+ const eventTarget = dom.query.getEventTarget(e);
147
+
148
+ // over component
149
+ if (_DragHandle.get('__overInfo') !== false) {
150
+ this.$.component.hoverSelect(eventTarget);
151
+ }
152
+
153
+ this._callPluginEvent('onMouseMove', { frameContext: fc, event: e });
154
+ }
155
+
156
+ /**
157
+ * @this {EventManagerThis_handler_ww_mouse}
158
+ * @param {SunEditor.FrameContext} fc - Frame context object
159
+ * @param {MouseEvent} e - Event object
160
+ */
161
+ export async function OnMouseLeave_wysiwyg(fc, e) {
162
+ // user event
163
+ if ((await this.$.eventManager.triggerEvent('onMouseLeave', { frameContext: fc, event: e })) === false) return;
164
+ // plugin event
165
+ await this._callPluginEventAsync('onMouseLeave', { frameContext: fc, event: e });
166
+ }
@@ -0,0 +1,211 @@
1
+ import { isMobile } from '../../helper/env';
2
+
3
+ /**
4
+ * @typedef {import('./eventOrchestrator').default} EventManagerInstanceType
5
+ */
6
+
7
+ /**
8
+ * @typedef {import('../logic/dom/selection').default} Selection
9
+ * @typedef {import('../logic/dom/format').default} Format
10
+ * @typedef {import('../logic/dom/listFormat').default} ListFormat
11
+ * @typedef {import('../logic/shell/component').default} Component
12
+ * @typedef {import('../logic/dom/html').default} Html
13
+ * @typedef {import('../logic/dom/nodeTransform').default} NodeTransform
14
+ * @typedef {import('../logic/dom/char').default} Char
15
+ * @typedef {import('../logic/panel/menu').default} Menu
16
+ */
17
+
18
+ /**
19
+ * @typedef {Object} SelectionPorts
20
+ * @property {(...args: Parameters<Selection['getRange']>) => ReturnType<Selection['getRange']>} getRange
21
+ * @property {(...args: Parameters<Selection['getNode']>) => ReturnType<Selection['getNode']>} getNode
22
+ * @property {(...args: Parameters<Selection['setRange']>) => ReturnType<Selection['setRange']>} setRange
23
+ * @property {(...args: Parameters<Selection['get']>) => ReturnType<Selection['get']>} get
24
+ */
25
+
26
+ /**
27
+ * @typedef {Object} FormatPorts
28
+ * @property {(...args: Parameters<Format['isLine']>) => ReturnType<Format['isLine']>} isLine
29
+ * @property {(...args: Parameters<Format['getLine']>) => ReturnType<Format['getLine']>} getLine
30
+ * @property {(...args: Parameters<Format['getLines']>) => ReturnType<Format['getLines']>} getLines
31
+ * @property {(...args: Parameters<Format['getBrLine']>) => ReturnType<Format['getBrLine']>} getBrLine
32
+ * @property {(...args: Parameters<Format['getBlock']>) => ReturnType<Format['getBlock']>} getBlock
33
+ * @property {(...args: Parameters<Format['isNormalLine']>) => ReturnType<Format['isNormalLine']>} isNormalLine
34
+ * @property {(...args: Parameters<Format['isBrLine']>) => ReturnType<Format['isBrLine']>} isBrLine
35
+ * @property {(...args: Parameters<Format['isClosureBrLine']>) => ReturnType<Format['isClosureBrLine']>} isClosureBrLine
36
+ * @property {(...args: Parameters<Format['isClosureBlock']>) => ReturnType<Format['isClosureBlock']>} isClosureBlock
37
+ * @property {(...args: Parameters<Format['isEdgeLine']>) => ReturnType<Format['isEdgeLine']>} isEdgeLine
38
+ * @property {(...args: Parameters<Format['removeBlock']>) => ReturnType<Format['removeBlock']>} removeBlock
39
+ * @property {(...args: Parameters<Format['addLine']>) => ReturnType<Format['addLine']>} addLine
40
+ */
41
+
42
+ /**
43
+ * @typedef {Object} ListFormatPorts
44
+ * @property {(...args: Parameters<ListFormat['applyNested']>) => ReturnType<ListFormat['applyNested']>} applyNested
45
+ */
46
+
47
+ /**
48
+ * @typedef {Object} ComponentPorts
49
+ * @property {(...args: Parameters<Component['deselect']>) => ReturnType<Component['deselect']>} deselect
50
+ * @property {(...args: Parameters<Component['is']>) => ReturnType<Component['is']>} is
51
+ * @property {(...args: Parameters<Component['get']>) => ReturnType<Component['get']>} get
52
+ * @property {(...args: Parameters<Component['select']>) => ReturnType<Component['select']>} select
53
+ */
54
+
55
+ /**
56
+ * @typedef {Object} HtmlPorts
57
+ * @property {(...args: Parameters<Html['remove']>) => ReturnType<Html['remove']>} remove
58
+ * @property {(...args: Parameters<Html['insert']>) => ReturnType<Html['insert']>} insert
59
+ * @property {(...args: Parameters<Html['insertNode']>) => ReturnType<Html['insertNode']>} insertNode
60
+ */
61
+
62
+ /**
63
+ * @typedef {Object} NodeTransformPorts
64
+ * @property {(...args: Parameters<NodeTransform['removeAllParents']>) => ReturnType<NodeTransform['removeAllParents']>} removeAllParents
65
+ * @property {(...args: Parameters<NodeTransform['split']>) => ReturnType<NodeTransform['split']>} split
66
+ */
67
+
68
+ /**
69
+ * @typedef {Object} CharPorts
70
+ * @property {(...args: Parameters<Char['check']>) => ReturnType<Char['check']>} check
71
+ */
72
+
73
+ /**
74
+ * @typedef {Object} MenuPorts
75
+ * @property {(...args: Parameters<Menu['dropdownOff']>) => ReturnType<Menu['dropdownOff']>} dropdownOff
76
+ */
77
+
78
+ /**
79
+ * @description Create ports for event reducers
80
+ * @param {EventManagerInstanceType} inst - EventManager instance
81
+ * @param {Object} param1 - Additional parameters
82
+ * @param {*} param1._styleNodes - Style nodes reference object
83
+ */
84
+ export function makePorts(inst, { _styleNodes }) {
85
+ const { frameContext, ui, focusManager, selection, format, listFormat, component, html, nodeTransform, history, char, menu } = inst.$;
86
+
87
+ return {
88
+ // focusManager
89
+ focusManager: {
90
+ nativeFocus: () => focusManager.nativeFocus(),
91
+ blur: () => focusManager.blur(),
92
+ },
93
+
94
+ // === class ===
95
+ selection: {
96
+ getRange: () => selection.getRange(),
97
+ getNode: () => selection.getNode(),
98
+ setRange: (se, so, ec, eo) => selection.setRange(se, so, ec, eo),
99
+ get: () => selection.get(),
100
+ },
101
+
102
+ format: {
103
+ isLine: (n) => format.isLine(n),
104
+ getLine: (n, p) => format.getLine(n, p),
105
+ getLines: (v) => format.getLines(v),
106
+ getBrLine: (n, p) => format.getBrLine(n, p),
107
+ getBlock: (n, p) => format.getBlock(n, p),
108
+ isNormalLine: (n) => format.isNormalLine(n),
109
+ isBrLine: (n) => format.isBrLine(n),
110
+ isClosureBrLine: (n) => format.isClosureBrLine(n),
111
+ isClosureBlock: (n) => format.isClosureBlock(n),
112
+ isEdgeLine: (node, offset, dir) => format.isEdgeLine(node, offset, dir),
113
+ removeBlock: (n, p) => format.removeBlock(n, p),
114
+ addLine: (el, nextOrTag) => format.addLine(el, nextOrTag),
115
+ },
116
+
117
+ listFormat: {
118
+ applyNested: (cells, shift) => listFormat.applyNested(cells, shift),
119
+ },
120
+
121
+ component: {
122
+ deselect: () => component.deselect(),
123
+ is: (n) => component.is(n),
124
+ get: (n) => component.get(n),
125
+ select: (t, p) => component.select(t, p),
126
+ },
127
+
128
+ html: {
129
+ remove: () => html.remove(),
130
+ insert: (h, p) => html.insert(h, p),
131
+ insertNode: (n, p) => html.insertNode(n, p),
132
+ },
133
+
134
+ history: {
135
+ push: (hard) => history.push(!!hard),
136
+ },
137
+
138
+ nodeTransform: {
139
+ removeAllParents: (s, n, p) => nodeTransform.removeAllParents(s, n, p),
140
+ split: (n, o, d) => nodeTransform.split(n, o, d),
141
+ },
142
+
143
+ char: {
144
+ check: (content) => char.check(content),
145
+ },
146
+
147
+ menu: {
148
+ dropdownOff: () => menu.dropdownOff(),
149
+ },
150
+
151
+ // === inst(eventManager) commands ===
152
+ setDefaultLine: (tag) => inst._setDefaultLine(tag),
153
+ hideToolbar: () => inst._hideToolbar(),
154
+ hideToolbar_sub: () => inst._hideToolbar_sub(),
155
+ styleNodeCache: () => (_styleNodes.value = inst.__cacheStyleNodes),
156
+ formatAttrsTempCache: (attrs) => (inst._formatAttrsTemp = attrs),
157
+ setOnShortcutKey: (v) => (inst._onShortcutKey = v),
158
+
159
+ // === enter event specific ===
160
+ /**
161
+ * @description Scrolls the editor view to the caret position after pressing `Enter`. (Ignored on mobile devices)
162
+ * @param {Range} range Range object
163
+ */
164
+ enterScrollTo(range) {
165
+ ui._iframeAutoHeight(frameContext);
166
+
167
+ // scroll to
168
+ if (isMobile && inst.scrollparents.length > 0) return;
169
+ selection.scrollTo(range, { behavior: 'auto', block: 'nearest', inline: 'nearest' });
170
+ },
171
+ /**
172
+ * @description Prevents the default behavior of the `Enter` key and refocuses the editor.
173
+ * @param {Event} e The keyboard event
174
+ */
175
+ enterPrevent(e) {
176
+ e.preventDefault();
177
+ if (!isMobile) return;
178
+
179
+ inst.__focusTemp.focus({ preventScroll: true });
180
+ frameContext.get('wysiwyg').focus({ preventScroll: true });
181
+ },
182
+ };
183
+ }
184
+
185
+ /**
186
+ * @typedef {Object} EventReducerPorts
187
+ *
188
+ * @property {Object} focusManager
189
+ * @property {() => void} focusManager.nativeFocus
190
+ * @property {() => void} focusManager.blur
191
+ * @property {SelectionPorts} selection
192
+ * @property {FormatPorts} format
193
+ * @property {ListFormatPorts} listFormat
194
+ * @property {ComponentPorts} component
195
+ * @property {HtmlPorts} html
196
+ * @property {Object} history
197
+ * @property {(hard: boolean) => void} history.push
198
+ * @property {NodeTransformPorts} nodeTransform
199
+ * @property {CharPorts} char
200
+ * @property {MenuPorts} menu
201
+ *
202
+ * @property {(tag: string) => void} setDefaultLine
203
+ * @property {() => void} hideToolbar
204
+ * @property {() => void} hideToolbar_sub
205
+ * @property {() => void} styleNodeCache
206
+ * @property {(attrs: Object<string, *>) => void} formatAttrsTempCache
207
+ * @property {(v: boolean) => void} setOnShortcutKey
208
+ *
209
+ * @property {(e: Event) => void} enterPrevent
210
+ * @property {(range: Range) => void} enterScrollTo
211
+ */
@@ -0,0 +1,97 @@
1
+ import { env, dom, keyCodeMap } from '../../../helper';
2
+
3
+ import { reduceBackspaceDown } from '../rules/keydown.rule.backspace';
4
+ import { reduceDeleteDown } from '../rules/keydown.rule.delete';
5
+ import { reduceEnterDown } from '../rules/keydown.rule.enter';
6
+ import { reduceTabDown } from '../rules/keydown.rule.tab';
7
+ import { reduceArrowDown } from '../rules/keydown.rule.arrow';
8
+ import { A } from '../actions';
9
+
10
+ const { isOSX_IOS } = env;
11
+
12
+ /**
13
+ * @typedef {import('../ports').EventReducerPorts} EventPorts
14
+ */
15
+
16
+ /**
17
+ * @typedef {Object} KeydownReducerCtx - Keydown Reducer Context object
18
+ * @property {KeyboardEvent} ctx.e - The keyboard event
19
+ * @property {SunEditor.FrameContext} ctx.fc - Frame context object
20
+ * @property {SunEditor.Store} ctx.store - Editor store object
21
+ * @property {SunEditor.Options} ctx.options - Options object
22
+ * @property {SunEditor.FrameOptions} ctx.frameOptions - Frame options object
23
+ * @property {Range} ctx.range - Current selection range
24
+ * @property {HTMLElement|Text} ctx.selectionNode - Current selection node
25
+ * @property {HTMLElement} ctx.formatEl - Current format element
26
+ * @property {string} ctx.keyCode - Key code
27
+ * @property {boolean} ctx.ctrl - Whether the `ctrl` key is pressed
28
+ * @property {boolean} ctx.alt - Whether the `alt` key is pressed
29
+ * @property {boolean} ctx.shift - Whether the `shift` key is pressed
30
+ */
31
+
32
+ /**
33
+ * @typedef {import('../actions').Action[]} EventActions
34
+ */
35
+
36
+ /**
37
+ * @description Keydown event reducer
38
+ * @param {EventPorts} ports - Ports for interacting with editor
39
+ * @param {KeydownReducerCtx} ctx - Context object
40
+ * @returns {Promise<EventActions>} Action list
41
+ */
42
+ export async function reduceKeydown(ports, ctx) {
43
+ const actions = [];
44
+
45
+ switch (ctx.keyCode) {
46
+ case 'Backspace' /** backspace key */: {
47
+ if (reduceBackspaceDown(actions, ports, ctx) === false) {
48
+ return actions;
49
+ }
50
+ break;
51
+ }
52
+ case 'Delete' /** delete key */: {
53
+ if (reduceDeleteDown(actions, ports, ctx) === false) {
54
+ return actions;
55
+ }
56
+ break;
57
+ }
58
+ case 'Tab' /** tab key */: {
59
+ if (reduceTabDown(actions, ports, ctx) === false) {
60
+ return actions;
61
+ }
62
+ break;
63
+ }
64
+ case 'Enter' /** enter key */: {
65
+ if (reduceEnterDown(actions, ports, ctx) === false) {
66
+ return actions;
67
+ }
68
+ break;
69
+ }
70
+ }
71
+
72
+ // ZWS, nbsp, documentType
73
+ const { fc, keyCode, shift, alt, ctrl, range } = ctx;
74
+
75
+ if (shift && (isOSX_IOS ? alt : ctrl) && keyCodeMap.isSpace(keyCode)) {
76
+ actions.push(A.preventStop());
77
+ actions.push(A.keydownInputInsertNbsp());
78
+ return actions;
79
+ }
80
+
81
+ const selectRange = !range.collapsed || range.startContainer !== range.endContainer;
82
+ if (!ctrl && !alt && !selectRange && !keyCodeMap.isNonTextKey(keyCode) && dom.check.isBreak(range.commonAncestorContainer)) {
83
+ actions.push(A.keydownInputInsertZWS());
84
+ return actions;
85
+ }
86
+
87
+ // document type
88
+ if (fc.has('documentType_use_header') && selectRange && !ctrl && !alt && !shift && !keyCodeMap.isDirectionKey(keyCode)) {
89
+ actions.push(A.documentTypeRefreshHeader());
90
+ return actions;
91
+ }
92
+
93
+ // Arrow key - select component action
94
+ reduceArrowDown(actions, ports, ctx);
95
+
96
+ return actions;
97
+ }
@@ -0,0 +1,63 @@
1
+ import { dom } from '../../../helper';
2
+ import { A } from '../actions';
3
+
4
+ /**
5
+ * @typedef {import('../actions').Action[]} EventActions
6
+ * @typedef {import('../ports').EventReducerPorts} EventPorts
7
+ * @typedef {import('../reducers/keydown.reducer').KeydownReducerCtx} EventKeydownCtx
8
+ */
9
+
10
+ /**
11
+ */
12
+
13
+ /**
14
+ * @this {void}
15
+ * @description Arrow key down rule
16
+ * @param {EventActions} actions - Action list
17
+ * @param {EventPorts} ports - Ports for interacting with editor
18
+ * @param {EventKeydownCtx} ctx - Context object
19
+ */
20
+ export function reduceArrowDown(actions, ports, ctx) {
21
+ const { component } = ports;
22
+ const { formatEl, range, selectionNode, keyCode } = ctx;
23
+
24
+ // next component
25
+ let cmponentInfo = null;
26
+ switch (keyCode) {
27
+ case 'ArrowUp' /** up key */:
28
+ if (component.is(formatEl.previousElementSibling)) {
29
+ cmponentInfo = component.get(formatEl.previousElementSibling);
30
+ }
31
+ break;
32
+ case 'ArrowLeft' /** left key */:
33
+ if (dom.check.isEdgePoint(selectionNode, range.startOffset, 'front')) {
34
+ const prevEl = selectionNode.previousElementSibling || dom.query.getPreviousDeepestNode(selectionNode);
35
+ if (prevEl) {
36
+ if (component.is(prevEl)) cmponentInfo = component.get(prevEl);
37
+ } else if (component.is(formatEl.previousElementSibling)) {
38
+ cmponentInfo = component.get(formatEl.previousElementSibling);
39
+ }
40
+ }
41
+ break;
42
+ case 'ArrowDown' /** down key */:
43
+ if (component.is(formatEl.nextElementSibling)) {
44
+ cmponentInfo = component.get(formatEl.nextElementSibling);
45
+ }
46
+ break;
47
+ case 'ArrowRight' /** right key */:
48
+ if (dom.check.isEdgePoint(selectionNode, range.endOffset, 'end')) {
49
+ const nextEl = selectionNode.nextElementSibling || dom.query.getNextDeepestNode(selectionNode);
50
+ if (nextEl) {
51
+ if (component.is(nextEl)) cmponentInfo = component.get(nextEl);
52
+ } else if (component.is(formatEl.nextElementSibling)) {
53
+ cmponentInfo = component.get(formatEl.nextElementSibling);
54
+ }
55
+ }
56
+ break;
57
+ }
58
+
59
+ if (cmponentInfo && !cmponentInfo.options?.isInputComponent) {
60
+ actions.push(A.prevent());
61
+ actions.push(A.selectComponentFallback(cmponentInfo));
62
+ }
63
+ }