suneditor 2.46.2 → 3.0.0-alpha.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 (289) 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 +11 -1560
  6. package/package.json +94 -70
  7. package/src/assets/icons/_default.js +194 -0
  8. package/src/assets/suneditor-content.css +642 -0
  9. package/src/assets/suneditor.css +3378 -0
  10. package/src/core/base/eventHandlers/handler_toolbar.js +114 -0
  11. package/src/core/base/eventHandlers/handler_ww_clipboard.js +31 -0
  12. package/src/core/base/eventHandlers/handler_ww_dragDrop.js +69 -0
  13. package/src/core/base/eventHandlers/handler_ww_key_input.js +978 -0
  14. package/src/core/base/eventHandlers/handler_ww_mouse.js +118 -0
  15. package/src/core/base/eventManager.js +1129 -0
  16. package/src/core/base/events.js +320 -0
  17. package/src/core/base/history.js +301 -0
  18. package/src/core/class/char.js +146 -0
  19. package/src/core/class/component.js +624 -0
  20. package/src/core/class/format.js +3255 -0
  21. package/src/core/class/html.js +1621 -0
  22. package/src/core/class/menu.js +260 -0
  23. package/src/core/class/nodeTransform.js +379 -0
  24. package/src/core/class/notice.js +42 -0
  25. package/src/core/class/offset.js +578 -0
  26. package/src/core/class/selection.js +508 -0
  27. package/src/core/class/shortcuts.js +38 -0
  28. package/src/core/class/toolbar.js +440 -0
  29. package/src/core/class/viewer.js +646 -0
  30. package/src/core/editor.js +1588 -0
  31. package/src/core/section/actives.js +107 -0
  32. package/src/core/section/constructor.js +1237 -0
  33. package/src/core/section/context.js +97 -0
  34. package/src/editorInjector/_classes.js +22 -0
  35. package/src/editorInjector/_core.js +28 -0
  36. package/src/editorInjector/index.js +13 -0
  37. package/src/helper/converter.js +313 -0
  38. package/src/helper/domUtils.js +1177 -0
  39. package/src/helper/env.js +250 -0
  40. package/src/helper/index.js +19 -0
  41. package/src/helper/numbers.js +68 -0
  42. package/src/helper/unicode.js +43 -0
  43. package/src/langs/ckb.js +161 -0
  44. package/src/langs/cs.js +161 -0
  45. package/src/langs/da.js +161 -0
  46. package/src/langs/de.js +162 -0
  47. package/src/langs/en.js +199 -0
  48. package/src/langs/es.js +162 -0
  49. package/src/langs/fa.js +159 -0
  50. package/src/langs/fr.js +161 -0
  51. package/src/langs/he.js +162 -0
  52. package/src/{lang → langs}/index.js +0 -2
  53. package/src/langs/it.js +162 -0
  54. package/src/langs/ja.js +162 -0
  55. package/src/langs/ko.js +162 -0
  56. package/src/langs/lv.js +162 -0
  57. package/src/langs/nl.js +162 -0
  58. package/src/langs/pl.js +162 -0
  59. package/src/langs/pt_br.js +162 -0
  60. package/src/langs/ro.js +162 -0
  61. package/src/langs/ru.js +162 -0
  62. package/src/langs/se.js +162 -0
  63. package/src/langs/tr.js +159 -0
  64. package/src/langs/ua.js +162 -0
  65. package/src/langs/ur.js +162 -0
  66. package/src/langs/zh_cn.js +162 -0
  67. package/src/modules/ApiManager.js +168 -0
  68. package/src/modules/ColorPicker.js +302 -0
  69. package/src/modules/Controller.js +315 -0
  70. package/src/modules/Figure.js +1174 -0
  71. package/src/modules/FileBrowser.js +271 -0
  72. package/src/modules/FileManager.js +290 -0
  73. package/src/modules/HueSlider.js +513 -0
  74. package/src/modules/Modal.js +177 -0
  75. package/src/modules/ModalAnchorEditor.js +494 -0
  76. package/src/modules/SelectMenu.js +447 -0
  77. package/src/modules/_DragHandle.js +16 -0
  78. package/src/modules/index.js +14 -0
  79. package/src/plugins/command/blockquote.js +47 -47
  80. package/src/plugins/command/exportPdf.js +168 -0
  81. package/src/plugins/command/fileUpload.js +389 -0
  82. package/src/plugins/command/list_bulleted.js +112 -0
  83. package/src/plugins/command/list_numbered.js +115 -0
  84. package/src/plugins/dropdown/align.js +143 -0
  85. package/src/plugins/dropdown/backgroundColor.js +73 -0
  86. package/src/plugins/dropdown/font.js +113 -0
  87. package/src/plugins/dropdown/fontColor.js +73 -0
  88. package/src/plugins/dropdown/formatBlock.js +141 -0
  89. package/src/plugins/dropdown/hr.js +111 -0
  90. package/src/plugins/dropdown/layout.js +72 -0
  91. package/src/plugins/dropdown/lineHeight.js +114 -0
  92. package/src/plugins/dropdown/list.js +107 -0
  93. package/src/plugins/dropdown/paragraphStyle.js +117 -0
  94. package/src/plugins/dropdown/table.js +2810 -0
  95. package/src/plugins/dropdown/template.js +71 -0
  96. package/src/plugins/dropdown/textStyle.js +137 -0
  97. package/src/plugins/field/mention.js +172 -0
  98. package/src/plugins/fileBrowser/imageGallery.js +76 -59
  99. package/src/plugins/index.js +86 -24
  100. package/src/plugins/input/fontSize.js +357 -0
  101. package/src/plugins/modal/audio.js +492 -0
  102. package/src/plugins/modal/image.js +1062 -0
  103. package/src/plugins/modal/link.js +211 -0
  104. package/src/plugins/modal/math.js +347 -0
  105. package/src/plugins/modal/video.js +870 -0
  106. package/src/suneditor.js +62 -67
  107. package/src/themes/test.css +61 -0
  108. package/typings/CommandPlugin.d.ts +8 -0
  109. package/typings/DialogPlugin.d.ts +20 -0
  110. package/typings/FileBrowserPlugin.d.ts +30 -0
  111. package/typings/Lang.d.ts +124 -0
  112. package/typings/Module.d.ts +15 -0
  113. package/typings/Plugin.d.ts +42 -0
  114. package/typings/SubmenuPlugin.d.ts +8 -0
  115. package/typings/_classes.d.ts +17 -0
  116. package/typings/_colorPicker.d.ts +60 -0
  117. package/typings/_core.d.ts +55 -0
  118. package/typings/align.d.ts +5 -0
  119. package/{src/plugins/dialog → typings}/audio.d.ts +1 -1
  120. package/typings/backgroundColor.d.ts +5 -0
  121. package/{src/plugins/command → typings}/blockquote.d.ts +1 -1
  122. package/typings/char.d.ts +39 -0
  123. package/typings/component.d.ts +38 -0
  124. package/typings/context.d.ts +39 -0
  125. package/typings/converter.d.ts +33 -0
  126. package/typings/dialog.d.ts +28 -0
  127. package/typings/domUtils.d.ts +361 -0
  128. package/typings/editor.d.ts +7 -0
  129. package/typings/editor.ts +542 -0
  130. package/typings/env.d.ts +70 -0
  131. package/typings/eventManager.d.ts +37 -0
  132. package/typings/events.d.ts +262 -0
  133. package/typings/fileBrowser.d.ts +42 -0
  134. package/typings/fileManager.d.ts +67 -0
  135. package/typings/font.d.ts +5 -0
  136. package/typings/fontColor.d.ts +5 -0
  137. package/typings/fontSize.d.ts +5 -0
  138. package/typings/format.d.ts +191 -0
  139. package/typings/formatBlock.d.ts +5 -0
  140. package/typings/history.d.ts +48 -0
  141. package/typings/horizontalRule.d.ts +5 -0
  142. package/{src/plugins/dialog → typings}/image.d.ts +1 -1
  143. package/{src/plugins/fileBrowser → typings}/imageGallery.d.ts +1 -1
  144. package/typings/index.d.ts +21 -0
  145. package/{src/plugins/modules/index.d.ts → typings/index.modules.d.ts} +3 -3
  146. package/typings/index.plugins.d.ts +58 -0
  147. package/typings/lineHeight.d.ts +5 -0
  148. package/{src/plugins/dialog → typings}/link.d.ts +1 -1
  149. package/typings/list.d.ts +5 -0
  150. package/{src/plugins/dialog → typings}/math.d.ts +1 -1
  151. package/typings/mediaContainer.d.ts +25 -0
  152. package/typings/node.d.ts +57 -0
  153. package/typings/notice.d.ts +16 -0
  154. package/typings/numbers.d.ts +29 -0
  155. package/typings/offset.d.ts +24 -0
  156. package/typings/options.d.ts +589 -0
  157. package/typings/paragraphStyle.d.ts +5 -0
  158. package/typings/resizing.d.ts +141 -0
  159. package/typings/selection.d.ts +94 -0
  160. package/typings/shortcuts.d.ts +13 -0
  161. package/typings/suneditor.d.ts +9 -0
  162. package/typings/table.d.ts +5 -0
  163. package/typings/template.d.ts +5 -0
  164. package/typings/textStyle.d.ts +5 -0
  165. package/typings/toolbar.d.ts +32 -0
  166. package/typings/unicode.d.ts +25 -0
  167. package/{src/plugins/dialog → typings}/video.d.ts +1 -1
  168. package/dist/css/suneditor.min.css +0 -1
  169. package/dist/suneditor.min.js +0 -2
  170. package/src/assets/css/suneditor-contents.css +0 -562
  171. package/src/assets/css/suneditor.css +0 -566
  172. package/src/assets/defaultIcons.js +0 -103
  173. package/src/lang/Lang.d.ts +0 -144
  174. package/src/lang/ckb.d.ts +0 -5
  175. package/src/lang/ckb.js +0 -188
  176. package/src/lang/cs.d.ts +0 -5
  177. package/src/lang/cs.js +0 -188
  178. package/src/lang/da.d.ts +0 -5
  179. package/src/lang/da.js +0 -191
  180. package/src/lang/de.d.ts +0 -5
  181. package/src/lang/de.js +0 -188
  182. package/src/lang/en.d.ts +0 -5
  183. package/src/lang/en.js +0 -188
  184. package/src/lang/es.d.ts +0 -5
  185. package/src/lang/es.js +0 -188
  186. package/src/lang/fa.d.ts +0 -5
  187. package/src/lang/fa.js +0 -188
  188. package/src/lang/fr.d.ts +0 -5
  189. package/src/lang/fr.js +0 -188
  190. package/src/lang/he.d.ts +0 -5
  191. package/src/lang/he.js +0 -188
  192. package/src/lang/index.d.ts +0 -23
  193. package/src/lang/it.d.ts +0 -5
  194. package/src/lang/it.js +0 -188
  195. package/src/lang/ja.d.ts +0 -5
  196. package/src/lang/ja.js +0 -188
  197. package/src/lang/ko.d.ts +0 -5
  198. package/src/lang/ko.js +0 -188
  199. package/src/lang/lv.d.ts +0 -5
  200. package/src/lang/lv.js +0 -188
  201. package/src/lang/nl.d.ts +0 -5
  202. package/src/lang/nl.js +0 -188
  203. package/src/lang/pl.d.ts +0 -5
  204. package/src/lang/pl.js +0 -188
  205. package/src/lang/pt_br.d.ts +0 -5
  206. package/src/lang/pt_br.js +0 -189
  207. package/src/lang/ro.d.ts +0 -5
  208. package/src/lang/ro.js +0 -188
  209. package/src/lang/ru.d.ts +0 -5
  210. package/src/lang/ru.js +0 -188
  211. package/src/lang/se.d.ts +0 -5
  212. package/src/lang/se.js +0 -191
  213. package/src/lang/tr.d.ts +0 -5
  214. package/src/lang/tr.js +0 -191
  215. package/src/lang/ua.d.ts +0 -5
  216. package/src/lang/ua.js +0 -188
  217. package/src/lang/ur.d.ts +0 -5
  218. package/src/lang/ur.js +0 -188
  219. package/src/lang/zh_cn.d.ts +0 -5
  220. package/src/lang/zh_cn.js +0 -187
  221. package/src/lib/constructor.js +0 -954
  222. package/src/lib/context.d.ts +0 -42
  223. package/src/lib/context.js +0 -71
  224. package/src/lib/core.d.ts +0 -1135
  225. package/src/lib/core.js +0 -9395
  226. package/src/lib/history.d.ts +0 -48
  227. package/src/lib/history.js +0 -219
  228. package/src/lib/util.d.ts +0 -678
  229. package/src/lib/util.js +0 -2131
  230. package/src/options.d.ts +0 -608
  231. package/src/plugins/CommandPlugin.d.ts +0 -8
  232. package/src/plugins/DialogPlugin.d.ts +0 -20
  233. package/src/plugins/FileBrowserPlugin.d.ts +0 -30
  234. package/src/plugins/Module.d.ts +0 -15
  235. package/src/plugins/Plugin.d.ts +0 -42
  236. package/src/plugins/SubmenuPlugin.d.ts +0 -8
  237. package/src/plugins/dialog/audio.js +0 -559
  238. package/src/plugins/dialog/image.js +0 -1126
  239. package/src/plugins/dialog/link.js +0 -223
  240. package/src/plugins/dialog/math.js +0 -295
  241. package/src/plugins/dialog/mention.js +0 -242
  242. package/src/plugins/dialog/video.js +0 -979
  243. package/src/plugins/index.d.ts +0 -79
  244. package/src/plugins/modules/_anchor.js +0 -461
  245. package/src/plugins/modules/_colorPicker.d.ts +0 -60
  246. package/src/plugins/modules/_colorPicker.js +0 -201
  247. package/src/plugins/modules/_notice.d.ts +0 -21
  248. package/src/plugins/modules/_notice.js +0 -72
  249. package/src/plugins/modules/_selectMenu.js +0 -119
  250. package/src/plugins/modules/component.d.ts +0 -25
  251. package/src/plugins/modules/component.js +0 -81
  252. package/src/plugins/modules/dialog.d.ts +0 -28
  253. package/src/plugins/modules/dialog.js +0 -175
  254. package/src/plugins/modules/fileBrowser.d.ts +0 -42
  255. package/src/plugins/modules/fileBrowser.js +0 -374
  256. package/src/plugins/modules/fileManager.d.ts +0 -67
  257. package/src/plugins/modules/fileManager.js +0 -326
  258. package/src/plugins/modules/index.js +0 -9
  259. package/src/plugins/modules/resizing.d.ts +0 -154
  260. package/src/plugins/modules/resizing.js +0 -903
  261. package/src/plugins/submenu/align.d.ts +0 -5
  262. package/src/plugins/submenu/align.js +0 -160
  263. package/src/plugins/submenu/font.d.ts +0 -5
  264. package/src/plugins/submenu/font.js +0 -123
  265. package/src/plugins/submenu/fontColor.d.ts +0 -5
  266. package/src/plugins/submenu/fontColor.js +0 -101
  267. package/src/plugins/submenu/fontSize.d.ts +0 -5
  268. package/src/plugins/submenu/fontSize.js +0 -112
  269. package/src/plugins/submenu/formatBlock.d.ts +0 -5
  270. package/src/plugins/submenu/formatBlock.js +0 -273
  271. package/src/plugins/submenu/hiliteColor.d.ts +0 -5
  272. package/src/plugins/submenu/hiliteColor.js +0 -102
  273. package/src/plugins/submenu/horizontalRule.d.ts +0 -5
  274. package/src/plugins/submenu/horizontalRule.js +0 -98
  275. package/src/plugins/submenu/lineHeight.d.ts +0 -5
  276. package/src/plugins/submenu/lineHeight.js +0 -104
  277. package/src/plugins/submenu/list.d.ts +0 -5
  278. package/src/plugins/submenu/list.js +0 -456
  279. package/src/plugins/submenu/paragraphStyle.d.ts +0 -5
  280. package/src/plugins/submenu/paragraphStyle.js +0 -135
  281. package/src/plugins/submenu/table.d.ts +0 -5
  282. package/src/plugins/submenu/table.js +0 -1431
  283. package/src/plugins/submenu/template.d.ts +0 -5
  284. package/src/plugins/submenu/template.js +0 -72
  285. package/src/plugins/submenu/textStyle.d.ts +0 -5
  286. package/src/plugins/submenu/textStyle.js +0 -167
  287. package/src/suneditor.d.ts +0 -9
  288. package/src/suneditor_build.js +0 -18
  289. /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;