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,154 +1,154 @@
1
- import { dom, converter } from '../helper';
2
- import { isElement } from '../helper/dom/domCheck';
3
- import CoreInjector from '../editorInjector/_core';
4
- import { HueSlider } from '../modules';
1
+ import { dom, converter, env } from '../../helper';
2
+ import { isElement } from '../../helper/dom/domCheck';
3
+ import HueSlider from './HueSlider';
5
4
 
6
5
  const DEFAULT_COLOR_LIST = [
7
- '#ff0000',
8
- '#ff5e00',
9
- '#ffe400',
10
- '#abf200',
11
- '#00d8ff',
12
- '#0055ff',
13
- '#6600ff',
14
- '#ff00dd',
6
+ // vivid
7
+ '#ef4444',
8
+ '#f97316',
9
+ '#eab308',
10
+ '#22c55e',
11
+ '#06b6d4',
12
+ '#3b82f6',
13
+ '#8b5cf6',
14
+ '#ec4899',
15
15
  '#000000',
16
- '#ffd8d8',
17
- '#fae0d4',
18
- '#faf4c0',
19
- '#e4f7ba',
20
- '#d4f4fa',
21
- '#d9e5ff',
22
- '#e8d9ff',
23
- '#ffd9fa',
24
- '#f1f1f1',
25
- '#ffa7a7',
26
- '#ffc19e',
27
- '#faed7d',
28
- '#cef279',
29
- '#b2ebf4',
30
- '#b2ccff',
31
- '#d1b2ff',
32
- '#ffb2f5',
33
- '#bdbdbd',
34
- '#f15f5f',
35
- '#f29661',
36
- '#e5d85c',
37
- '#bce55c',
38
- '#5cd1e5',
39
- '#6699ff',
40
- '#a366ff',
41
- '#f261df',
42
- '#8c8c8c',
43
- '#980000',
44
- '#993800',
45
- '#998a00',
46
- '#6b9900',
47
- '#008299',
48
- '#003399',
49
- '#3d0099',
50
- '#990085',
51
- '#353535',
52
- '#670000',
53
- '#662500',
54
- '#665c00',
55
- '#476600',
56
- '#005766',
57
- '#002266',
58
- '#290066',
59
- '#660058',
60
- '#222222'
16
+ // highlighter
17
+ '#fca5a5',
18
+ '#fdba74',
19
+ '#fcd34d',
20
+ '#6ee7b7',
21
+ '#5eead4',
22
+ '#7dd3fc',
23
+ '#c4b5fd',
24
+ '#f9a8d4',
25
+ '#e5e7eb',
26
+ // pastel
27
+ '#fee2e2',
28
+ '#ffedd5',
29
+ '#fef9c3',
30
+ '#dcfce7',
31
+ '#cffafe',
32
+ '#dbeafe',
33
+ '#ede9fe',
34
+ '#fce7f3',
35
+ '#f3f4f6',
36
+ // medium
37
+ '#f87171',
38
+ '#fb923c',
39
+ '#facc15',
40
+ '#4ade80',
41
+ '#22d3ee',
42
+ '#60a5fa',
43
+ '#a78bfa',
44
+ '#f472b6',
45
+ '#9ca3af',
46
+ // deep
47
+ '#b91c1c',
48
+ '#c2410c',
49
+ '#a16207',
50
+ '#15803d',
51
+ '#0e7490',
52
+ '#1d4ed8',
53
+ '#6d28d9',
54
+ '#be185d',
55
+ '#4b5563',
56
+ // dark
57
+ '#7f1d1d',
58
+ '#7c2d12',
59
+ '#713f12',
60
+ '#14532d',
61
+ '#164e63',
62
+ '#1e3a8a',
63
+ '#4c1d95',
64
+ '#831843',
65
+ '#1f2937',
61
66
  ];
62
67
 
63
68
  const DEFAULLT_COLOR_SPLITNUM = 9;
64
69
 
65
- /**
66
- * @typedef {import('./HueSlider').HueSliderParams} HueSliderParams_colorPicker
67
- */
68
-
69
- /**
70
- * @typedef {import('./HueSlider').HueSliderColor} HueSliderColor_colorPicker
71
- */
72
-
73
70
  /**
74
71
  * @typedef {Object} ColorPickerParams
75
- * @property {Array<string|{value: string, name: string}>=} [colorList=[]] color list
76
- * @property {number=} [splitNum=0] Number of colors to be displayed in one line
77
- * @property {string=} [defaultColor] Default color
78
- * @property {boolean=} [disableHEXInput=false] Disable HEX input
79
- * @property {boolean=} [disableRemove=false] Disable remove button
80
- * @property {HueSliderParams_colorPicker=} [hueSliderOptions] hue slider options
72
+ * @property {HTMLElement} form The form element to attach the color picker.
73
+ * @property {Array<string|{value: string, name: string}>} [colorList=[]] color list
74
+ * @property {number} [splitNum=0] Number of colors to be displayed in one line
75
+ * @property {string} [defaultColor] Default color
76
+ * @property {boolean} [disableHEXInput=false] Disable HEX input
77
+ * @property {boolean} [disableRemove=false] Disable remove button
78
+ * @property {import('./HueSlider').HueSliderParams} [hueSliderOptions] hue slider options
81
79
  */
82
80
 
83
81
  /**
84
82
  * @class
85
- * @description Create a color picker element and register for related events. (this.target)
86
- * - When calling the color selection, "submit", and "remove" buttons, the "action" method of the instance is called with the "color" value as an argument.
83
+ * @description Create a color picker element and register for related events. (`this.target`)
84
+ * - When calling the color selection, `submit`, and `remove` buttons, the `action` method of the instance is called with the `color` value as an argument.
87
85
  */
88
- class ColorPicker extends CoreInjector {
86
+ class ColorPicker {
87
+ #$;
88
+
89
89
  /**
90
90
  * @constructor
91
- * @param {*} inst The instance object that called the constructor.
92
- * @param {string} styles style property ("color", "backgroundColor"..)
91
+ * @param {*} host The instance object that called the constructor.
92
+ * @param {SunEditor.Deps} $ Kernel dependencies
93
+ * @param {string} styles style property (`"color"`, `"backgroundColor"`..)
93
94
  * @param {ColorPickerParams} params Color picker options
94
95
  */
95
- constructor(inst, styles, params) {
96
- const editor = inst.editor;
97
- super(editor);
96
+ constructor(host, $, styles, params) {
97
+ this.#$ = $;
98
98
 
99
99
  // members
100
- this.kind = inst.constructor.key || inst.constructor.name;
101
- this.inst = inst;
102
- this.target = CreateHTML(editor, params);
100
+ this.kind = host.constructor['key'] || host.constructor.name;
101
+ this.host = host;
102
+ this.form = params.form;
103
+ this.target = CreateHTML(this.#$, params);
103
104
  this.targetButton = null;
104
105
  this.inputElement = /** @type {HTMLInputElement} */ (this.target.querySelector('.se-color-input'));
105
106
  this.styleProperties = styles;
106
107
  this.splitNum = params.splitNum || 0;
107
108
  this.defaultColor = params.defaultColor || '';
108
109
  this.hueSliderOptions = params.hueSliderOptions;
109
- this.parentDisplay = '';
110
110
  this.currentColor = '';
111
- this.parentForm = null;
112
111
  this.colorList = this.target.querySelectorAll('li button') || [];
113
112
  this.hueSlider = null;
114
113
 
115
114
  // check icon
116
115
  const parser = new DOMParser();
117
- const svgDoc = parser.parseFromString(this.icons.color_checked, 'image/svg+xml');
116
+ const svgDoc = parser.parseFromString(this.#$.icons.color_checked, 'image/svg+xml');
118
117
  this.checkedIcon = svgDoc.documentElement;
119
118
 
120
119
  // modules - hex, hue slider
121
120
  if (!params.disableHEXInput) {
122
- this.hueSlider = new HueSlider(this, params.hueSliderOptions, 'se-dropdown');
123
- this.parentFormDisplay = [];
124
- this.parentForm = params.hueSliderOptions?.controllerOptions?.parents?.length > 0 && !params.hueSliderOptions?.controllerOptions?.isInsideForm ? params.hueSliderOptions.controllerOptions.parents : null;
121
+ this.hueSlider = new HueSlider(this, $, params.hueSliderOptions, 'se-dropdown');
125
122
  // hue open
126
- this.eventManager.addEvent(this.target.querySelector('.se-btn-info'), 'click', this.#OnColorPalette.bind(this));
127
- this.eventManager.addEvent(this.inputElement, 'input', this.#OnChangeInput.bind(this));
128
- this.eventManager.addEvent(this.target.querySelector('form'), 'submit', this.#Submit.bind(this));
123
+ this.#$.eventManager.addEvent(this.target.querySelector('.__se_hue'), 'click', this.#OnColorPalette.bind(this));
124
+ this.#$.eventManager.addEvent(this.inputElement, 'input', this.#OnChangeInput.bind(this));
125
+ this.#$.eventManager.addEvent(this.target.querySelector('form'), 'submit', this.#Submit.bind(this));
129
126
  }
130
127
 
131
128
  // remove style
132
129
  if (!params.disableRemove) {
133
- this.eventManager.addEvent(this.target.querySelector('.__se_remove'), 'click', this.#Remove.bind(this));
130
+ this.#$.eventManager.addEvent(this.target.querySelector('.__se_remove'), 'click', this.#Remove.bind(this));
134
131
  }
135
132
 
136
- this.eventManager.addEvent(this.target, 'click', this.#OnClickColor.bind(this));
133
+ this.#$.eventManager.addEvent(this.target, 'click', this.#OnClickColor.bind(this));
134
+
135
+ // append to form
136
+ this.form.appendChild(this.target);
137
137
  }
138
138
 
139
139
  /**
140
140
  * @description Displays or resets the currently selected color at color list.
141
141
  * @param {Node|string} nodeOrColor Current Selected node
142
142
  * @param {Node} target target
143
- * @param {?((current: Node) => boolean)=} stopCondition - A function used to stop traversing parent nodes while finding the color.
144
- * - When this function returns true, the traversal ends at that node.
143
+ * @param {?(current: Node) => boolean} [stopCondition] - A function used to stop traversing parent nodes while finding the color.
144
+ * - When this function returns `true`, the traversal ends at that node.
145
145
  * - e.g., `(node) => this.format.isLine(node)` stops at line-level elements like <p>, <div>.
146
146
  */
147
147
  init(nodeOrColor, target, stopCondition) {
148
148
  this.targetButton = target;
149
149
  if (typeof stopCondition !== 'function') stopCondition = () => false;
150
150
 
151
- let fillColor = (typeof nodeOrColor === 'string' ? nodeOrColor : this._getColorInNode(nodeOrColor, stopCondition)) || this.defaultColor;
151
+ let fillColor = (typeof nodeOrColor === 'string' ? nodeOrColor : this.#getColorInNode(nodeOrColor, stopCondition)) || this.defaultColor;
152
152
  fillColor = converter.isHexColor(fillColor) ? fillColor : converter.rgb2hex(fillColor) || fillColor || '';
153
153
 
154
154
  const colorList = this.colorList;
@@ -163,7 +163,7 @@ class ColorPicker extends CoreInjector {
163
163
  }
164
164
  }
165
165
 
166
- this._setInputText(this._colorName2hex(fillColor));
166
+ this.#setInputText(this.#colorName2hex(fillColor));
167
167
  }
168
168
 
169
169
  /**
@@ -179,28 +179,43 @@ class ColorPicker extends CoreInjector {
179
179
  * @description Close hue slider
180
180
  */
181
181
  hueSliderClose() {
182
- this.hueSlider.off();
182
+ this.hueSlider.close();
183
+ }
184
+
185
+ /**
186
+ * @hook Modules.HueSlider
187
+ * @type {SunEditor.Hook.ColorPicker.Action}
188
+ */
189
+ hueSliderAction(color) {
190
+ this.#setInputText(color.hex);
191
+ }
192
+
193
+ /**
194
+ * @hook Modules.HueSlider
195
+ * @type {SunEditor.Hook.ColorPicker.HueSliderClose}
196
+ */
197
+ hueSliderCancelAction() {
198
+ this.form.style.display = 'block';
199
+ this.host.colorPickerHueSliderClose?.();
183
200
  }
184
201
 
185
202
  /**
186
- * @private
187
203
  * @description Set color at input element
188
204
  * @param {string} hexColorStr Hax color value
189
205
  */
190
- _setInputText(hexColorStr) {
206
+ #setInputText(hexColorStr) {
191
207
  hexColorStr = !hexColorStr || /^#/.test(hexColorStr) ? hexColorStr : '#' + hexColorStr;
192
208
  this.inputElement.value = hexColorStr;
193
209
  this.setHexColor.call(this, hexColorStr);
194
210
  }
195
211
 
196
212
  /**
197
- * @private
198
213
  * @description Gets color value at color property of node
199
214
  * @param {Node} node Selected node
200
215
  * @param {(current: Node) => boolean} stopCondition - A function used to stop traversing parent nodes while finding the color.
201
216
  * @returns {string}
202
217
  */
203
- _getColorInNode(node, stopCondition) {
218
+ #getColorInNode(node, stopCondition) {
204
219
  let findColor = '';
205
220
  const sp = this.styleProperties;
206
221
 
@@ -213,16 +228,15 @@ class ColorPicker extends CoreInjector {
213
228
  }
214
229
 
215
230
  /**
216
- * @private
217
231
  * @description Converts color values of other formats to hex color values and returns.
218
232
  * @param {string} colorName Color value
219
233
  * @returns {string}
220
234
  */
221
- _colorName2hex(colorName) {
235
+ #colorName2hex(colorName) {
222
236
  if (!colorName || /^#/.test(colorName)) return colorName;
223
237
  const temp = dom.utils.createElement('div', { style: 'display: none; color: ' + colorName });
224
- const colors = this._w
225
- .getComputedStyle(this._d.body.appendChild(temp))
238
+ const colors = env._w
239
+ .getComputedStyle(env._d.body.appendChild(temp))
226
240
  .color.match(/\d+/g)
227
241
  .map(function (a) {
228
242
  return parseInt(a, 10);
@@ -231,33 +245,9 @@ class ColorPicker extends CoreInjector {
231
245
  return colors.length >= 3 ? '#' + ((1 << 24) + (colors[0] << 16) + (colors[1] << 8) + colors[2]).toString(16).substring(1) : '';
232
246
  }
233
247
 
234
- /**
235
- * @editorMethod Modules.HueSlider
236
- * @description This method is called when the color is selected in the hue slider.
237
- * @param {HueSliderColor_colorPicker} color - Color object
238
- */
239
- hueSliderAction(color) {
240
- this._setInputText(color.hex);
241
- }
242
-
243
- /**
244
- * @editorMethod Modules.HueSlider
245
- * @description This method is called when the hue slider is closed.
246
- */
247
- hueSliderCancelAction() {
248
- if (this.parentForm?.length > 0) {
249
- this.parentFormDisplay.forEach((e) => (e[0].style.display = e[1]));
250
- }
251
- }
252
-
253
248
  #OnColorPalette() {
254
- if (this.parentForm?.length > 0) {
255
- this.parentForm.forEach((e) => {
256
- this.parentFormDisplay.push([e, e.style.display]);
257
- e.style.display = 'none';
258
- });
259
- }
260
249
  this.hueSlider.open(this.targetButton);
250
+ this.host.colorPickerHueSliderOpen?.();
261
251
  }
262
252
 
263
253
  /**
@@ -265,9 +255,7 @@ class ColorPicker extends CoreInjector {
265
255
  */
266
256
  #Submit(e) {
267
257
  e.preventDefault();
268
-
269
- if (typeof this.inst.colorPickerAction !== 'function') return;
270
- this.inst.colorPickerAction(this.currentColor);
258
+ this.host.colorPickerAction?.(this.currentColor);
271
259
  }
272
260
 
273
261
  /**
@@ -278,13 +266,11 @@ class ColorPicker extends CoreInjector {
278
266
  const color = eventTarget.getAttribute('data-value');
279
267
  if (!color) return;
280
268
 
281
- if (typeof this.inst.colorPickerAction !== 'function') return;
282
- this.inst.colorPickerAction(color);
269
+ this.host.colorPickerAction?.(color);
283
270
  }
284
271
 
285
272
  #Remove() {
286
- if (typeof this.inst.colorPickerAction !== 'function') return;
287
- this.inst.colorPickerAction(null);
273
+ this.host.colorPickerAction?.(null);
288
274
  }
289
275
 
290
276
  /**
@@ -298,14 +284,13 @@ class ColorPicker extends CoreInjector {
298
284
  }
299
285
 
300
286
  /**
301
- * @private
302
287
  * @description Create a color picker element
303
- * @param {*} param0
288
+ * @param {SunEditor.Deps} param0
304
289
  * @param {*} param1
305
290
  * @returns
306
291
  */
307
292
  function CreateHTML({ lang, icons }, { colorList, disableHEXInput, disableRemove, splitNum }) {
308
- colorList = colorList || DEFAULT_COLOR_LIST;
293
+ colorList ||= DEFAULT_COLOR_LIST;
309
294
  splitNum = colorList === DEFAULT_COLOR_LIST ? DEFAULLT_COLOR_SPLITNUM : splitNum;
310
295
 
311
296
  let list = '';
@@ -327,7 +312,7 @@ function CreateHTML({ lang, icons }, { colorList, disableHEXInput, disableRemove
327
312
  }
328
313
  list += /*html*/ `
329
314
  <form class="se-form-group se-form-w0">
330
- ${disableHEXInput ? '' : `<button type="button" class="se-btn se-btn-info" title="${lang.colorPicker}" aria-label="${lang.colorPicker}">${icons.color_palette}</button>`}
315
+ ${disableHEXInput ? '' : `<button type="button" class="se-btn __se_hue" title="${lang.colorPicker}" aria-label="${lang.colorPicker}">${icons.color_palette}</button>`}
331
316
  <input type="text" class="se-color-input" ${disableHEXInput ? 'readonly' : ''} placeholder="${lang.color}" />
332
317
  ${disableHEXInput ? '' : `<button type="submit" class="se-btn se-btn-success" title="${lang.submitButton}" aria-label="${lang.submitButton}">${icons.checked}</button>`}
333
318
  ${disableRemove ? '' : `<button type="button" class="se-btn __se_remove" title="${lang.remove}" aria-label="${lang.remove}">${icons.remove_color}</button>`}
@@ -336,6 +321,11 @@ function CreateHTML({ lang, icons }, { colorList, disableHEXInput, disableRemove
336
321
  return dom.utils.createElement('DIV', { class: 'se-list-inner' }, list);
337
322
  }
338
323
 
324
+ /**
325
+ * @param {Array<string|{value: string, name?: string}>} colorList - Color list
326
+ * @param {number} splitNum - Number of colors per row
327
+ * @returns {string} HTML string
328
+ */
339
329
  function _makeColor(colorList, splitNum) {
340
330
  const ulHTML = `<ul class="se-color-pallet${splitNum ? ' se-list-horizontal' : ''}">`;
341
331