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,25 +1,28 @@
1
- import EditorInjector from '../../editorInjector';
1
+ import { PluginDropdown } from '../../interfaces';
2
2
  import { dom } from '../../helper';
3
3
 
4
+ /**
5
+ * @typedef {Object} LayoutPluginOptions
6
+ * @property {Array<{name: string, html: string}>} [items] - Layout list
7
+ */
8
+
4
9
  /**
5
10
  * @class
6
11
  * @description Layout Plugin, Apply layout to the entire editor.
7
12
  */
8
- class Layout extends EditorInjector {
13
+ class Layout extends PluginDropdown {
9
14
  static key = 'layout';
10
- static type = 'dropdown';
11
15
  static className = '';
12
16
 
13
17
  /**
14
18
  * @constructor
15
- * @param {__se__EditorCore} editor - The root editor instance
16
- * @param {Object} pluginOptions
17
- * @param {Array<{name: string, html: string}>} pluginOptions.items - Layout list
19
+ * @param {SunEditor.Kernel} editor - The core kernel
20
+ * @param {LayoutPluginOptions} pluginOptions - Plugin options
18
21
  */
19
22
  constructor(editor, pluginOptions) {
20
23
  // plugin bisic properties
21
24
  super(editor);
22
- this.title = this.lang.layout;
25
+ this.title = this.$.lang.layout;
23
26
  this.icon = 'layout';
24
27
 
25
28
  // members
@@ -30,30 +33,32 @@ class Layout extends EditorInjector {
30
33
  const menu = CreateHTML(this.items);
31
34
 
32
35
  // init
33
- this.menu.initDropdownTarget(Layout, menu);
36
+ this.$.menu.initDropdownTarget(Layout, menu);
34
37
  }
35
38
 
36
39
  /**
37
- * @editorMethod Editor.core
38
- * @description Executes the main execution method of the plugin.
39
- * - Called when an item in the "dropdown" menu is clicked.
40
- * @param {HTMLElement} target - The plugin's toolbar button element
40
+ * @override
41
+ * @type {PluginDropdown['action']}
41
42
  */
42
43
  action(target) {
43
44
  const index = Number(target.getAttribute('data-value'));
44
45
  const temp = this.items[(this.selectedIndex = index)];
45
46
 
46
47
  if (temp.html) {
47
- this.html.set(temp.html);
48
+ this.$.html.set(temp.html);
48
49
  } else {
49
- this.menu.dropdownOff();
50
+ this.$.menu.dropdownOff();
50
51
  throw Error('[SUNEDITOR.layout.fail] cause : "layouts[i].html not found"');
51
52
  }
52
53
 
53
- this.menu.dropdownOff();
54
+ this.$.menu.dropdownOff();
54
55
  }
55
56
  }
56
57
 
58
+ /**
59
+ * @param {Array<{name: string, html: string}>} layoutList - Layout items
60
+ * @returns {HTMLElement}
61
+ */
57
62
  function CreateHTML(layoutList) {
58
63
  if (!layoutList || layoutList.length === 0) {
59
64
  console.warn('[SUNEDITOR.plugins.layout.warn] To use the "layout" plugin, please define the "layouts" option.');
@@ -1,48 +1,51 @@
1
- import EditorInjector from '../../editorInjector';
1
+ import { PluginDropdown } from '../../interfaces';
2
2
  import { dom } from '../../helper';
3
3
 
4
+ /**
5
+ * @typedef {Object} LineHeightPluginOptions
6
+ * @property {Array<{text: string, value: string}>} [items] - Line height list
7
+ */
8
+
4
9
  /**
5
10
  * @class
6
11
  * @description Line height Plugin
7
12
  */
8
- class LineHeight extends EditorInjector {
13
+ class LineHeight extends PluginDropdown {
9
14
  static key = 'lineHeight';
10
- static type = 'dropdown';
11
15
  static className = '';
12
16
 
17
+ #defaultValue;
18
+
13
19
  /**
14
20
  * @constructor
15
- * @param {__se__EditorCore} editor - The root editor instance
16
- * @param {Object} pluginOptions
17
- * @param {Array<{text: string, value: number}>} pluginOptions.items - Line height list
21
+ * @param {SunEditor.Kernel} editor - The core kernel
22
+ * @param {LineHeightPluginOptions} pluginOptions - Plugin options
18
23
  */
19
24
  constructor(editor, pluginOptions) {
20
25
  // plugin bisic properties
21
26
  super(editor);
22
- this.title = this.lang.lineHeight;
27
+ this.title = this.$.lang.lineHeight;
23
28
  this.icon = 'line_height';
24
29
 
25
30
  // create HTML
26
- const menu = CreateHTML(editor, pluginOptions.items);
31
+ const menu = CreateHTML(this.$, pluginOptions.items);
27
32
 
28
33
  // members
29
34
  this.sizeList = menu.querySelectorAll('li button');
30
35
  this.currentSize = null;
31
36
 
37
+ this.#defaultValue = /** @type {HTMLSpanElement} */ (menu.querySelector('.se-sub-list span'));
38
+
32
39
  // init
33
- this.menu.initDropdownTarget(LineHeight, menu);
40
+ this.$.menu.initDropdownTarget(LineHeight, menu);
34
41
  }
35
42
 
36
43
  /**
37
- * @editorMethod Editor.EventManager
38
- * @description Executes the method that is called whenever the cursor position changes.
39
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
40
- * @param {?HTMLElement=} target - The plugin's toolbar button element
41
- * @returns {boolean} - Whether the plugin is active
42
- * - If it returns "undefined", it will no longer be called in this scope.
44
+ * @hook Editor.EventManager
45
+ * @type {SunEditor.Hook.Event.Active}
43
46
  */
44
47
  active(element, target) {
45
- if (this.format.isLine(element) && element.style.lineHeight.length > 0) {
48
+ if (this.$.format.isLine(element) && element.style.lineHeight.length > 0) {
46
49
  dom.utils.addClass(target, 'active');
47
50
  return true;
48
51
  }
@@ -52,54 +55,66 @@ class LineHeight extends EditorInjector {
52
55
  }
53
56
 
54
57
  /**
55
- * @editorMethod Modules.Dropdown
56
- * @description Executes the method that is called when a plugin's dropdown menu is opened.
58
+ * @override
59
+ * @type {PluginDropdown['on']}
57
60
  */
58
61
  on() {
59
- const format = this.format.getLine(this.selection.getNode());
62
+ const format = this.$.format.getLine(this.$.selection.getNode());
60
63
  const currentSize = !format ? '' : format.style.lineHeight + '';
61
64
 
62
65
  if (currentSize !== this.currentSize) {
66
+ let found = false;
63
67
  const sizeList = this.sizeList;
64
68
  for (let i = 0, len = sizeList.length; i < len; i++) {
65
69
  if (currentSize === sizeList[i].getAttribute('data-command')) {
66
70
  dom.utils.addClass(sizeList[i], 'active');
71
+ found = true;
67
72
  } else {
68
73
  dom.utils.removeClass(sizeList[i], 'active');
69
74
  }
70
75
  }
71
76
 
72
77
  this.currentSize = currentSize;
78
+
79
+ if (!found) {
80
+ this.#defaultValue.textContent = currentSize;
81
+ this.#defaultValue.style.display = 'block';
82
+ } else {
83
+ this.#defaultValue.style.display = 'none';
84
+ }
73
85
  }
74
86
  }
75
87
 
76
88
  /**
77
- * @editorMethod Editor.core
78
- * @description Executes the main execution method of the plugin.
79
- * - Called when an item in the "dropdown" menu is clicked.
80
- * @param {HTMLElement} target - The plugin's toolbar button element
89
+ * @override
90
+ * @type {PluginDropdown['action']}
81
91
  */
82
92
  action(target) {
83
93
  const value = target.getAttribute('data-command') || '';
84
- const formats = this.format.getLines();
94
+ const formats = this.$.format.getLines();
85
95
 
86
96
  for (let i = 0, len = formats.length; i < len; i++) {
87
97
  formats[i].style.lineHeight = value;
88
98
  }
89
99
 
90
- this.menu.dropdownOff();
100
+ this.$.menu.dropdownOff();
91
101
 
92
- this.editor.effectNode = null;
93
- this.history.push(false);
102
+ this.$.store.set('_lastSelectionNode', null);
103
+ this.$.history.push(false);
94
104
  }
95
105
  }
96
106
 
107
+ /**
108
+ * @param {SunEditor.Deps} $ - Kernel dependencies
109
+ * @param {Array<{text: string, value: string}>} [items] - Line height items
110
+ * @returns {HTMLElement}
111
+ */
97
112
  function CreateHTML({ lang }, items) {
98
113
  const sizeList = items || [
99
114
  { text: '1', value: '1em' },
100
115
  { text: '1.2', value: '1.2em' },
101
116
  { text: '1.7', value: '1.7em' },
102
- { text: '2', value: '2em' }
117
+ { text: '2', value: '2em' },
103
118
  ];
104
119
 
105
120
  let list = /*html*/ `
@@ -107,9 +122,10 @@ function CreateHTML({ lang }, items) {
107
122
  <ul class="se-list-basic">
108
123
  <li>
109
124
  <button type="button" class="se-btn se-btn-list default_value" data-command="" title="${lang.default}" aria-label="${lang.default}">
110
- (${lang.default})
125
+ ${lang.default}
111
126
  </button>
112
- </li>`;
127
+ </li>
128
+ <li class="se-btn-list se-sub-list"><span></span></li>`;
113
129
 
114
130
  for (let i = 0, len = sizeList.length, size; i < len; i++) {
115
131
  size = sizeList[i];
@@ -1,46 +1,44 @@
1
- import EditorInjector from '../../editorInjector';
1
+ import { PluginDropdown } from '../../interfaces';
2
2
  import { dom } from '../../helper';
3
3
 
4
4
  /**
5
5
  * @class
6
- * @description List Plugin (OL, UL)
6
+ * @description List Plugin (`OL`, `UL`)
7
7
  */
8
- class List extends EditorInjector {
8
+ class List extends PluginDropdown {
9
9
  static key = 'list';
10
- static type = 'dropdown';
11
10
  static className = 'se-icon-flip-rtl';
12
11
 
12
+ #listItems;
13
+ #listIcons;
14
+
13
15
  /**
14
16
  * @constructor
15
- * @param {__se__EditorCore} editor - The root editor instance
17
+ * @param {SunEditor.Kernel} editor - The core kernel
16
18
  */
17
19
  constructor(editor) {
18
20
  // plugin bisic properties
19
21
  super(editor);
20
- this.title = this.lang.list;
22
+ this.title = this.$.lang.list;
21
23
  this.icon = 'list_numbered';
22
24
 
23
25
  // create HTML
24
- const menu = CreateHTML(editor);
26
+ const menu = CreateHTML(this.$);
25
27
 
26
28
  // members
27
- this.listItems = menu.querySelectorAll('li button');
28
- this.icons = {
29
- bulleted: editor.icons.list_bulleted,
30
- numbered: editor.icons.list_numbered
29
+ this.#listItems = menu.querySelectorAll('li button');
30
+ this.#listIcons = {
31
+ bulleted: this.$.icons.list_bulleted,
32
+ numbered: this.$.icons.list_numbered,
31
33
  };
32
34
 
33
35
  // init
34
- this.menu.initDropdownTarget(List, menu);
36
+ this.$.menu.initDropdownTarget(List, menu);
35
37
  }
36
38
 
37
39
  /**
38
- * @editorMethod Editor.EventManager
39
- * @description Executes the method that is called whenever the cursor position changes.
40
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
41
- * @param {?HTMLElement=} target - The plugin's toolbar button element
42
- * @returns {boolean} - Whether the plugin is active
43
- * - If it returns "undefined", it will no longer be called in this scope.
40
+ * @hook Editor.EventManager
41
+ * @type {SunEditor.Hook.Event.Active}
44
42
  */
45
43
  active(element, target) {
46
44
  const icon = target.firstElementChild;
@@ -51,29 +49,28 @@ class List extends EditorInjector {
51
49
  dom.utils.addClass(target, 'active');
52
50
 
53
51
  if (/^ul$/.test(nodeName)) {
54
- dom.utils.changeElement(icon, this.icons.bulleted);
52
+ dom.utils.changeElement(icon, this.#listIcons.bulleted);
55
53
  } else {
56
- dom.utils.changeElement(icon, this.icons.numbered);
54
+ dom.utils.changeElement(icon, this.#listIcons.numbered);
57
55
  }
58
56
 
59
57
  return true;
60
58
  }
61
59
 
62
60
  target.removeAttribute('data-focus');
63
- dom.utils.changeElement(icon, this.icons.number);
61
+ dom.utils.changeElement(icon, this.#listIcons.numbered);
64
62
  dom.utils.removeClass(target, 'active');
65
63
 
66
64
  return false;
67
65
  }
68
66
 
69
67
  /**
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
68
+ * @override
69
+ * @type {PluginDropdown['on']}
73
70
  */
74
71
  on(target) {
75
72
  const currentList = target.getAttribute('data-focus') || '';
76
- const list = this.listItems;
73
+ const list = this.#listItems;
77
74
  for (let i = 0, len = list.length; i < len; i++) {
78
75
  if (currentList === list[i].getAttribute('data-command')) {
79
76
  dom.utils.addClass(list[i], 'active');
@@ -84,22 +81,24 @@ class List extends EditorInjector {
84
81
  }
85
82
 
86
83
  /**
87
- * @editorMethod Editor.core
88
- * @description Executes the main execution method of the plugin.
89
- * - Called when an item in the "dropdown" menu is clicked.
90
- * @param {HTMLElement} target - The plugin's toolbar button element
84
+ * @override
85
+ * @type {PluginDropdown['action']}
91
86
  */
92
87
  action(target) {
93
88
  const command = target.getAttribute('data-command');
94
89
  const type = target.getAttribute('data-value') || '';
95
- const range = this.format.applyList(`${command}:${type}`, null, false);
96
- if (range) this.selection.setRange(range.sc, range.so, range.ec, range.eo);
90
+ const range = this.$.listFormat.apply(`${command}:${type}`, null, false);
91
+ if (range) this.$.selection.setRange(range.sc, range.so, range.ec, range.eo);
97
92
 
98
- this.menu.dropdownOff();
99
- this.history.push(false);
93
+ this.$.menu.dropdownOff();
94
+ this.$.history.push(false);
100
95
  }
101
96
  }
102
97
 
98
+ /**
99
+ * @param {SunEditor.Deps} $ - Kernel dependencies
100
+ * @returns {HTMLElement}
101
+ */
103
102
  function CreateHTML({ lang, icons }) {
104
103
  const html = /*html*/ `
105
104
  <div class="se-list-inner">
@@ -1,53 +1,56 @@
1
- import EditorInjector from '../../editorInjector';
1
+ import { PluginDropdown } from '../../interfaces';
2
2
  import { dom } from '../../helper';
3
3
 
4
+ /**
5
+ * @typedef {Object} ParagraphStylePluginOptions
6
+ * @property {Array<string|{name: string, class: string, _class: string}>} [items] - Paragraph item list
7
+ * @example
8
+ * use default paragraph styles
9
+ * ['spaced', 'bordered', 'neon']
10
+ * custom paragraph styles
11
+ * [
12
+ * { name: 'spaced', class: '__se__p-spaced', _class: '' },
13
+ * { name: 'bordered', class: '__se__p-bordered', _class: '' },
14
+ * { name: 'neon', class: '__se__p-neon', _class: '' }
15
+ * ]
16
+ */
17
+
4
18
  /**
5
19
  * @class
6
20
  * @description A plugin to style lines using classes.
7
21
  */
8
- class ParagraphStyle extends EditorInjector {
22
+ class ParagraphStyle extends PluginDropdown {
9
23
  static key = 'paragraphStyle';
10
- static type = 'dropdown';
11
24
  static className = '';
12
25
 
13
26
  /**
14
27
  * @constructor
15
- * @param {__se__EditorCore} editor - The root editor instance
16
- * @param {Object} pluginOptions
17
- * @param {Array<string|{name: string, class: string, _class: string}>} pluginOptions.items - Paragraph item list
18
- * @example
19
- * use default paragraph styles
20
- * ['spaced', 'bordered', 'neon']
21
- * custom paragraph styles
22
- [
23
- { name: 'spaced', class: '__se__p-spaced', _class: '' },
24
- { name: 'bordered', class: '__se__p-bordered', _class: '' },
25
- { name: 'neon', class: '__se__p-neon', _class: ''}
26
- ]
28
+ * @param {SunEditor.Kernel} editor - The core kernel
29
+ * @param {ParagraphStylePluginOptions} pluginOptions - Plugin options
27
30
  */
28
31
  constructor(editor, pluginOptions) {
29
32
  // plugin bisic properties
30
33
  super(editor);
31
- this.title = this.lang.paragraphStyle;
34
+ this.title = this.$.lang.paragraphStyle;
32
35
  this.icon = 'paragraph_style';
33
36
 
34
37
  // create HTML
35
- const menu = CreateHTML(editor, pluginOptions.items);
38
+ const menu = CreateHTML(this.$, pluginOptions.items);
36
39
 
37
40
  // members
38
41
  this.classList = menu.querySelectorAll('li button');
39
42
 
40
43
  // init
41
- this.menu.initDropdownTarget(ParagraphStyle, menu);
44
+ this.$.menu.initDropdownTarget(ParagraphStyle, menu);
42
45
  }
43
46
 
44
47
  /**
45
- * @editorMethod Modules.Dropdown
46
- * @description Executes the method that is called when a plugin's dropdown menu is opened.
48
+ * @override
49
+ * @type {PluginDropdown['on']}
47
50
  */
48
51
  on() {
49
52
  const paragraphList = this.classList;
50
- const currentFormat = this.format.getLine(this.selection.getNode());
53
+ const currentFormat = this.$.format.getLine(this.$.selection.getNode());
51
54
 
52
55
  for (let i = 0, len = paragraphList.length; i < len; i++) {
53
56
  if (dom.utils.hasClass(currentFormat, paragraphList[i].getAttribute('data-command'))) {
@@ -59,17 +62,15 @@ class ParagraphStyle extends EditorInjector {
59
62
  }
60
63
 
61
64
  /**
62
- * @editorMethod Editor.core
63
- * @description Executes the main execution method of the plugin.
64
- * - Called when an item in the "dropdown" menu is clicked.
65
- * @param {HTMLElement} target - The plugin's toolbar button element
65
+ * @override
66
+ * @type {PluginDropdown['action']}
66
67
  */
67
68
  action(target) {
68
69
  const value = target.getAttribute('data-command');
69
- let selectedFormsts = this.format.getLines();
70
+ let selectedFormsts = this.$.format.getLines();
70
71
  if (selectedFormsts.length === 0) {
71
- this.selection.getRangeAndAddLine(this.selection.getRange(), null);
72
- selectedFormsts = this.format.getLines();
72
+ this.$.selection.getRangeAndAddLine(this.$.selection.getRange(), null);
73
+ selectedFormsts = this.$.format.getLines();
73
74
  if (selectedFormsts.length === 0) return;
74
75
  }
75
76
 
@@ -79,28 +80,33 @@ class ParagraphStyle extends EditorInjector {
79
80
  toggleClass(selectedFormsts[i], value);
80
81
  }
81
82
 
82
- this.menu.dropdownOff();
83
- this.history.push(false);
83
+ this.$.menu.dropdownOff();
84
+ this.$.history.push(false);
84
85
  }
85
86
  }
86
87
 
88
+ /**
89
+ * @param {SunEditor.Deps} $ - Kernel dependencies
90
+ * @param {Array<string|{name: string, class: string, _class?: string}>} [items] - Paragraph style items
91
+ * @returns {HTMLElement}
92
+ */
87
93
  function CreateHTML({ lang }, items) {
88
94
  const defaultList = {
89
95
  spaced: {
90
96
  name: lang.menu_spaced,
91
97
  class: '__se__p-spaced',
92
- _class: ''
98
+ _class: '',
93
99
  },
94
100
  bordered: {
95
101
  name: lang.menu_bordered,
96
102
  class: '__se__p-bordered',
97
- _class: ''
103
+ _class: '',
98
104
  },
99
105
  neon: {
100
106
  name: lang.menu_neon,
101
107
  class: '__se__p-neon',
102
- _class: ''
103
- }
108
+ _class: '',
109
+ },
104
110
  };
105
111
  const paragraphStyles = !items || items.length === 0 ? ['spaced', 'bordered', 'neon'] : items;
106
112