suneditor 2.44.2 → 2.44.4
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.
- package/LICENSE.txt +20 -20
- package/README.md +1585 -1585
- package/dist/css/suneditor.min.css +1 -1
- package/dist/suneditor.min.js +2 -2
- package/package.json +71 -71
- package/src/assets/css/suneditor-contents.css +556 -556
- package/src/assets/css/suneditor.css +0 -0
- package/src/assets/defaultIcons.js +103 -103
- package/src/lang/Lang.d.ts +143 -143
- package/src/lang/ckb.d.ts +4 -4
- package/src/lang/ckb.js +187 -187
- package/src/lang/da.d.ts +4 -4
- package/src/lang/da.js +191 -191
- package/src/lang/de.d.ts +4 -4
- package/src/lang/de.js +187 -187
- package/src/lang/en.d.ts +4 -4
- package/src/lang/en.js +187 -187
- package/src/lang/es.d.ts +4 -4
- package/src/lang/es.js +187 -187
- package/src/lang/fr.d.ts +4 -4
- package/src/lang/fr.js +188 -188
- package/src/lang/he.d.ts +4 -4
- package/src/lang/he.js +188 -188
- package/src/lang/index.d.ts +22 -21
- package/src/lang/index.js +25 -24
- package/src/lang/it.d.ts +4 -4
- package/src/lang/it.js +188 -188
- package/src/lang/ja.d.ts +4 -4
- package/src/lang/ja.js +187 -187
- package/src/lang/ko.d.ts +4 -4
- package/src/lang/ko.js +187 -187
- package/src/lang/lv.d.ts +4 -4
- package/src/lang/lv.js +187 -187
- package/src/lang/nl.d.ts +4 -4
- package/src/lang/nl.js +187 -187
- package/src/lang/pl.d.ts +4 -4
- package/src/lang/pl.js +187 -187
- package/src/lang/pt_br.d.ts +4 -4
- package/src/lang/pt_br.js +189 -189
- package/src/lang/ro.d.ts +4 -4
- package/src/lang/ro.js +187 -187
- package/src/lang/ru.d.ts +4 -4
- package/src/lang/ru.js +187 -187
- package/src/lang/se.d.ts +4 -4
- package/src/lang/se.js +191 -191
- package/src/lang/ua.d.ts +5 -5
- package/src/lang/ua.js +188 -188
- package/src/lang/ur.d.ts +5 -0
- package/src/lang/ur.js +188 -0
- package/src/lang/zh_cn.d.ts +4 -4
- package/src/lang/zh_cn.js +187 -187
- package/src/lib/constructor.js +1 -2
- package/src/lib/context.d.ts +42 -42
- package/src/lib/context.js +0 -0
- package/src/lib/core.d.ts +1101 -1101
- package/src/lib/core.js +220 -99
- package/src/lib/history.d.ts +48 -48
- package/src/lib/history.js +218 -218
- package/src/lib/util.d.ts +677 -677
- package/src/lib/util.js +38 -12
- package/src/options.d.ts +608 -608
- package/src/plugins/CommandPlugin.d.ts +7 -7
- package/src/plugins/DialogPlugin.d.ts +19 -19
- package/src/plugins/FileBrowserPlugin.d.ts +29 -29
- package/src/plugins/Module.d.ts +14 -14
- package/src/plugins/Plugin.d.ts +41 -41
- package/src/plugins/SubmenuPlugin.d.ts +7 -7
- package/src/plugins/command/blockquote.d.ts +4 -4
- package/src/plugins/command/blockquote.js +46 -46
- package/src/plugins/dialog/audio.d.ts +4 -4
- package/src/plugins/dialog/audio.js +556 -554
- package/src/plugins/dialog/image.d.ts +4 -4
- package/src/plugins/dialog/image.js +1122 -1107
- package/src/plugins/dialog/link.d.ts +4 -4
- package/src/plugins/dialog/link.js +223 -223
- package/src/plugins/dialog/math.d.ts +4 -4
- package/src/plugins/dialog/math.js +294 -294
- package/src/plugins/dialog/mention.d.ts +5 -5
- package/src/plugins/dialog/mention.js +242 -242
- package/src/plugins/dialog/video.d.ts +4 -4
- package/src/plugins/dialog/video.js +983 -981
- package/src/plugins/fileBrowser/imageGallery.d.ts +4 -4
- package/src/plugins/fileBrowser/imageGallery.js +63 -63
- package/src/plugins/index.d.ts +79 -79
- package/src/plugins/index.js +32 -32
- package/src/plugins/modules/_anchor.js +461 -462
- package/src/plugins/modules/_colorPicker.d.ts +59 -59
- package/src/plugins/modules/_colorPicker.js +0 -0
- package/src/plugins/modules/_notice.d.ts +20 -20
- package/src/plugins/modules/_notice.js +72 -72
- package/src/plugins/modules/_selectMenu.js +118 -118
- package/src/plugins/modules/component.d.ts +24 -24
- package/src/plugins/modules/component.js +82 -82
- package/src/plugins/modules/dialog.d.ts +27 -27
- package/src/plugins/modules/dialog.js +174 -174
- package/src/plugins/modules/fileBrowser.d.ts +41 -41
- package/src/plugins/modules/fileBrowser.js +373 -373
- package/src/plugins/modules/fileManager.d.ts +66 -66
- package/src/plugins/modules/fileManager.js +325 -324
- package/src/plugins/modules/index.d.ts +10 -10
- package/src/plugins/modules/index.js +8 -8
- package/src/plugins/modules/resizing.d.ts +153 -153
- package/src/plugins/modules/resizing.js +895 -895
- package/src/plugins/submenu/align.d.ts +4 -4
- package/src/plugins/submenu/align.js +160 -160
- package/src/plugins/submenu/font.d.ts +4 -4
- package/src/plugins/submenu/font.js +120 -120
- package/src/plugins/submenu/fontColor.d.ts +4 -4
- package/src/plugins/submenu/fontColor.js +0 -0
- package/src/plugins/submenu/fontSize.d.ts +4 -4
- package/src/plugins/submenu/fontSize.js +112 -112
- package/src/plugins/submenu/formatBlock.d.ts +4 -4
- package/src/plugins/submenu/formatBlock.js +273 -273
- package/src/plugins/submenu/hiliteColor.d.ts +4 -4
- package/src/plugins/submenu/hiliteColor.js +0 -0
- package/src/plugins/submenu/horizontalRule.d.ts +4 -4
- package/src/plugins/submenu/horizontalRule.js +98 -98
- package/src/plugins/submenu/lineHeight.d.ts +4 -4
- package/src/plugins/submenu/lineHeight.js +104 -104
- package/src/plugins/submenu/list.d.ts +4 -4
- package/src/plugins/submenu/list.js +456 -455
- package/src/plugins/submenu/paragraphStyle.d.ts +4 -4
- package/src/plugins/submenu/paragraphStyle.js +135 -135
- package/src/plugins/submenu/table.d.ts +4 -4
- package/src/plugins/submenu/template.d.ts +4 -4
- package/src/plugins/submenu/template.js +71 -71
- package/src/plugins/submenu/textStyle.d.ts +4 -4
- package/src/plugins/submenu/textStyle.js +167 -167
- package/src/suneditor.d.ts +9 -9
- package/src/suneditor.js +75 -75
- package/src/suneditor_build.js +17 -17
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
import SunEditor from '../../lib/core';
|
|
2
|
-
import { Module } from '../Module';
|
|
3
|
-
|
|
4
|
-
declare interface _colorPicker extends Module {
|
|
5
|
-
/**
|
|
6
|
-
* @description Create color list
|
|
7
|
-
* @param core Core object
|
|
8
|
-
* @param makeColor this._makeColorList
|
|
9
|
-
* @returns HTML string
|
|
10
|
-
*/
|
|
11
|
-
createColorList(core: SunEditor, makeColor: Function): string;
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @description Displays or resets the currently selected color at color list.
|
|
15
|
-
* @param node Current Selected node
|
|
16
|
-
* @param color Color value
|
|
17
|
-
*/
|
|
18
|
-
init(node: Node, color: string): void;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @description Store color values
|
|
22
|
-
* @param hexColorStr Hax color value
|
|
23
|
-
*/
|
|
24
|
-
setCurrentColor(hexColorStr: string): void;
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* @description Set color at input element
|
|
28
|
-
* @param hexColorStr Hax color value
|
|
29
|
-
*/
|
|
30
|
-
setInputText(hexColorStr: string): void;
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @description Gets color value at color property of node
|
|
34
|
-
* @param node Selected node
|
|
35
|
-
* @returns
|
|
36
|
-
*/
|
|
37
|
-
getColorInNode(node: Node): string;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* @description Function to check hex format color
|
|
41
|
-
* @param str Color value
|
|
42
|
-
*/
|
|
43
|
-
isHexColor(str: string): boolean;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* @description Function to convert hex format to a rgb color
|
|
47
|
-
* @param rgb RGB color format
|
|
48
|
-
* @returns
|
|
49
|
-
*/
|
|
50
|
-
rgb2hex(rgb: string): string;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* @description Converts color values of other formats to hex color values and returns.
|
|
54
|
-
* @param colorName Color value
|
|
55
|
-
* @returns
|
|
56
|
-
*/
|
|
57
|
-
colorName2hex(colorName: string): string;
|
|
58
|
-
}
|
|
59
|
-
|
|
1
|
+
import SunEditor from '../../lib/core';
|
|
2
|
+
import { Module } from '../Module';
|
|
3
|
+
|
|
4
|
+
declare interface _colorPicker extends Module {
|
|
5
|
+
/**
|
|
6
|
+
* @description Create color list
|
|
7
|
+
* @param core Core object
|
|
8
|
+
* @param makeColor this._makeColorList
|
|
9
|
+
* @returns HTML string
|
|
10
|
+
*/
|
|
11
|
+
createColorList(core: SunEditor, makeColor: Function): string;
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @description Displays or resets the currently selected color at color list.
|
|
15
|
+
* @param node Current Selected node
|
|
16
|
+
* @param color Color value
|
|
17
|
+
*/
|
|
18
|
+
init(node: Node, color: string): void;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* @description Store color values
|
|
22
|
+
* @param hexColorStr Hax color value
|
|
23
|
+
*/
|
|
24
|
+
setCurrentColor(hexColorStr: string): void;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @description Set color at input element
|
|
28
|
+
* @param hexColorStr Hax color value
|
|
29
|
+
*/
|
|
30
|
+
setInputText(hexColorStr: string): void;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* @description Gets color value at color property of node
|
|
34
|
+
* @param node Selected node
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
getColorInNode(node: Node): string;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @description Function to check hex format color
|
|
41
|
+
* @param str Color value
|
|
42
|
+
*/
|
|
43
|
+
isHexColor(str: string): boolean;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @description Function to convert hex format to a rgb color
|
|
47
|
+
* @param rgb RGB color format
|
|
48
|
+
* @returns
|
|
49
|
+
*/
|
|
50
|
+
rgb2hex(rgb: string): string;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* @description Converts color values of other formats to hex color values and returns.
|
|
54
|
+
* @param colorName Color value
|
|
55
|
+
* @returns
|
|
56
|
+
*/
|
|
57
|
+
colorName2hex(colorName: string): string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
60
|
export default _colorPicker;
|
|
File without changes
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { Module } from '../Module';
|
|
2
|
-
|
|
3
|
-
declare interface _notice extends Module {
|
|
4
|
-
/**
|
|
5
|
-
* @description Event when clicking the cancel button
|
|
6
|
-
* @param e Event object
|
|
7
|
-
*/
|
|
8
|
-
onClick_cancel(e: MouseEvent): void;
|
|
9
|
-
/**
|
|
10
|
-
* @description Open the notice panel
|
|
11
|
-
* @param text Notice message
|
|
12
|
-
*/
|
|
13
|
-
open(text: string): void;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* @description Open the notice panel
|
|
17
|
-
*/
|
|
18
|
-
close(): void;
|
|
19
|
-
}
|
|
20
|
-
|
|
1
|
+
import { Module } from '../Module';
|
|
2
|
+
|
|
3
|
+
declare interface _notice extends Module {
|
|
4
|
+
/**
|
|
5
|
+
* @description Event when clicking the cancel button
|
|
6
|
+
* @param e Event object
|
|
7
|
+
*/
|
|
8
|
+
onClick_cancel(e: MouseEvent): void;
|
|
9
|
+
/**
|
|
10
|
+
* @description Open the notice panel
|
|
11
|
+
* @param text Notice message
|
|
12
|
+
*/
|
|
13
|
+
open(text: string): void;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* @description Open the notice panel
|
|
17
|
+
*/
|
|
18
|
+
close(): void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
21
|
export default _notice;
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* wysiwyg web editor
|
|
3
|
-
*
|
|
4
|
-
* suneditor.js
|
|
5
|
-
* Copyright 2017 JiHong Lee.
|
|
6
|
-
* MIT license.
|
|
7
|
-
*/
|
|
8
|
-
'use strict';
|
|
9
|
-
|
|
10
|
-
export default {
|
|
11
|
-
name: 'notice',
|
|
12
|
-
/**
|
|
13
|
-
* @description Constructor
|
|
14
|
-
* @param {Object} core Core object
|
|
15
|
-
*/
|
|
16
|
-
add: function (core) {
|
|
17
|
-
const context = core.context;
|
|
18
|
-
context.notice = {};
|
|
19
|
-
|
|
20
|
-
/** dialog */
|
|
21
|
-
let notice_div = core.util.createElement('DIV');
|
|
22
|
-
let notice_span = core.util.createElement('SPAN');
|
|
23
|
-
let notice_button = core.util.createElement('BUTTON');
|
|
24
|
-
|
|
25
|
-
notice_div.className = 'se-notice';
|
|
26
|
-
notice_button.className = 'close';
|
|
27
|
-
notice_button.setAttribute('aria-label', 'Close');
|
|
28
|
-
notice_button.setAttribute('title', core.lang.dialogBox.close);
|
|
29
|
-
notice_button.innerHTML = core.icons.cancel;
|
|
30
|
-
|
|
31
|
-
notice_div.appendChild(notice_span);
|
|
32
|
-
notice_div.appendChild(notice_button);
|
|
33
|
-
|
|
34
|
-
context.notice.modal = notice_div;
|
|
35
|
-
context.notice.message = notice_span;
|
|
36
|
-
|
|
37
|
-
/** add event listeners */
|
|
38
|
-
notice_button.addEventListener('click', this.onClick_cancel.bind(core));
|
|
39
|
-
|
|
40
|
-
/** append html */
|
|
41
|
-
context.element.editorArea.appendChild(notice_div);
|
|
42
|
-
|
|
43
|
-
/** empty memory */
|
|
44
|
-
notice_div = null;
|
|
45
|
-
},
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* @description Event when clicking the cancel button
|
|
49
|
-
* @param {MouseEvent} e Event object
|
|
50
|
-
*/
|
|
51
|
-
onClick_cancel: function (e) {
|
|
52
|
-
e.preventDefault();
|
|
53
|
-
e.stopPropagation();
|
|
54
|
-
this.plugins.notice.close.call(this);
|
|
55
|
-
},
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* @description Open the notice panel
|
|
59
|
-
* @param {String} text Notice message
|
|
60
|
-
*/
|
|
61
|
-
open: function (text) {
|
|
62
|
-
this.context.notice.message.textContent = text;
|
|
63
|
-
this.context.notice.modal.style.display = 'block';
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* @description Open the notice panel
|
|
68
|
-
*/
|
|
69
|
-
close: function () {
|
|
70
|
-
this.context.notice.modal.style.display = 'none';
|
|
71
|
-
}
|
|
72
|
-
};
|
|
1
|
+
/*
|
|
2
|
+
* wysiwyg web editor
|
|
3
|
+
*
|
|
4
|
+
* suneditor.js
|
|
5
|
+
* Copyright 2017 JiHong Lee.
|
|
6
|
+
* MIT license.
|
|
7
|
+
*/
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
export default {
|
|
11
|
+
name: 'notice',
|
|
12
|
+
/**
|
|
13
|
+
* @description Constructor
|
|
14
|
+
* @param {Object} core Core object
|
|
15
|
+
*/
|
|
16
|
+
add: function (core) {
|
|
17
|
+
const context = core.context;
|
|
18
|
+
context.notice = {};
|
|
19
|
+
|
|
20
|
+
/** dialog */
|
|
21
|
+
let notice_div = core.util.createElement('DIV');
|
|
22
|
+
let notice_span = core.util.createElement('SPAN');
|
|
23
|
+
let notice_button = core.util.createElement('BUTTON');
|
|
24
|
+
|
|
25
|
+
notice_div.className = 'se-notice';
|
|
26
|
+
notice_button.className = 'close';
|
|
27
|
+
notice_button.setAttribute('aria-label', 'Close');
|
|
28
|
+
notice_button.setAttribute('title', core.lang.dialogBox.close);
|
|
29
|
+
notice_button.innerHTML = core.icons.cancel;
|
|
30
|
+
|
|
31
|
+
notice_div.appendChild(notice_span);
|
|
32
|
+
notice_div.appendChild(notice_button);
|
|
33
|
+
|
|
34
|
+
context.notice.modal = notice_div;
|
|
35
|
+
context.notice.message = notice_span;
|
|
36
|
+
|
|
37
|
+
/** add event listeners */
|
|
38
|
+
notice_button.addEventListener('click', this.onClick_cancel.bind(core));
|
|
39
|
+
|
|
40
|
+
/** append html */
|
|
41
|
+
context.element.editorArea.appendChild(notice_div);
|
|
42
|
+
|
|
43
|
+
/** empty memory */
|
|
44
|
+
notice_div = null;
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @description Event when clicking the cancel button
|
|
49
|
+
* @param {MouseEvent} e Event object
|
|
50
|
+
*/
|
|
51
|
+
onClick_cancel: function (e) {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
e.stopPropagation();
|
|
54
|
+
this.plugins.notice.close.call(this);
|
|
55
|
+
},
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @description Open the notice panel
|
|
59
|
+
* @param {String} text Notice message
|
|
60
|
+
*/
|
|
61
|
+
open: function (text) {
|
|
62
|
+
this.context.notice.message.textContent = text;
|
|
63
|
+
this.context.notice.modal.style.display = 'block';
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @description Open the notice panel
|
|
68
|
+
*/
|
|
69
|
+
close: function () {
|
|
70
|
+
this.context.notice.modal.style.display = 'none';
|
|
71
|
+
}
|
|
72
|
+
};
|
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* wysiwyg web editor
|
|
3
|
-
*
|
|
4
|
-
* suneditor.js
|
|
5
|
-
* Copyright 2018 JiHong Lee.
|
|
6
|
-
* MIT license.
|
|
7
|
-
*/
|
|
8
|
-
'use strict';
|
|
9
|
-
|
|
10
|
-
export default {
|
|
11
|
-
name: 'selectMenu',
|
|
12
|
-
add: function (core) {
|
|
13
|
-
core.context.selectMenu = {
|
|
14
|
-
caller: {},
|
|
15
|
-
callerContext: null
|
|
16
|
-
};
|
|
17
|
-
},
|
|
18
|
-
|
|
19
|
-
setForm: function () {
|
|
20
|
-
return '<div class="se-select-list"></div>';
|
|
21
|
-
},
|
|
22
|
-
|
|
23
|
-
createList: function (listContext, items, html) {
|
|
24
|
-
listContext.form.innerHTML = '<ul>' + html + '</ul>';
|
|
25
|
-
listContext.items = items;
|
|
26
|
-
listContext.menus = listContext.form.querySelectorAll('li');
|
|
27
|
-
},
|
|
28
|
-
|
|
29
|
-
initEvent: function (pluginName, forms) {
|
|
30
|
-
const form = forms.querySelector('.se-select-list');
|
|
31
|
-
const context = this.context.selectMenu.caller[pluginName] = {
|
|
32
|
-
form: form,
|
|
33
|
-
items: [],
|
|
34
|
-
menus: [],
|
|
35
|
-
index: -1,
|
|
36
|
-
item: null,
|
|
37
|
-
clickMethod: null,
|
|
38
|
-
callerName: pluginName
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
form.addEventListener('mousedown', this.plugins.selectMenu.onMousedown_list);
|
|
42
|
-
form.addEventListener('mousemove', this.plugins.selectMenu.onMouseMove_list.bind(this, context));
|
|
43
|
-
form.addEventListener('click', this.plugins.selectMenu.onClick_list.bind(this, context));
|
|
44
|
-
},
|
|
45
|
-
|
|
46
|
-
onMousedown_list: function (e) {
|
|
47
|
-
e.preventDefault();
|
|
48
|
-
e.stopPropagation();
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
onMouseMove_list: function (context, e) {
|
|
52
|
-
this.util.addClass(context.form, '__se_select-menu-mouse-move');
|
|
53
|
-
const index = e.target.getAttribute('data-index');
|
|
54
|
-
if (!index) return;
|
|
55
|
-
context.index = index * 1;
|
|
56
|
-
},
|
|
57
|
-
|
|
58
|
-
onClick_list: function (context, e) {
|
|
59
|
-
const index = e.target.getAttribute('data-index');
|
|
60
|
-
if (!index) return;
|
|
61
|
-
context.clickMethod.call(this, context.items[index]);
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
moveItem: function (listContext, num) {
|
|
65
|
-
this.util.removeClass(listContext.form, '__se_select-menu-mouse-move');
|
|
66
|
-
num = listContext.index + num;
|
|
67
|
-
const menus = listContext.menus;
|
|
68
|
-
const len = menus.length;
|
|
69
|
-
const selectIndex = listContext.index = num >= len ? 0 : num < 0 ? len - 1 : num;
|
|
70
|
-
|
|
71
|
-
for (let i = 0; i < len; i++) {
|
|
72
|
-
if (i === selectIndex) {
|
|
73
|
-
this.util.addClass(menus[i], 'active');
|
|
74
|
-
} else {
|
|
75
|
-
this.util.removeClass(menus[i], 'active');
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
listContext.item = listContext.items[selectIndex];
|
|
80
|
-
},
|
|
81
|
-
|
|
82
|
-
getItem: function (listContext, index) {
|
|
83
|
-
index = (!index || index < 0) ? listContext.index : index;
|
|
84
|
-
return listContext.items[index];
|
|
85
|
-
},
|
|
86
|
-
|
|
87
|
-
on: function (callerName, clickMethod) {
|
|
88
|
-
const listContext = this.context.selectMenu.caller[callerName];
|
|
89
|
-
this.context.selectMenu.callerContext = listContext;
|
|
90
|
-
listContext.clickMethod = clickMethod;
|
|
91
|
-
listContext.callerName = callerName;
|
|
92
|
-
},
|
|
93
|
-
|
|
94
|
-
open: function (listContext, positionHandler) {
|
|
95
|
-
const form = listContext.form;
|
|
96
|
-
form.style.visibility = 'hidden';
|
|
97
|
-
form.style.display = 'block';
|
|
98
|
-
positionHandler(form);
|
|
99
|
-
form.style.visibility = '';
|
|
100
|
-
},
|
|
101
|
-
|
|
102
|
-
close: function (listContext) {
|
|
103
|
-
listContext.form.style.display = 'none';
|
|
104
|
-
listContext.items = [];
|
|
105
|
-
listContext.menus = [];
|
|
106
|
-
listContext.index = -1;
|
|
107
|
-
listContext.item = null;
|
|
108
|
-
},
|
|
109
|
-
|
|
110
|
-
init: function (listContext) {
|
|
111
|
-
if (!listContext) return;
|
|
112
|
-
listContext.items = [];
|
|
113
|
-
listContext.menus = [];
|
|
114
|
-
listContext.index = -1;
|
|
115
|
-
listContext.item = null;
|
|
116
|
-
listContext.callerName = '';
|
|
117
|
-
this.context.selectMenu.callerContext = null;
|
|
118
|
-
}
|
|
1
|
+
/*
|
|
2
|
+
* wysiwyg web editor
|
|
3
|
+
*
|
|
4
|
+
* suneditor.js
|
|
5
|
+
* Copyright 2018 JiHong Lee.
|
|
6
|
+
* MIT license.
|
|
7
|
+
*/
|
|
8
|
+
'use strict';
|
|
9
|
+
|
|
10
|
+
export default {
|
|
11
|
+
name: 'selectMenu',
|
|
12
|
+
add: function (core) {
|
|
13
|
+
core.context.selectMenu = {
|
|
14
|
+
caller: {},
|
|
15
|
+
callerContext: null
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
setForm: function () {
|
|
20
|
+
return '<div class="se-select-list"></div>';
|
|
21
|
+
},
|
|
22
|
+
|
|
23
|
+
createList: function (listContext, items, html) {
|
|
24
|
+
listContext.form.innerHTML = '<ul>' + html + '</ul>';
|
|
25
|
+
listContext.items = items;
|
|
26
|
+
listContext.menus = listContext.form.querySelectorAll('li');
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
initEvent: function (pluginName, forms) {
|
|
30
|
+
const form = forms.querySelector('.se-select-list');
|
|
31
|
+
const context = this.context.selectMenu.caller[pluginName] = {
|
|
32
|
+
form: form,
|
|
33
|
+
items: [],
|
|
34
|
+
menus: [],
|
|
35
|
+
index: -1,
|
|
36
|
+
item: null,
|
|
37
|
+
clickMethod: null,
|
|
38
|
+
callerName: pluginName
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
form.addEventListener('mousedown', this.plugins.selectMenu.onMousedown_list);
|
|
42
|
+
form.addEventListener('mousemove', this.plugins.selectMenu.onMouseMove_list.bind(this, context));
|
|
43
|
+
form.addEventListener('click', this.plugins.selectMenu.onClick_list.bind(this, context));
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
onMousedown_list: function (e) {
|
|
47
|
+
e.preventDefault();
|
|
48
|
+
e.stopPropagation();
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
onMouseMove_list: function (context, e) {
|
|
52
|
+
this.util.addClass(context.form, '__se_select-menu-mouse-move');
|
|
53
|
+
const index = e.target.getAttribute('data-index');
|
|
54
|
+
if (!index) return;
|
|
55
|
+
context.index = index * 1;
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
onClick_list: function (context, e) {
|
|
59
|
+
const index = e.target.getAttribute('data-index');
|
|
60
|
+
if (!index) return;
|
|
61
|
+
context.clickMethod.call(this, context.items[index]);
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
moveItem: function (listContext, num) {
|
|
65
|
+
this.util.removeClass(listContext.form, '__se_select-menu-mouse-move');
|
|
66
|
+
num = listContext.index + num;
|
|
67
|
+
const menus = listContext.menus;
|
|
68
|
+
const len = menus.length;
|
|
69
|
+
const selectIndex = listContext.index = num >= len ? 0 : num < 0 ? len - 1 : num;
|
|
70
|
+
|
|
71
|
+
for (let i = 0; i < len; i++) {
|
|
72
|
+
if (i === selectIndex) {
|
|
73
|
+
this.util.addClass(menus[i], 'active');
|
|
74
|
+
} else {
|
|
75
|
+
this.util.removeClass(menus[i], 'active');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
listContext.item = listContext.items[selectIndex];
|
|
80
|
+
},
|
|
81
|
+
|
|
82
|
+
getItem: function (listContext, index) {
|
|
83
|
+
index = (!index || index < 0) ? listContext.index : index;
|
|
84
|
+
return listContext.items[index];
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
on: function (callerName, clickMethod) {
|
|
88
|
+
const listContext = this.context.selectMenu.caller[callerName];
|
|
89
|
+
this.context.selectMenu.callerContext = listContext;
|
|
90
|
+
listContext.clickMethod = clickMethod;
|
|
91
|
+
listContext.callerName = callerName;
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
open: function (listContext, positionHandler) {
|
|
95
|
+
const form = listContext.form;
|
|
96
|
+
form.style.visibility = 'hidden';
|
|
97
|
+
form.style.display = 'block';
|
|
98
|
+
positionHandler(form);
|
|
99
|
+
form.style.visibility = '';
|
|
100
|
+
},
|
|
101
|
+
|
|
102
|
+
close: function (listContext) {
|
|
103
|
+
listContext.form.style.display = 'none';
|
|
104
|
+
listContext.items = [];
|
|
105
|
+
listContext.menus = [];
|
|
106
|
+
listContext.index = -1;
|
|
107
|
+
listContext.item = null;
|
|
108
|
+
},
|
|
109
|
+
|
|
110
|
+
init: function (listContext) {
|
|
111
|
+
if (!listContext) return;
|
|
112
|
+
listContext.items = [];
|
|
113
|
+
listContext.menus = [];
|
|
114
|
+
listContext.index = -1;
|
|
115
|
+
listContext.item = null;
|
|
116
|
+
listContext.callerName = '';
|
|
117
|
+
this.context.selectMenu.callerContext = null;
|
|
118
|
+
}
|
|
119
119
|
};
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { Module } from '../Module';
|
|
2
|
-
|
|
3
|
-
declare interface component extends Module {
|
|
4
|
-
/**
|
|
5
|
-
* @description Create a container for the resizing component and insert the element.
|
|
6
|
-
* @param cover Cover element (FIGURE)
|
|
7
|
-
* @param className Class name of container (fixed: se-component)
|
|
8
|
-
* @returns Created container element
|
|
9
|
-
*/
|
|
10
|
-
set_container(cover: Element, className: string): Element;
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* @description Cover the target element with a FIGURE element.
|
|
14
|
-
* @param element Target element
|
|
15
|
-
*/
|
|
16
|
-
set_cover(element: Element): void;
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @description Return HTML string of caption(FIGCAPTION) element
|
|
20
|
-
* @returns
|
|
21
|
-
*/
|
|
22
|
-
create_caption(): string;
|
|
23
|
-
}
|
|
24
|
-
|
|
1
|
+
import { Module } from '../Module';
|
|
2
|
+
|
|
3
|
+
declare interface component extends Module {
|
|
4
|
+
/**
|
|
5
|
+
* @description Create a container for the resizing component and insert the element.
|
|
6
|
+
* @param cover Cover element (FIGURE)
|
|
7
|
+
* @param className Class name of container (fixed: se-component)
|
|
8
|
+
* @returns Created container element
|
|
9
|
+
*/
|
|
10
|
+
set_container(cover: Element, className: string): Element;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @description Cover the target element with a FIGURE element.
|
|
14
|
+
* @param element Target element
|
|
15
|
+
*/
|
|
16
|
+
set_cover(element: Element): void;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @description Return HTML string of caption(FIGCAPTION) element
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
create_caption(): string;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
25
|
export default component;
|