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,35 +1,48 @@
1
- import CoreInjector from '../editorInjector/_core';
2
- import { dom, env, keyCodeMap } from '../helper';
1
+ import { dom, env, keyCodeMap } from '../../helper';
3
2
 
3
+ const { _w } = env;
4
4
  const MENU_MIN_HEIGHT = 38;
5
5
 
6
6
  /**
7
7
  * @typedef {Object} SelectMenuParams
8
- * @property {string} position Position of the select menu, specified as "[left|right]-[middle|top|bottom]" or "[top|bottom]-[center|left|right]"
9
- * @property {boolean} [checkList=false] Flag to determine if the checklist is enabled (true or false)
10
- * @property {"rtl" | "ltr"} [dir="ltr"] Optional text direction: "rtl" for right-to-left, "ltr" for left-to-right
8
+ * @property {string} position Position of the select menu, specified as `"[left|right]-[middle|top|bottom]"` or `"[top|bottom]-[center|left|right]"`
9
+ * @property {boolean} [checkList=false] Flag to determine if the checklist is enabled (`true` or `false`)
10
+ * @property {"rtl" | "ltr"} [dir="ltr"] Optional text direction: `"rtl"` for right-to-left, `"ltr"` for left-to-right
11
11
  * @property {number} [splitNum=0] Optional split number for horizontal positioning; defines how many items per row
12
- * @property {() => void=} openMethod Optional method to call when the menu is opened
13
- * @property {() => void=} closeMethod Optional method to call when the menu is closed
12
+ * @property {() => void} [openMethod] Optional method to call when the menu is opened
13
+ * @property {() => void} [closeMethod] Optional method to call when the menu is closed
14
14
  */
15
15
 
16
16
  /**
17
17
  * @class
18
18
  * @description Creates a select menu
19
19
  */
20
- class SelectMenu extends CoreInjector {
20
+ class SelectMenu {
21
+ #$;
22
+
23
+ #dirPosition;
24
+ #dirSubPosition;
25
+ #textDirDiff;
26
+ #eventHandlers;
27
+ #globalEventHandlers;
28
+
29
+ #refer = null;
30
+ #keydownTarget = null;
31
+ #selectMethod = null;
32
+ #bindClose_key = null;
33
+ #bindClose_mousedown = null;
34
+ #bindClose_click = null;
35
+ #events = null;
36
+
21
37
  /**
22
38
  * @constructor
23
- * @param {*} inst The instance object that called the constructor.
24
- * @param {SelectMenuParams} params Select menu options
39
+ * @param {SunEditor.Deps} $ Kernel dependencies
40
+ * @param {SelectMenuParams} params SelectMenu options
25
41
  */
26
- constructor(inst, params) {
27
- // plugin bisic properties
28
- super(inst.editor);
42
+ constructor($, params) {
43
+ this.#$ = $;
29
44
 
30
45
  // members
31
- this.kink = inst.constructor.key || inst.constructor.name;
32
- this.inst = inst;
33
46
  const positionItems = params.position.split('-');
34
47
  this.form = null;
35
48
  this.items = [];
@@ -42,47 +55,41 @@ class SelectMenu extends CoreInjector {
42
55
  this.checkList = !!params.checkList;
43
56
  this.position = positionItems[0];
44
57
  this.subPosition = positionItems[1];
45
- this._dirPosition = /^(left|right)$/.test(this.position) ? (this.position === 'left' ? 'right' : 'left') : this.position;
46
- this._dirSubPosition = /^(left|right)$/.test(this.subPosition) ? (this.subPosition === 'left' ? 'right' : 'left') : this.subPosition;
47
- this._textDirDiff = params.dir === 'ltr' ? false : params.dir === 'rtl' ? true : null;
48
58
  this.splitNum = params.splitNum || 0;
49
59
  this.horizontal = !!this.splitNum;
50
60
  this.openMethod = params.openMethod;
51
61
  this.closeMethod = params.closeMethod;
52
- this._refer = null;
53
- this._keydownTarget = null;
54
- this._selectMethod = null;
55
- this._bindClose_key = null;
56
- this._bindClose_mousedown = null;
57
- this._bindClose_click = null;
58
- this._closeSignal = false;
59
- this.__events = null;
60
- this.__eventHandlers = {
62
+
63
+ this.#dirPosition = /^(left|right)$/.test(this.position) ? (this.position === 'left' ? 'right' : 'left') : this.position;
64
+ this.#dirSubPosition = /^(left|right)$/.test(this.subPosition) ? (this.subPosition === 'left' ? 'right' : 'left') : this.subPosition;
65
+ this.#textDirDiff = params.dir === 'ltr' ? false : params.dir === 'rtl' ? true : null;
66
+
67
+ this.#eventHandlers = {
61
68
  mousedown: this.#OnMousedown_list.bind(this),
62
69
  mousemove: this.#OnMouseMove_list.bind(this),
63
70
  click: this.#OnClick_list.bind(this),
64
- keydown: this.#OnKeyDown_refer.bind(this)
71
+ keydown: this.#OnKeyDown_refer.bind(this),
65
72
  };
66
- this.__globalEventHandlers = { keydown: this.#CloseListener_key.bind(this), mousedown: this.#CloseListener_mousedown.bind(this), click: this.#CloseListener_click.bind(this) };
73
+ this.#globalEventHandlers = { keydown: this.#CloseListener_key.bind(this), mousedown: this.#CloseListener_mousedown.bind(this), click: this.#CloseListener_click.bind(this) };
67
74
  }
68
75
 
69
76
  /**
70
77
  * @description Creates the select menu items.
71
- * @param {Array<string>|__se__NodeCollection} items - Command list of selectable items.
72
- * @param {Array<string>|__se__NodeCollection} [menus] - Optional list of menu display elements; defaults to `items`.
78
+ * @param {Array<string>|SunEditor.NodeCollection} items - Command list of selectable items.
79
+ * @param {Array<string>|SunEditor.NodeCollection} [menus] - Optional list of menu display elements; defaults to `items`.
73
80
  */
74
81
  create(items, menus) {
75
82
  this.form.firstElementChild.innerHTML = '';
76
- menus = menus || items;
83
+ menus ||= items;
77
84
  let html = '';
78
85
  for (let i = 0, len = menus.length; i < len; i++) {
79
86
  if (i > 0 && i % this.splitNum === 0) {
80
- this._createFormat(html);
87
+ this.#createFormat(html);
81
88
  html = '';
82
89
  }
83
90
  html += `<li class="se-select-item" data-index="${i}">${typeof menus[i] === 'string' ? menus[i] : /** @type {HTMLElement} */ (menus[i]).outerHTML}</li>`;
84
91
  }
85
- this._createFormat(html);
92
+ this.#createFormat(html);
86
93
 
87
94
  this.items = /** @type {Array<string|Node>} */ (items);
88
95
  this.menus = Array.from(this.form.querySelectorAll('li'));
@@ -95,36 +102,37 @@ class SelectMenu extends CoreInjector {
95
102
  * @param {(command: string) => void} selectMethod - The function to execute when an item is selected.
96
103
  * @param {{class?: string, style?: string}} [attr={}] - Additional attributes for the select menu container.
97
104
  */
98
- on(referElement, selectMethod, attr) {
99
- if (!attr) attr = {};
100
- this._refer = /** @type {HTMLElement} */ (referElement);
101
- this._keydownTarget = dom.check.isInputElement(referElement) ? referElement : this._w;
102
- this._selectMethod = selectMethod;
105
+ on(referElement, selectMethod, attr = {}) {
106
+ this.#refer = /** @type {HTMLElement} */ (referElement);
107
+ this.#keydownTarget = dom.check.isInputElement(referElement) ? referElement : this.#$.frameContext.get('_ww');
108
+ this.#selectMethod = selectMethod;
103
109
  this.form = dom.utils.createElement(
104
110
  'DIV',
105
111
  {
106
112
  class: 'se-select-menu' + (attr.class ? ' ' + attr.class : ''),
107
- style: attr.style || ''
113
+ style: attr.style || '',
108
114
  },
109
- '<div class="se-list-inner"></div>'
115
+ '<div class="se-list-inner"></div>',
110
116
  );
111
117
  referElement.parentNode.insertBefore(this.form, referElement);
112
118
  }
113
119
 
114
120
  /**
115
121
  * @description Select menu open
116
- * @param {?string=} position "[left|right]-[middle|top|bottom] | [top|bottom]-[center|left|right]"
117
- * @param {?string=} onItemQuerySelector The querySelector string of the menu to be activated
122
+ * @param {?string} [position] `"[left|right]-[middle|top|bottom] | [top|bottom]-[center|left|right]"`
123
+ * @param {?string} [onItemQuerySelector] The querySelector string of the menu to be activated
118
124
  */
119
125
  open(position, onItemQuerySelector) {
120
- this.editor.selectMenuOn = true;
121
- if (typeof this.openMethod === 'function') this.openMethod();
122
- this.__addEvents();
123
- this.__addGlobalEvent();
126
+ this.#$.ui.selectMenuOn = true;
127
+
128
+ this.openMethod?.();
129
+
130
+ this.#addEvents();
131
+ this.#addGlobalEvent();
124
132
  const positionItems = position ? position.split('-') : [];
125
- const mainPosition = positionItems[0] || (this._textDirDiff !== null && this._textDirDiff !== this.options.get('_rtl') ? this._dirPosition : this.position);
126
- const subPosition = positionItems[1] || (this._textDirDiff !== null && this._textDirDiff !== this.options.get('_rtl') ? this._dirSubPosition : this.subPosition);
127
- this._setPosition(mainPosition, subPosition, onItemQuerySelector);
133
+ const mainPosition = positionItems[0] || (this.#textDirDiff !== null && this.#textDirDiff !== this.#$.options.get('_rtl') ? this.#dirPosition : this.position);
134
+ const subPosition = positionItems[1] || (this.#textDirDiff !== null && this.#textDirDiff !== this.#$.options.get('_rtl') ? this.#dirSubPosition : this.subPosition);
135
+ this.#setPosition(mainPosition, subPosition, onItemQuerySelector);
128
136
  this.isOpen = true;
129
137
  }
130
138
 
@@ -132,12 +140,13 @@ class SelectMenu extends CoreInjector {
132
140
  * @description Select menu close
133
141
  */
134
142
  close() {
135
- this.editor.selectMenuOn = false;
136
- dom.utils.removeClass(this._refer, 'on');
137
- this._init();
138
- if (this.form) this.form.style.cssText = '';
143
+ this.#$.ui.selectMenuOn = false;
144
+ dom.utils.removeClass(this.#refer, 'on');
145
+ this.#init();
146
+ this.form?.removeAttribute('style');
139
147
  this.isOpen = false;
140
- if (typeof this.closeMethod === 'function') this.closeMethod();
148
+
149
+ this.closeMethod?.();
141
150
  }
142
151
 
143
152
  /**
@@ -154,25 +163,23 @@ class SelectMenu extends CoreInjector {
154
163
  * @param {number} index Item index
155
164
  */
156
165
  setItem(index) {
157
- this._selectItem(index);
166
+ this.#selectItem(index);
158
167
  }
159
168
 
160
169
  /**
161
- * @private
162
170
  * @description Appends a formatted list of items to the menu.
163
171
  * @param {string} html - The HTML string representing the menu items.
164
172
  */
165
- _createFormat(html) {
173
+ #createFormat(html) {
166
174
  this.form.firstElementChild.innerHTML += `<ul class="se-list-basic se-list-checked${this.horizontal ? ' se-list-horizontal' : ''}">${html}</ul>`;
167
175
  }
168
176
 
169
177
  /**
170
- * @private
171
178
  * @description Resets the menu state and removes event listeners.
172
179
  */
173
- _init() {
174
- this.__removeEvents();
175
- this.__removeGlobalEvent();
180
+ #init() {
181
+ this.#removeEvents();
182
+ this.#removeGlobalEvent();
176
183
  this.index = -1;
177
184
  this.item = null;
178
185
  if (this._onItem) {
@@ -182,24 +189,22 @@ class SelectMenu extends CoreInjector {
182
189
  }
183
190
 
184
191
  /**
185
- * @private
186
192
  * @description Moves the selection up or down by a specified number of items.
187
193
  * @param {number} num - The number of items to move (negative for up, positive for down).
188
194
  */
189
- _moveItem(num) {
195
+ #moveItem(num) {
190
196
  num = this.index + num;
191
197
  const len = this.menuLen;
192
198
  const selectIndex = (this.index = num >= len ? 0 : num < 0 ? len - 1 : num);
193
199
 
194
- this._selectItem(selectIndex);
200
+ this.#selectItem(selectIndex);
195
201
  }
196
202
 
197
203
  /**
198
- * @private
199
204
  * @description Highlights and selects an item by index.
200
205
  * @param {number} selectIndex - The index of the item to select.
201
206
  */
202
- _selectItem(selectIndex) {
207
+ #selectItem(selectIndex) {
203
208
  dom.utils.removeClass(this.form, 'se-select-menu-mouse-move');
204
209
 
205
210
  const len = this.menuLen;
@@ -216,17 +221,16 @@ class SelectMenu extends CoreInjector {
216
221
  }
217
222
 
218
223
  /**
219
- * @private
220
224
  * @description Sets the position of the select menu relative to the reference element.
221
- * @param {string} position Menu position ("left"|"right") | ("top"|"bottom")
222
- * @param {string} subPosition Sub position ("middle"|"top"|"bottom") | ("center"|"left"|"right")
225
+ * @param {string} position Menu position (`"left"`|`"right"`) | (`"top"`|`"bottom"`)
226
+ * @param {string} subPosition Sub position (`"middle"`|`"top"`|`"bottom"`) | (`"center"`|`"left"`|`"right"`)
223
227
  * @param {string} [onItemQuerySelector] - A query selector string to highlight a specific item.
224
228
  * @param {boolean} [_re=false] - Whether this is a retry after adjusting the position.
225
229
  */
226
- _setPosition(position, subPosition, onItemQuerySelector, _re) {
230
+ #setPosition(position, subPosition, onItemQuerySelector, _re) {
227
231
  const originP = position;
228
232
  const form = this.form;
229
- const target = this._refer;
233
+ const target = this.#refer;
230
234
  form.style.visibility = 'hidden';
231
235
  form.style.display = 'block';
232
236
  dom.utils.removeClass(form, 'se-select-menu-scroll');
@@ -250,11 +254,11 @@ class SelectMenu extends CoreInjector {
250
254
  }
251
255
 
252
256
  // set top position
253
- const globalTarget = this.editor.offset.get(target);
257
+ const globalTarget = this.#$.offset.get(target);
254
258
  const targetOffsetTop = target.offsetTop;
255
259
  const targetGlobalTop = globalTarget.top;
256
260
  const targetHeight = target.offsetHeight;
257
- const wbottom = dom.utils.getClientSize().h - (targetGlobalTop - this._w.scrollY + targetHeight);
261
+ const wbottom = dom.utils.getClientSize().h - (targetGlobalTop - _w.scrollY + targetHeight);
258
262
  const sideAddH = side ? targetHeight : 0;
259
263
  let overH = 10000;
260
264
  switch (position) {
@@ -268,14 +272,14 @@ class SelectMenu extends CoreInjector {
268
272
  form.style.top = t + 'px';
269
273
  }
270
274
  // over bottom
271
- let formT = this.editor.offset.getGlobal(form).top;
275
+ let formT = this.#$.offset.getGlobal(form).top;
272
276
  const modH = h - (targetGlobalTop - formT) - wbottom - targetHeight;
273
277
  if (modH > 0) {
274
278
  t -= modH + 4;
275
279
  form.style.top = t + 'px';
276
280
  }
277
281
  // over height
278
- formT = this.editor.offset.getGlobal(form).top;
282
+ formT = this.#$.offset.getGlobal(form).top;
279
283
  if (formT < 0) {
280
284
  h += formT - 4;
281
285
  t -= formT - 4;
@@ -308,7 +312,7 @@ class SelectMenu extends CoreInjector {
308
312
  }
309
313
 
310
314
  if (overH < MENU_MIN_HEIGHT && !_re && position !== 'middle') {
311
- this._setPosition(position === 'top' ? 'bottpm' : 'top', subPosition, onItemQuerySelector, true);
315
+ this.#setPosition(position === 'top' ? 'bottom' : 'top', subPosition, onItemQuerySelector, true);
312
316
  return;
313
317
  }
314
318
 
@@ -327,27 +331,27 @@ class SelectMenu extends CoreInjector {
327
331
  }
328
332
 
329
333
  form.style.left = l + 'px';
330
- const fl = this.editor.offset.getGlobal(form).left;
334
+ const fl = this.#$.offset.getGlobal(form).left;
331
335
  let overW = 0;
332
336
  switch (side + '-' + (side ? originP : subPosition)) {
333
337
  case 'true-left':
334
- overW = globalTarget.left - this._w.scrollX + fl;
338
+ overW = globalTarget.left - _w.scrollX + fl;
335
339
  if (overW < 0) l = l = targetL + targetW + 1;
336
340
  break;
337
341
  case 'true-right':
338
- overW = this._w.innerWidth - (fl + formW);
342
+ overW = _w.innerWidth - (fl + formW);
339
343
  if (overW < 0) l = targetL - formW - 1;
340
344
  break;
341
345
  case 'false-center': {
342
- overW = this._w.innerWidth - (fl + formW);
346
+ overW = _w.innerWidth - (fl + formW);
343
347
  if (overW < 0) l += overW - 4;
344
348
  form.style.left = l + 'px';
345
- const centerfl = this.editor.offset.getGlobal(form).left;
349
+ const centerfl = this.#$.offset.getGlobal(form).left;
346
350
  if (centerfl < 0) l -= centerfl - 4;
347
351
  break;
348
352
  }
349
353
  case 'false-left':
350
- overW = this._w.innerWidth - (globalTarget.left - this._w.scrollX + formW);
354
+ overW = _w.innerWidth - (globalTarget.left - _w.scrollX + formW);
351
355
  if (overW < 0) l += overW - 4;
352
356
  break;
353
357
  case 'false-right':
@@ -369,59 +373,54 @@ class SelectMenu extends CoreInjector {
369
373
  }
370
374
 
371
375
  /**
372
- * @private
373
376
  * @description Selects an item and triggers the callback function.
374
377
  * @param {number} index - The index of the item to select.
375
378
  */
376
- _select(index) {
379
+ #select(index) {
377
380
  if (this.checkList) dom.utils.toggleClass(this.menus[index], 'se-checked');
378
- this._selectMethod(this.getItem(index));
381
+ this.#selectMethod(this.getItem(index));
379
382
  }
380
383
 
381
384
  /**
382
- * @private
383
385
  * @description Adds event listeners for menu interactions.
384
386
  */
385
- __addEvents() {
386
- this.__removeEvents();
387
- this.__events = this.__eventHandlers;
388
- this.form.addEventListener('mousedown', this.__events.mousedown);
389
- this.form.addEventListener('mousemove', this.__events.mousemove);
390
- this.form.addEventListener('click', this.__events.click);
391
- this._keydownTarget.addEventListener('keydown', this.__events.keydown);
387
+ #addEvents() {
388
+ this.#removeEvents();
389
+ this.#events = this.#eventHandlers;
390
+ this.form.addEventListener('mousedown', this.#events.mousedown);
391
+ this.form.addEventListener('mousemove', this.#events.mousemove);
392
+ this.form.addEventListener('click', this.#events.click);
393
+ this.#keydownTarget.addEventListener('keydown', this.#events.keydown);
392
394
  }
393
395
 
394
396
  /**
395
- * @private
396
397
  * @description Removes event listeners for menu interactions.
397
398
  */
398
- __removeEvents() {
399
- if (!this.__events) return;
400
- this.form.removeEventListener('mousedown', this.__events.mousedown);
401
- this.form.removeEventListener('mousemove', this.__events.mousemove);
402
- this.form.removeEventListener('click', this.__events.click);
403
- this._keydownTarget.removeEventListener('keydown', this.__events.keydown);
404
- this.__events = null;
399
+ #removeEvents() {
400
+ if (!this.#events) return;
401
+ this.form.removeEventListener('mousedown', this.#events.mousedown);
402
+ this.form.removeEventListener('mousemove', this.#events.mousemove);
403
+ this.form.removeEventListener('click', this.#events.click);
404
+ this.#keydownTarget.removeEventListener('keydown', this.#events.keydown);
405
+ this.#events = null;
405
406
  }
406
407
 
407
408
  /**
408
- * @private
409
409
  * @description Adds global event listeners for closing the menu.
410
410
  */
411
- __addGlobalEvent() {
412
- this.__removeGlobalEvent();
413
- this._bindClose_key = this.eventManager.addGlobalEvent('keydown', this.__globalEventHandlers.keydown, true);
414
- this._bindClose_mousedown = this.eventManager.addGlobalEvent('mousedown', this.__globalEventHandlers.mousedown, true);
411
+ #addGlobalEvent() {
412
+ this.#removeGlobalEvent();
413
+ this.#bindClose_key = this.#$.eventManager.addGlobalEvent('keydown', this.#globalEventHandlers.keydown, true);
414
+ this.#bindClose_mousedown = this.#$.eventManager.addGlobalEvent('mousedown', this.#globalEventHandlers.mousedown, true);
415
415
  }
416
416
 
417
417
  /**
418
- * @private
419
418
  * @description Removes global event listeners for closing the menu.
420
419
  */
421
- __removeGlobalEvent() {
422
- if (this._bindClose_key) this._bindClose_key = this.eventManager.removeGlobalEvent(this._bindClose_key);
423
- if (this._bindClose_mousedown) this._bindClose_mousedown = this.eventManager.removeGlobalEvent(this._bindClose_mousedown);
424
- if (this._bindClose_click) this._bindClose_click = this.eventManager.removeGlobalEvent(this._bindClose_click);
420
+ #removeGlobalEvent() {
421
+ this.#bindClose_key &&= this.#$.eventManager.removeGlobalEvent(this.#bindClose_key);
422
+ this.#bindClose_mousedown &&= this.#$.eventManager.removeGlobalEvent(this.#bindClose_mousedown);
423
+ this.#bindClose_click &&= this.#$.eventManager.removeGlobalEvent(this.#bindClose_click);
425
424
  }
426
425
 
427
426
  /**
@@ -465,14 +464,14 @@ class SelectMenu extends CoreInjector {
465
464
  if (this.index > -1) {
466
465
  e.preventDefault();
467
466
  e.stopPropagation();
468
- this._select(this.index);
467
+ this.#select(this.index);
469
468
  } else {
470
469
  this.close();
471
470
  }
472
471
  break;
473
472
  }
474
473
 
475
- if (moveIndex) this._moveItem(moveIndex);
474
+ if (moveIndex) this.#moveItem(moveIndex);
476
475
  }
477
476
 
478
477
  /**
@@ -482,7 +481,7 @@ class SelectMenu extends CoreInjector {
482
481
  if (env.isGecko) {
483
482
  const eventTarget = dom.query.getEventTarget(e);
484
483
  const target = dom.query.getParentElement(eventTarget, '.se-select-item');
485
- if (target) this.eventManager._injectActiveEvent(target);
484
+ if (target) this.#$.eventManager._injectActiveEvent(target);
486
485
  }
487
486
  }
488
487
 
@@ -510,7 +509,7 @@ class SelectMenu extends CoreInjector {
510
509
  }
511
510
 
512
511
  if (!index) return;
513
- this._select(Number(index));
512
+ this.#select(Number(index));
514
513
  }
515
514
 
516
515
  /**
@@ -527,10 +526,10 @@ class SelectMenu extends CoreInjector {
527
526
  #CloseListener_mousedown(e) {
528
527
  const eventTarget = dom.query.getEventTarget(e);
529
528
  if (this.form.contains(eventTarget)) return;
530
- if (e.target !== this._refer) {
529
+ if (e.target !== this.#refer) {
531
530
  this.close();
532
531
  } else if (!dom.check.isInputElement(eventTarget)) {
533
- this._bindClose_click = this.eventManager.addGlobalEvent('click', this.__globalEventHandlers.click, true);
532
+ this.#bindClose_click = this.#$.eventManager.addGlobalEvent('click', this.#globalEventHandlers.click, true);
534
533
  }
535
534
  }
536
535
 
@@ -538,8 +537,8 @@ class SelectMenu extends CoreInjector {
538
537
  * @param {MouseEvent} e - Event object
539
538
  */
540
539
  #CloseListener_click(e) {
541
- this._bindClose_click = this.eventManager.removeGlobalEvent(this._bindClose_click);
542
- if (e.target === this._refer) {
540
+ this.#bindClose_click = this.#$.eventManager.removeGlobalEvent(this.#bindClose_click);
541
+ if (e.target === this.#refer) {
543
542
  e.stopPropagation();
544
543
  this.close();
545
544
  }
@@ -11,7 +11,7 @@ export const _DragHandle = new Map([
11
11
  ['__dragContainer', null],
12
12
  ['__dragCover', null],
13
13
  ['__dragMove', null],
14
- ['__overInfo', null]
14
+ ['__overInfo', null],
15
15
  ]);
16
16
 
17
17
  export default _DragHandle;
@@ -0,0 +1,6 @@
1
+ // ============================================================
2
+ // UI Modules - Helper classes, no callbacks required
3
+ // ============================================================
4
+ export { default as _DragHandle } from './_DragHandle.js';
5
+ export { default as ModalAnchorEditor } from './ModalAnchorEditor.js';
6
+ export { default as SelectMenu } from './SelectMenu.js';
@@ -1,56 +1,53 @@
1
- import EditorInjector from '../../editorInjector';
2
- import { Browser } from '../../modules';
1
+ import { PluginBrowser } from '../../interfaces';
2
+ import { Browser } from '../../modules/contract';
3
3
 
4
4
  /**
5
- * @typedef {import('../../modules/Browser').BrowserFile} BrowserFile_audioGallery
5
+ * @typedef {Object} AudioGalleryPluginOptions
6
+ * @property {Array<SunEditor.Module.Browser.File>} [data] - Direct data without server calls
7
+ * @property {string} [url] - Server request URL
8
+ * @property {Object<string, string>} [headers] - Server request headers
9
+ * @property {string|((item: SunEditor.Module.Browser.File) => string)} [thumbnail] - Default thumbnail
6
10
  */
7
11
 
8
12
  /**
9
13
  * @class
10
- * @extends EditorInjector
11
14
  * @description Audio gallery plugin
12
15
  */
13
- class AudioGallery extends EditorInjector {
16
+ class AudioGallery extends PluginBrowser {
14
17
  static key = 'audioGallery';
15
- static type = 'browser';
16
18
  static className = '';
17
19
 
18
20
  /**
19
21
  * @constructor
20
- * @param {__se__EditorCore} editor - The root editor instance
21
- * @param {Object} pluginOptions
22
- * @param {Array<*>=} pluginOptions.data - direct data without server calls
23
- * @param {string} pluginOptions.url - server request url
24
- * @param {Object<string, string>=} pluginOptions.headers - server request headers
25
- * @param {string|((item: BrowserFile_audioGallery) => string)} pluginOptions.thumbnail - default thumbnail
22
+ * @param {SunEditor.Kernel} kernel - The core kernel
23
+ * @param {AudioGalleryPluginOptions} pluginOptions
26
24
  */
27
- constructor(editor, pluginOptions) {
25
+ constructor(kernel, pluginOptions) {
28
26
  // plugin bisic properties
29
- super(editor);
30
- this.title = this.lang.audioGallery;
27
+ super(kernel);
28
+ this.title = this.$.lang.audioGallery;
31
29
  this.icon = 'audio_gallery';
32
30
 
33
31
  // members
34
32
  this.onSelectfunction = null;
35
33
 
36
34
  // modules
37
- const thumbnail = typeof pluginOptions.thumbnail === 'string' ? pluginOptions.thumbnail : this.icons.audio_thumbnail;
38
- this.browser = new Browser(this, {
39
- title: this.lang.audioGallery,
35
+ const thumbnail = typeof pluginOptions.thumbnail === 'string' ? pluginOptions.thumbnail : this.$.icons.audio_thumbnail;
36
+ this.browser = new Browser(this, this.$, {
37
+ title: this.$.lang.audioGallery,
40
38
  data: pluginOptions.data,
41
39
  url: pluginOptions.url,
42
40
  headers: pluginOptions.headers,
43
41
  selectorHandler: this.#SetItem.bind(this),
44
42
  columnSize: 4,
45
43
  className: 'se-audio-gallery',
46
- thumbnail: typeof pluginOptions.thumbnail === 'function' ? pluginOptions.thumbnail : () => thumbnail
44
+ thumbnail: typeof pluginOptions.thumbnail === 'function' ? pluginOptions.thumbnail : () => thumbnail,
47
45
  });
48
46
  }
49
47
 
50
48
  /**
51
- * @editorMethod Modules.Browser
52
- * @description Executes the method that is called when a "Browser" module's is opened.
53
- * @param {?(targe: Node) => *=} onSelectfunction method to be executed after selecting an item in the gallery
49
+ * @override
50
+ * @type {PluginBrowser['open']}
54
51
  */
55
52
  open(onSelectfunction) {
56
53
  this.onSelectfunction = onSelectfunction;
@@ -58,8 +55,8 @@ class AudioGallery extends EditorInjector {
58
55
  }
59
56
 
60
57
  /**
61
- * @editorMethod Modules.Browser
62
- * @description Executes the method that is called when a "Browser" module's is closed.
58
+ * @override
59
+ * @type {PluginBrowser['close']}
63
60
  */
64
61
  close() {
65
62
  this.onSelectfunction = null;
@@ -74,8 +71,8 @@ class AudioGallery extends EditorInjector {
74
71
  if (this.onSelectfunction) {
75
72
  this.onSelectfunction(target);
76
73
  } else {
77
- this.plugins.audio.init();
78
- this.plugins.audio.submitURL(target.getAttribute('data-command'));
74
+ this.$.plugins.audio.modalInit();
75
+ this.$.plugins.audio.submitURL(target.getAttribute('data-command'));
79
76
  }
80
77
  }
81
78
  }