suneditor 3.0.0-alpha.2 → 3.0.0-alpha.20

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 (306) hide show
  1. package/.eslintrc.json +4 -3
  2. package/CONTRIBUTING.md +4 -2
  3. package/README.md +19 -11
  4. package/README_V3_TEMP.md +705 -0
  5. package/dist/suneditor.min.css +1 -0
  6. package/dist/suneditor.min.js +1 -0
  7. package/example.md +587 -0
  8. package/package.json +15 -9
  9. package/src/assets/icons/_default.js +166 -131
  10. package/src/assets/{suneditor-content.css → suneditor-contents.css} +182 -45
  11. package/src/assets/suneditor.css +1195 -556
  12. package/src/assets/variables.css +138 -0
  13. package/src/core/base/eventHandlers/handler_toolbar.js +35 -14
  14. package/src/core/base/eventHandlers/handler_ww_clipboard.js +29 -4
  15. package/src/core/base/eventHandlers/handler_ww_dragDrop.js +59 -15
  16. package/src/core/base/eventHandlers/handler_ww_key_input.js +426 -212
  17. package/src/core/base/eventHandlers/handler_ww_mouse.js +108 -32
  18. package/src/core/base/eventManager.js +540 -209
  19. package/src/core/base/events.js +616 -320
  20. package/src/core/base/history.js +93 -39
  21. package/src/core/class/char.js +29 -13
  22. package/src/core/class/component.js +332 -145
  23. package/src/core/class/format.js +671 -509
  24. package/src/core/class/html.js +504 -290
  25. package/src/core/class/menu.js +114 -47
  26. package/src/core/class/nodeTransform.js +111 -66
  27. package/src/core/class/offset.js +409 -105
  28. package/src/core/class/selection.js +220 -108
  29. package/src/core/class/shortcuts.js +68 -8
  30. package/src/core/class/toolbar.js +106 -116
  31. package/src/core/class/ui.js +330 -0
  32. package/src/core/class/viewer.js +178 -74
  33. package/src/core/editor.js +489 -384
  34. package/src/core/section/actives.js +118 -22
  35. package/src/core/section/constructor.js +504 -170
  36. package/src/core/section/context.js +28 -23
  37. package/src/core/section/documentType.js +561 -0
  38. package/src/editorInjector/_classes.js +19 -5
  39. package/src/editorInjector/_core.js +71 -7
  40. package/src/editorInjector/index.js +63 -1
  41. package/src/helper/converter.js +137 -19
  42. package/src/helper/dom/domCheck.js +294 -0
  43. package/src/helper/dom/domQuery.js +609 -0
  44. package/src/helper/dom/domUtils.js +533 -0
  45. package/src/helper/dom/index.js +12 -0
  46. package/src/helper/env.js +42 -19
  47. package/src/helper/index.js +7 -4
  48. package/src/helper/keyCodeMap.js +183 -0
  49. package/src/helper/numbers.js +8 -8
  50. package/src/helper/unicode.js +5 -5
  51. package/src/langs/ckb.js +69 -3
  52. package/src/langs/cs.js +67 -1
  53. package/src/langs/da.js +68 -2
  54. package/src/langs/de.js +68 -3
  55. package/src/langs/en.js +29 -1
  56. package/src/langs/es.js +68 -3
  57. package/src/langs/fa.js +70 -2
  58. package/src/langs/fr.js +68 -2
  59. package/src/langs/he.js +68 -3
  60. package/src/langs/hu.js +226 -0
  61. package/src/langs/index.js +3 -2
  62. package/src/langs/it.js +65 -0
  63. package/src/langs/ja.js +68 -3
  64. package/src/langs/ko.js +66 -1
  65. package/src/langs/lv.js +68 -3
  66. package/src/langs/nl.js +68 -3
  67. package/src/langs/pl.js +68 -3
  68. package/src/langs/pt_br.js +65 -0
  69. package/src/langs/ro.js +69 -4
  70. package/src/langs/ru.js +68 -3
  71. package/src/langs/se.js +68 -3
  72. package/src/langs/tr.js +68 -0
  73. package/src/langs/ua.js +68 -3
  74. package/src/langs/ur.js +71 -6
  75. package/src/langs/zh_cn.js +69 -4
  76. package/src/modules/ApiManager.js +77 -54
  77. package/src/modules/Browser.js +667 -0
  78. package/src/modules/ColorPicker.js +162 -102
  79. package/src/modules/Controller.js +233 -136
  80. package/src/modules/Figure.js +913 -489
  81. package/src/modules/FileManager.js +141 -72
  82. package/src/modules/HueSlider.js +113 -61
  83. package/src/modules/Modal.js +292 -113
  84. package/src/modules/ModalAnchorEditor.js +380 -230
  85. package/src/modules/SelectMenu.js +270 -168
  86. package/src/modules/_DragHandle.js +2 -1
  87. package/src/modules/index.js +3 -3
  88. package/src/plugins/browser/audioGallery.js +83 -0
  89. package/src/plugins/browser/fileBrowser.js +103 -0
  90. package/src/plugins/browser/fileGallery.js +83 -0
  91. package/src/plugins/browser/imageGallery.js +81 -0
  92. package/src/plugins/browser/videoGallery.js +103 -0
  93. package/src/plugins/command/blockquote.js +40 -27
  94. package/src/plugins/command/exportPDF.js +134 -0
  95. package/src/plugins/command/fileUpload.js +226 -158
  96. package/src/plugins/command/list_bulleted.js +93 -47
  97. package/src/plugins/command/list_numbered.js +93 -47
  98. package/src/plugins/dropdown/align.js +66 -54
  99. package/src/plugins/dropdown/backgroundColor.js +76 -45
  100. package/src/plugins/dropdown/font.js +71 -47
  101. package/src/plugins/dropdown/fontColor.js +78 -46
  102. package/src/plugins/dropdown/formatBlock.js +74 -33
  103. package/src/plugins/dropdown/hr.js +102 -51
  104. package/src/plugins/dropdown/layout.js +37 -26
  105. package/src/plugins/dropdown/lineHeight.js +54 -38
  106. package/src/plugins/dropdown/list.js +60 -45
  107. package/src/plugins/dropdown/paragraphStyle.js +51 -30
  108. package/src/plugins/dropdown/table.js +1269 -777
  109. package/src/plugins/dropdown/template.js +38 -26
  110. package/src/plugins/dropdown/textStyle.js +43 -31
  111. package/src/plugins/field/mention.js +144 -82
  112. package/src/plugins/index.js +32 -6
  113. package/src/plugins/input/fontSize.js +161 -108
  114. package/src/plugins/input/pageNavigator.js +70 -0
  115. package/src/plugins/modal/audio.js +341 -169
  116. package/src/plugins/modal/drawing.js +530 -0
  117. package/src/plugins/modal/embed.js +886 -0
  118. package/src/plugins/modal/image.js +673 -358
  119. package/src/plugins/modal/link.js +100 -71
  120. package/src/plugins/modal/math.js +384 -168
  121. package/src/plugins/modal/video.js +693 -336
  122. package/src/plugins/popup/anchor.js +222 -0
  123. package/src/suneditor.js +54 -12
  124. package/src/themes/dark.css +85 -0
  125. package/src/typedef.js +86 -0
  126. package/types/assets/icons/_default.d.ts +152 -0
  127. package/types/core/base/eventHandlers/handler_toolbar.d.ts +41 -0
  128. package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +40 -0
  129. package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +35 -0
  130. package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +45 -0
  131. package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +39 -0
  132. package/types/core/base/eventManager.d.ts +377 -0
  133. package/types/core/base/events.d.ts +297 -0
  134. package/types/core/base/history.d.ts +81 -0
  135. package/types/core/class/char.d.ts +60 -0
  136. package/types/core/class/component.d.ts +259 -0
  137. package/types/core/class/format.d.ts +615 -0
  138. package/types/core/class/html.d.ts +377 -0
  139. package/types/core/class/menu.d.ts +118 -0
  140. package/types/core/class/nodeTransform.d.ts +93 -0
  141. package/types/core/class/offset.d.ts +512 -0
  142. package/types/core/class/selection.d.ts +188 -0
  143. package/types/core/class/shortcuts.d.ts +142 -0
  144. package/types/core/class/toolbar.d.ts +189 -0
  145. package/types/core/class/ui.d.ts +144 -0
  146. package/types/core/class/viewer.d.ts +140 -0
  147. package/types/core/editor.d.ts +606 -0
  148. package/types/core/section/actives.d.ts +46 -0
  149. package/types/core/section/constructor.d.ts +748 -0
  150. package/types/core/section/context.d.ts +45 -0
  151. package/types/core/section/documentType.d.ts +178 -0
  152. package/types/editorInjector/_classes.d.ts +41 -0
  153. package/types/editorInjector/_core.d.ts +92 -0
  154. package/types/editorInjector/index.d.ts +71 -0
  155. package/types/helper/converter.d.ts +150 -0
  156. package/types/helper/dom/domCheck.d.ts +182 -0
  157. package/types/helper/dom/domQuery.d.ts +214 -0
  158. package/types/helper/dom/domUtils.d.ts +211 -0
  159. package/types/helper/dom/index.d.ts +9 -0
  160. package/types/helper/env.d.ts +149 -0
  161. package/types/helper/index.d.ts +163 -0
  162. package/types/helper/keyCodeMap.d.ts +110 -0
  163. package/types/helper/numbers.d.ts +43 -0
  164. package/types/helper/unicode.d.ts +28 -0
  165. package/types/index.d.ts +0 -0
  166. package/{typings/Lang.d.ts → types/langs/_Lang.d.ts} +170 -103
  167. package/types/langs/ckb.d.ts +384 -0
  168. package/types/langs/cs.d.ts +384 -0
  169. package/types/langs/da.d.ts +384 -0
  170. package/types/langs/de.d.ts +384 -0
  171. package/types/langs/en.d.ts +384 -0
  172. package/types/langs/es.d.ts +384 -0
  173. package/types/langs/fa.d.ts +384 -0
  174. package/types/langs/fr.d.ts +384 -0
  175. package/types/langs/he.d.ts +384 -0
  176. package/types/langs/hu.d.ts +384 -0
  177. package/types/langs/index.d.ts +48 -0
  178. package/types/langs/it.d.ts +384 -0
  179. package/types/langs/ja.d.ts +384 -0
  180. package/types/langs/ko.d.ts +384 -0
  181. package/types/langs/lv.d.ts +384 -0
  182. package/types/langs/nl.d.ts +384 -0
  183. package/types/langs/pl.d.ts +384 -0
  184. package/types/langs/pt_br.d.ts +384 -0
  185. package/types/langs/ro.d.ts +384 -0
  186. package/types/langs/ru.d.ts +384 -0
  187. package/types/langs/se.d.ts +384 -0
  188. package/types/langs/tr.d.ts +384 -0
  189. package/types/langs/ua.d.ts +384 -0
  190. package/types/langs/ur.d.ts +384 -0
  191. package/types/langs/zh_cn.d.ts +384 -0
  192. package/types/modules/ApiManager.d.ts +125 -0
  193. package/types/modules/Browser.d.ts +326 -0
  194. package/types/modules/ColorPicker.d.ts +131 -0
  195. package/types/modules/Controller.d.ts +231 -0
  196. package/types/modules/Figure.d.ts +504 -0
  197. package/types/modules/FileManager.d.ts +202 -0
  198. package/types/modules/HueSlider.d.ts +136 -0
  199. package/types/modules/Modal.d.ts +117 -0
  200. package/types/modules/ModalAnchorEditor.d.ts +236 -0
  201. package/types/modules/SelectMenu.d.ts +194 -0
  202. package/types/modules/_DragHandle.d.ts +7 -0
  203. package/types/modules/index.d.ts +26 -0
  204. package/types/plugins/browser/audioGallery.d.ts +55 -0
  205. package/types/plugins/browser/fileBrowser.d.ts +64 -0
  206. package/types/plugins/browser/fileGallery.d.ts +55 -0
  207. package/types/plugins/browser/imageGallery.d.ts +51 -0
  208. package/types/plugins/browser/videoGallery.d.ts +57 -0
  209. package/types/plugins/command/blockquote.d.ts +28 -0
  210. package/types/plugins/command/exportPDF.d.ts +46 -0
  211. package/types/plugins/command/fileUpload.d.ts +156 -0
  212. package/types/plugins/command/list_bulleted.d.ts +56 -0
  213. package/types/plugins/command/list_numbered.d.ts +56 -0
  214. package/types/plugins/dropdown/align.d.ts +60 -0
  215. package/types/plugins/dropdown/backgroundColor.d.ts +63 -0
  216. package/types/plugins/dropdown/font.d.ts +54 -0
  217. package/types/plugins/dropdown/fontColor.d.ts +63 -0
  218. package/types/plugins/dropdown/formatBlock.d.ts +58 -0
  219. package/types/plugins/dropdown/hr.d.ts +81 -0
  220. package/types/plugins/dropdown/layout.d.ts +40 -0
  221. package/types/plugins/dropdown/lineHeight.d.ts +50 -0
  222. package/types/plugins/dropdown/list.d.ts +39 -0
  223. package/types/plugins/dropdown/paragraphStyle.d.ts +54 -0
  224. package/types/plugins/dropdown/table.d.ts +579 -0
  225. package/types/plugins/dropdown/template.d.ts +40 -0
  226. package/types/plugins/dropdown/textStyle.d.ts +41 -0
  227. package/types/plugins/field/mention.d.ts +102 -0
  228. package/types/plugins/index.d.ts +107 -0
  229. package/types/plugins/input/fontSize.d.ts +170 -0
  230. package/types/plugins/input/pageNavigator.d.ts +28 -0
  231. package/types/plugins/modal/audio.d.ts +269 -0
  232. package/types/plugins/modal/drawing.d.ts +246 -0
  233. package/types/plugins/modal/embed.d.ts +387 -0
  234. package/types/plugins/modal/image.d.ts +451 -0
  235. package/types/plugins/modal/link.d.ts +128 -0
  236. package/types/plugins/modal/math.d.ts +193 -0
  237. package/types/plugins/modal/video.d.ts +485 -0
  238. package/types/plugins/popup/anchor.d.ts +56 -0
  239. package/types/suneditor.d.ts +51 -0
  240. package/types/typedef-global.d.ts +144 -0
  241. package/src/core/class/notice.js +0 -42
  242. package/src/helper/domUtils.js +0 -1177
  243. package/src/modules/FileBrowser.js +0 -271
  244. package/src/plugins/command/exportPdf.js +0 -168
  245. package/src/plugins/fileBrowser/imageGallery.js +0 -81
  246. package/src/themes/test.css +0 -61
  247. package/typings/CommandPlugin.d.ts +0 -8
  248. package/typings/DialogPlugin.d.ts +0 -20
  249. package/typings/FileBrowserPlugin.d.ts +0 -30
  250. package/typings/Module.d.ts +0 -15
  251. package/typings/Plugin.d.ts +0 -42
  252. package/typings/SubmenuPlugin.d.ts +0 -8
  253. package/typings/_classes.d.ts +0 -17
  254. package/typings/_colorPicker.d.ts +0 -60
  255. package/typings/_core.d.ts +0 -55
  256. package/typings/align.d.ts +0 -5
  257. package/typings/audio.d.ts +0 -5
  258. package/typings/backgroundColor.d.ts +0 -5
  259. package/typings/blockquote.d.ts +0 -5
  260. package/typings/char.d.ts +0 -39
  261. package/typings/component.d.ts +0 -38
  262. package/typings/context.d.ts +0 -39
  263. package/typings/converter.d.ts +0 -33
  264. package/typings/dialog.d.ts +0 -28
  265. package/typings/domUtils.d.ts +0 -361
  266. package/typings/editor.d.ts +0 -7
  267. package/typings/editor.ts +0 -542
  268. package/typings/env.d.ts +0 -70
  269. package/typings/eventManager.d.ts +0 -37
  270. package/typings/events.d.ts +0 -262
  271. package/typings/fileBrowser.d.ts +0 -42
  272. package/typings/fileManager.d.ts +0 -67
  273. package/typings/font.d.ts +0 -5
  274. package/typings/fontColor.d.ts +0 -5
  275. package/typings/fontSize.d.ts +0 -5
  276. package/typings/format.d.ts +0 -191
  277. package/typings/formatBlock.d.ts +0 -5
  278. package/typings/history.d.ts +0 -48
  279. package/typings/horizontalRule.d.ts +0 -5
  280. package/typings/image.d.ts +0 -5
  281. package/typings/imageGallery.d.ts +0 -5
  282. package/typings/index.d.ts +0 -21
  283. package/typings/index.modules.d.ts +0 -11
  284. package/typings/index.plugins.d.ts +0 -58
  285. package/typings/lineHeight.d.ts +0 -5
  286. package/typings/link.d.ts +0 -5
  287. package/typings/list.d.ts +0 -5
  288. package/typings/math.d.ts +0 -5
  289. package/typings/mediaContainer.d.ts +0 -25
  290. package/typings/mention.d.ts +0 -5
  291. package/typings/node.d.ts +0 -57
  292. package/typings/notice.d.ts +0 -16
  293. package/typings/numbers.d.ts +0 -29
  294. package/typings/offset.d.ts +0 -24
  295. package/typings/options.d.ts +0 -589
  296. package/typings/paragraphStyle.d.ts +0 -5
  297. package/typings/resizing.d.ts +0 -141
  298. package/typings/selection.d.ts +0 -94
  299. package/typings/shortcuts.d.ts +0 -13
  300. package/typings/suneditor.d.ts +0 -9
  301. package/typings/table.d.ts +0 -5
  302. package/typings/template.d.ts +0 -5
  303. package/typings/textStyle.d.ts +0 -5
  304. package/typings/toolbar.d.ts +0 -32
  305. package/typings/unicode.d.ts +0 -25
  306. package/typings/video.d.ts +0 -5
@@ -0,0 +1,326 @@
1
+ export default Browser;
2
+ export type BrowserFile = {
3
+ /**
4
+ * - Source url
5
+ */
6
+ src?: string;
7
+ /**
8
+ * - File name | Folder name
9
+ */
10
+ name?: string;
11
+ /**
12
+ * - Thumbnail url
13
+ */
14
+ thumbnail?: string | undefined;
15
+ /**
16
+ * - Image alt
17
+ */
18
+ alt?: string | undefined;
19
+ /**
20
+ * - Tag name list
21
+ */
22
+ tag?: (Array<string> | string) | undefined;
23
+ /**
24
+ * - Type (image, video, audio, etc.)
25
+ */
26
+ type?: string | undefined;
27
+ /**
28
+ * - Frame name (iframe, video, etc.)
29
+ */
30
+ frame?: string | undefined;
31
+ /**
32
+ * - The folder's contents or an API URL.
33
+ */
34
+ _data?: (BrowserFile | string) | undefined;
35
+ /**
36
+ * - Whether this folder is the default selection.
37
+ */
38
+ default?: boolean | undefined;
39
+ /**
40
+ * - Metadata
41
+ */
42
+ meta?:
43
+ | {
44
+ [x: string]: any;
45
+ }
46
+ | undefined;
47
+ };
48
+ export type BrowserParams = {
49
+ /**
50
+ * - File browser window title. Required. Can be overridden in browser.
51
+ */
52
+ title: string;
53
+ /**
54
+ * - Class name of the file browser. Optional. Default: ''.
55
+ */
56
+ className?: string | undefined;
57
+ /**
58
+ * - direct data without server calls
59
+ */
60
+ data?:
61
+ | (
62
+ | {
63
+ [x: string]: any;
64
+ }
65
+ | Array<any>
66
+ )
67
+ | undefined;
68
+ /**
69
+ * - File server url. Required. Can be overridden in browser.
70
+ */
71
+ url?: string | undefined;
72
+ /**
73
+ * - File server http header. Required. Can be overridden in browser.
74
+ */
75
+ headers?:
76
+ | {
77
+ [x: string]: string;
78
+ }
79
+ | undefined;
80
+ /**
81
+ * - Function that actions when an item is clicked. Required. Can be overridden in browser.
82
+ */
83
+ selectorHandler: (target: Node) => void;
84
+ /**
85
+ * - Whether to use the search function. Optional. Default: true.
86
+ */
87
+ useSearch?: boolean | undefined;
88
+ /**
89
+ * - File server search url. Optional. Can be overridden in browser.
90
+ */
91
+ searchUrl?: string | undefined;
92
+ /**
93
+ * - File server search http header. Optional. Can be overridden in browser.
94
+ */
95
+ searchUrlHeader?:
96
+ | {
97
+ [x: string]: string;
98
+ }
99
+ | undefined;
100
+ /**
101
+ * - Class name of list div. Required. Can be overridden in browser.
102
+ */
103
+ listClass?: string | undefined;
104
+ /**
105
+ * - Function that defines the HTML of a file item. Required. Can be overridden in browser.
106
+ */
107
+ drawItemHandler?: ((item: BrowserFile) => string) | undefined;
108
+ /**
109
+ * - "props" argument to "drawItemHandler" function. Optional. Can be overridden in browser.
110
+ */
111
+ props?: Array<any> | undefined;
112
+ /**
113
+ * - Number of "div.se-file-item-column" to be created. Optional. Can be overridden in browser. Default: 4.
114
+ */
115
+ columnSize?: number | undefined;
116
+ /**
117
+ * - Default thumbnail
118
+ */
119
+ thumbnail?: ((item: BrowserFile) => string) | undefined;
120
+ };
121
+ /**
122
+ * @typedef {Object} BrowserFile
123
+ * @property {string} [src=""] - Source url
124
+ * @property {string} [name=""] - File name | Folder name
125
+ * @property {string=} thumbnail - Thumbnail url
126
+ * @property {string=} alt - Image alt
127
+ * @property {Array<string>|string=} tag - Tag name list
128
+ * @property {string=} type - Type (image, video, audio, etc.)
129
+ * @property {string=} frame - Frame name (iframe, video, etc.)
130
+ * @property {BrowserFile | string=} _data - The folder's contents or an API URL.
131
+ * @property {boolean=} default - Whether this folder is the default selection.
132
+ * @property {Object<string, *>=} meta - Metadata
133
+ */
134
+ /**
135
+ * @typedef BrowserParams
136
+ * @property {string} title - File browser window title. Required. Can be overridden in browser.
137
+ * @property {string=} className - Class name of the file browser. Optional. Default: ''.
138
+ * @property {Object<string, *>|Array<*>=} data - direct data without server calls
139
+ * @property {string=} url - File server url. Required. Can be overridden in browser.
140
+ * @property {Object<string, string>=} headers - File server http header. Required. Can be overridden in browser.
141
+ * @property {(target: Node) => void} selectorHandler - Function that actions when an item is clicked. Required. Can be overridden in browser.
142
+ * @property {boolean=} useSearch - Whether to use the search function. Optional. Default: true.
143
+ * @property {string=} searchUrl - File server search url. Optional. Can be overridden in browser.
144
+ * @property {Object<string, string>=} searchUrlHeader - File server search http header. Optional. Can be overridden in browser.
145
+ * @property {string=} listClass - Class name of list div. Required. Can be overridden in browser.
146
+ * @property {(item: BrowserFile) => string=} drawItemHandler - Function that defines the HTML of a file item. Required. Can be overridden in browser.
147
+ * @property {Array<*>=} props - "props" argument to "drawItemHandler" function. Optional. Can be overridden in browser.
148
+ * @property {number=} columnSize - Number of "div.se-file-item-column" to be created. Optional. Can be overridden in browser. Default: 4.
149
+ * @property {((item: BrowserFile) => string)=} thumbnail - Default thumbnail
150
+ */
151
+ /**
152
+ * @class
153
+ * @description File browser plugin
154
+ */
155
+ declare class Browser extends CoreInjector {
156
+ /**
157
+ * @constructor
158
+ * @param {*} inst The instance object that called the constructor.
159
+ * @param {BrowserParams} params Browser options
160
+ */
161
+ constructor(inst: any, params: BrowserParams);
162
+ useSearch: boolean;
163
+ kind: any;
164
+ inst: any;
165
+ area: HTMLElement;
166
+ header: HTMLElement;
167
+ titleArea: HTMLElement;
168
+ tagArea: HTMLElement;
169
+ body: HTMLElement;
170
+ list: HTMLElement;
171
+ side: HTMLElement;
172
+ wrapper: HTMLElement;
173
+ _loading: HTMLElement;
174
+ title: string;
175
+ listClass: string;
176
+ directData:
177
+ | any[]
178
+ | {
179
+ [x: string]: any;
180
+ };
181
+ url: string;
182
+ urlHeader: {
183
+ [x: string]: string;
184
+ };
185
+ searchUrl: string;
186
+ searchUrlHeader: {
187
+ [x: string]: string;
188
+ };
189
+ drawItemHandler: any;
190
+ selectorHandler: (target: Node) => void;
191
+ columnSize: number;
192
+ folderDefaultPath: string;
193
+ closeArrow: string;
194
+ openArrow: string;
195
+ icon_folder: string;
196
+ icon_folder_item: string;
197
+ icon_item: string;
198
+ /**
199
+ * @type {Array<BrowserFile>}
200
+ */
201
+ items: Array<BrowserFile>;
202
+ /**
203
+ * @type {Object<string, {name: string, meta: Object<string, *>}>}
204
+ */
205
+ folders: {
206
+ [x: string]: {
207
+ name: string;
208
+ meta: {
209
+ [x: string]: any;
210
+ };
211
+ };
212
+ };
213
+ /**
214
+ * @type {Object<string, {key?: string, name?: string, children?: *}>}
215
+ */
216
+ tree: {
217
+ [x: string]: {
218
+ key?: string;
219
+ name?: string;
220
+ children?: any;
221
+ };
222
+ };
223
+ /**
224
+ * @type {BrowserFile}
225
+ */
226
+ data: BrowserFile;
227
+ selectedTags: any[];
228
+ keyword: string;
229
+ sideInner: HTMLElement;
230
+ _closeSignal: boolean;
231
+ _bindClose: any;
232
+ __globalEventHandler: (e: any) => void;
233
+ apiManager: ApiManager;
234
+ sideOpenBtn: HTMLButtonElement;
235
+ /**
236
+ * @description Open a file browser plugin
237
+ * @param {Object} [params={}]
238
+ * @param {string=} params.listClass - Class name of list div. If not, use "this.listClass".
239
+ * @param {string=} params.title - File browser window title. If not, use "this.title".
240
+ * @param {string=} params.url - File server url. If not, use "this.url".
241
+ * @param {Object<string, string>=} params.urlHeader - File server http header. If not, use "this.urlHeader".
242
+ */
243
+ open(params?: {
244
+ listClass?: string | undefined;
245
+ title?: string | undefined;
246
+ url?: string | undefined;
247
+ urlHeader?:
248
+ | {
249
+ [x: string]: string;
250
+ }
251
+ | undefined;
252
+ }): void;
253
+ /**
254
+ * @description Close a browser plugin
255
+ * - The plugin's "init" method is called.
256
+ */
257
+ close(): void;
258
+ /**
259
+ * @description Search files
260
+ * @param {string} keyword - Search keyword
261
+ */
262
+ search(keyword: string): void;
263
+ /**
264
+ * @description Filter items by tag
265
+ * @param {Array<BrowserFile>} items - Items to filter
266
+ * @returns {Array<BrowserFile>}
267
+ */
268
+ tagfilter(items: Array<BrowserFile>): Array<BrowserFile>;
269
+ /**
270
+ * @description Show file browser loading box
271
+ */
272
+ showBrowserLoading(): void;
273
+ /**
274
+ * @description Close file browser loading box
275
+ */
276
+ closeBrowserLoading(): void;
277
+ /**
278
+ * @private
279
+ * @description Fetches the file list from the server.
280
+ * @param {string} url - The file server URL.
281
+ * @param {Object<string, string>} urlHeader - The HTTP headers for the request.
282
+ * @param {boolean} pageLoading - Indicates if this is a paginated request.
283
+ */
284
+ private _drawFileList;
285
+ /**
286
+ * @private
287
+ * @description Updates the displayed list of file items.
288
+ * @param {Array<BrowserFile>} items - The file items to display.
289
+ * @param {boolean} update - Whether to update the tags.
290
+ */
291
+ private _drawListItem;
292
+ /**
293
+ * @private
294
+ * @description Adds a global event listener for closing the browser.
295
+ */
296
+ private __addGlobalEvent;
297
+ /**
298
+ * @private
299
+ * @description Removes the global event listener for closing the browser.
300
+ */
301
+ private __removeGlobalEvent;
302
+ /**
303
+ * @private
304
+ * @description Renders the file items or folder structure from data.
305
+ * @param {BrowserFile[]|BrowserFile} data - The data representing the file structure.
306
+ * @returns {boolean} True if rendering was successful, false otherwise.
307
+ */
308
+ private __drowItems;
309
+ /**
310
+ * @private
311
+ * @description Parses folder data into a structured format.
312
+ * @param {BrowserFile} data - The folder data.
313
+ * @param {string} [path] - The current path in the folder hierarchy.
314
+ */
315
+ private __parseFolderData;
316
+ /**
317
+ * @private
318
+ * @description Creates a nested folder list from parsed data.
319
+ * @param {BrowserFile[]|BrowserFile} folderData - The structured folder data.
320
+ * @param {HTMLElement} parentElement - The parent element to append folder structure to.
321
+ */
322
+ private __createFolderList;
323
+ #private;
324
+ }
325
+ import CoreInjector from '../editorInjector/_core';
326
+ import ApiManager from './ApiManager';
@@ -0,0 +1,131 @@
1
+ export default ColorPicker;
2
+ export type HueSliderParams = import('./HueSlider').HueSliderParams;
3
+ export type HueSliderColor = import('./HueSlider').HueSliderColor;
4
+ export type ColorPickerParams = {
5
+ /**
6
+ * color list
7
+ */
8
+ colorList?:
9
+ | Array<
10
+ | string
11
+ | {
12
+ value: string;
13
+ name: string;
14
+ }
15
+ >
16
+ | undefined;
17
+ /**
18
+ * Number of colors to be displayed in one line
19
+ */
20
+ splitNum?: number | undefined;
21
+ /**
22
+ * Default color
23
+ */
24
+ defaultColor?: string | undefined;
25
+ /**
26
+ * Disable HEX input
27
+ */
28
+ disableHEXInput?: boolean | undefined;
29
+ /**
30
+ * Disable remove button
31
+ */
32
+ disableRemove?: boolean | undefined;
33
+ /**
34
+ * hue slider options
35
+ */
36
+ hueSliderOptions?: HueSliderParams | undefined;
37
+ };
38
+ /**
39
+ * @typedef {import('./HueSlider').HueSliderParams} HueSliderParams
40
+ */
41
+ /**
42
+ * @typedef {import('./HueSlider').HueSliderColor} HueSliderColor
43
+ */
44
+ /**
45
+ * @typedef {Object} ColorPickerParams
46
+ * @property {Array<string|{value: string, name: string}>=} [colorList=[]] color list
47
+ * @property {number=} [splitNum=0] Number of colors to be displayed in one line
48
+ * @property {string=} [defaultColor] Default color
49
+ * @property {boolean=} [disableHEXInput=false] Disable HEX input
50
+ * @property {boolean=} [disableRemove=false] Disable remove button
51
+ * @property {HueSliderParams=} [hueSliderOptions] hue slider options
52
+ */
53
+ /**
54
+ * @class
55
+ * @description Create a color picker element and register for related events. (this.target)
56
+ * - When calling the color selection, "submit", and "remove" buttons, the "action" method of the instance is called with the "color" value as an argument.
57
+ */
58
+ declare class ColorPicker extends CoreInjector {
59
+ /**
60
+ * @constructor
61
+ * @param {*} inst The instance object that called the constructor.
62
+ * @param {string} styles style property ("color", "backgroundColor"..)
63
+ * @param {ColorPickerParams} params Color picker options
64
+ */
65
+ constructor(inst: any, styles: string, params: ColorPickerParams);
66
+ kind: any;
67
+ inst: any;
68
+ target: HTMLElement;
69
+ targetButton: Node;
70
+ inputElement: HTMLInputElement;
71
+ styleProperties: string;
72
+ splitNum: number;
73
+ defaultColor: string;
74
+ hueSliderOptions: import('./HueSlider').HueSliderParams;
75
+ parentDisplay: string;
76
+ currentColor: string;
77
+ parentForm: HTMLElement[];
78
+ colorList: any[] | NodeListOf<Element>;
79
+ hueSlider: HueSlider;
80
+ checkedIcon: HTMLElement;
81
+ parentFormDisplay: any[];
82
+ /**
83
+ * @description Displays or resets the currently selected color at color list.
84
+ * @param {Node|string} nodeOrColor Current Selected node
85
+ * @param {Node} target target
86
+ */
87
+ init(nodeOrColor: Node | string, target: Node): void;
88
+ /**
89
+ * @description Store color values
90
+ * @param {string} hexColorStr Hax color value
91
+ */
92
+ setHexColor(hexColorStr: string): void;
93
+ /**
94
+ * @description Close hue slider
95
+ */
96
+ hueSliderClose(): void;
97
+ /**
98
+ * @private
99
+ * @description Set color at input element
100
+ * @param {string} hexColorStr Hax color value
101
+ */
102
+ private _setInputText;
103
+ /**
104
+ * @private
105
+ * @description Gets color value at color property of node
106
+ * @param {Node} node Selected node
107
+ * @returns {string}
108
+ */
109
+ private _getColorInNode;
110
+ /**
111
+ * @private
112
+ * @description Converts color values of other formats to hex color values and returns.
113
+ * @param {string} colorName Color value
114
+ * @returns {string}
115
+ */
116
+ private _colorName2hex;
117
+ /**
118
+ * @editorMethod Modules.HueSlider
119
+ * @description This method is called when the color is selected in the hue slider.
120
+ * @param {HueSliderColor} color - Color object
121
+ */
122
+ hueSliderAction(color: HueSliderColor): void;
123
+ /**
124
+ * @editorMethod Modules.HueSlider
125
+ * @description This method is called when the hue slider is closed.
126
+ */
127
+ hueSliderCancelAction(): void;
128
+ #private;
129
+ }
130
+ import CoreInjector from '../editorInjector/_core';
131
+ import { HueSlider } from '../modules';
@@ -0,0 +1,231 @@
1
+ export default Controller;
2
+ export type ControllerInfo = {
3
+ /**
4
+ * The controller instance
5
+ */
6
+ inst: any;
7
+ /**
8
+ * The controller position ("bottom"|"top")
9
+ */
10
+ position?: string;
11
+ /**
12
+ * The controller element
13
+ */
14
+ form?: HTMLElement;
15
+ /**
16
+ * The controller target element
17
+ */
18
+ target?: HTMLElement | Range;
19
+ /**
20
+ * If the controller is not in the "carrierWrapper", set it to true.
21
+ */
22
+ notInCarrier?: boolean;
23
+ /**
24
+ * If the target is a Range, set it to true.
25
+ */
26
+ isRangeTarget?: boolean;
27
+ /**
28
+ * If the controller is fixed and should not be closed, set it to true.
29
+ */
30
+ fixed?: boolean;
31
+ };
32
+ export type ControllerParams = {
33
+ /**
34
+ * Controller position
35
+ */
36
+ position?: 'top' | 'bottom';
37
+ /**
38
+ * If the controller is in the WYSIWYG area, set it to true.
39
+ */
40
+ isWWTarget?: boolean | undefined;
41
+ /**
42
+ * Method to be called when the controller is closed.
43
+ */
44
+ initMethod?: (() => void) | undefined;
45
+ /**
46
+ * If true, When the "controller" is opened, buttons without the "se-component-enabled" class are disabled.
47
+ */
48
+ disabled?: boolean | undefined;
49
+ /**
50
+ * The parent "controller" array when "controller" is opened nested.
51
+ */
52
+ parents?: Array<HTMLElement> | undefined;
53
+ /**
54
+ * If true, the parent element is hidden when the controller is opened.
55
+ */
56
+ parentsHide?: boolean | undefined;
57
+ /**
58
+ * If the controller is inside a form, set it to true.
59
+ */
60
+ isInsideForm?: boolean | undefined;
61
+ /**
62
+ * If the controller is outside a form, set it to true.
63
+ */
64
+ isOutsideForm?: boolean | undefined;
65
+ };
66
+ /**
67
+ * @typedef {Object} ControllerInfo
68
+ * @property {*} inst The controller instance
69
+ * @property {string} [position="bottom"] The controller position ("bottom"|"top")
70
+ * @property {HTMLElement} [form=null] The controller element
71
+ * @property {HTMLElement|Range} [target=null] The controller target element
72
+ * @property {boolean} [notInCarrier=false] If the controller is not in the "carrierWrapper", set it to true.
73
+ * @property {boolean} [isRangeTarget=false] If the target is a Range, set it to true.
74
+ * @property {boolean} [fixed=false] If the controller is fixed and should not be closed, set it to true.
75
+ */
76
+ /**
77
+ * @typedef {Object} ControllerParams
78
+ * @property {"top"|"bottom"} [position="bottom"] Controller position
79
+ * @property {boolean=} [isWWTarget=true] If the controller is in the WYSIWYG area, set it to true.
80
+ * @property {() => void=} [initMethod=null] Method to be called when the controller is closed.
81
+ * @property {boolean=} [disabled=false] If true, When the "controller" is opened, buttons without the "se-component-enabled" class are disabled.
82
+ * @property {Array<HTMLElement>=} [parents=[]] The parent "controller" array when "controller" is opened nested.
83
+ * @property {boolean=} [parentsHide=false] If true, the parent element is hidden when the controller is opened.
84
+ * @property {boolean=} [isInsideForm=false] If the controller is inside a form, set it to true.
85
+ * @property {boolean=} [isOutsideForm=false] If the controller is outside a form, set it to true.
86
+ */
87
+ /**
88
+ * @class
89
+ * @description Controller module class that handles the UI and interaction logic for a specific editor controller element.
90
+ */
91
+ declare class Controller extends EditorInjector {
92
+ /**
93
+ * @constructor
94
+ * @param {*} inst The instance object that called the constructor.
95
+ * @param {Node} element Controller element
96
+ * @param {ControllerParams} params Controller options
97
+ * @param {?string=} _name An optional name for the controller key.
98
+ */
99
+ constructor(inst: any, element: Node, params: ControllerParams, _name?: (string | null) | undefined);
100
+ kind: any;
101
+ inst: any;
102
+ form: HTMLFormElement;
103
+ isOpen: boolean;
104
+ currentTarget: Node;
105
+ currentPositionTarget: Node | Range;
106
+ isWWTarget: boolean;
107
+ position: 'top' | 'bottom';
108
+ disabled: boolean;
109
+ parents: HTMLElement[];
110
+ parentsHide: boolean;
111
+ isInsideForm: boolean;
112
+ isOutsideForm: boolean;
113
+ _initMethod: () => void;
114
+ __globalEventHandlers: {
115
+ keydown: any;
116
+ mousedown: any;
117
+ };
118
+ _bindClose_key: any;
119
+ _bindClose_mouse: any;
120
+ /** @type {{left?: number, top?: number, addOfffset?: {left?: number, top?: number}}} */
121
+ __offset: {
122
+ left?: number;
123
+ top?: number;
124
+ addOfffset?: {
125
+ left?: number;
126
+ top?: number;
127
+ };
128
+ };
129
+ __addOffset: {
130
+ left: number;
131
+ top: number;
132
+ };
133
+ __shadowRootEventForm: HTMLFormElement;
134
+ __shadowRootEventListener: (e: any) => any;
135
+ /**
136
+ * @description Open a modal plugin
137
+ * @param {Node|Range} target Target element
138
+ * @param {Node} [positionTarget] Position target element
139
+ * @param {Object} [params={}] params
140
+ * @param {boolean=} params.isWWTarget If the controller is in the WYSIWYG area, set it to true.
141
+ * @param {() => void=} params.initMethod Method to be called when the controller is closed.
142
+ * @param {boolean=} params.disabled If true, When the "controller" is opened, buttons without the "se-component-enabled" class are disabled. (default: this.disabled)
143
+ * @param {{left?: number, top?: number}=} params.addOffset Additional offset values
144
+ */
145
+ open(
146
+ target: Node | Range,
147
+ positionTarget?: Node,
148
+ {
149
+ isWWTarget,
150
+ initMethod,
151
+ disabled,
152
+ addOffset
153
+ }?: {
154
+ isWWTarget?: boolean | undefined;
155
+ initMethod?: (() => void) | undefined;
156
+ disabled?: boolean | undefined;
157
+ addOffset?:
158
+ | {
159
+ left?: number;
160
+ top?: number;
161
+ }
162
+ | undefined;
163
+ }
164
+ ): void;
165
+ /**
166
+ * @description Close a modal plugin
167
+ * - The plugin's "init" method is called.
168
+ * @param {boolean=} force If true, parent controllers are forcibly closed.
169
+ */
170
+ close(force?: boolean | undefined): void;
171
+ /**
172
+ * @description Hide controller
173
+ */
174
+ hide(): void;
175
+ /**
176
+ * @description Show controller
177
+ */
178
+ show(): void;
179
+ /**
180
+ * @description Reset controller position
181
+ * @param {Node=} target
182
+ */
183
+ resetPosition(target?: Node | undefined): void;
184
+ /**
185
+ * @private
186
+ * @description Show controller at editor area (controller elements, function, "controller target element(@Required)", "controller name(@Required)", etc..)
187
+ * @param {HTMLFormElement} form Controller element
188
+ * @param {Node|Range} target Controller target element
189
+ * @param {boolean} isRangeTarget If the target is a Range, set it to true.
190
+ */
191
+ private _controllerOn;
192
+ /**
193
+ * @private
194
+ * @description Hide controller at editor area (link button, image resize button..)
195
+ */
196
+ private _controllerOff;
197
+ /**
198
+ * @private
199
+ * @description Specify the position of the controller.
200
+ * @param {HTMLElement} controller Controller element.
201
+ * @param {Node|Range} refer Element or Range that is the basis of the controller's position.
202
+ */
203
+ private _setControllerPosition;
204
+ /**
205
+ * @private
206
+ * @description Adds global event listeners.
207
+ * - When the controller is opened
208
+ */
209
+ private __addGlobalEvent;
210
+ /**
211
+ * @private
212
+ * @description Removes global event listeners.
213
+ * - When the ESC key is pressed, the controller is closed.
214
+ */
215
+ private __removeGlobalEvent;
216
+ /**
217
+ * @private
218
+ * @description Checks if the controller is fixed and should not be closed.
219
+ * @returns {boolean} True if the controller is fixed.
220
+ */
221
+ private _checkFixed;
222
+ /**
223
+ * @private
224
+ * @description Checks if the given target is within a form or controller.
225
+ * @param {Node} target The target element.
226
+ * @returns {boolean} True if the target is inside a form or controller.
227
+ */
228
+ private _checkForm;
229
+ #private;
230
+ }
231
+ import EditorInjector from '../editorInjector';