suneditor 3.0.0-beta.2 → 3.0.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +186 -184
- package/LICENSE +21 -21
- package/README.md +157 -180
- package/dist/suneditor.min.css +1 -1
- package/dist/suneditor.min.js +1 -1
- package/package.json +126 -123
- package/src/assets/design/color.css +131 -121
- package/src/assets/design/index.css +3 -3
- package/src/assets/design/size.css +37 -35
- package/src/assets/design/typography.css +37 -37
- package/src/assets/icons/defaultIcons.js +247 -232
- package/src/assets/suneditor-contents.css +779 -778
- package/src/assets/suneditor.css +43 -35
- package/src/core/base/eventHandlers/handler_toolbar.js +135 -135
- package/src/core/base/eventHandlers/handler_ww_clipboard.js +56 -56
- package/src/core/base/eventHandlers/handler_ww_dragDrop.js +115 -113
- package/src/core/base/eventHandlers/handler_ww_key_input.js +1200 -1200
- package/src/core/base/eventHandlers/handler_ww_mouse.js +194 -194
- package/src/core/base/eventManager.js +1550 -1484
- package/src/core/base/history.js +355 -355
- package/src/core/class/char.js +163 -162
- package/src/core/class/component.js +856 -842
- package/src/core/class/format.js +3433 -3422
- package/src/core/class/html.js +1927 -1890
- package/src/core/class/menu.js +357 -346
- package/src/core/class/nodeTransform.js +424 -424
- package/src/core/class/offset.js +858 -891
- package/src/core/class/selection.js +710 -620
- package/src/core/class/shortcuts.js +98 -98
- package/src/core/class/toolbar.js +438 -430
- package/src/core/class/ui.js +424 -422
- package/src/core/class/viewer.js +750 -750
- package/src/core/editor.js +1810 -1708
- package/src/core/section/actives.js +268 -241
- package/src/core/section/constructor.js +1348 -1661
- package/src/core/section/context.js +102 -102
- package/src/core/section/documentType.js +582 -561
- package/src/core/section/options.js +367 -0
- package/src/core/util/instanceCheck.js +59 -0
- package/src/editorInjector/_classes.js +36 -36
- package/src/editorInjector/_core.js +92 -92
- package/src/editorInjector/index.js +75 -75
- package/src/events.js +634 -622
- package/src/helper/clipboard.js +59 -59
- package/src/helper/converter.js +586 -564
- package/src/helper/dom/domCheck.js +304 -304
- package/src/helper/dom/domQuery.js +677 -669
- package/src/helper/dom/domUtils.js +618 -557
- package/src/helper/dom/index.js +12 -12
- package/src/helper/env.js +249 -240
- package/src/helper/index.js +25 -25
- package/src/helper/keyCodeMap.js +183 -183
- package/src/helper/numbers.js +72 -72
- package/src/helper/unicode.js +47 -47
- package/src/langs/ckb.js +231 -231
- package/src/langs/cs.js +231 -231
- package/src/langs/da.js +231 -231
- package/src/langs/de.js +231 -231
- package/src/langs/en.js +230 -230
- package/src/langs/es.js +231 -231
- package/src/langs/fa.js +231 -231
- package/src/langs/fr.js +231 -231
- package/src/langs/he.js +231 -231
- package/src/langs/hu.js +230 -230
- package/src/langs/index.js +28 -28
- package/src/langs/it.js +231 -231
- package/src/langs/ja.js +230 -230
- package/src/langs/km.js +230 -230
- package/src/langs/ko.js +230 -230
- package/src/langs/lv.js +231 -231
- package/src/langs/nl.js +231 -231
- package/src/langs/pl.js +231 -231
- package/src/langs/pt_br.js +231 -231
- package/src/langs/ro.js +231 -231
- package/src/langs/ru.js +231 -231
- package/src/langs/se.js +231 -231
- package/src/langs/tr.js +231 -231
- package/src/langs/uk.js +231 -231
- package/src/langs/ur.js +231 -231
- package/src/langs/zh_cn.js +231 -231
- package/src/modules/ApiManager.js +191 -191
- package/src/modules/Browser.js +669 -667
- package/src/modules/ColorPicker.js +364 -362
- package/src/modules/Controller.js +474 -454
- package/src/modules/Figure.js +1620 -1617
- package/src/modules/FileManager.js +359 -359
- package/src/modules/HueSlider.js +577 -565
- package/src/modules/Modal.js +346 -346
- package/src/modules/ModalAnchorEditor.js +643 -643
- package/src/modules/SelectMenu.js +549 -549
- package/src/modules/_DragHandle.js +17 -17
- package/src/modules/index.js +14 -14
- package/src/plugins/browser/audioGallery.js +83 -83
- package/src/plugins/browser/fileBrowser.js +103 -103
- package/src/plugins/browser/fileGallery.js +83 -83
- package/src/plugins/browser/imageGallery.js +81 -81
- package/src/plugins/browser/videoGallery.js +103 -103
- package/src/plugins/command/blockquote.js +61 -60
- package/src/plugins/command/exportPDF.js +134 -134
- package/src/plugins/command/fileUpload.js +456 -456
- package/src/plugins/command/list_bulleted.js +149 -148
- package/src/plugins/command/list_numbered.js +152 -151
- package/src/plugins/dropdown/align.js +157 -155
- package/src/plugins/dropdown/backgroundColor.js +108 -104
- package/src/plugins/dropdown/font.js +141 -137
- package/src/plugins/dropdown/fontColor.js +109 -105
- package/src/plugins/dropdown/formatBlock.js +170 -178
- package/src/plugins/dropdown/hr.js +152 -152
- package/src/plugins/dropdown/layout.js +83 -83
- package/src/plugins/dropdown/lineHeight.js +131 -130
- package/src/plugins/dropdown/list.js +123 -122
- package/src/plugins/dropdown/paragraphStyle.js +138 -138
- package/src/plugins/dropdown/table.js +4110 -4000
- package/src/plugins/dropdown/template.js +83 -83
- package/src/plugins/dropdown/textStyle.js +149 -149
- package/src/plugins/field/mention.js +242 -242
- package/src/plugins/index.js +120 -120
- package/src/plugins/input/fontSize.js +414 -410
- package/src/plugins/input/pageNavigator.js +71 -70
- package/src/plugins/modal/audio.js +677 -677
- package/src/plugins/modal/drawing.js +537 -531
- package/src/plugins/modal/embed.js +886 -886
- package/src/plugins/modal/image.js +1377 -1376
- package/src/plugins/modal/link.js +248 -240
- package/src/plugins/modal/math.js +563 -563
- package/src/plugins/modal/video.js +1226 -1226
- package/src/plugins/popup/anchor.js +224 -222
- package/src/suneditor.js +114 -107
- package/src/themes/dark.css +132 -122
- package/src/typedef.js +132 -130
- package/types/assets/icons/defaultIcons.d.ts +8 -0
- package/types/core/base/eventManager.d.ts +29 -4
- package/types/core/class/char.d.ts +2 -1
- package/types/core/class/component.d.ts +1 -2
- package/types/core/class/format.d.ts +8 -1
- package/types/core/class/html.d.ts +8 -0
- package/types/core/class/menu.d.ts +8 -0
- package/types/core/class/offset.d.ts +24 -26
- package/types/core/class/selection.d.ts +2 -0
- package/types/core/class/toolbar.d.ts +6 -0
- package/types/core/class/ui.d.ts +1 -1
- package/types/core/editor.d.ts +34 -12
- package/types/core/section/constructor.d.ts +5 -638
- package/types/core/section/documentType.d.ts +12 -2
- package/types/core/section/options.d.ts +740 -0
- package/types/core/util/instanceCheck.d.ts +50 -0
- package/types/editorInjector/_core.d.ts +5 -5
- package/types/editorInjector/index.d.ts +2 -2
- package/types/events.d.ts +2 -0
- package/types/helper/converter.d.ts +9 -0
- package/types/helper/dom/domQuery.d.ts +5 -5
- package/types/helper/dom/domUtils.d.ts +8 -0
- package/types/helper/env.d.ts +6 -1
- package/types/helper/index.d.ts +4 -1
- package/types/index.d.ts +122 -120
- package/types/langs/_Lang.d.ts +194 -194
- package/types/modules/ColorPicker.d.ts +5 -1
- package/types/modules/Controller.d.ts +8 -4
- package/types/modules/Figure.d.ts +2 -1
- package/types/modules/HueSlider.d.ts +4 -1
- package/types/modules/SelectMenu.d.ts +1 -1
- package/types/plugins/command/blockquote.d.ts +1 -0
- package/types/plugins/command/list_bulleted.d.ts +1 -0
- package/types/plugins/command/list_numbered.d.ts +1 -0
- package/types/plugins/dropdown/align.d.ts +1 -0
- package/types/plugins/dropdown/backgroundColor.d.ts +1 -0
- package/types/plugins/dropdown/font.d.ts +1 -0
- package/types/plugins/dropdown/fontColor.d.ts +1 -0
- package/types/plugins/dropdown/formatBlock.d.ts +3 -2
- package/types/plugins/dropdown/lineHeight.d.ts +1 -0
- package/types/plugins/dropdown/list.d.ts +1 -0
- package/types/plugins/dropdown/table.d.ts +6 -0
- package/types/plugins/input/fontSize.d.ts +1 -0
- package/types/plugins/modal/drawing.d.ts +4 -0
- package/types/plugins/modal/link.d.ts +32 -15
- package/types/suneditor.d.ts +13 -9
- package/types/typedef.d.ts +8 -0
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
import EditorInjector from '../../editorInjector';
|
|
2
|
-
import { Browser } from '../../modules';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @class
|
|
6
|
-
* @extends EditorInjector
|
|
7
|
-
* @description Image gallery plugin
|
|
8
|
-
*/
|
|
9
|
-
class ImageGallery extends EditorInjector {
|
|
10
|
-
static key = 'imageGallery';
|
|
11
|
-
static type = 'browser';
|
|
12
|
-
static className = '';
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @constructor
|
|
16
|
-
* @param {__se__EditorCore} editor - The root editor instance
|
|
17
|
-
* @param {Object} pluginOptions
|
|
18
|
-
* @param {Array<*>=} pluginOptions.data - direct data without server calls
|
|
19
|
-
* @param {string=} pluginOptions.url - server request url
|
|
20
|
-
* @param {Object<string, string>=} pluginOptions.headers - server request headers
|
|
21
|
-
*/
|
|
22
|
-
constructor(editor, pluginOptions) {
|
|
23
|
-
// plugin bisic properties
|
|
24
|
-
super(editor);
|
|
25
|
-
this.title = this.lang.imageGallery;
|
|
26
|
-
this.icon = 'image_gallery';
|
|
27
|
-
|
|
28
|
-
// members
|
|
29
|
-
this.onSelectfunction = null;
|
|
30
|
-
|
|
31
|
-
// modules
|
|
32
|
-
this.browser = new Browser(this, {
|
|
33
|
-
title: this.lang.imageGallery,
|
|
34
|
-
data: pluginOptions.data,
|
|
35
|
-
url: pluginOptions.url,
|
|
36
|
-
headers: pluginOptions.headers,
|
|
37
|
-
selectorHandler: this.#SetItem.bind(this),
|
|
38
|
-
columnSize: 4,
|
|
39
|
-
className: 'se-image-gallery'
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
// members
|
|
43
|
-
this.width = this.plugins.image.pluginOptions.defaultWidth === 'auto' ? '' : this.plugins.image.pluginOptions.defaultWidth;
|
|
44
|
-
this.height = this.plugins.image.pluginOptions.defaultHeight === 'auto' ? '' : this.plugins.image.pluginOptions.defaultHeight;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* @editorMethod Modules.Browser
|
|
49
|
-
* @description Executes the method that is called when a "Browser" module's is opened.
|
|
50
|
-
* @param {?(targe: Node) => *=} onSelectfunction method to be executed after selecting an item in the gallery
|
|
51
|
-
*/
|
|
52
|
-
open(onSelectfunction) {
|
|
53
|
-
this.onSelectfunction = onSelectfunction;
|
|
54
|
-
this.browser.open();
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* @editorMethod Modules.Browser
|
|
59
|
-
* @description Executes the method that is called when a "Browser" module's is closed.
|
|
60
|
-
*/
|
|
61
|
-
close() {
|
|
62
|
-
this.onSelectfunction = null;
|
|
63
|
-
this.browser.close();
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* @description Set browser item
|
|
68
|
-
* @param {HTMLImageElement} target - Target element
|
|
69
|
-
*/
|
|
70
|
-
#SetItem(target) {
|
|
71
|
-
if (this.onSelectfunction) {
|
|
72
|
-
this.onSelectfunction(target);
|
|
73
|
-
} else {
|
|
74
|
-
const file = { name: target.getAttribute('data-name'), size: 0 };
|
|
75
|
-
this.plugins.image.init();
|
|
76
|
-
this.plugins.image.create(target.getAttribute('data-command'), null, this.width, this.height, 'none', file, target.alt);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
export default ImageGallery;
|
|
1
|
+
import EditorInjector from '../../editorInjector';
|
|
2
|
+
import { Browser } from '../../modules';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @class
|
|
6
|
+
* @extends EditorInjector
|
|
7
|
+
* @description Image gallery plugin
|
|
8
|
+
*/
|
|
9
|
+
class ImageGallery extends EditorInjector {
|
|
10
|
+
static key = 'imageGallery';
|
|
11
|
+
static type = 'browser';
|
|
12
|
+
static className = '';
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* @constructor
|
|
16
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
17
|
+
* @param {Object} pluginOptions
|
|
18
|
+
* @param {Array<*>=} pluginOptions.data - direct data without server calls
|
|
19
|
+
* @param {string=} pluginOptions.url - server request url
|
|
20
|
+
* @param {Object<string, string>=} pluginOptions.headers - server request headers
|
|
21
|
+
*/
|
|
22
|
+
constructor(editor, pluginOptions) {
|
|
23
|
+
// plugin bisic properties
|
|
24
|
+
super(editor);
|
|
25
|
+
this.title = this.lang.imageGallery;
|
|
26
|
+
this.icon = 'image_gallery';
|
|
27
|
+
|
|
28
|
+
// members
|
|
29
|
+
this.onSelectfunction = null;
|
|
30
|
+
|
|
31
|
+
// modules
|
|
32
|
+
this.browser = new Browser(this, {
|
|
33
|
+
title: this.lang.imageGallery,
|
|
34
|
+
data: pluginOptions.data,
|
|
35
|
+
url: pluginOptions.url,
|
|
36
|
+
headers: pluginOptions.headers,
|
|
37
|
+
selectorHandler: this.#SetItem.bind(this),
|
|
38
|
+
columnSize: 4,
|
|
39
|
+
className: 'se-image-gallery'
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// members
|
|
43
|
+
this.width = this.plugins.image.pluginOptions.defaultWidth === 'auto' ? '' : this.plugins.image.pluginOptions.defaultWidth;
|
|
44
|
+
this.height = this.plugins.image.pluginOptions.defaultHeight === 'auto' ? '' : this.plugins.image.pluginOptions.defaultHeight;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @editorMethod Modules.Browser
|
|
49
|
+
* @description Executes the method that is called when a "Browser" module's is opened.
|
|
50
|
+
* @param {?(targe: Node) => *=} onSelectfunction method to be executed after selecting an item in the gallery
|
|
51
|
+
*/
|
|
52
|
+
open(onSelectfunction) {
|
|
53
|
+
this.onSelectfunction = onSelectfunction;
|
|
54
|
+
this.browser.open();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @editorMethod Modules.Browser
|
|
59
|
+
* @description Executes the method that is called when a "Browser" module's is closed.
|
|
60
|
+
*/
|
|
61
|
+
close() {
|
|
62
|
+
this.onSelectfunction = null;
|
|
63
|
+
this.browser.close();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @description Set browser item
|
|
68
|
+
* @param {HTMLImageElement} target - Target element
|
|
69
|
+
*/
|
|
70
|
+
#SetItem(target) {
|
|
71
|
+
if (this.onSelectfunction) {
|
|
72
|
+
this.onSelectfunction(target);
|
|
73
|
+
} else {
|
|
74
|
+
const file = { name: target.getAttribute('data-name'), size: 0 };
|
|
75
|
+
this.plugins.image.init();
|
|
76
|
+
this.plugins.image.create(target.getAttribute('data-command'), null, this.width, this.height, 'none', file, target.alt);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export default ImageGallery;
|
|
@@ -1,103 +1,103 @@
|
|
|
1
|
-
import EditorInjector from '../../editorInjector';
|
|
2
|
-
import { Browser } from '../../modules';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @typedef {import('../../modules/Browser').BrowserFile} BrowserFile_videoGallery
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @class
|
|
10
|
-
* @extends EditorInjector
|
|
11
|
-
* @description Video gallery plugin
|
|
12
|
-
*/
|
|
13
|
-
class VideoGallery extends EditorInjector {
|
|
14
|
-
static key = 'videoGallery';
|
|
15
|
-
static type = 'browser';
|
|
16
|
-
static className = '';
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* @constructor
|
|
20
|
-
* @param {__se__EditorCore} editor - The root editor instance
|
|
21
|
-
* @param {Object} pluginOptions
|
|
22
|
-
* @param {Array<*>=} pluginOptions.data - direct data without server calls
|
|
23
|
-
* @param {string=} pluginOptions.url - server request url
|
|
24
|
-
* @param {Object<string, string>=} pluginOptions.headers - server request headers
|
|
25
|
-
* @param {string|((item: BrowserFile_videoGallery) => string)} pluginOptions.thumbnail - default thumbnail
|
|
26
|
-
*/
|
|
27
|
-
constructor(editor, pluginOptions) {
|
|
28
|
-
// plugin bisic properties
|
|
29
|
-
super(editor);
|
|
30
|
-
this.title = this.lang.videoGallery;
|
|
31
|
-
this.icon = 'video_gallery';
|
|
32
|
-
|
|
33
|
-
// members
|
|
34
|
-
this.onSelectfunction = null;
|
|
35
|
-
|
|
36
|
-
// modules
|
|
37
|
-
const thumbnail = typeof pluginOptions.thumbnail === 'string' ? pluginOptions.thumbnail : this.icons.video_thumbnail;
|
|
38
|
-
this.browser = new Browser(this, {
|
|
39
|
-
title: this.lang.videoGallery,
|
|
40
|
-
data: pluginOptions.data,
|
|
41
|
-
url: pluginOptions.url,
|
|
42
|
-
headers: pluginOptions.headers,
|
|
43
|
-
selectorHandler: this.#SetItem.bind(this),
|
|
44
|
-
columnSize: 4,
|
|
45
|
-
className: 'se-video-gallery',
|
|
46
|
-
thumbnail: typeof pluginOptions.thumbnail === 'function' ? pluginOptions.thumbnail : () => thumbnail,
|
|
47
|
-
props: ['frame']
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
// members
|
|
51
|
-
this.width = this.plugins.video.pluginOptions.defaultWidth === 'auto' ? '' : this.plugins.video.pluginOptions.defaultWidth;
|
|
52
|
-
this.height = this.plugins.video.pluginOptions.defaultHeight === 'auto' ? '' : this.plugins.video.pluginOptions.defaultHeight;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* @editorMethod Modules.Browser
|
|
57
|
-
* @description Executes the method that is called when a "Browser" module's is opened.
|
|
58
|
-
* @param {?(targe: Node) => *=} onSelectfunction method to be executed after selecting an item in the gallery
|
|
59
|
-
*/
|
|
60
|
-
open(onSelectfunction) {
|
|
61
|
-
this.onSelectfunction = onSelectfunction;
|
|
62
|
-
this.browser.open();
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* @editorMethod Modules.Browser
|
|
67
|
-
* @description Executes the method that is called when a "Browser" module's is closed.
|
|
68
|
-
*/
|
|
69
|
-
close() {
|
|
70
|
-
this.onSelectfunction = null;
|
|
71
|
-
this.browser.close();
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* @description Set browser item
|
|
76
|
-
* @param {HTMLElement} target - Target element
|
|
77
|
-
*/
|
|
78
|
-
#SetItem(target) {
|
|
79
|
-
if (this.onSelectfunction) {
|
|
80
|
-
this.onSelectfunction(target);
|
|
81
|
-
} else {
|
|
82
|
-
let url = target.getAttribute('data-command');
|
|
83
|
-
const processUrl = this.plugins.video.findProcessUrl(url);
|
|
84
|
-
if (processUrl) {
|
|
85
|
-
url = processUrl.url;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const file = { name: target.getAttribute('data-name'), size: 0 };
|
|
89
|
-
this.plugins.video.init();
|
|
90
|
-
this.plugins.video.create(
|
|
91
|
-
this.plugins.video[target.getAttribute('data-frame') === 'iframe' ? 'createIframeTag' : 'createVideoTag']({ poster: target.getAttribute('data-thumbnail') }),
|
|
92
|
-
url,
|
|
93
|
-
null,
|
|
94
|
-
this.width,
|
|
95
|
-
this.height,
|
|
96
|
-
false,
|
|
97
|
-
file
|
|
98
|
-
);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export default VideoGallery;
|
|
1
|
+
import EditorInjector from '../../editorInjector';
|
|
2
|
+
import { Browser } from '../../modules';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {import('../../modules/Browser').BrowserFile} BrowserFile_videoGallery
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* @class
|
|
10
|
+
* @extends EditorInjector
|
|
11
|
+
* @description Video gallery plugin
|
|
12
|
+
*/
|
|
13
|
+
class VideoGallery extends EditorInjector {
|
|
14
|
+
static key = 'videoGallery';
|
|
15
|
+
static type = 'browser';
|
|
16
|
+
static className = '';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @constructor
|
|
20
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
21
|
+
* @param {Object} pluginOptions
|
|
22
|
+
* @param {Array<*>=} pluginOptions.data - direct data without server calls
|
|
23
|
+
* @param {string=} pluginOptions.url - server request url
|
|
24
|
+
* @param {Object<string, string>=} pluginOptions.headers - server request headers
|
|
25
|
+
* @param {string|((item: BrowserFile_videoGallery) => string)} pluginOptions.thumbnail - default thumbnail
|
|
26
|
+
*/
|
|
27
|
+
constructor(editor, pluginOptions) {
|
|
28
|
+
// plugin bisic properties
|
|
29
|
+
super(editor);
|
|
30
|
+
this.title = this.lang.videoGallery;
|
|
31
|
+
this.icon = 'video_gallery';
|
|
32
|
+
|
|
33
|
+
// members
|
|
34
|
+
this.onSelectfunction = null;
|
|
35
|
+
|
|
36
|
+
// modules
|
|
37
|
+
const thumbnail = typeof pluginOptions.thumbnail === 'string' ? pluginOptions.thumbnail : this.icons.video_thumbnail;
|
|
38
|
+
this.browser = new Browser(this, {
|
|
39
|
+
title: this.lang.videoGallery,
|
|
40
|
+
data: pluginOptions.data,
|
|
41
|
+
url: pluginOptions.url,
|
|
42
|
+
headers: pluginOptions.headers,
|
|
43
|
+
selectorHandler: this.#SetItem.bind(this),
|
|
44
|
+
columnSize: 4,
|
|
45
|
+
className: 'se-video-gallery',
|
|
46
|
+
thumbnail: typeof pluginOptions.thumbnail === 'function' ? pluginOptions.thumbnail : () => thumbnail,
|
|
47
|
+
props: ['frame']
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// members
|
|
51
|
+
this.width = this.plugins.video.pluginOptions.defaultWidth === 'auto' ? '' : this.plugins.video.pluginOptions.defaultWidth;
|
|
52
|
+
this.height = this.plugins.video.pluginOptions.defaultHeight === 'auto' ? '' : this.plugins.video.pluginOptions.defaultHeight;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* @editorMethod Modules.Browser
|
|
57
|
+
* @description Executes the method that is called when a "Browser" module's is opened.
|
|
58
|
+
* @param {?(targe: Node) => *=} onSelectfunction method to be executed after selecting an item in the gallery
|
|
59
|
+
*/
|
|
60
|
+
open(onSelectfunction) {
|
|
61
|
+
this.onSelectfunction = onSelectfunction;
|
|
62
|
+
this.browser.open();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @editorMethod Modules.Browser
|
|
67
|
+
* @description Executes the method that is called when a "Browser" module's is closed.
|
|
68
|
+
*/
|
|
69
|
+
close() {
|
|
70
|
+
this.onSelectfunction = null;
|
|
71
|
+
this.browser.close();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* @description Set browser item
|
|
76
|
+
* @param {HTMLElement} target - Target element
|
|
77
|
+
*/
|
|
78
|
+
#SetItem(target) {
|
|
79
|
+
if (this.onSelectfunction) {
|
|
80
|
+
this.onSelectfunction(target);
|
|
81
|
+
} else {
|
|
82
|
+
let url = target.getAttribute('data-command');
|
|
83
|
+
const processUrl = this.plugins.video.findProcessUrl(url);
|
|
84
|
+
if (processUrl) {
|
|
85
|
+
url = processUrl.url;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const file = { name: target.getAttribute('data-name'), size: 0 };
|
|
89
|
+
this.plugins.video.init();
|
|
90
|
+
this.plugins.video.create(
|
|
91
|
+
this.plugins.video[target.getAttribute('data-frame') === 'iframe' ? 'createIframeTag' : 'createVideoTag']({ poster: target.getAttribute('data-thumbnail') }),
|
|
92
|
+
url,
|
|
93
|
+
null,
|
|
94
|
+
this.width,
|
|
95
|
+
this.height,
|
|
96
|
+
false,
|
|
97
|
+
file
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export default VideoGallery;
|
|
@@ -1,60 +1,61 @@
|
|
|
1
|
-
import EditorInjector from '../../editorInjector';
|
|
2
|
-
import { dom } from '../../helper';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @class
|
|
6
|
-
* @description Blockquote plugin
|
|
7
|
-
*/
|
|
8
|
-
class Blockquote extends EditorInjector {
|
|
9
|
-
static key = 'blockquote';
|
|
10
|
-
static type = 'command';
|
|
11
|
-
static className = '';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @constructor
|
|
15
|
-
* @param {__se__EditorCore} editor - The root editor instance
|
|
16
|
-
*/
|
|
17
|
-
constructor(editor) {
|
|
18
|
-
super(editor);
|
|
19
|
-
// plugin basic properties
|
|
20
|
-
this.title = this.lang.tag_blockquote;
|
|
21
|
-
this.icon = 'blockquote';
|
|
22
|
-
|
|
23
|
-
// members
|
|
24
|
-
this.quoteTag = dom.utils.createElement('BLOCKQUOTE');
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* @editorMethod Editor.EventManager
|
|
29
|
-
* @description Executes the method that is called whenever the cursor position changes.
|
|
30
|
-
* @param {?HTMLElement=} element - Node element where the cursor is currently located
|
|
31
|
-
* @param {?HTMLElement=} target - The plugin's toolbar button element
|
|
32
|
-
* @returns {boolean} - Whether the plugin is active
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
* @
|
|
47
|
-
*
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
|
|
1
|
+
import EditorInjector from '../../editorInjector';
|
|
2
|
+
import { dom } from '../../helper';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @class
|
|
6
|
+
* @description Blockquote plugin
|
|
7
|
+
*/
|
|
8
|
+
class Blockquote extends EditorInjector {
|
|
9
|
+
static key = 'blockquote';
|
|
10
|
+
static type = 'command';
|
|
11
|
+
static className = '';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @constructor
|
|
15
|
+
* @param {__se__EditorCore} editor - The root editor instance
|
|
16
|
+
*/
|
|
17
|
+
constructor(editor) {
|
|
18
|
+
super(editor);
|
|
19
|
+
// plugin basic properties
|
|
20
|
+
this.title = this.lang.tag_blockquote;
|
|
21
|
+
this.icon = 'blockquote';
|
|
22
|
+
|
|
23
|
+
// members
|
|
24
|
+
this.quoteTag = dom.utils.createElement('BLOCKQUOTE');
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* @editorMethod Editor.EventManager
|
|
29
|
+
* @description Executes the method that is called whenever the cursor position changes.
|
|
30
|
+
* @param {?HTMLElement=} element - Node element where the cursor is currently located
|
|
31
|
+
* @param {?HTMLElement=} target - The plugin's toolbar button element
|
|
32
|
+
* @returns {boolean} - Whether the plugin is active
|
|
33
|
+
* - If it returns "undefined", it will no longer be called in this scope.
|
|
34
|
+
*/
|
|
35
|
+
active(element, target) {
|
|
36
|
+
if (/blockquote/i.test(element?.nodeName)) {
|
|
37
|
+
dom.utils.addClass(target, 'active');
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
dom.utils.removeClass(target, 'active');
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* @editorMethod Editor.core
|
|
47
|
+
* @description Executes the main execution method of the plugin.
|
|
48
|
+
* - It is executed by clicking a toolbar "command" button or calling an API.
|
|
49
|
+
*/
|
|
50
|
+
action() {
|
|
51
|
+
const currentBlockquote = dom.query.getParentElement(this.selection.getNode(), 'blockquote');
|
|
52
|
+
|
|
53
|
+
if (currentBlockquote) {
|
|
54
|
+
this.format.removeBlock(currentBlockquote, { selectedFormats: null, newBlockElement: null, shouldDelete: false, skipHistory: false });
|
|
55
|
+
} else {
|
|
56
|
+
this.format.applyBlock(this.quoteTag.cloneNode(false));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export default Blockquote;
|