suneditor 2.46.1 → 3.0.0-alpha.1

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 (290) hide show
  1. package/.eslintignore +7 -0
  2. package/.eslintrc.json +64 -0
  3. package/CONTRIBUTING.md +36 -0
  4. package/LICENSE.txt +1 -1
  5. package/README.md +174 -805
  6. package/dist/suneditor.min.css +1 -0
  7. package/dist/suneditor.min.js +1 -2
  8. package/package.json +96 -70
  9. package/src/assets/icons/_default.js +194 -0
  10. package/src/assets/suneditor-content.css +646 -0
  11. package/src/assets/suneditor.css +3378 -0
  12. package/src/core/base/eventHandlers/handler_toolbar.js +114 -0
  13. package/src/core/base/eventHandlers/handler_ww_clipboard.js +31 -0
  14. package/src/core/base/eventHandlers/handler_ww_dragDrop.js +69 -0
  15. package/src/core/base/eventHandlers/handler_ww_key_input.js +975 -0
  16. package/src/core/base/eventHandlers/handler_ww_mouse.js +118 -0
  17. package/src/core/base/eventManager.js +1115 -0
  18. package/src/core/base/events.js +320 -0
  19. package/src/core/base/history.js +301 -0
  20. package/src/core/class/char.js +146 -0
  21. package/src/core/class/component.js +627 -0
  22. package/src/core/class/format.js +3255 -0
  23. package/src/core/class/html.js +1621 -0
  24. package/src/core/class/menu.js +260 -0
  25. package/src/core/class/nodeTransform.js +379 -0
  26. package/src/core/class/notice.js +42 -0
  27. package/src/core/class/offset.js +578 -0
  28. package/src/core/class/selection.js +508 -0
  29. package/src/core/class/shortcuts.js +38 -0
  30. package/src/core/class/toolbar.js +440 -0
  31. package/src/core/class/viewer.js +646 -0
  32. package/src/core/editor.js +1593 -0
  33. package/src/core/section/actives.js +107 -0
  34. package/src/core/section/constructor.js +1237 -0
  35. package/src/core/section/context.js +97 -0
  36. package/src/editorInjector/_classes.js +22 -0
  37. package/src/editorInjector/_core.js +28 -0
  38. package/src/editorInjector/index.js +13 -0
  39. package/src/helper/converter.js +313 -0
  40. package/src/helper/domUtils.js +1177 -0
  41. package/src/helper/env.js +250 -0
  42. package/src/helper/index.js +19 -0
  43. package/src/helper/numbers.js +68 -0
  44. package/src/helper/unicode.js +43 -0
  45. package/src/langs/ckb.js +161 -0
  46. package/src/langs/cs.js +161 -0
  47. package/src/langs/da.js +161 -0
  48. package/src/langs/de.js +162 -0
  49. package/src/langs/en.js +199 -0
  50. package/src/langs/es.js +162 -0
  51. package/src/langs/fa.js +159 -0
  52. package/src/langs/fr.js +161 -0
  53. package/src/langs/he.js +162 -0
  54. package/src/{lang → langs}/index.js +0 -2
  55. package/src/langs/it.js +162 -0
  56. package/src/langs/ja.js +162 -0
  57. package/src/langs/ko.js +162 -0
  58. package/src/langs/lv.js +162 -0
  59. package/src/langs/nl.js +162 -0
  60. package/src/langs/pl.js +162 -0
  61. package/src/langs/pt_br.js +162 -0
  62. package/src/langs/ro.js +162 -0
  63. package/src/langs/ru.js +162 -0
  64. package/src/langs/se.js +162 -0
  65. package/src/langs/tr.js +159 -0
  66. package/src/langs/ua.js +162 -0
  67. package/src/langs/ur.js +162 -0
  68. package/src/langs/zh_cn.js +162 -0
  69. package/src/modules/ApiManager.js +168 -0
  70. package/src/modules/ColorPicker.js +302 -0
  71. package/src/modules/Controller.js +315 -0
  72. package/src/modules/Figure.js +1160 -0
  73. package/src/modules/FileBrowser.js +271 -0
  74. package/src/modules/FileManager.js +290 -0
  75. package/src/modules/HueSlider.js +513 -0
  76. package/src/modules/Modal.js +177 -0
  77. package/src/modules/ModalAnchorEditor.js +494 -0
  78. package/src/modules/SelectMenu.js +447 -0
  79. package/src/modules/_DragHandle.js +16 -0
  80. package/src/modules/index.js +14 -0
  81. package/src/plugins/command/blockquote.js +47 -47
  82. package/src/plugins/command/exportPdf.js +168 -0
  83. package/src/plugins/command/fileUpload.js +389 -0
  84. package/src/plugins/command/list_bulleted.js +112 -0
  85. package/src/plugins/command/list_numbered.js +115 -0
  86. package/src/plugins/dropdown/align.js +143 -0
  87. package/src/plugins/dropdown/backgroundColor.js +73 -0
  88. package/src/plugins/dropdown/font.js +113 -0
  89. package/src/plugins/dropdown/fontColor.js +73 -0
  90. package/src/plugins/dropdown/formatBlock.js +141 -0
  91. package/src/plugins/dropdown/hr.js +111 -0
  92. package/src/plugins/dropdown/layout.js +72 -0
  93. package/src/plugins/dropdown/lineHeight.js +114 -0
  94. package/src/plugins/dropdown/list.js +107 -0
  95. package/src/plugins/dropdown/paragraphStyle.js +117 -0
  96. package/src/plugins/dropdown/table.js +2810 -0
  97. package/src/plugins/dropdown/template.js +71 -0
  98. package/src/plugins/dropdown/textStyle.js +137 -0
  99. package/src/plugins/field/mention.js +172 -0
  100. package/src/plugins/fileBrowser/imageGallery.js +76 -59
  101. package/src/plugins/index.js +86 -24
  102. package/src/plugins/input/fontSize.js +357 -0
  103. package/src/plugins/modal/audio.js +510 -0
  104. package/src/plugins/modal/image.js +1062 -0
  105. package/src/plugins/modal/link.js +211 -0
  106. package/src/plugins/modal/math.js +347 -0
  107. package/src/plugins/modal/video.js +870 -0
  108. package/src/suneditor.js +62 -67
  109. package/src/themes/test.css +61 -0
  110. package/typings/CommandPlugin.d.ts +8 -0
  111. package/typings/DialogPlugin.d.ts +20 -0
  112. package/typings/FileBrowserPlugin.d.ts +30 -0
  113. package/typings/Lang.d.ts +124 -0
  114. package/typings/Module.d.ts +15 -0
  115. package/typings/Plugin.d.ts +42 -0
  116. package/typings/SubmenuPlugin.d.ts +8 -0
  117. package/typings/_classes.d.ts +17 -0
  118. package/typings/_colorPicker.d.ts +60 -0
  119. package/typings/_core.d.ts +55 -0
  120. package/typings/align.d.ts +5 -0
  121. package/{src/plugins/dialog → typings}/audio.d.ts +1 -1
  122. package/typings/backgroundColor.d.ts +5 -0
  123. package/{src/plugins/command → typings}/blockquote.d.ts +1 -1
  124. package/typings/char.d.ts +39 -0
  125. package/typings/component.d.ts +38 -0
  126. package/typings/context.d.ts +39 -0
  127. package/typings/converter.d.ts +33 -0
  128. package/typings/dialog.d.ts +28 -0
  129. package/typings/domUtils.d.ts +361 -0
  130. package/typings/editor.d.ts +7 -0
  131. package/typings/editor.ts +542 -0
  132. package/typings/env.d.ts +70 -0
  133. package/typings/eventManager.d.ts +37 -0
  134. package/typings/events.d.ts +262 -0
  135. package/typings/fileBrowser.d.ts +42 -0
  136. package/typings/fileManager.d.ts +67 -0
  137. package/typings/font.d.ts +5 -0
  138. package/typings/fontColor.d.ts +5 -0
  139. package/typings/fontSize.d.ts +5 -0
  140. package/typings/format.d.ts +191 -0
  141. package/typings/formatBlock.d.ts +5 -0
  142. package/typings/history.d.ts +48 -0
  143. package/typings/horizontalRule.d.ts +5 -0
  144. package/{src/plugins/dialog → typings}/image.d.ts +1 -1
  145. package/{src/plugins/fileBrowser → typings}/imageGallery.d.ts +1 -1
  146. package/typings/index.d.ts +21 -0
  147. package/{src/plugins/modules/index.d.ts → typings/index.modules.d.ts} +3 -3
  148. package/typings/index.plugins.d.ts +58 -0
  149. package/typings/lineHeight.d.ts +5 -0
  150. package/{src/plugins/dialog → typings}/link.d.ts +1 -1
  151. package/typings/list.d.ts +5 -0
  152. package/{src/plugins/dialog → typings}/math.d.ts +1 -1
  153. package/typings/mediaContainer.d.ts +25 -0
  154. package/typings/node.d.ts +57 -0
  155. package/typings/notice.d.ts +16 -0
  156. package/typings/numbers.d.ts +29 -0
  157. package/typings/offset.d.ts +24 -0
  158. package/typings/options.d.ts +589 -0
  159. package/typings/paragraphStyle.d.ts +5 -0
  160. package/typings/resizing.d.ts +141 -0
  161. package/typings/selection.d.ts +94 -0
  162. package/typings/shortcuts.d.ts +13 -0
  163. package/typings/suneditor.d.ts +9 -0
  164. package/typings/table.d.ts +5 -0
  165. package/typings/template.d.ts +5 -0
  166. package/typings/textStyle.d.ts +5 -0
  167. package/typings/toolbar.d.ts +32 -0
  168. package/typings/unicode.d.ts +25 -0
  169. package/{src/plugins/dialog → typings}/video.d.ts +1 -1
  170. package/dist/css/suneditor.min.css +0 -1
  171. package/src/assets/css/suneditor-contents.css +0 -562
  172. package/src/assets/css/suneditor.css +0 -566
  173. package/src/assets/defaultIcons.js +0 -103
  174. package/src/lang/Lang.d.ts +0 -144
  175. package/src/lang/ckb.d.ts +0 -5
  176. package/src/lang/ckb.js +0 -188
  177. package/src/lang/cs.d.ts +0 -5
  178. package/src/lang/cs.js +0 -188
  179. package/src/lang/da.d.ts +0 -5
  180. package/src/lang/da.js +0 -191
  181. package/src/lang/de.d.ts +0 -5
  182. package/src/lang/de.js +0 -188
  183. package/src/lang/en.d.ts +0 -5
  184. package/src/lang/en.js +0 -188
  185. package/src/lang/es.d.ts +0 -5
  186. package/src/lang/es.js +0 -188
  187. package/src/lang/fa.d.ts +0 -5
  188. package/src/lang/fa.js +0 -188
  189. package/src/lang/fr.d.ts +0 -5
  190. package/src/lang/fr.js +0 -188
  191. package/src/lang/he.d.ts +0 -5
  192. package/src/lang/he.js +0 -188
  193. package/src/lang/index.d.ts +0 -23
  194. package/src/lang/it.d.ts +0 -5
  195. package/src/lang/it.js +0 -188
  196. package/src/lang/ja.d.ts +0 -5
  197. package/src/lang/ja.js +0 -188
  198. package/src/lang/ko.d.ts +0 -5
  199. package/src/lang/ko.js +0 -188
  200. package/src/lang/lv.d.ts +0 -5
  201. package/src/lang/lv.js +0 -188
  202. package/src/lang/nl.d.ts +0 -5
  203. package/src/lang/nl.js +0 -188
  204. package/src/lang/pl.d.ts +0 -5
  205. package/src/lang/pl.js +0 -188
  206. package/src/lang/pt_br.d.ts +0 -5
  207. package/src/lang/pt_br.js +0 -189
  208. package/src/lang/ro.d.ts +0 -5
  209. package/src/lang/ro.js +0 -188
  210. package/src/lang/ru.d.ts +0 -5
  211. package/src/lang/ru.js +0 -188
  212. package/src/lang/se.d.ts +0 -5
  213. package/src/lang/se.js +0 -191
  214. package/src/lang/tr.d.ts +0 -5
  215. package/src/lang/tr.js +0 -191
  216. package/src/lang/ua.d.ts +0 -5
  217. package/src/lang/ua.js +0 -188
  218. package/src/lang/ur.d.ts +0 -5
  219. package/src/lang/ur.js +0 -188
  220. package/src/lang/zh_cn.d.ts +0 -5
  221. package/src/lang/zh_cn.js +0 -187
  222. package/src/lib/constructor.js +0 -954
  223. package/src/lib/context.d.ts +0 -42
  224. package/src/lib/context.js +0 -71
  225. package/src/lib/core.d.ts +0 -1135
  226. package/src/lib/core.js +0 -9395
  227. package/src/lib/history.d.ts +0 -48
  228. package/src/lib/history.js +0 -219
  229. package/src/lib/util.d.ts +0 -678
  230. package/src/lib/util.js +0 -2131
  231. package/src/options.d.ts +0 -608
  232. package/src/plugins/CommandPlugin.d.ts +0 -8
  233. package/src/plugins/DialogPlugin.d.ts +0 -20
  234. package/src/plugins/FileBrowserPlugin.d.ts +0 -30
  235. package/src/plugins/Module.d.ts +0 -15
  236. package/src/plugins/Plugin.d.ts +0 -42
  237. package/src/plugins/SubmenuPlugin.d.ts +0 -8
  238. package/src/plugins/dialog/audio.js +0 -559
  239. package/src/plugins/dialog/image.js +0 -1126
  240. package/src/plugins/dialog/link.js +0 -223
  241. package/src/plugins/dialog/math.js +0 -295
  242. package/src/plugins/dialog/mention.js +0 -242
  243. package/src/plugins/dialog/video.js +0 -979
  244. package/src/plugins/index.d.ts +0 -79
  245. package/src/plugins/modules/_anchor.js +0 -461
  246. package/src/plugins/modules/_colorPicker.d.ts +0 -60
  247. package/src/plugins/modules/_colorPicker.js +0 -201
  248. package/src/plugins/modules/_notice.d.ts +0 -21
  249. package/src/plugins/modules/_notice.js +0 -72
  250. package/src/plugins/modules/_selectMenu.js +0 -119
  251. package/src/plugins/modules/component.d.ts +0 -25
  252. package/src/plugins/modules/component.js +0 -81
  253. package/src/plugins/modules/dialog.d.ts +0 -28
  254. package/src/plugins/modules/dialog.js +0 -175
  255. package/src/plugins/modules/fileBrowser.d.ts +0 -42
  256. package/src/plugins/modules/fileBrowser.js +0 -374
  257. package/src/plugins/modules/fileManager.d.ts +0 -67
  258. package/src/plugins/modules/fileManager.js +0 -326
  259. package/src/plugins/modules/index.js +0 -9
  260. package/src/plugins/modules/resizing.d.ts +0 -154
  261. package/src/plugins/modules/resizing.js +0 -903
  262. package/src/plugins/submenu/align.d.ts +0 -5
  263. package/src/plugins/submenu/align.js +0 -160
  264. package/src/plugins/submenu/font.d.ts +0 -5
  265. package/src/plugins/submenu/font.js +0 -123
  266. package/src/plugins/submenu/fontColor.d.ts +0 -5
  267. package/src/plugins/submenu/fontColor.js +0 -101
  268. package/src/plugins/submenu/fontSize.d.ts +0 -5
  269. package/src/plugins/submenu/fontSize.js +0 -112
  270. package/src/plugins/submenu/formatBlock.d.ts +0 -5
  271. package/src/plugins/submenu/formatBlock.js +0 -273
  272. package/src/plugins/submenu/hiliteColor.d.ts +0 -5
  273. package/src/plugins/submenu/hiliteColor.js +0 -102
  274. package/src/plugins/submenu/horizontalRule.d.ts +0 -5
  275. package/src/plugins/submenu/horizontalRule.js +0 -98
  276. package/src/plugins/submenu/lineHeight.d.ts +0 -5
  277. package/src/plugins/submenu/lineHeight.js +0 -104
  278. package/src/plugins/submenu/list.d.ts +0 -5
  279. package/src/plugins/submenu/list.js +0 -456
  280. package/src/plugins/submenu/paragraphStyle.d.ts +0 -5
  281. package/src/plugins/submenu/paragraphStyle.js +0 -135
  282. package/src/plugins/submenu/table.d.ts +0 -5
  283. package/src/plugins/submenu/table.js +0 -1431
  284. package/src/plugins/submenu/template.d.ts +0 -5
  285. package/src/plugins/submenu/template.js +0 -72
  286. package/src/plugins/submenu/textStyle.d.ts +0 -5
  287. package/src/plugins/submenu/textStyle.js +0 -167
  288. package/src/suneditor.d.ts +0 -9
  289. package/src/suneditor_build.js +0 -18
  290. /package/{src/plugins/dialog → typings}/mention.d.ts +0 -0
@@ -1,326 +0,0 @@
1
- /*
2
- * wysiwyg web editor
3
- *
4
- * suneditor.js
5
- * Copyright 2017 JiHong Lee.
6
- * MIT license.
7
- */
8
- 'use strict';
9
-
10
- (function (global, factory) {
11
- if (typeof module === 'object' && typeof module.exports === 'object') {
12
- module.exports = global.document ?
13
- factory(global, true) :
14
- function (w) {
15
- if (!w.document) {
16
- throw new Error('SUNEDITOR_MODULES a window with a document');
17
- }
18
- return factory(w);
19
- };
20
- } else {
21
- factory(global);
22
- }
23
- }(typeof window !== 'undefined' ? window : this, function (window, noGlobal) {
24
- const fileManager = {
25
- name: 'fileManager',
26
- _xmlHttp: null,
27
-
28
- _checkMediaComponent: function (tag) {
29
- if (/IMG/i.test(tag)) {
30
- return !/FIGURE/i.test(tag.parentElement.nodeName) || !/FIGURE/i.test(tag.parentElement.parentElement.nodeName);
31
- }
32
- return true;
33
- },
34
-
35
- /**
36
- * @description Upload the file to the server.
37
- * @param {String} uploadUrl Upload server url
38
- * @param {Object|null} uploadHeader Request header
39
- * @param {FormData} formData FormData in body
40
- * @param {Function|null} callBack Success call back function
41
- * @param {Function|null} errorCallBack Error call back function
42
- * @example this.plugins.fileManager.upload.call(this, imageUploadUrl, this.options.imageUploadHeader, formData, this.plugins.image.callBack_imgUpload.bind(this, info), this.functions.onImageUploadError);
43
- */
44
- upload: function (uploadUrl, uploadHeader, formData, callBack, errorCallBack) {
45
- this.showLoading();
46
- const filePlugin = this.plugins.fileManager;
47
- const xmlHttp = filePlugin._xmlHttp = this.util.getXMLHttpRequest();
48
-
49
- xmlHttp.onreadystatechange = filePlugin._callBackUpload.bind(this, xmlHttp, callBack, errorCallBack);
50
- xmlHttp.open('post', uploadUrl, true);
51
- if(uploadHeader !== null && typeof uploadHeader === 'object' && this._w.Object.keys(uploadHeader).length > 0){
52
- for(let key in uploadHeader){
53
- xmlHttp.setRequestHeader(key, uploadHeader[key]);
54
- }
55
- }
56
- xmlHttp.send(formData);
57
- },
58
-
59
- _callBackUpload: function (xmlHttp, callBack, errorCallBack) {
60
- if (xmlHttp.readyState === 4) {
61
- if (xmlHttp.status === 200) {
62
- try {
63
- callBack(xmlHttp);
64
- } catch (e) {
65
- throw Error('[SUNEDITOR.fileManager.upload.callBack.fail] cause : "' + e.message + '"');
66
- } finally {
67
- this.closeLoading();
68
- }
69
- } else { // exception
70
- this.closeLoading();
71
- const res = !xmlHttp.responseText ? xmlHttp : JSON.parse(xmlHttp.responseText);
72
- if (typeof errorCallBack !== 'function' || errorCallBack('', res, this)) {
73
- const err = '[SUNEDITOR.fileManager.upload.serverException] status: ' + xmlHttp.status + ', response: ' + (res.errorMessage || xmlHttp.responseText);
74
- this.functions.noticeOpen(err);
75
- throw Error(err);
76
- }
77
- }
78
- }
79
- },
80
-
81
- /**
82
- * @description Checke the file's information and modify the tag that does not fit the format.
83
- * @param {String} pluginName Plugin name
84
- * @param {Array} tagNames Tag array to check
85
- * @param {Function|null} uploadEventHandler Event handler to process updated file info after checking (used in "setInfo")
86
- * @param {Function} modifyHandler A function to modify a tag that does not fit the format (Argument value: Tag element)
87
- * @param {Boolean} resizing True if the plugin is using a resizing module
88
- * @example
89
- * const modifyHandler = function (tag) {
90
- * imagePlugin.onModifyMode.call(this, tag, null);
91
- * imagePlugin.openModify.call(this, true);
92
- * imagePlugin.update_image.call(this, true, false, true);
93
- * }.bind(this);
94
- * this.plugins.fileManager.checkInfo.call(this, 'image', ['img'], this.functions.onImageUpload, modifyHandler, true);
95
- */
96
- checkInfo: function (pluginName, tagNames, uploadEventHandler, modifyHandler, resizing) {
97
- let tags = [];
98
- for (let i = 0, len = tagNames.length; i < len; i++) {
99
- tags = tags.concat([].slice.call(this.context.element.wysiwyg.querySelectorAll(tagNames[i] + ':not([data-se-embed="true"])')));
100
- }
101
-
102
- const fileManagerPlugin = this.plugins.fileManager;
103
- const context = this.context[pluginName];
104
- const infoList = context._infoList;
105
- const setFileInfo = fileManagerPlugin.setInfo.bind(this);
106
-
107
- if (tags.length === infoList.length) {
108
- // reset
109
- if (this._componentsInfoReset) {
110
- for (let i = 0, len = tags.length; i < len; i++) {
111
- setFileInfo(pluginName, tags[i], uploadEventHandler, null, resizing);
112
- }
113
- return ;
114
- } else {
115
- let infoUpdate = false;
116
- for (let i = 0, len = infoList.length, info; i < len; i++) {
117
- info = infoList[i];
118
- if (tags.filter(function (t) { return info.src === t.src && info.index.toString() === t.getAttribute('data-index'); }).length === 0) {
119
- infoUpdate = true;
120
- break;
121
- }
122
- }
123
- // pass
124
- if (!infoUpdate) return;
125
- }
126
- }
127
-
128
- // check
129
- const _resize_plugin = resizing ? this.context.resizing._resize_plugin : '';
130
- if (resizing) this.context.resizing._resize_plugin = pluginName;
131
- const currentTags = [];
132
- const infoIndex = [];
133
- for (let i = 0, len = infoList.length; i < len; i++) {
134
- infoIndex[i] = infoList[i].index;
135
- }
136
- context.__updateTags = tags;
137
-
138
- while (tags.length > 0) {
139
- const tag = tags.shift();
140
- if (!this.util.getParentElement(tag, this.util.isMediaComponent) || !fileManagerPlugin._checkMediaComponent(tag)) {
141
- currentTags.push(context._infoIndex);
142
- modifyHandler(tag);
143
- } else if (!tag.getAttribute('data-index') || infoIndex.indexOf(tag.getAttribute('data-index') * 1) < 0) {
144
- currentTags.push(context._infoIndex);
145
- tag.removeAttribute('data-index');
146
- setFileInfo(pluginName, tag, uploadEventHandler, null, resizing);
147
- } else {
148
- currentTags.push(tag.getAttribute('data-index') * 1);
149
- }
150
- }
151
-
152
- for (let i = 0, dataIndex; i < infoList.length; i++) {
153
- dataIndex = infoList[i].index;
154
- if (currentTags.indexOf(dataIndex) > -1) continue;
155
-
156
- infoList.splice(i, 1);
157
- if (typeof uploadEventHandler === 'function') uploadEventHandler(null, dataIndex, 'delete', null, 0, this);
158
- i--;
159
- }
160
-
161
- if (resizing) this.context.resizing._resize_plugin = _resize_plugin;
162
- },
163
-
164
- /**
165
- * @description Create info object of file and add it to "_infoList" (this.context[pluginName]._infoList[])
166
- * @param {String} pluginName Plugin name
167
- * @param {Element} element
168
- * @param {Function|null} uploadEventHandler Event handler to process updated file info (created in setInfo)
169
- * @param {Object|null} file
170
- * @param {Boolean} resizing True if the plugin is using a resizing module
171
- * @example
172
- * uploadCallBack {.. file = { name: fileList[i].name, size: fileList[i].size };
173
- * this.plugins.fileManager.setInfo.call(this, 'image', oImg, this.functions.onImageUpload, file, true);
174
- */
175
- setInfo: function (pluginName, element, uploadEventHandler, file, resizing) {
176
- const _resize_plugin = resizing ? this.context.resizing._resize_plugin : '';
177
- if (resizing) this.context.resizing._resize_plugin = pluginName;
178
-
179
- const plguin = this.plugins[pluginName];
180
- const context = this.context[pluginName];
181
- const infoList = context._infoList;
182
- let dataIndex = element.getAttribute('data-index');
183
- let info = null;
184
- let state = '';
185
-
186
- if (!file) {
187
- file = {
188
- 'name': element.getAttribute('data-file-name') || (typeof element.src === 'string' ? element.src.split('/').pop() : ''),
189
- 'size': element.getAttribute('data-file-size') || 0
190
- };
191
- }
192
-
193
- // create
194
- if (!dataIndex || this._componentsInfoInit) {
195
- state = 'create';
196
- dataIndex = context._infoIndex++;
197
-
198
- element.setAttribute('data-index', dataIndex);
199
- element.setAttribute('data-file-name', file.name);
200
- element.setAttribute('data-file-size', file.size);
201
-
202
- info = {
203
- src: element.src,
204
- index: dataIndex * 1,
205
- name: file.name,
206
- size: file.size
207
- };
208
-
209
- infoList.push(info);
210
- } else { // update
211
- state = 'update';
212
- dataIndex *= 1;
213
-
214
- for (let i = 0, len = infoList.length; i < len; i++) {
215
- if (dataIndex === infoList[i].index) {
216
- info = infoList[i];
217
- break;
218
- }
219
- }
220
-
221
- if (!info) {
222
- dataIndex = context._infoIndex++;
223
- info = { index: dataIndex };
224
- infoList.push(info);
225
- }
226
-
227
- info.src = element.src;
228
- info.name = element.getAttribute("data-file-name");
229
- info.size = element.getAttribute("data-file-size") * 1;
230
- }
231
-
232
- // method bind
233
- info.element = element;
234
- info.delete = plguin.destroy.bind(this, element);
235
- info.select = function (element) {
236
- element.scrollIntoView(true);
237
- this._w.setTimeout(plguin.select.bind(this, element));
238
- }.bind(this, element);
239
-
240
- if (resizing) {
241
- if (!element.getAttribute('origin-size') && element.naturalWidth) {
242
- element.setAttribute('origin-size', element.naturalWidth + ',' + element.naturalHeight);
243
- }
244
-
245
- if (!element.getAttribute('data-origin')) {
246
- const container = this.util.getParentElement(element, this.util.isMediaComponent);
247
- const cover = this.util.getParentElement(element, 'FIGURE');
248
-
249
- const w = this.plugins.resizing._module_getSizeX.call(this, context, element, cover, container);
250
- const h = this.plugins.resizing._module_getSizeY.call(this, context, element, cover, container);
251
- element.setAttribute('data-origin', w + ',' + h);
252
- element.setAttribute('data-size', w + ',' + h);
253
- }
254
-
255
- if (!element.style.width) {
256
- const size = (element.getAttribute('data-size') || element.getAttribute('data-origin') || '').split(',');
257
- plguin.onModifyMode.call(this, element, null);
258
- plguin.applySize.call(this, size[0], size[1]);
259
- }
260
-
261
- this.context.resizing._resize_plugin = _resize_plugin;
262
- }
263
-
264
- if (typeof uploadEventHandler === 'function') uploadEventHandler(element, dataIndex, state, info, --context._uploadFileLength < 0 ? 0 : context._uploadFileLength, this);
265
- },
266
-
267
- /**
268
- * @description Delete info object at "_infoList"
269
- * @param {String} pluginName Plugin name
270
- * @param {Number} index index of info object (this.context[pluginName]._infoList[].index)
271
- * @param {Function|null} uploadEventHandler Event handler to process updated file info (created in setInfo)
272
- */
273
- deleteInfo: function (pluginName, index, uploadEventHandler) {
274
- if (index >= 0) {
275
- const infoList = this.context[pluginName]._infoList;
276
-
277
- for (let i = 0, len = infoList.length; i < len; i++) {
278
- if (index === infoList[i].index) {
279
- infoList.splice(i, 1);
280
- if (typeof uploadEventHandler === 'function') uploadEventHandler(null, index, 'delete', null, 0, this);
281
- return;
282
- }
283
- }
284
- }
285
- },
286
-
287
- /**
288
- * @description Reset info object and "_infoList = []", "_infoIndex = 0"
289
- * @param {String} pluginName Plugin name
290
- * @param {Function|null} uploadEventHandler Event handler to process updated file info (created in setInfo)
291
- */
292
- resetInfo: function (pluginName, uploadEventHandler) {
293
- const context = this.context[pluginName];
294
-
295
- if (typeof uploadEventHandler === 'function') {
296
- const infoList = context._infoList;
297
- for (let i = 0, len = infoList.length; i < len; i++) {
298
- uploadEventHandler(null, infoList[i].index, 'delete', null, 0, this);
299
- }
300
- }
301
-
302
- context._infoList = [];
303
- context._infoIndex = 0;
304
- }
305
- };
306
-
307
- if (typeof noGlobal === typeof undefined) {
308
- if (!window.SUNEDITOR_MODULES) {
309
- Object.defineProperty(window, 'SUNEDITOR_MODULES', {
310
- enumerable: true,
311
- writable: false,
312
- configurable: false,
313
- value: {}
314
- });
315
- }
316
-
317
- Object.defineProperty(window.SUNEDITOR_MODULES, 'fileManager', {
318
- enumerable: true,
319
- writable: false,
320
- configurable: false,
321
- value: fileManager
322
- });
323
- }
324
-
325
- return fileManager;
326
- }));
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- import dialog from './dialog';
4
- import component from './component';
5
- import fileManager from './fileManager';
6
- import resizing from './resizing';
7
-
8
- export { dialog, component, fileManager, resizing };
9
- export default { dialog, component, fileManager, resizing };
@@ -1,154 +0,0 @@
1
- import { Module } from '../Module';
2
-
3
- /**
4
- * @description Require context properties when resizing module
5
- inputX: Element,
6
- inputY: Element,
7
- _container: null,
8
- _cover: null,
9
- _element: null,
10
- _element_w: 1,
11
- _element_h: 1,
12
- _element_l: 0,
13
- _element_t: 0,
14
- _defaultSizeX: 'auto',
15
- _defaultSizeY: 'auto',
16
- _origin_w: core.options.imageWidth === 'auto' ? '' : core.options.imageWidth,
17
- _origin_h: core.options.imageHeight === 'auto' ? '' : core.options.imageHeight,
18
- _proportionChecked: true,
19
- // -- select function --
20
- _resizing: core.options.imageResizing,
21
- _resizeDotHide: !core.options.imageHeightShow,
22
- _rotation: core.options.imageRotation,
23
- _onlyPercentage: core.options.imageSizeOnlyPercentage,
24
- _ratio: false,
25
- _ratioX: 1,
26
- _ratioY: 1
27
- _captionShow: true,
28
- // -- when used caption (_captionShow: true) --
29
- _caption: null,
30
- _captionChecked: false,
31
- captionCheckEl: null
32
- */
33
- declare interface resizing extends Module {
34
- /**
35
- * @description Gets the width size
36
- * @param contextPlugin context object of plugin (core.context[plugin])
37
- * @param element Target element [default: "this.plugin[plugin]._element"]
38
- * @param cover Cover element (FIGURE) [default: "this.plugin[plugin]._cover"]
39
- * @param container Container element (DIV.se-component) [default: "this.plugin[plugin]._container"]
40
- * @returns
41
- */
42
- _module_getSizeX(contextPlugin: Object, element: Element, cover: Element, container: Element): string;
43
-
44
- /**
45
- * @description Gets the height size
46
- * @param contextPlugin context object of plugin (core.context[plugin])
47
- * @param element Target element [default: "this.plugin[plugin]._element"]
48
- * @param cover Cover element (FIGURE) [default: "this.plugin[plugin]._cover"]
49
- * @param container Container element (DIV.se-component) [default: "this.plugin[plugin]._container"]
50
- * @returns
51
- */
52
- _module_getSizeY(contextPlugin: Object, element: Element, cover: Element, container: Element): string;
53
-
54
- /**
55
- * @description Called at the "openModify" to put the size of the current target into the size input element.
56
- * @param contextPlugin context object of plugin (core.context[plugin])
57
- * @param pluginObj Plugin object
58
- */
59
- _module_setModifyInputSize(contextPlugin: Object, pluginObj: Object): void;
60
-
61
- /**
62
- * @description It is called in "setInputSize" (input tag keyupEvent),
63
- * checks the value entered in the input tag,
64
- * calculates the ratio, and sets the calculated value in the input tag of the opposite size.
65
- * @param contextPlugin context object of plugin (core.context[plugin])
66
- * @param xy 'x': width, 'y': height
67
- */
68
- _module_setInputSize(contextPlugin: Object, xy: string): void;
69
-
70
- /**
71
- * @description It is called in "setRatio" (input and proportionCheck tags changeEvent),
72
- * checks the value of the input tag, calculates the ratio, and resets it in the input tag.
73
- * @param contextPlugin context object of plugin (core.context[plugin])
74
- */
75
- _module_setRatio(contextPlugin: Object): void;
76
-
77
- /**
78
- * @description Revert size of element to origin size (plugin._origin_w, plugin._origin_h)
79
- * @param contextPlugin context object of plugin (core.context[plugin])
80
- */
81
- _module_sizeRevert(contextPlugin: Object): void;
82
-
83
- /**
84
- * @description Save the size data (element.setAttribute("data-size"))
85
- * Used at the "setSize" method
86
- * @param contextPlugin context object of plugin (core.context[plugin])
87
- */
88
- _module_saveCurrentSize(contextPlugin: Object): void;
89
-
90
- /**
91
- * @description Call the resizing module
92
- * @param targetElement Resizing target element
93
- * @param plugin Plugin name
94
- * @returns Size of resizing div {w, h, t, l}
95
- */
96
- call_controller_resize(targetElement: Element, plugin: string): Record<string, number>;
97
-
98
- /**
99
- * @description Open align submenu of module
100
- */
101
- openAlignMenu(): void;
102
-
103
- /**
104
- * @description Click event of resizing toolbar
105
- * Performs the action of the clicked toolbar button.
106
- * @param e Event object
107
- */
108
- onClick_resizeButton(e: MouseEvent): void;
109
-
110
- /**
111
- * @description Initialize the transform style (rotation) of the element.
112
- * @param element Target element
113
- */
114
- resetTransform(element: Element): void;
115
-
116
- /**
117
- * @description Set the transform style (rotation) of the element.
118
- * @param element Target element
119
- * @param width Element's width size
120
- * @param height Element's height size
121
- */
122
- setTransformSize(element: Element, width?: number, height?:number): void;
123
-
124
- /**
125
- * @description The position of the caption is set automatically.
126
- * @param element Target element (not caption element)
127
- */
128
- setCaptionPosition(element: Element): void;
129
-
130
- /**
131
- * @description Mouse down event of resize handles
132
- * @param e Event object
133
- */
134
- onMouseDown_resize_handle(e: MouseEvent): void;
135
-
136
- /**
137
- * @description Mouse move event after call "onMouseDown_resize_handle" of resize handles
138
- * The size of the module's "div" is adjusted according to the mouse move event.
139
- * @param contextResizing "core.context.resizing" object (binding argument)
140
- * @param direction Direction ("tl", "tr", "bl", "br", "lw", "th", "rw", "bh") (binding argument)
141
- * @param plugin "core.context[currentPlugin]" object (binding argument)
142
- * @param e Event object
143
- */
144
- resizing_element(contextResizing: Object, direction: string, plugin: Object, e: MouseEvent): void;
145
-
146
- /**
147
- * @description Resize the element to the size of the "div" adjusted in the "resizing_element" method.
148
- * Called at the mouse-up event registered in "onMouseDown_resize_handle".
149
- * @param direction Direction ("tl", "tr", "bl", "br", "lw", "th", "rw", "bh")
150
- */
151
- cancel_controller_resize(direction: string): void;
152
- }
153
-
154
- export default resizing;