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,49 +1,49 @@
1
- import EditorInjector from '../../editorInjector';
1
+ import { PluginCommand, PluginDropdown } from '../../interfaces';
2
2
  import { dom } from '../../helper';
3
3
 
4
+ void PluginDropdown;
5
+
4
6
  const DEFAULT_TYPE = 'disc';
5
7
 
6
8
  /**
7
9
  * @class
10
+ * @implements {PluginDropdown}
8
11
  * @description List bulleted plugin, Several types of lists are provided.
9
12
  */
10
- class List_bulleted extends EditorInjector {
13
+ class List_bulleted extends PluginCommand {
11
14
  static key = 'list_bulleted';
12
- static type = 'command';
13
15
  static className = 'se-icon-flip-rtl';
14
16
 
17
+ #listItems;
18
+
15
19
  /**
16
20
  * @constructor
17
- * @param {__se__EditorCore} editor - The root editor instance
21
+ * @param {SunEditor.Kernel} editor - The core kernel
18
22
  */
19
23
  constructor(editor) {
20
24
  // plugin bisic properties
21
25
  super(editor);
22
- this.title = this.lang.bulletedList;
26
+ this.title = this.$.lang.bulletedList;
23
27
  this.icon = 'list_bulleted';
24
28
  this.afterItem = dom.utils.createElement(
25
29
  'button',
26
30
  { class: 'se-btn se-tooltip se-sub-arrow-btn', 'data-command': List_bulleted.key, 'data-type': 'dropdown' },
27
- `${this.icons.arrow_down}<span class="se-tooltip-inner"><span class="se-tooltip-text">${this.lang.bulletedList}</span></span>`
31
+ `${this.$.icons.arrow_down}<span class="se-tooltip-inner"><span class="se-tooltip-text">${this.$.lang.bulletedList}</span></span>`,
28
32
  );
29
33
 
30
34
  // create HTML
31
35
  const menu = CreateHTML();
32
36
 
33
37
  // members
34
- this.listItems = menu.querySelectorAll('li button ul');
38
+ this.#listItems = menu.querySelectorAll('li button ul');
35
39
 
36
40
  // init
37
- this.menu.initDropdownTarget({ key: List_bulleted.key, type: 'dropdown' }, menu);
41
+ this.$.menu.initDropdownTarget({ key: List_bulleted.key, type: 'dropdown' }, menu);
38
42
  }
39
43
 
40
44
  /**
41
- * @editorMethod Editor.EventManager
42
- * @description Executes the method that is called whenever the cursor position changes.
43
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
44
- * @param {?HTMLElement=} target - The plugin's toolbar button element
45
- * @returns {boolean} - Whether the plugin is active
46
- * - If it returns "undefined", it will no longer be called in this scope.
45
+ * @hook Editor.EventManager
46
+ * @type {SunEditor.Hook.Event.Active}
47
47
  */
48
48
  active(element, target) {
49
49
  if (dom.check.isListCell(element) && /^UL$/i.test(element.parentElement.nodeName)) {
@@ -56,12 +56,29 @@ class List_bulleted extends EditorInjector {
56
56
  }
57
57
 
58
58
  /**
59
- * @editorMethod Modules.Dropdown
60
- * @description Executes the method that is called when a plugin's dropdown menu is opened.
59
+ * @override
60
+ * @type {PluginCommand['action']}
61
+ */
62
+ action(target) {
63
+ const el = this.$.format.getBlock(this.$.selection.getNode());
64
+ const type = target?.querySelector('ul')?.style.listStyleType;
65
+
66
+ if (dom.check.isList(el) && type) {
67
+ el.style.listStyleType = type;
68
+ } else {
69
+ this.submit(type);
70
+ }
71
+
72
+ this.$.menu.dropdownOff();
73
+ }
74
+
75
+ /**
76
+ * @impl Dropdown
77
+ * @type {PluginDropdown['on']}
61
78
  */
62
79
  on() {
63
- const list = this.listItems;
64
- const el = this.format.getBlock(this.selection.getNode());
80
+ const list = this.#listItems;
81
+ const el = this.$.format.getBlock(this.$.selection.getNode());
65
82
  const type = el?.style ? el.style.listStyleType || DEFAULT_TYPE : '';
66
83
 
67
84
  for (let i = 0, len = list.length, l; i < len; i++) {
@@ -75,28 +92,8 @@ class List_bulleted extends EditorInjector {
75
92
  }
76
93
 
77
94
  /**
78
- * @editorMethod Editor.core
79
- * @description Executes the main execution method of the plugin.
80
- * - Called when an item in the "dropdown" menu is clicked.
81
- * @param {HTMLElement} target - The plugin's toolbar button element
82
- */
83
- action(target) {
84
- const el = this.format.getBlock(this.selection.getNode());
85
- const type = target?.querySelector('ul')?.style.listStyleType;
86
-
87
- if (dom.check.isList(el) && type) {
88
- el.style.listStyleType = type;
89
- } else {
90
- this.submit(type);
91
- }
92
-
93
- this.menu.dropdownOff();
94
- }
95
-
96
- /**
97
- * @editorMethod Editor.core
98
- * @description Executes methods called by shortcut keys.
99
- * @param {__se__PluginShortcutInfo} params - Information of the "shortcut" plugin
95
+ * @hook Editor.Core
96
+ * @type {SunEditor.Hook.Core.Shortcut}
100
97
  */
101
98
  shortcut({ range, info }) {
102
99
  const { startContainer } = range;
@@ -112,13 +109,16 @@ class List_bulleted extends EditorInjector {
112
109
  * @param {string} [type=""] List type
113
110
  */
114
111
  submit(type) {
115
- const range = this.format.applyList(`ul:${type || ''}`, null, false);
116
- if (range) this.selection.setRange(range.sc, range.so, range.ec, range.eo);
117
- this.editor.focus();
118
- this.history.push(false);
112
+ const range = this.$.listFormat.apply(`ul:${type || ''}`, null, false);
113
+ if (range) this.$.selection.setRange(range.sc, range.so, range.ec, range.eo);
114
+ this.$.focusManager.focus();
115
+ this.$.history.push(false);
119
116
  }
120
117
  }
121
118
 
119
+ /**
120
+ * @returns {HTMLElement}
121
+ */
122
122
  function CreateHTML() {
123
123
  const html = /*html*/ `
124
124
  <div class="se-list-inner">
@@ -130,6 +130,10 @@ function CreateHTML() {
130
130
  return dom.utils.createElement('DIV', { class: 'se-dropdown se-list-layer' }, html);
131
131
  }
132
132
 
133
+ /**
134
+ * @param {string[]} types - List style types
135
+ * @returns {string} HTML string
136
+ */
133
137
  function _CreateLI(types) {
134
138
  return types
135
139
  .map((v) => {
@@ -1,49 +1,49 @@
1
- import EditorInjector from '../../editorInjector';
1
+ import { PluginCommand, PluginDropdown } from '../../interfaces';
2
2
  import { dom } from '../../helper';
3
3
 
4
+ void PluginDropdown;
5
+
4
6
  const DEFAULT_TYPE = 'decimal';
5
7
 
6
8
  /**
7
9
  * @class
10
+ * @implements {PluginDropdown}
8
11
  * @description List numbered plugin, Several types of lists are provided.
9
12
  */
10
- class List_numbered extends EditorInjector {
13
+ class List_numbered extends PluginCommand {
11
14
  static key = 'list_numbered';
12
- static type = 'command';
13
15
  static className = 'se-icon-flip-rtl';
14
16
 
17
+ #listItems;
18
+
15
19
  /**
16
20
  * @constructor
17
- * @param {__se__EditorCore} editor - The root editor instance
21
+ * @param {SunEditor.Kernel} editor - The core kernel
18
22
  */
19
23
  constructor(editor) {
20
24
  // plugin bisic properties
21
25
  super(editor);
22
- this.title = this.lang.numberedList;
26
+ this.title = this.$.lang.numberedList;
23
27
  this.icon = 'list_numbered';
24
28
  this.afterItem = dom.utils.createElement(
25
29
  'button',
26
30
  { class: 'se-btn se-tooltip se-sub-arrow-btn', 'data-command': List_numbered.key, 'data-type': 'dropdown' },
27
- `${this.icons.arrow_down}<span class="se-tooltip-inner"><span class="se-tooltip-text">${this.lang.numberedList}</span></span>`
31
+ `${this.$.icons.arrow_down}<span class="se-tooltip-inner"><span class="se-tooltip-text">${this.$.lang.numberedList}</span></span>`,
28
32
  );
29
33
 
30
34
  // create HTML
31
35
  const menu = CreateHTML();
32
36
 
33
37
  // members
34
- this.listItems = menu.querySelectorAll('li button ol');
38
+ this.#listItems = menu.querySelectorAll('li button ol');
35
39
 
36
40
  // init
37
- this.menu.initDropdownTarget({ key: List_numbered.key, type: 'dropdown' }, menu);
41
+ this.$.menu.initDropdownTarget({ key: List_numbered.key, type: 'dropdown' }, menu);
38
42
  }
39
43
 
40
44
  /**
41
- * @editorMethod Editor.EventManager
42
- * @description Executes the method that is called whenever the cursor position changes.
43
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
44
- * @param {?HTMLElement=} target - The plugin's toolbar button element
45
- * @returns {boolean} - Whether the plugin is active
46
- * - If it returns "undefined", it will no longer be called in this scope.
45
+ * @hook Editor.EventManager
46
+ * @type {SunEditor.Hook.Event.Active}
47
47
  */
48
48
  active(element, target) {
49
49
  if (dom.check.isListCell(element) && /^OL$/i.test(element.parentElement.nodeName)) {
@@ -56,12 +56,29 @@ class List_numbered extends EditorInjector {
56
56
  }
57
57
 
58
58
  /**
59
- * @editorMethod Modules.Dropdown
60
- * @description Executes the method that is called when a plugin's dropdown menu is opened.
59
+ * @override
60
+ * @type {PluginCommand['action']}
61
+ */
62
+ action(target) {
63
+ const el = this.$.format.getBlock(this.$.selection.getNode());
64
+ const type = target?.querySelector('ol')?.style.listStyleType;
65
+
66
+ if (dom.check.isList(el) && type) {
67
+ el.style.listStyleType = type;
68
+ } else {
69
+ this.submit(type);
70
+ }
71
+
72
+ this.$.menu.dropdownOff();
73
+ }
74
+
75
+ /**
76
+ * @hook Dropdown
77
+ * @type {PluginDropdown['on']}
61
78
  */
62
79
  on() {
63
- const list = this.listItems;
64
- const el = this.format.getBlock(this.selection.getNode());
80
+ const list = this.#listItems;
81
+ const el = this.$.format.getBlock(this.$.selection.getNode());
65
82
  const type = el?.style ? el.style.listStyleType || DEFAULT_TYPE : '';
66
83
 
67
84
  for (let i = 0, len = list.length, l; i < len; i++) {
@@ -75,28 +92,8 @@ class List_numbered extends EditorInjector {
75
92
  }
76
93
 
77
94
  /**
78
- * @editorMethod Editor.core
79
- * @description Executes the main execution method of the plugin.
80
- * - Called when an item in the "dropdown" menu is clicked.
81
- * @param {HTMLElement} target - The plugin's toolbar button element
82
- */
83
- action(target) {
84
- const el = this.format.getBlock(this.selection.getNode());
85
- const type = target?.querySelector('ol')?.style.listStyleType;
86
-
87
- if (dom.check.isList(el) && type) {
88
- el.style.listStyleType = type;
89
- } else {
90
- this.submit(type);
91
- }
92
-
93
- this.menu.dropdownOff();
94
- }
95
-
96
- /**
97
- * @editorMethod Editor.core
98
- * @description Executes methods called by shortcut keys.
99
- * @param {__se__PluginShortcutInfo} params - Information of the "shortcut" plugin
95
+ * @hook Editor.Core
96
+ * @type {SunEditor.Hook.Core.Shortcut}
100
97
  */
101
98
  shortcut({ range, info }) {
102
99
  const { startContainer } = range;
@@ -112,13 +109,16 @@ class List_numbered extends EditorInjector {
112
109
  * @param {string} [type=""] List type
113
110
  */
114
111
  submit(type) {
115
- const range = this.format.applyList(`ol:${type || ''}`, null, false);
116
- if (range) this.selection.setRange(range.sc, range.so, range.ec, range.eo);
117
- this.editor.focus();
118
- this.history.push(false);
112
+ const range = this.$.listFormat.apply(`ol:${type || ''}`, null, false);
113
+ if (range) this.$.selection.setRange(range.sc, range.so, range.ec, range.eo);
114
+ this.$.focusManager.focus();
115
+ this.$.history.push(false);
119
116
  }
120
117
  }
121
118
 
119
+ /**
120
+ * @returns {HTMLElement}
121
+ */
122
122
  function CreateHTML() {
123
123
  const html = /*html*/ `
124
124
  <div class="se-list-inner">
@@ -133,6 +133,10 @@ function CreateHTML() {
133
133
  return dom.utils.createElement('DIV', { class: 'se-dropdown se-list-layer' }, html);
134
134
  }
135
135
 
136
+ /**
137
+ * @param {string[]} types - List style types
138
+ * @returns {string} HTML string
139
+ */
136
140
  function _CreateLI(types) {
137
141
  return types
138
142
  .map((v) => {
@@ -1,50 +1,49 @@
1
- import EditorInjector from '../../editorInjector';
1
+ import { PluginDropdown } from '../../interfaces';
2
2
  import { dom } from '../../helper';
3
3
 
4
+ /**
5
+ * @typedef {Object} AlignPluginOptions
6
+ * @property {Array.<"right"|"center"|"left"|"justify">} [items] - Align items
7
+ */
8
+
4
9
  /**
5
10
  * @class
6
11
  * @description Align plugin
7
12
  */
8
- class Align extends EditorInjector {
13
+ class Align extends PluginDropdown {
9
14
  static key = 'align';
10
- static type = 'dropdown';
11
15
  static className = '';
12
16
 
13
17
  /**
14
- * @param {__se__EditorCore} editor - The root editor instance
15
- * @param {Object} pluginOptions
16
- * @param {Array.<"right"|"center"|"left"|"justify">} pluginOptions.items - Align items
18
+ * @param {SunEditor.Kernel} editor - The core kernel
19
+ * @param {AlignPluginOptions} pluginOptions - Plugin options
17
20
  */
18
21
  constructor(editor, pluginOptions) {
19
22
  super(editor);
20
- this.title = this.lang.align;
21
- this.icon = this.options.get('_rtl') ? 'align_right' : 'align_left';
23
+ this.title = this.$.lang.align;
24
+ this.icon = this.$.options.get('_rtl') ? 'align_right' : 'align_left';
22
25
 
23
26
  // create HTML
24
- const menu = CreateHTML(editor, pluginOptions.items);
27
+ const menu = CreateHTML(this.$, pluginOptions.items);
25
28
  const commandArea = (this._itemMenu = menu.querySelector('ul'));
26
29
 
27
30
  // members
28
- this.defaultDir = editor.options.get('_rtl') ? 'right' : 'left';
31
+ this.defaultDir = '';
29
32
  this.alignIcons = {
30
- justify: editor.icons.align_justify,
31
- left: editor.icons.align_left,
32
- right: editor.icons.align_right,
33
- center: editor.icons.align_center
33
+ justify: this.$.icons.align_justify,
34
+ left: this.$.icons.align_left,
35
+ right: this.$.icons.align_right,
36
+ center: this.$.icons.align_center,
34
37
  };
35
38
  this.alignList = commandArea.querySelectorAll('li button');
36
39
 
37
40
  // init
38
- this.menu.initDropdownTarget(Align, menu);
41
+ this.$.menu.initDropdownTarget(Align, menu);
39
42
  }
40
43
 
41
44
  /**
42
- * @editorMethod Editor.EventManager
43
- * @description Executes the method that is called whenever the cursor position changes.
44
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
45
- * @param {?HTMLElement=} target - The plugin's toolbar button element
46
- * @returns {boolean} - Whether the plugin is active
47
- * - If it returns "undefined", it will no longer be called in this scope.
45
+ * @hook Editor.EventManager
46
+ * @type {SunEditor.Hook.Event.Active}
48
47
  */
49
48
  active(element, target) {
50
49
  const targetChild = target.firstElementChild;
@@ -52,8 +51,8 @@ class Align extends EditorInjector {
52
51
  if (!element) {
53
52
  dom.utils.changeElement(targetChild, this.alignIcons[this.defaultDir]);
54
53
  target.removeAttribute('data-focus');
55
- } else if (this.format.isLine(element)) {
56
- const textAlign = /** @type {HTMLElement} */ (element).style.textAlign;
54
+ } else if (this.$.format.isLine(element)) {
55
+ const textAlign = element.style.textAlign;
57
56
  if (textAlign) {
58
57
  dom.utils.changeElement(targetChild, this.alignIcons[textAlign] || this.alignIcons[this.defaultDir]);
59
58
  target.setAttribute('data-focus', textAlign);
@@ -66,9 +65,8 @@ class Align extends EditorInjector {
66
65
  }
67
66
 
68
67
  /**
69
- * @editorMethod Modules.Dropdown
70
- * @description Executes the method that is called when a plugin's dropdown menu is opened.
71
- * @param {HTMLElement} target Line element at the current cursor position
68
+ * @override
69
+ * @type {PluginDropdown['on']}
72
70
  */
73
71
  on(target) {
74
72
  const currentAlign = target.getAttribute('data-focus') || this.defaultDir;
@@ -85,12 +83,31 @@ class Align extends EditorInjector {
85
83
  }
86
84
 
87
85
  /**
88
- * @editorMethod Editor.core
89
- * @description Executes the method called when the rtl, ltr mode changes. ("editor.setDir")
90
- * @param {string} dir Direction ("rtl" or "ltr")
86
+ * @override
87
+ * @type {PluginDropdown['action']}
91
88
  */
92
- setDir(dir) {
93
- const _dir = dir === 'rtl' ? 'right' : 'left';
89
+ action(target) {
90
+ const value = target.getAttribute('data-command');
91
+ if (!value) return;
92
+
93
+ const defaultDir = this.defaultDir;
94
+ const selectedFormsts = this.$.format.getLines();
95
+ for (let i = 0, len = selectedFormsts.length; i < len; i++) {
96
+ dom.utils.setStyle(selectedFormsts[i], 'textAlign', value === defaultDir ? '' : value);
97
+ }
98
+
99
+ this.$.store.set('_lastSelectionNode', null);
100
+ this.$.menu.dropdownOff();
101
+ this.$.focusManager.focus();
102
+ this.$.history.push(false);
103
+ }
104
+
105
+ /**
106
+ * @hook Editor.Core
107
+ * @type {SunEditor.Hook.Core.SetDir}
108
+ */
109
+ setDir() {
110
+ const _dir = this.#findDefaultDir();
94
111
  if (this.defaultDir === _dir) return;
95
112
 
96
113
  this.defaultDir = _dir;
@@ -105,28 +122,25 @@ class Align extends EditorInjector {
105
122
  }
106
123
 
107
124
  /**
108
- * @editorMethod Editor.core
109
- * @description Executes the main execution method of the plugin.
110
- * - Called when an item in the "dropdown" menu is clicked.
111
- * @param {HTMLElement} target - The plugin's toolbar button element
125
+ * @hook Editor.Core
126
+ * @type {SunEditor.Hook.Core.Init}
112
127
  */
113
- action(target) {
114
- const value = target.getAttribute('data-command');
115
- if (!value) return;
116
-
117
- const defaultDir = this.defaultDir;
118
- const selectedFormsts = this.format.getLines();
119
- for (let i = 0, len = selectedFormsts.length; i < len; i++) {
120
- dom.utils.setStyle(selectedFormsts[i], 'textAlign', value === defaultDir ? '' : value);
121
- }
128
+ init() {
129
+ this.defaultDir = this.#findDefaultDir();
130
+ }
122
131
 
123
- this.editor.effectNode = null;
124
- this.menu.dropdownOff();
125
- this.editor.focus();
126
- this.history.push(false);
132
+ #findDefaultDir() {
133
+ const align = this.$.frameContext.get('wwComputedStyle').getPropertyValue('text-align');
134
+ const valid = ['left', 'center', 'right', 'justify'];
135
+ return valid.includes(align) ? align : this.$.options.get('_rtl') ? 'right' : 'left';
127
136
  }
128
137
  }
129
138
 
139
+ /**
140
+ * @param {SunEditor.Deps} $ - Kernel dependencies
141
+ * @param {string[]} [items] - Align items list
142
+ * @returns {HTMLElement}
143
+ */
130
144
  function CreateHTML({ lang, icons, options }, items) {
131
145
  const alignItems = Array.isArray(items) ? items : options.get('_rtl') ? ['right', 'center', 'left', 'justify'] : ['left', 'center', 'right', 'justify'];
132
146
 
@@ -145,12 +159,12 @@ function CreateHTML({ lang, icons, options }, items) {
145
159
  return dom.utils.createElement(
146
160
  'div',
147
161
  {
148
- class: 'se-dropdown se-list-layer se-list-align'
162
+ class: 'se-dropdown se-list-layer se-list-align',
149
163
  },
150
164
  /*html*/ `
151
165
  <div class="se-list-inner">
152
166
  <ul class="se-list-basic">${html}</ul>
153
- </div>`
167
+ </div>`,
154
168
  );
155
169
  }
156
170
 
@@ -1,53 +1,52 @@
1
- import EditorInjector from '../../editorInjector';
2
- import ColorPicker from '../../modules/ColorPicker';
1
+ import { PluginDropdownFree } from '../../interfaces';
2
+ import { ColorPicker } from '../../modules/contract';
3
3
  import { dom } from '../../helper';
4
4
 
5
+ /**
6
+ * @typedef {Object} BackgroundColorPluginOptions
7
+ * @property {Array<string|{value: string, name: string}>} [items] - Color list
8
+ * @property {number} [splitNum] - Number of colors per line
9
+ * @property {boolean} [disableHEXInput] - Disable HEX input
10
+ */
11
+
5
12
  /**
6
13
  * @class
7
14
  * @description Text background color plugin
8
15
  */
9
- class BackgroundColor extends EditorInjector {
16
+ class BackgroundColor extends PluginDropdownFree {
10
17
  static key = 'backgroundColor';
11
- static type = 'dropdown-free';
12
18
  static className = '';
13
19
 
14
20
  /**
15
21
  * @constructor
16
- * @param {__se__EditorCore} editor - The root editor instance
17
- * @param {Object} pluginOptions
18
- * @param {Array<string|{value: string, name: string}>} pluginOptions.items - Color list
19
- * @param {number} pluginOptions.splitNum - Number of colors per line
20
- * @param {boolean} pluginOptions.disableHEXInput - Disable HEX input
22
+ * @param {SunEditor.Kernel} editor - The core kernel
23
+ * @param {BackgroundColorPluginOptions} pluginOptions - Plugin options
21
24
  */
22
25
  constructor(editor, pluginOptions) {
23
26
  super(editor);
24
27
  // plugin basic properties
25
- this.title = this.lang.backgroundColor;
28
+ this.title = this.$.lang.backgroundColor;
26
29
  this.icon = 'background_color';
27
30
 
28
31
  // create HTML
29
32
  const menu = CreateHTML();
30
33
 
31
34
  // members
32
- this.colorPicker = new ColorPicker(this, 'backgroundColor', {
35
+ this.colorPicker = new ColorPicker(this, this.$, 'backgroundColor', {
36
+ form: menu,
33
37
  colorList: pluginOptions.items,
34
38
  splitNum: pluginOptions.splitNum,
35
39
  disableHEXInput: pluginOptions.disableHEXInput,
36
- hueSliderOptions: { controllerOptions: { parents: [menu], isOutsideForm: true } }
40
+ hueSliderOptions: { controllerOptions: { isOutsideForm: true } },
37
41
  });
38
42
 
39
- // itit
40
- menu.appendChild(this.colorPicker.target);
41
- this.menu.initDropdownTarget(BackgroundColor, menu);
43
+ // init
44
+ this.$.menu.initDropdownTarget(BackgroundColor, menu);
42
45
  }
43
46
 
44
47
  /**
45
- * @editorMethod Editor.EventManager
46
- * @description Executes the method that is called whenever the cursor position changes.
47
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
48
- * @param {?HTMLElement=} target - The plugin's toolbar button element
49
- * @returns {boolean} - Whether the plugin is active
50
- * - If it returns "undefined", it will no longer be called in this scope.
48
+ * @hook Editor.EventManager
49
+ * @type {SunEditor.Hook.Event.Active}
51
50
  */
52
51
  active(element, target) {
53
52
  const colorHelper = /** @type {SVGPathElement} */ (target.querySelector('path.se-svg-color-helper'));
@@ -56,7 +55,7 @@ class BackgroundColor extends EditorInjector {
56
55
  let color = '';
57
56
  if (!element) {
58
57
  colorHelper.style.color = color;
59
- } else if (this.format.isLine(element)) {
58
+ } else if (this.$.format.isLine(element)) {
60
59
  return undefined;
61
60
  } else if ((color = dom.utils.getStyle(element, 'backgroundColor'))) {
62
61
  colorHelper.style.color = color;
@@ -67,40 +66,40 @@ class BackgroundColor extends EditorInjector {
67
66
  }
68
67
 
69
68
  /**
70
- * @editorMethod Modules.Dropdown
71
- * @description Executes the method that is called when a plugin's "dropdown" menu is opened.
72
- * @param {HTMLElement} target Line element at the current cursor position
69
+ * @override
70
+ * @type {PluginDropdownFree['on']}
73
71
  */
74
72
  on(target) {
75
- this.colorPicker.init(this.selection.getNode(), target, (current) => this.format.isLine(current));
73
+ this.colorPicker.init(this.$.selection.getNode(), target, (current) => this.$.format.isLine(current));
76
74
  }
77
75
 
78
76
  /**
79
- * @editorMethod Modules.Dropdown
80
- * @description Executes the method that is called when a plugin's "dropdown" menu is closed.
77
+ * @override
78
+ * @type {PluginDropdownFree['off']}
81
79
  */
82
80
  off() {
83
81
  this.colorPicker.hueSliderClose();
84
82
  }
85
83
 
86
84
  /**
87
- * @editorMethod Modules.ColorPicker
88
- * @description Executes the method called when a button of "ColorPicker" module is clicked.
89
- * - This plugin is by applying the "ColorPicker" module globally to the "dropdown" menu, the default "action" method is not called.
90
- * @param {string} color - Color code (hex)
85
+ * @hook Modules.ColorPicker
86
+ * @type {SunEditor.Hook.ColorPicker.Action}
91
87
  */
92
88
  colorPickerAction(color) {
93
89
  if (color) {
94
90
  const newNode = dom.utils.createElement('SPAN', { style: 'background-color: ' + color + ';' });
95
- this.format.applyInlineElement(newNode, { stylesToModify: ['background-color'], nodesToRemove: null, strictRemove: null });
91
+ this.$.inline.apply(newNode, { stylesToModify: ['background-color'], nodesToRemove: null, strictRemove: null });
96
92
  } else {
97
- this.format.applyInlineElement(null, { stylesToModify: ['background-color'], nodesToRemove: ['span'], strictRemove: true });
93
+ this.$.inline.apply(null, { stylesToModify: ['background-color'], nodesToRemove: ['span'], strictRemove: true });
98
94
  }
99
95
 
100
- this.menu.dropdownOff();
96
+ this.$.menu.dropdownOff();
101
97
  }
102
98
  }
103
99
 
100
+ /**
101
+ * @returns {HTMLElement}
102
+ */
104
103
  function CreateHTML() {
105
104
  return dom.utils.createElement('DIV', { class: 'se-dropdown se-list-layer' }, null);
106
105
  }