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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/README.md +65 -57
  2. package/dist/suneditor-contents.min.css +1 -0
  3. package/dist/suneditor.min.css +1 -1
  4. package/dist/suneditor.min.js +1 -1
  5. package/package.json +110 -61
  6. package/src/assets/design/color.css +36 -17
  7. package/src/assets/design/size.css +2 -0
  8. package/src/assets/icons/defaultIcons.js +17 -2
  9. package/src/assets/suneditor-contents.css +51 -16
  10. package/src/assets/suneditor.css +116 -43
  11. package/src/core/config/contextProvider.js +288 -0
  12. package/src/core/config/eventManager.js +188 -0
  13. package/src/core/config/instanceCheck.js +59 -0
  14. package/src/core/config/optionProvider.js +452 -0
  15. package/src/core/editor.js +166 -1637
  16. package/src/core/event/actions/index.js +229 -0
  17. package/src/core/event/effects/common.registry.js +74 -0
  18. package/src/core/event/effects/keydown.registry.js +573 -0
  19. package/src/core/event/effects/ruleHelpers.js +148 -0
  20. package/src/core/event/eventOrchestrator.js +944 -0
  21. package/src/core/event/executor.js +27 -0
  22. package/src/core/{base/eventHandlers → event/handlers}/handler_toolbar.js +27 -28
  23. package/src/core/{base/eventHandlers → event/handlers}/handler_ww_clipboard.js +10 -8
  24. package/src/core/{base/eventHandlers → event/handlers}/handler_ww_dragDrop.js +22 -23
  25. package/src/core/event/handlers/handler_ww_input.js +75 -0
  26. package/src/core/event/handlers/handler_ww_key.js +228 -0
  27. package/src/core/event/handlers/handler_ww_mouse.js +166 -0
  28. package/src/core/event/ports.js +211 -0
  29. package/src/core/event/reducers/keydown.reducer.js +97 -0
  30. package/src/core/event/rules/keydown.rule.arrow.js +63 -0
  31. package/src/core/event/rules/keydown.rule.backspace.js +208 -0
  32. package/src/core/event/rules/keydown.rule.delete.js +132 -0
  33. package/src/core/event/rules/keydown.rule.enter.js +150 -0
  34. package/src/core/event/rules/keydown.rule.tab.js +35 -0
  35. package/src/core/event/support/defaultLineManager.js +136 -0
  36. package/src/core/event/support/selectionState.js +204 -0
  37. package/src/core/kernel/coreKernel.js +320 -0
  38. package/src/core/kernel/kernelInjector.js +19 -0
  39. package/src/core/kernel/store.js +173 -0
  40. package/src/core/{class → logic/dom}/char.js +42 -45
  41. package/src/core/logic/dom/format.js +1075 -0
  42. package/src/core/{class → logic/dom}/html.js +743 -624
  43. package/src/core/logic/dom/inline.js +1847 -0
  44. package/src/core/logic/dom/listFormat.js +601 -0
  45. package/src/core/{class → logic/dom}/nodeTransform.js +92 -72
  46. package/src/core/{class → logic/dom}/offset.js +254 -317
  47. package/src/core/logic/dom/selection.js +754 -0
  48. package/src/core/logic/panel/menu.js +389 -0
  49. package/src/core/logic/panel/toolbar.js +449 -0
  50. package/src/core/logic/panel/viewer.js +761 -0
  51. package/src/core/logic/shell/_commandExecutor.js +380 -0
  52. package/src/core/logic/shell/commandDispatcher.js +241 -0
  53. package/src/core/logic/shell/component.js +970 -0
  54. package/src/core/logic/shell/focusManager.js +110 -0
  55. package/src/core/{base → logic/shell}/history.js +110 -60
  56. package/src/core/logic/shell/pluginManager.js +363 -0
  57. package/src/core/logic/shell/shortcuts.js +130 -0
  58. package/src/core/logic/shell/ui.js +904 -0
  59. package/src/core/schema/context.js +66 -0
  60. package/src/core/schema/frameContext.js +160 -0
  61. package/src/core/schema/options.js +628 -0
  62. package/src/core/section/constructor.js +194 -500
  63. package/src/core/section/documentType.js +297 -222
  64. package/src/events.js +808 -543
  65. package/src/helper/clipboard.js +27 -16
  66. package/src/helper/converter.js +100 -78
  67. package/src/helper/dom/domCheck.js +56 -30
  68. package/src/helper/dom/domQuery.js +159 -89
  69. package/src/helper/dom/domUtils.js +114 -49
  70. package/src/helper/dom/index.js +5 -1
  71. package/src/helper/env.js +26 -26
  72. package/src/helper/index.js +1 -1
  73. package/src/helper/keyCodeMap.js +25 -28
  74. package/src/helper/numbers.js +4 -8
  75. package/src/helper/unicode.js +4 -8
  76. package/src/hooks/base.js +307 -0
  77. package/src/hooks/params.js +130 -0
  78. package/src/interfaces/contracts.js +227 -0
  79. package/src/interfaces/index.js +7 -0
  80. package/src/interfaces/plugins.js +239 -0
  81. package/src/langs/ckb.js +4 -4
  82. package/src/langs/cs.js +4 -4
  83. package/src/langs/da.js +4 -4
  84. package/src/langs/de.js +4 -4
  85. package/src/langs/en.js +4 -4
  86. package/src/langs/es.js +4 -4
  87. package/src/langs/fa.js +4 -4
  88. package/src/langs/fr.js +4 -4
  89. package/src/langs/he.js +4 -4
  90. package/src/langs/hu.js +4 -4
  91. package/src/langs/it.js +4 -4
  92. package/src/langs/ja.js +4 -4
  93. package/src/langs/km.js +4 -4
  94. package/src/langs/ko.js +4 -4
  95. package/src/langs/lv.js +4 -4
  96. package/src/langs/nl.js +4 -4
  97. package/src/langs/pl.js +4 -4
  98. package/src/langs/pt_br.js +13 -13
  99. package/src/langs/ro.js +4 -4
  100. package/src/langs/ru.js +4 -4
  101. package/src/langs/se.js +4 -4
  102. package/src/langs/tr.js +4 -4
  103. package/src/langs/uk.js +4 -4
  104. package/src/langs/ur.js +4 -4
  105. package/src/langs/zh_cn.js +4 -4
  106. package/src/modules/{Browser.js → contract/Browser.js} +119 -128
  107. package/src/modules/{ColorPicker.js → contract/ColorPicker.js} +132 -142
  108. package/src/modules/contract/Controller.js +589 -0
  109. package/src/modules/{Figure.js → contract/Figure.js} +591 -411
  110. package/src/modules/{HueSlider.js → contract/HueSlider.js} +125 -86
  111. package/src/modules/contract/Modal.js +357 -0
  112. package/src/modules/contract/index.js +9 -0
  113. package/src/modules/manager/ApiManager.js +197 -0
  114. package/src/modules/{FileManager.js → manager/FileManager.js} +128 -160
  115. package/src/modules/manager/index.js +5 -0
  116. package/src/modules/{ModalAnchorEditor.js → ui/ModalAnchorEditor.js} +108 -138
  117. package/src/modules/{SelectMenu.js → ui/SelectMenu.js} +119 -120
  118. package/src/modules/{_DragHandle.js → ui/_DragHandle.js} +1 -1
  119. package/src/modules/ui/index.js +6 -0
  120. package/src/plugins/browser/audioGallery.js +23 -26
  121. package/src/plugins/browser/fileBrowser.js +25 -28
  122. package/src/plugins/browser/fileGallery.js +20 -23
  123. package/src/plugins/browser/imageGallery.js +24 -23
  124. package/src/plugins/browser/videoGallery.js +27 -29
  125. package/src/plugins/command/blockquote.js +11 -17
  126. package/src/plugins/command/exportPDF.js +26 -26
  127. package/src/plugins/command/fileUpload.js +138 -133
  128. package/src/plugins/command/list_bulleted.js +48 -44
  129. package/src/plugins/command/list_numbered.js +48 -44
  130. package/src/plugins/dropdown/align.js +64 -50
  131. package/src/plugins/dropdown/backgroundColor.js +34 -35
  132. package/src/plugins/dropdown/{formatBlock.js → blockStyle.js} +43 -37
  133. package/src/plugins/dropdown/font.js +50 -36
  134. package/src/plugins/dropdown/fontColor.js +34 -35
  135. package/src/plugins/dropdown/hr.js +55 -50
  136. package/src/plugins/dropdown/layout.js +20 -15
  137. package/src/plugins/dropdown/lineHeight.js +46 -30
  138. package/src/plugins/dropdown/list.js +32 -33
  139. package/src/plugins/dropdown/paragraphStyle.js +40 -34
  140. package/src/plugins/dropdown/table/index.js +915 -0
  141. package/src/plugins/dropdown/table/render/table.html.js +308 -0
  142. package/src/plugins/dropdown/table/render/table.menu.js +121 -0
  143. package/src/plugins/dropdown/table/services/table.cell.js +465 -0
  144. package/src/plugins/dropdown/table/services/table.clipboard.js +414 -0
  145. package/src/plugins/dropdown/table/services/table.grid.js +504 -0
  146. package/src/plugins/dropdown/table/services/table.resize.js +463 -0
  147. package/src/plugins/dropdown/table/services/table.selection.js +466 -0
  148. package/src/plugins/dropdown/table/services/table.style.js +844 -0
  149. package/src/plugins/dropdown/table/shared/table.constants.js +109 -0
  150. package/src/plugins/dropdown/table/shared/table.utils.js +219 -0
  151. package/src/plugins/dropdown/template.js +20 -15
  152. package/src/plugins/dropdown/textStyle.js +28 -22
  153. package/src/plugins/field/mention.js +54 -49
  154. package/src/plugins/index.js +5 -5
  155. package/src/plugins/input/fontSize.js +100 -97
  156. package/src/plugins/input/pageNavigator.js +13 -10
  157. package/src/plugins/modal/audio.js +208 -219
  158. package/src/plugins/modal/drawing.js +99 -104
  159. package/src/plugins/modal/embed.js +323 -312
  160. package/src/plugins/modal/image/index.js +942 -0
  161. package/src/plugins/modal/image/render/image.html.js +150 -0
  162. package/src/plugins/modal/image/services/image.size.js +198 -0
  163. package/src/plugins/modal/image/services/image.upload.js +216 -0
  164. package/src/plugins/modal/image/shared/image.constants.js +20 -0
  165. package/src/plugins/modal/link.js +74 -54
  166. package/src/plugins/modal/math.js +126 -119
  167. package/src/plugins/modal/video/index.js +858 -0
  168. package/src/plugins/modal/video/render/video.html.js +131 -0
  169. package/src/plugins/modal/video/services/video.size.js +281 -0
  170. package/src/plugins/modal/video/services/video.upload.js +92 -0
  171. package/src/plugins/popup/anchor.js +57 -49
  172. package/src/suneditor.js +73 -61
  173. package/src/themes/cobalt.css +155 -0
  174. package/src/themes/dark.css +143 -120
  175. package/src/typedef.js +214 -63
  176. package/types/assets/icons/defaultIcons.d.ts +8 -0
  177. package/types/assets/suneditor-contents.css.d.ts +1 -0
  178. package/types/assets/suneditor.css.d.ts +1 -0
  179. package/types/core/config/contextProvider.d.ts +148 -0
  180. package/types/core/config/eventManager.d.ts +68 -0
  181. package/types/core/config/instanceCheck.d.ts +33 -0
  182. package/types/core/config/optionProvider.d.ts +147 -0
  183. package/types/core/editor.d.ts +27 -586
  184. package/types/core/event/actions/index.d.ts +50 -0
  185. package/types/core/event/effects/common.registry.d.ts +56 -0
  186. package/types/core/event/effects/keydown.registry.d.ts +80 -0
  187. package/types/core/event/effects/ruleHelpers.d.ts +36 -0
  188. package/types/core/event/eventOrchestrator.d.ts +191 -0
  189. package/types/core/event/executor.d.ts +13 -0
  190. package/types/core/event/handlers/handler_toolbar.d.ts +38 -0
  191. package/types/core/event/handlers/handler_ww_clipboard.d.ts +36 -0
  192. package/types/core/event/handlers/handler_ww_dragDrop.d.ts +26 -0
  193. package/types/core/event/handlers/handler_ww_input.d.ts +38 -0
  194. package/types/core/event/handlers/handler_ww_key.d.ts +40 -0
  195. package/types/core/event/handlers/handler_ww_mouse.d.ts +47 -0
  196. package/types/core/event/ports.d.ts +256 -0
  197. package/types/core/event/reducers/keydown.reducer.d.ts +84 -0
  198. package/types/core/event/rules/keydown.rule.arrow.d.ts +19 -0
  199. package/types/core/event/rules/keydown.rule.backspace.d.ts +18 -0
  200. package/types/core/event/rules/keydown.rule.delete.d.ts +18 -0
  201. package/types/core/event/rules/keydown.rule.enter.d.ts +18 -0
  202. package/types/core/event/rules/keydown.rule.tab.d.ts +18 -0
  203. package/types/core/event/support/defaultLineManager.d.ts +22 -0
  204. package/types/core/event/support/selectionState.d.ts +29 -0
  205. package/types/core/kernel/coreKernel.d.ts +219 -0
  206. package/types/core/kernel/kernelInjector.d.ts +16 -0
  207. package/types/core/kernel/store.d.ts +170 -0
  208. package/types/core/logic/dom/char.d.ts +46 -0
  209. package/types/core/logic/dom/format.d.ts +234 -0
  210. package/types/core/logic/dom/html.d.ts +290 -0
  211. package/types/core/logic/dom/inline.d.ts +93 -0
  212. package/types/core/logic/dom/listFormat.d.ts +101 -0
  213. package/types/core/logic/dom/nodeTransform.d.ts +110 -0
  214. package/types/core/logic/dom/offset.d.ts +335 -0
  215. package/types/core/logic/dom/selection.d.ts +165 -0
  216. package/types/core/logic/panel/menu.d.ts +93 -0
  217. package/types/core/logic/panel/toolbar.d.ts +128 -0
  218. package/types/core/logic/panel/viewer.d.ts +89 -0
  219. package/types/core/logic/shell/_commandExecutor.d.ts +18 -0
  220. package/types/core/logic/shell/commandDispatcher.d.ts +65 -0
  221. package/types/core/logic/shell/component.d.ts +182 -0
  222. package/types/core/logic/shell/focusManager.d.ts +31 -0
  223. package/types/core/{base → logic/shell}/history.d.ts +13 -12
  224. package/types/core/logic/shell/pluginManager.d.ts +115 -0
  225. package/types/core/logic/shell/shortcuts.d.ts +131 -0
  226. package/types/core/logic/shell/ui.d.ts +261 -0
  227. package/types/core/schema/context.d.ts +104 -0
  228. package/types/core/schema/frameContext.d.ts +320 -0
  229. package/types/core/schema/options.d.ts +1241 -0
  230. package/types/core/section/constructor.d.ts +117 -652
  231. package/types/core/section/documentType.d.ts +43 -61
  232. package/types/events.d.ts +796 -65
  233. package/types/helper/clipboard.d.ts +5 -4
  234. package/types/helper/converter.d.ts +55 -43
  235. package/types/helper/dom/domCheck.d.ts +27 -19
  236. package/types/helper/dom/domQuery.d.ts +76 -57
  237. package/types/helper/dom/domUtils.d.ts +62 -39
  238. package/types/helper/dom/index.d.ts +87 -1
  239. package/types/helper/env.d.ts +16 -13
  240. package/types/helper/index.d.ts +8 -2
  241. package/types/helper/keyCodeMap.d.ts +24 -23
  242. package/types/helper/numbers.d.ts +4 -6
  243. package/types/helper/unicode.d.ts +4 -3
  244. package/types/hooks/base.d.ts +239 -0
  245. package/types/hooks/params.d.ts +65 -0
  246. package/types/index.d.ts +20 -117
  247. package/types/interfaces/contracts.d.ts +183 -0
  248. package/types/interfaces/index.d.ts +3 -0
  249. package/types/interfaces/plugins.d.ts +168 -0
  250. package/types/langs/_Lang.d.ts +2 -2
  251. package/types/langs/index.d.ts +2 -2
  252. package/types/modules/contract/Browser.d.ts +262 -0
  253. package/types/modules/contract/ColorPicker.d.ts +99 -0
  254. package/types/modules/contract/Controller.d.ts +204 -0
  255. package/types/modules/contract/Figure.d.ts +529 -0
  256. package/types/modules/{HueSlider.d.ts → contract/HueSlider.d.ts} +39 -28
  257. package/types/modules/contract/Modal.d.ts +62 -0
  258. package/types/modules/contract/index.d.ts +7 -0
  259. package/types/modules/manager/ApiManager.d.ts +106 -0
  260. package/types/modules/manager/FileManager.d.ts +124 -0
  261. package/types/modules/manager/index.d.ts +3 -0
  262. package/types/modules/ui/ModalAnchorEditor.d.ts +152 -0
  263. package/types/modules/ui/SelectMenu.d.ts +107 -0
  264. package/types/modules/{_DragHandle.d.ts → ui/_DragHandle.d.ts} +1 -0
  265. package/types/modules/ui/index.d.ts +4 -0
  266. package/types/plugins/browser/audioGallery.d.ts +33 -41
  267. package/types/plugins/browser/fileBrowser.d.ts +42 -50
  268. package/types/plugins/browser/fileGallery.d.ts +33 -41
  269. package/types/plugins/browser/imageGallery.d.ts +30 -37
  270. package/types/plugins/browser/videoGallery.d.ts +33 -41
  271. package/types/plugins/command/blockquote.d.ts +4 -21
  272. package/types/plugins/command/exportPDF.d.ts +23 -33
  273. package/types/plugins/command/fileUpload.d.ts +80 -100
  274. package/types/plugins/command/list_bulleted.d.ts +9 -35
  275. package/types/plugins/command/list_numbered.d.ts +9 -35
  276. package/types/plugins/dropdown/align.d.ts +23 -46
  277. package/types/plugins/dropdown/backgroundColor.d.ts +35 -53
  278. package/types/plugins/dropdown/blockStyle.d.ts +45 -0
  279. package/types/plugins/dropdown/font.d.ts +18 -41
  280. package/types/plugins/dropdown/fontColor.d.ts +35 -53
  281. package/types/plugins/dropdown/hr.d.ts +26 -52
  282. package/types/plugins/dropdown/layout.d.ts +19 -25
  283. package/types/plugins/dropdown/lineHeight.d.ts +21 -39
  284. package/types/plugins/dropdown/list.d.ts +6 -34
  285. package/types/plugins/dropdown/paragraphStyle.d.ts +34 -45
  286. package/types/plugins/dropdown/table/index.d.ts +158 -0
  287. package/types/plugins/dropdown/table/render/table.html.d.ts +71 -0
  288. package/types/plugins/dropdown/table/render/table.menu.d.ts +59 -0
  289. package/types/plugins/dropdown/table/services/table.cell.d.ts +76 -0
  290. package/types/plugins/dropdown/table/services/table.clipboard.d.ts +26 -0
  291. package/types/plugins/dropdown/table/services/table.grid.d.ts +77 -0
  292. package/types/plugins/dropdown/table/services/table.resize.d.ts +72 -0
  293. package/types/plugins/dropdown/table/services/table.selection.d.ts +59 -0
  294. package/types/plugins/dropdown/table/services/table.style.d.ts +162 -0
  295. package/types/plugins/dropdown/table/shared/table.constants.d.ts +134 -0
  296. package/types/plugins/dropdown/table/shared/table.utils.d.ts +91 -0
  297. package/types/plugins/dropdown/template.d.ts +19 -25
  298. package/types/plugins/dropdown/textStyle.d.ts +23 -30
  299. package/types/plugins/field/mention.d.ts +66 -72
  300. package/types/plugins/index.d.ts +41 -40
  301. package/types/plugins/input/fontSize.d.ts +57 -96
  302. package/types/plugins/input/pageNavigator.d.ts +5 -8
  303. package/types/plugins/modal/audio.d.ts +60 -153
  304. package/types/plugins/modal/drawing.d.ts +16 -118
  305. package/types/plugins/modal/embed.d.ts +46 -166
  306. package/types/plugins/modal/image/index.d.ts +281 -0
  307. package/types/plugins/modal/image/render/image.html.d.ts +45 -0
  308. package/types/plugins/modal/image/services/image.size.d.ts +55 -0
  309. package/types/plugins/modal/image/services/image.upload.d.ts +24 -0
  310. package/types/plugins/modal/image/shared/image.constants.d.ts +17 -0
  311. package/types/plugins/modal/link.d.ts +46 -66
  312. package/types/plugins/modal/math.d.ts +17 -86
  313. package/types/plugins/modal/{video.d.ts → video/index.d.ts} +89 -221
  314. package/types/plugins/modal/video/render/video.html.d.ts +37 -0
  315. package/types/plugins/modal/video/services/video.size.d.ts +74 -0
  316. package/types/plugins/modal/video/services/video.upload.d.ts +19 -0
  317. package/types/plugins/popup/anchor.d.ts +8 -38
  318. package/types/suneditor.d.ts +55 -24
  319. package/types/typedef.d.ts +344 -228
  320. package/CONTRIBUTING.md +0 -186
  321. package/src/core/base/eventHandlers/handler_ww_key_input.js +0 -1200
  322. package/src/core/base/eventHandlers/handler_ww_mouse.js +0 -194
  323. package/src/core/base/eventManager.js +0 -1523
  324. package/src/core/class/component.js +0 -856
  325. package/src/core/class/format.js +0 -3433
  326. package/src/core/class/menu.js +0 -346
  327. package/src/core/class/selection.js +0 -610
  328. package/src/core/class/shortcuts.js +0 -98
  329. package/src/core/class/toolbar.js +0 -431
  330. package/src/core/class/ui.js +0 -424
  331. package/src/core/class/viewer.js +0 -750
  332. package/src/core/section/actives.js +0 -266
  333. package/src/core/section/context.js +0 -102
  334. package/src/editorInjector/_classes.js +0 -36
  335. package/src/editorInjector/_core.js +0 -87
  336. package/src/editorInjector/index.js +0 -73
  337. package/src/modules/ApiManager.js +0 -191
  338. package/src/modules/Controller.js +0 -474
  339. package/src/modules/Modal.js +0 -346
  340. package/src/modules/index.js +0 -14
  341. package/src/plugins/dropdown/table.js +0 -4034
  342. package/src/plugins/modal/image.js +0 -1376
  343. package/src/plugins/modal/video.js +0 -1226
  344. package/types/core/base/eventHandlers/handler_toolbar.d.ts +0 -41
  345. package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +0 -40
  346. package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +0 -35
  347. package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +0 -45
  348. package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +0 -39
  349. package/types/core/base/eventManager.d.ts +0 -401
  350. package/types/core/class/char.d.ts +0 -61
  351. package/types/core/class/component.d.ts +0 -213
  352. package/types/core/class/format.d.ts +0 -623
  353. package/types/core/class/html.d.ts +0 -430
  354. package/types/core/class/menu.d.ts +0 -126
  355. package/types/core/class/nodeTransform.d.ts +0 -93
  356. package/types/core/class/offset.d.ts +0 -522
  357. package/types/core/class/selection.d.ts +0 -188
  358. package/types/core/class/shortcuts.d.ts +0 -142
  359. package/types/core/class/toolbar.d.ts +0 -189
  360. package/types/core/class/ui.d.ts +0 -164
  361. package/types/core/class/viewer.d.ts +0 -140
  362. package/types/core/section/actives.d.ts +0 -46
  363. package/types/core/section/context.d.ts +0 -45
  364. package/types/editorInjector/_classes.d.ts +0 -41
  365. package/types/editorInjector/_core.d.ts +0 -87
  366. package/types/editorInjector/index.d.ts +0 -69
  367. package/types/modules/ApiManager.d.ts +0 -125
  368. package/types/modules/Browser.d.ts +0 -326
  369. package/types/modules/ColorPicker.d.ts +0 -135
  370. package/types/modules/Controller.d.ts +0 -251
  371. package/types/modules/Figure.d.ts +0 -517
  372. package/types/modules/FileManager.d.ts +0 -202
  373. package/types/modules/Modal.d.ts +0 -111
  374. package/types/modules/ModalAnchorEditor.d.ts +0 -236
  375. package/types/modules/SelectMenu.d.ts +0 -194
  376. package/types/modules/index.d.ts +0 -26
  377. package/types/plugins/dropdown/formatBlock.d.ts +0 -55
  378. package/types/plugins/dropdown/table.d.ts +0 -627
  379. package/types/plugins/modal/image.d.ts +0 -451
  380. /package/{LICENSE → LICENSE.txt} +0 -0
@@ -1,11 +1,7 @@
1
- /**
2
- * @fileoverview Implements HueSlider.
3
- */
4
-
5
- import { dom, env } from '../helper';
1
+ import { dom, env } from '../../helper';
6
2
  import Controller from './Controller';
7
3
 
8
- const { isMobile } = env;
4
+ const { isTouchDevice } = env;
9
5
 
10
6
  const SIZE = 240;
11
7
  const BAR_H = 28;
@@ -25,6 +21,11 @@ let wheelY = SIZE / 2;
25
21
  let finalColor = DEFAULT_COLOR_VALUE;
26
22
  let ctx;
27
23
 
24
+ let _bootstrapped = false;
25
+
26
+ /**
27
+ * @returns {{slider: HTMLElement, offscreenCanvas: HTMLCanvasElement, offscreenCtx: CanvasRenderingContext2D, wheel: HTMLCanvasElement, wheelCtx: CanvasRenderingContext2D, wheelPointer: HTMLElement, gradientBar: HTMLCanvasElement, gradientPointer: HTMLElement, fanalColorHex: HTMLElement, fanalColorBackground: HTMLElement}}
28
+ */
28
29
  function CreateSliderCtx() {
29
30
  const offscreenCanvas = document.createElement('canvas');
30
31
  offscreenCanvas.width = SIZE;
@@ -60,15 +61,12 @@ function CreateSliderCtx() {
60
61
  gradientBar: gradientBarCanvas,
61
62
  gradientPointer: /** @type {HTMLElement} */ (slider.querySelector('.se-hue-gradient-pointer')),
62
63
  fanalColorHex: /** @type {HTMLElement} */ (currentColors[0]),
63
- fanalColorBackground: /** @type {HTMLElement} */ (currentColors[1])
64
+ fanalColorBackground: /** @type {HTMLElement} */ (currentColors[1]),
64
65
  };
65
66
  }
66
67
 
67
68
  /**
68
- * @typedef {import('../modules/Controller').ControllerParams} ControllerParams_hueSlider
69
- */
70
-
71
- /**
69
+ * HueSlider color information object
72
70
  * @typedef {Object} HueSliderColor
73
71
  * @property {string} hex - HEX color
74
72
  * @property {number} r - Red color value
@@ -81,33 +79,39 @@ function CreateSliderCtx() {
81
79
 
82
80
  /**
83
81
  * @typedef {Object} HueSliderParams
84
- * @property {Node} [form] The form element to attach the hue slider.
85
82
  * @property {boolean} [isNewForm] Whether to create a new form element.
86
- * @property {ControllerParams_hueSlider} [controllerOptions] Controller options
83
+ * @property {Array<HTMLElement>} [parents] Parent elements for controller positioning.
84
+ * @property {import('./Controller').ControllerParams} [controllerOptions] Controller options (excluding 'parents')
87
85
  */
88
86
 
89
87
  /**
90
88
  * @class
91
89
  * @description Create a Hue slider. (only create one at a time)
92
- * - When you call the .attach() method, the hue slider is appended to the form element.
90
+ * - When you call the `.attach()` method, the hue slider is appended to the form element.
93
91
  * It must be called every time it is used.
94
92
  */
95
93
  class HueSlider {
94
+ #$;
95
+
96
+ #globalMouseDown;
97
+ #globalTouchMove;
98
+ #globalMouseUp;
99
+ #globalMouseMove;
100
+ #globalTouchStart;
101
+ #globalTouchEnd;
102
+
96
103
  /**
97
104
  * @constructor
98
- * @param {*} inst The instance object that called the constructor.
105
+ * @param {import('./ColorPicker').default} inst The instance object that called the constructor.
106
+ * @param {SunEditor.Deps} $ Kernel dependencies
99
107
  * @param {HueSliderParams} [params={}] Hue slider options
100
108
  * @param {string} [className=""] The class name of the hue slider.
101
109
  */
102
- constructor(inst, params, className) {
103
- if (!params) params = {};
104
-
105
- this.editor = inst.editor;
106
- this.eventManager = inst.eventManager;
107
- this.inst = inst;
110
+ constructor(inst, $, params = {}, className = '') {
111
+ this.#$ = $;
108
112
 
109
113
  // members
110
- this.form = params.form;
114
+ this.inst = inst;
111
115
  this.ctx = {
112
116
  wheelX: wheelX,
113
117
  wheelY: wheelY,
@@ -115,31 +119,49 @@ class HueSlider {
115
119
  wheelPointerX: '50%',
116
120
  wheelPointerY: '50%',
117
121
  gradientPointerX: 'calc(100% - 14px)',
118
- color: DEFAULT_COLOR_VALUE
122
+ color: DEFAULT_COLOR_VALUE,
119
123
  };
120
124
  this.isOpen = false;
121
125
  this.controlle = null;
122
- this.__globalMouseDown = null;
123
- this.__globalMouseMove = null;
124
- this.__globalMouseUp = null;
126
+
127
+ this.#globalMouseDown = null;
128
+ this.#globalTouchMove = null;
129
+ this.#globalMouseUp = null;
130
+ this.#globalMouseMove = null;
131
+ this.#globalTouchStart = null;
132
+ this.#globalTouchEnd = null;
125
133
 
126
134
  // init default controller
127
135
  if (!params.isNewForm) {
128
- const hueController = CreateHTML_basicControllerForm(inst.editor, className);
129
- this.form = hueController.querySelector('.se-hue');
130
- this.controller = new Controller(this, hueController, { position: 'top', isWWTarget: false, ...params.controllerOptions });
131
-
132
- // buttons
133
- this.eventManager.addEvent(hueController.querySelector('.se-btn-success'), 'click', () => {
134
- inst.hueSliderAction(this.get());
135
- this.close();
136
- });
137
- this.eventManager.addEvent(hueController.querySelector('.se-btn-danger'), 'click', () => {
138
- this.close();
139
- });
136
+ const hueController = CreateHTML_basicControllerForm($, className);
137
+ this.circle = hueController.querySelector('.se-hue');
138
+ this.controller = new Controller(this, $, hueController, { position: 'bottom', isWWTarget: false, parents: [inst.form], parentsHide: true, ...params.controllerOptions });
139
+ }
140
+ }
141
+
142
+ /**
143
+ * @hook Module.Controller
144
+ * @type {SunEditor.Hook.Controller.Action}
145
+ */
146
+ controllerAction(target) {
147
+ const command = target.getAttribute('data-command');
148
+ if (command === 'submit') {
149
+ this.inst.hueSliderAction?.(this.get());
150
+ this.close();
151
+ } else if (command === 'close') {
152
+ this.close();
140
153
  }
141
154
  }
142
155
 
156
+ /**
157
+ * @hook Module.Controller
158
+ * @type {SunEditor.Hook.Controller.Close}
159
+ */
160
+ controllerClose() {
161
+ this.init();
162
+ this.inst.hueSliderCancelAction?.();
163
+ }
164
+
143
165
  /**
144
166
  * @description Get the current color information.
145
167
  * @returns {HueSliderColor} color information
@@ -158,9 +180,10 @@ class HueSlider {
158
180
  }
159
181
 
160
182
  /**
161
- * @description Reset information and close the hue slider.
183
+ * @description Close the hue slider.
184
+ * - Call the instance's `hueSliderCancelAction` method.
162
185
  */
163
- off() {
186
+ close() {
164
187
  this.ctx = {
165
188
  gradientPointerX: gradientPointer.style.left,
166
189
  wheelPointerX: wheelPointer.style.left,
@@ -168,30 +191,22 @@ class HueSlider {
168
191
  wheelX: wheelX,
169
192
  wheelY: wheelY,
170
193
  lightness: LIGHTNESS,
171
- color: ctx?.color || getWheelColor(wheelCtx)
194
+ color: ctx?.color || '',
172
195
  };
173
196
 
174
197
  this.controller.close();
175
- this.init();
176
- }
177
-
178
- /**
179
- * @description Close the hue slider. (include off method)
180
- * - Call the instance's hueSliderCancelAction method.
181
- */
182
- close() {
183
- this.off();
184
- this.inst.hueSliderCancelAction();
185
198
  }
186
199
 
187
200
  /**
188
201
  * @description Attach the hue slider to the form element.
189
- * @param {?Node=} form The element to attach the hue slider.
202
+ * @param {?Node} [form] The element to attach the hue slider.
190
203
  */
191
204
  attach(form) {
205
+ if (!_bootstrapped) InitRender();
206
+
192
207
  // drow
193
208
  this.init();
194
- (form || this.form).appendChild(slider);
209
+ (form || this.circle).appendChild(slider);
195
210
  ctx = this.ctx;
196
211
  if (ctx) {
197
212
  wheelX = ctx.wheelX;
@@ -206,30 +221,34 @@ class HueSlider {
206
221
  createGradientBar(getDefaultColor());
207
222
  }
208
223
 
209
- // event
210
- const downEvent = { name: 'mousedown', func: OnMousedown };
211
- const moveEvent = { name: 'mousemove', func: OnMousemove, option: true };
212
- const upEvent = {
213
- name: 'mouseup',
214
- func: () => {
215
- isWheelragging = false;
216
- isBarDragging = false;
217
- }
218
- };
219
-
220
- if (isMobile) {
224
+ // touch event
225
+ if (isTouchDevice) {
221
226
  // mobile name
222
- downEvent.name = 'touchstart';
223
- moveEvent.name = 'touchmove';
224
- upEvent.name = 'touchend';
225
- // mobile func
226
- downEvent.func = OnTouchstart;
227
- moveEvent.func = OnTouchmove;
227
+ this.#globalTouchStart = this.#$.eventManager.addGlobalEvent('touchstart', OnTouchstart, { passive: false, capture: true });
228
+ this.#globalTouchMove = this.#$.eventManager.addGlobalEvent('touchmove', OnTouchmove, true);
229
+ this.#globalTouchEnd = this.#$.eventManager.addGlobalEvent(
230
+ 'touchend',
231
+ () => {
232
+ isWheelragging = false;
233
+ isBarDragging = false;
234
+ },
235
+ true,
236
+ );
228
237
  }
229
238
 
230
- this.__globalMouseDown = this.eventManager.addGlobalEvent(downEvent.name, downEvent.func, { passive: false, capture: true });
231
- this.__globalMouseMove = this.eventManager.addGlobalEvent(moveEvent.name, moveEvent.func, true);
232
- this.__globalMouseUp = this.eventManager.addGlobalEvent(upEvent.name, upEvent.func, true);
239
+ // mouse event
240
+ this.#globalMouseDown = this.#$.eventManager.addGlobalEvent('mousedown', OnMousedown, { passive: false, capture: true });
241
+ this.#globalMouseMove = this.#$.eventManager.addGlobalEvent('mousemove', OnMousemove, true);
242
+ this.#globalMouseUp = this.#$.eventManager.addGlobalEvent(
243
+ 'mouseup',
244
+ () => {
245
+ isWheelragging = false;
246
+ isBarDragging = false;
247
+ },
248
+ true,
249
+ );
250
+
251
+ // open
233
252
  this.isOpen = true;
234
253
  }
235
254
 
@@ -240,9 +259,14 @@ class HueSlider {
240
259
  this.isOpen = false;
241
260
  isWheelragging = false;
242
261
  isBarDragging = false;
243
- if (this.__globalMouseDown) this.__globalMouseDown = this.eventManager.removeGlobalEvent(this.__globalMouseDown);
244
- if (this.__globalMouseMove) this.__globalMouseMove = this.eventManager.removeGlobalEvent(this.__globalMouseMove);
245
- if (this.__globalMouseUp) this.__globalMouseUp = this.eventManager.removeGlobalEvent(this.__globalMouseUp);
262
+
263
+ this.#globalMouseDown &&= this.#$.eventManager.removeGlobalEvent(this.#globalMouseDown);
264
+ this.#globalMouseMove &&= this.#$.eventManager.removeGlobalEvent(this.#globalMouseMove);
265
+ this.#globalMouseUp &&= this.#$.eventManager.removeGlobalEvent(this.#globalMouseUp);
266
+
267
+ this.#globalTouchStart &&= this.#$.eventManager.removeGlobalEvent(this.#globalTouchStart);
268
+ this.#globalTouchMove &&= this.#$.eventManager.removeGlobalEvent(this.#globalTouchMove);
269
+ this.#globalTouchEnd &&= this.#$.eventManager.removeGlobalEvent(this.#globalTouchEnd);
246
270
  }
247
271
  }
248
272
 
@@ -392,7 +416,7 @@ function getWheelColor(wCtx) {
392
416
  b,
393
417
  h,
394
418
  s,
395
- l: roundNumber(l)
419
+ l: roundNumber(l),
396
420
  };
397
421
  }
398
422
 
@@ -439,7 +463,10 @@ function drawWheelGradient() {
439
463
  }
440
464
 
441
465
  function drawColorWheelToContext(context) {
442
- if (!context) throw new Error('Context not found.');
466
+ if (!context) {
467
+ console.warn('[HueSlider.fail] Context not found.');
468
+ return;
469
+ }
443
470
 
444
471
  const fixedSaturation = SATURATION * 100;
445
472
 
@@ -458,6 +485,8 @@ function drawColorWheelToContext(context) {
458
485
  context.fill();
459
486
  }
460
487
  }
488
+
489
+ _bootstrapped = true;
461
490
  }
462
491
 
463
492
  function degreeToRadian(deg) {
@@ -523,7 +552,7 @@ function hslToRgb([h, s, l]) {
523
552
  return {
524
553
  r: Math.round(r * 255),
525
554
  g: Math.round(g * 255),
526
- b: Math.round(b * 255)
555
+ b: Math.round(b * 255),
527
556
  };
528
557
  }
529
558
 
@@ -542,10 +571,19 @@ function roundNumber(num) {
542
571
  return Math.round(num * factor) / factor;
543
572
  }
544
573
 
545
- // create
546
- drawColorWheelToContext(offscreenCtx);
547
- drawColorWheel();
574
+ function InitRender() {
575
+ // create
576
+ drawColorWheelToContext(offscreenCtx);
577
+ if (_bootstrapped) drawColorWheel();
578
+ }
579
+
580
+ InitRender();
548
581
 
582
+ /**
583
+ * @param {SunEditor.Deps} $ - Kernel dependencies
584
+ * @param {string} className - Controller CSS class name
585
+ * @returns {HTMLElement}
586
+ */
549
587
  function CreateHTML_basicControllerForm({ lang, icons }, className) {
550
588
  const hueController = dom.utils.createElement(
551
589
  'DIV',
@@ -553,13 +591,14 @@ function CreateHTML_basicControllerForm({ lang, icons }, className) {
553
591
  /*html*/ `
554
592
  <div class="se-hue"></div>
555
593
  <div class="se-form-group se-form-w0 se-form-flex-btn">
556
- <button type="button" class="se-btn se-btn-success" title="${lang.submitButton}" aria-label="${lang.submitButton}">${icons.checked}</button>
557
- <button type="button" class="se-btn se-btn-danger" title="${lang.close}" aria-label="${lang.close}">${icons.cancel}</button>
594
+ <button type="button" class="se-btn se-btn-success" title="${lang.submitButton}" aria-label="${lang.submitButton}" data-command="submit">${icons.checked}</button>
595
+ <button type="button" class="se-btn se-btn-danger" title="${lang.close}" aria-label="${lang.close}" data-command="close">${icons.cancel}</button>
558
596
  </div>
559
- `
597
+ `,
560
598
  );
561
599
 
562
600
  return hueController;
563
601
  }
564
602
 
603
+ export { CreateSliderCtx };
565
604
  export default HueSlider;