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
@@ -0,0 +1,308 @@
1
+ import { dom } from '../../../../helper';
2
+ import { _DragHandle } from '../../../../modules/ui';
3
+
4
+ import { BORDER_FORMATS } from '../shared/table.constants';
5
+
6
+ /**
7
+ * @description Creates the initial HTML structure for the table plugin.
8
+ * @returns {HTMLDivElement}
9
+ */
10
+ export function CreateHTML() {
11
+ const html = /*html*/ `
12
+ <div class="se-table-size">
13
+ <div class="se-table-size-picker se-controller-table-picker"></div>
14
+ <div class="se-table-size-highlighted"></div>
15
+ <div class="se-table-size-unhighlighted"></div>
16
+ </div>
17
+ <div class="se-table-size-display">1 x 1</div>`;
18
+
19
+ return dom.utils.createElement('DIV', { class: 'se-dropdown se-selector-table' }, html);
20
+ }
21
+
22
+ /**
23
+ * @description Creates the table controller HTML.
24
+ * @param {SunEditor.Deps} $ - Kernel dependencies
25
+ * @returns {HTMLDivElement}
26
+ */
27
+ export function CreateHTML_controller_table({ lang, icons }) {
28
+ const html = /*html*/ `
29
+ <div class="se-arrow se-arrow-down se-visible-hidden"></div>
30
+ <div class="se-btn-group">
31
+ <button type="button" data-command="openTableProperties" class="se-btn se-tooltip">
32
+ ${icons.table_properties}
33
+ <span class="se-tooltip-inner">
34
+ <span class="se-tooltip-text">${lang.tableProperties}</span>
35
+ </span>
36
+ </button>
37
+ <button type="button" data-command="layout" class="se-btn se-tooltip _se_table_fixed_column">
38
+ ${icons.fixed_column_width}
39
+ <span class="se-tooltip-inner">
40
+ <span class="se-tooltip-text">${lang.fixedColumnWidth}</span>
41
+ </span>
42
+ </button>
43
+ <button type="button" data-command="header" class="se-btn se-tooltip _se_table_header">
44
+ ${icons.table_header}
45
+ <span class="se-tooltip-inner">
46
+ <span class="se-tooltip-text">${lang.tableHeader}</span>
47
+ </span>
48
+ </button>
49
+ <button type="button" data-command="caption" class="se-btn se-tooltip _se_table_caption">
50
+ ${icons.caption}
51
+ <span class="se-tooltip-inner">
52
+ <span class="se-tooltip-text">${lang.caption}</span>
53
+ </span>
54
+ </button>
55
+ <button type="button" data-command="resize" class="se-btn se-tooltip _se_table_resize">
56
+ ${icons.reduction}
57
+ <span class="se-tooltip-inner">
58
+ <span class="se-tooltip-text">${lang.minSize}</span>
59
+ </span>
60
+ </button>
61
+ <button type="button" data-command="copy" class="se-btn se-tooltip">
62
+ ${icons.copy}
63
+ <span class="se-tooltip-inner">
64
+ <span class="se-tooltip-text">${lang.copy}</span>
65
+ </span>
66
+ </button>
67
+ <button type="button" data-command="remove" class="se-btn se-tooltip">
68
+ ${icons.delete}
69
+ <span class="se-tooltip-inner">
70
+ <span class="se-tooltip-text">${lang.remove}</span>
71
+ </span>
72
+ </button>
73
+ </div>`;
74
+
75
+ return dom.utils.createElement('DIV', { class: 'se-controller se-controller-table' }, html);
76
+ }
77
+
78
+ /**
79
+ * @param {SunEditor.Deps} $ - Kernel dependencies
80
+ * @param {boolean} cellControllerTop - Whether to position cell controller on top
81
+ * @returns {{ html: HTMLElement, splitButton: HTMLButtonElement, columnButton: HTMLButtonElement, rowButton: HTMLButtonElement, mergeButton: HTMLButtonElement, unmergeButton: HTMLButtonElement }}
82
+ */
83
+ export function CreateHTML_controller_cell({ lang, icons }, cellControllerTop) {
84
+ const html = /*html*/ `
85
+ <div class="se-arrow se-arrow-${cellControllerTop ? 'down se-visible-hidden' : 'up'}"></div>
86
+ <div class="se-btn-group">
87
+ <button type="button" data-command="openCellProperties" class="se-btn se-tooltip">
88
+ ${icons.cell_properties}
89
+ <span class="se-tooltip-inner">
90
+ <span class="se-tooltip-text">${lang.cellProperties}</span>
91
+ </span>
92
+ </button>
93
+ <button type="button" data-command="oncolumn" class="se-btn se-tooltip">
94
+ ${icons.table_column}
95
+ <span class="se-tooltip-inner">
96
+ <span class="se-tooltip-text">${lang.column}</span>
97
+ </span>
98
+ </button>
99
+ <button type="button" data-command="onrow" class="se-btn se-tooltip">
100
+ ${icons.table_row}
101
+ <span class="se-tooltip-inner">
102
+ <span class="se-tooltip-text">${lang.row}</span>
103
+ </span>
104
+ </button>
105
+ <button type="button" data-command="merge" class="se-btn se-tooltip" style="display: none;">
106
+ ${icons.merge_cell}
107
+ <span class="se-tooltip-inner">
108
+ <span class="se-tooltip-text">${lang.mergeCells}</span>
109
+ </span>
110
+ </button>
111
+ <button type="button" data-command="onsplit" class="se-btn se-tooltip">
112
+ ${icons.split_cell}
113
+ <span class="se-tooltip-inner">
114
+ <span class="se-tooltip-text">${lang.splitCells}</span>
115
+ </span>
116
+ </button>
117
+ <button type="button" data-command="unmerge" class="se-btn se-tooltip">
118
+ ${icons.unmerge_cell}
119
+ <span class="se-tooltip-inner">
120
+ <span class="se-tooltip-text">${lang.unmergeCells}</span>
121
+ </span>
122
+ </button>
123
+ </div>`;
124
+
125
+ const content = dom.utils.createElement('DIV', { class: 'se-controller se-controller-table-cell' }, html);
126
+
127
+ return {
128
+ html: content,
129
+ splitButton: content.querySelector('[data-command="onsplit"]'),
130
+ columnButton: content.querySelector('[data-command="oncolumn"]'),
131
+ rowButton: content.querySelector('[data-command="onrow"]'),
132
+ mergeButton: content.querySelector('[data-command="merge"]'),
133
+ unmergeButton: content.querySelector('[data-command="unmerge"]'),
134
+ };
135
+ }
136
+
137
+ /**
138
+ * @typedef {Object} TableCtrlProps
139
+ * @property {HTMLElement} html
140
+ * @property {HTMLElement} controller_props_title
141
+ * @property {HTMLButtonElement} borderButton
142
+ * @property {HTMLButtonElement} borderFormatButton
143
+ * @property {HTMLElement} cell_alignment
144
+ * @property {HTMLElement} cell_alignment_vertical
145
+ * @property {HTMLElement} cell_alignment_table_text
146
+ * @property {HTMLButtonElement} border_style
147
+ * @property {HTMLInputElement} border_color
148
+ * @property {HTMLInputElement} border_width
149
+ * @property {HTMLInputElement} back_color
150
+ * @property {HTMLInputElement} font_color
151
+ * @property {HTMLButtonElement} palette_border_button
152
+ * @property {HTMLButtonElement} font_bold
153
+ * @property {HTMLButtonElement} font_underline
154
+ * @property {HTMLButtonElement} font_italic
155
+ * @property {HTMLButtonElement} font_strike
156
+ *
157
+ * @param {SunEditor.Deps} $ - Kernel deps
158
+ * @returns {TableCtrlProps}
159
+ */
160
+ export function CreateHTML_controller_properties({ lang, icons, options }) {
161
+ const alignItems = options.get('_rtl') ? ['right', 'center', 'left', 'justify'] : ['left', 'center', 'right', 'justify'];
162
+ let alignHtml = '';
163
+ for (let i = 0, item, text; i < alignItems.length; i++) {
164
+ item = alignItems[i];
165
+ text = lang['align' + item.charAt(0).toUpperCase() + item.slice(1)];
166
+ alignHtml += /*html*/ `
167
+ <button type="button" class="se-btn se-tooltip" data-command="props_align" data-value="${item}" title="${text}" aria-label="${text}">
168
+ ${icons['align_' + item]}
169
+ <span class="se-tooltip-inner">
170
+ <span class="se-tooltip-text">${text}</span>
171
+ </span>
172
+ </button>`;
173
+ }
174
+
175
+ // vertical align html
176
+ const verticalAligns = ['top', 'middle', 'bottom'];
177
+ let verticalAlignHtml = '';
178
+ for (let i = 0, item, text; i < verticalAligns.length; i++) {
179
+ item = verticalAligns[i];
180
+ text = lang['align' + item.charAt(0).toUpperCase() + item.slice(1)];
181
+ verticalAlignHtml += /*html*/ `
182
+ <button type="button" class="se-btn se-tooltip" data-command="props_align_vertical" data-value="${item}" title="${text}" aria-label="${text}">
183
+ ${icons['align_' + item]}
184
+ <span class="se-tooltip-inner">
185
+ <span class="se-tooltip-text">${text}</span>
186
+ </span>
187
+ </button>`;
188
+ }
189
+
190
+ const html = /*html*/ `
191
+ <div class="se-controller-content">
192
+ <div class="se-controller-header">
193
+ <button type="button" data-command="close_props" class="se-btn se-close-btn close" title="${lang.close}" aria-label="${lang.close}">${icons.cancel}</button>
194
+ <span class="se-controller-title">${lang.tableProperties}</span>
195
+ </div>
196
+ <div class="se-controller-body">
197
+
198
+ <span>${lang.border}</span>
199
+ <div class="se-form-group se-form-w0">
200
+ <button type="button" data-command="props_onborder_format" class="se-btn se-tooltip">
201
+ ${icons[BORDER_FORMATS.all]}
202
+ <span class="se-tooltip-inner">
203
+ <span class="se-tooltip-text">${lang.border}</span>
204
+ </span>
205
+ </button>
206
+ <button type="button" data-command="props_onborder_style" class="se-btn se-btn-select se-tooltip se-border-style">
207
+ <span class="se-txt"></span>
208
+ ${icons.arrow_down}
209
+ <span class="se-tooltip-inner">
210
+ <span class="se-tooltip-text">${lang.border}</span>
211
+ </span>
212
+ </button>
213
+ <input type="text" class="se-color-input __se_border_color" placeholder="${lang.color}" />
214
+ <button type="button" data-command="props_onpalette" data-value="border" class="se-btn se-tooltip">
215
+ ${icons.color_palette}
216
+ <span class="se-tooltip-inner">
217
+ <span class="se-tooltip-text">${lang.colorPicker}</span>
218
+ </span>
219
+ </button>
220
+ <input type="text" class="se-input-control __se__border_size" placeholder="${lang.width}" />
221
+ </div>
222
+
223
+ <span>${lang.color}</span>
224
+ <div class="se-form-group se-form-w0">
225
+ <button type="button" data-command="props_onpalette" data-value="font" class="se-btn se-tooltip">
226
+ ${icons.font_color}
227
+ <span class="se-tooltip-inner">
228
+ <span class="se-tooltip-text">${lang.fontColor}</span>
229
+ </span>
230
+ </button>
231
+ <input type="text" class="se-color-input __se_font_color" placeholder="${lang.fontColor}" />
232
+ <button type="button" data-command="props_onpalette" data-value="back" class="se-btn se-tooltip">
233
+ ${icons.background_color}
234
+ <span class="se-tooltip-inner">
235
+ <span class="se-tooltip-text">${lang.backgroundColor}</span>
236
+ </span>
237
+ </button>
238
+ <input type="text" class="se-color-input __se_back_color" placeholder="${lang.backgroundColor}" />
239
+ </div>
240
+
241
+ <span>${lang.font}</span>
242
+ <div class="se-form-group se-form-w0">
243
+ <button type="button" data-command="props_font_style" data-value="bold" class="se-btn se-tooltip">
244
+ ${icons.bold}
245
+ <span class="se-tooltip-inner">
246
+ <span class="se-tooltip-text">${lang.bold}</span>
247
+ </span>
248
+ </button>
249
+ <button type="button" data-command="props_font_style" data-value="underline" class="se-btn se-tooltip">
250
+ ${icons.underline}
251
+ <span class="se-tooltip-inner">
252
+ <span class="se-tooltip-text">${lang.underline}</span>
253
+ </span>
254
+ </button>
255
+ <button type="button" data-command="props_font_style" data-value="italic" class="se-btn se-tooltip">
256
+ ${icons.italic}
257
+ <span class="se-tooltip-inner">
258
+ <span class="se-tooltip-text">${lang.italic}</span>
259
+ </span>
260
+ </button>
261
+ <button type="button" data-command="props_font_style" data-value="strike" class="se-btn se-tooltip">
262
+ ${icons.strike}
263
+ <span class="se-tooltip-inner">
264
+ <span class="se-tooltip-text">${lang.strike}</span>
265
+ </span>
266
+ </button>
267
+ </div>
268
+
269
+ <div class="se-table-props-align">
270
+ <span>${lang.align} <span class="__se__a_table_t">( ${lang.table} )</span></span>
271
+ <div class="se-form-group se-form-w0 se-list-inner">
272
+ <div class="__se__a_h">
273
+ ${alignHtml}
274
+ </div>
275
+ <div class="__se__a_v">
276
+ ${verticalAlignHtml}
277
+ </div>
278
+ </div>
279
+ </div>
280
+ </div>
281
+ <div class="se-form-group se-form-w0 se-form-flex-btn">
282
+ <button type="button" class="se-btn se-btn-success" data-command="props_submit" title="${lang.submitButton}" aria-label="${lang.submitButton}">${icons.checked}</button>
283
+ <button type="button" class="se-btn se-btn-danger" data-command="revert" title="${lang.revert}" aria-label="${lang.revert}">${icons.revert}</button>
284
+ </div>
285
+ </div>`;
286
+
287
+ const content = dom.utils.createElement('DIV', { class: 'se-controller se-table-props' }, html);
288
+
289
+ return {
290
+ html: content,
291
+ controller_props_title: content.querySelector('.se-controller-title'),
292
+ borderButton: content.querySelector('[data-command="props_onborder_style"]'),
293
+ borderFormatButton: content.querySelector('[data-command="props_onborder_format"]'),
294
+ cell_alignment: content.querySelector('.se-table-props-align .__se__a_h'),
295
+ cell_alignment_vertical: content.querySelector('.se-table-props-align .__se__a_v'),
296
+ cell_alignment_table_text: content.querySelector('.se-table-props-align .__se__a_table_t'),
297
+ border_style: content.querySelector('[data-command="props_onborder_style"] .se-txt'),
298
+ border_color: content.querySelector('.__se_border_color'),
299
+ border_width: content.querySelector('.__se__border_size'),
300
+ back_color: content.querySelector('.__se_back_color'),
301
+ font_color: content.querySelector('.__se_font_color'),
302
+ palette_border_button: content.querySelector('[data-command="props_onpalette"][data-value="border"]'),
303
+ font_bold: content.querySelector('[data-command="props_font_style"][data-value="bold"]'),
304
+ font_underline: content.querySelector('[data-command="props_font_style"][data-value="underline"]'),
305
+ font_italic: content.querySelector('[data-command="props_font_style"][data-value="italic"]'),
306
+ font_strike: content.querySelector('[data-command="props_font_style"][data-value="strike"]'),
307
+ };
308
+ }
@@ -0,0 +1,121 @@
1
+ import { dom } from '../../../../helper';
2
+ import { _DragHandle } from '../../../../modules/ui';
3
+ import { BORDER_LIST, BORDER_FORMATS } from '../shared/table.constants';
4
+
5
+ /**
6
+ * @description Creates the split menu items.
7
+ * @param {Object} lang - Language object.
8
+ * @returns {{items: string[], menus: NodeListOf<Element>}}
9
+ */
10
+ export function CreateSplitMenu(lang) {
11
+ const menus = dom.utils.createElement(
12
+ 'DIV',
13
+ null,
14
+ /*html*/ `
15
+ <div title="${lang.verticalSplit}" aria-label="${lang.verticalSplit}">
16
+ ${lang.verticalSplit}
17
+ </div>
18
+ <div title="${lang.horizontalSplit}" aria-label="${lang.horizontalSplit}">
19
+ ${lang.horizontalSplit}
20
+ </div>`,
21
+ );
22
+
23
+ return { items: ['vertical', 'horizontal'], menus: menus.querySelectorAll('div') };
24
+ }
25
+
26
+ /**
27
+ * @description Creates the column menu items.
28
+ * @param {Object} lang - Language object.
29
+ * @param {Object} icons - Icons object.
30
+ * @returns {{items: string[], menus: NodeListOf<Element>}}
31
+ */
32
+ export function CreateColumnMenu(lang, icons) {
33
+ const menus = dom.utils.createElement(
34
+ 'DIV',
35
+ null,
36
+ /*html*/ `
37
+ <div title="${lang.insertColumnBefore}" aria-label="${lang.insertColumnBefore}">
38
+ <span class="se-list-icon">${icons.insert_column_left}</span><span class="se-txt">${lang.insertColumnBefore}</span>
39
+ </div>
40
+ <div title="${lang.insertColumnAfter}" aria-label="${lang.insertColumnAfter}">
41
+ <span class="se-list-icon">${icons.insert_column_right}</span><span class="se-txt">${lang.insertColumnAfter}</span>
42
+ </div>
43
+ <div title="${lang.deleteColumn}" aria-label="${lang.deleteColumn}">
44
+ <span class="se-list-icon">${icons.delete_column}</span><span class="se-txt">${lang.deleteColumn}</span>
45
+ </div>`,
46
+ );
47
+
48
+ return { items: ['insert-left', 'insert-right', 'delete'], menus: menus.querySelectorAll('div') };
49
+ }
50
+
51
+ /**
52
+ * @description Creates the row menu items.
53
+ * @param {Object} lang - Language object.
54
+ * @param {Object} icons - Icons object.
55
+ * @returns {{items: string[], menus: NodeListOf<Element>}}
56
+ */
57
+ export function CreateRowMenu(lang, icons) {
58
+ const menus = dom.utils.createElement(
59
+ 'DIV',
60
+ null,
61
+ /*html*/ `
62
+ <div title="${lang.insertRowAbove}" aria-label="${lang.insertRowAbove}">
63
+ <span class="se-list-icon">${icons.insert_row_above}</span><span class="se-txt">${lang.insertRowAbove}</span>
64
+ </div>
65
+ <div title="${lang.insertRowBelow}" aria-label="${lang.insertRowBelow}">
66
+ <span class="se-list-icon">${icons.insert_row_below}</span><span class="se-txt">${lang.insertRowBelow}</span>
67
+ </div>
68
+ <div title="${lang.deleteRow}" aria-label="${lang.deleteRow}">
69
+ <span class="se-list-icon">${icons.delete_row}</span><span class="se-txt">${lang.deleteRow}</span>
70
+ </div>`,
71
+ );
72
+
73
+ return { items: ['insert-above', 'insert-below', 'delete'], menus: menus.querySelectorAll('div') };
74
+ }
75
+
76
+ /**
77
+ * @description Creates the border style menu items.
78
+ * @returns {{items: string[], menus: NodeListOf<Element>}}
79
+ */
80
+ export function CreateBorderMenu() {
81
+ let html = '';
82
+
83
+ for (let i = 0, len = BORDER_LIST.length, s; i < len; i++) {
84
+ s = BORDER_LIST[i];
85
+ html += /*html*/ `
86
+ <div title="${s}" aria-label="${s}" style="padding: 0 12px;">
87
+ <span class="se-txt">${s}</span>
88
+ </div>`;
89
+ }
90
+
91
+ const menus = dom.utils.createElement('DIV', null, html);
92
+ return { items: BORDER_LIST, menus: menus.querySelectorAll('div') };
93
+ }
94
+
95
+ /**
96
+ * @description Creates the border format menu items.
97
+ * @param {Object} langs - Language object.
98
+ * @param {Object} icons - Icons object.
99
+ * @param {string[]} indideFormats - Formats to exclude.
100
+ * @returns {{items: string[], menus: NodeListOf<Element>}}
101
+ */
102
+ export function CreateBorderFormatMenu(langs, icons, indideFormats) {
103
+ const items = [];
104
+ let html = '';
105
+
106
+ for (const k in BORDER_FORMATS) {
107
+ if (indideFormats.includes(k)) continue;
108
+ const s = BORDER_FORMATS[k];
109
+ items.push(k);
110
+ html += /*html*/ `
111
+ <button type="button" class="se-btn se-tooltip">
112
+ ${icons[s]}
113
+ <span class="se-tooltip-inner">
114
+ <span class="se-tooltip-text">${langs[s]}</span>
115
+ </span>
116
+ </button>`;
117
+ }
118
+
119
+ const menus = dom.utils.createElement('DIV', null, html);
120
+ return { items, menus: menus.querySelectorAll('button') };
121
+ }