@ckeditor/ckeditor5-image 36.0.1 → 37.0.0-alpha.0
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/build/image.js +1 -1
- package/package.json +40 -35
- package/src/autoimage.d.ts +53 -0
- package/src/autoimage.js +111 -160
- package/src/image/converters.d.ts +66 -0
- package/src/image/converters.js +200 -261
- package/src/image/imageblockediting.d.ts +57 -0
- package/src/image/imageblockediting.js +111 -155
- package/src/image/imageediting.d.ts +34 -0
- package/src/image/imageediting.js +53 -67
- package/src/image/imageinlineediting.d.ts +53 -0
- package/src/image/imageinlineediting.js +135 -180
- package/src/image/imageloadobserver.d.ts +44 -0
- package/src/image/imageloadobserver.js +28 -47
- package/src/image/imagetypecommand.d.ts +46 -0
- package/src/image/imagetypecommand.js +67 -95
- package/src/image/insertimagecommand.d.ts +72 -0
- package/src/image/insertimagecommand.js +95 -101
- package/src/image/replaceimagesourcecommand.d.ts +39 -0
- package/src/image/replaceimagesourcecommand.js +28 -33
- package/src/image/ui/utils.d.ts +25 -0
- package/src/image/ui/utils.js +25 -35
- package/src/image/utils.d.ts +52 -0
- package/src/image/utils.js +63 -90
- package/src/image.d.ts +38 -0
- package/src/image.js +13 -43
- package/src/imageblock.d.ts +35 -0
- package/src/imageblock.js +12 -21
- package/src/imagecaption/imagecaptionediting.d.ts +92 -0
- package/src/imagecaption/imagecaptionediting.js +203 -262
- package/src/imagecaption/imagecaptionui.d.ts +30 -0
- package/src/imagecaption/imagecaptionui.js +46 -63
- package/src/imagecaption/imagecaptionutils.d.ts +42 -0
- package/src/imagecaption/imagecaptionutils.js +51 -78
- package/src/imagecaption/toggleimagecaptioncommand.d.ts +71 -0
- package/src/imagecaption/toggleimagecaptioncommand.js +112 -138
- package/src/imagecaption.d.ts +29 -0
- package/src/imagecaption.js +12 -19
- package/src/imageconfig.d.ts +723 -0
- package/src/imageconfig.js +5 -0
- package/src/imageinline.d.ts +35 -0
- package/src/imageinline.js +12 -21
- package/src/imageinsert/imageinsertui.d.ts +49 -0
- package/src/imageinsert/imageinsertui.js +120 -158
- package/src/imageinsert/ui/imageinsertformrowview.d.ts +61 -0
- package/src/imageinsert/ui/imageinsertformrowview.js +37 -86
- package/src/imageinsert/ui/imageinsertpanelview.d.ts +106 -0
- package/src/imageinsert/ui/imageinsertpanelview.js +148 -258
- package/src/imageinsert/utils.d.ts +26 -0
- package/src/imageinsert/utils.js +42 -58
- package/src/imageinsert.d.ts +35 -0
- package/src/imageinsert.js +13 -84
- package/src/imageinsertviaurl.d.ts +34 -0
- package/src/imageinsertviaurl.js +12 -18
- package/src/imageresize/imageresizebuttons.d.ts +66 -0
- package/src/imageresize/imageresizebuttons.js +190 -255
- package/src/imageresize/imageresizeediting.d.ts +42 -0
- package/src/imageresize/imageresizeediting.js +100 -125
- package/src/imageresize/imageresizehandles.d.ts +30 -0
- package/src/imageresize/imageresizehandles.js +91 -123
- package/src/imageresize/resizeimagecommand.d.ts +47 -0
- package/src/imageresize/resizeimagecommand.js +48 -55
- package/src/imageresize.d.ts +29 -0
- package/src/imageresize.js +12 -209
- package/src/imagestyle/converters.d.ts +24 -0
- package/src/imagestyle/converters.js +60 -78
- package/src/imagestyle/imagestylecommand.d.ts +70 -0
- package/src/imagestyle/imagestylecommand.js +88 -124
- package/src/imagestyle/imagestyleediting.d.ts +54 -0
- package/src/imagestyle/imagestyleediting.js +90 -137
- package/src/imagestyle/imagestyleui.d.ts +60 -0
- package/src/imagestyle/imagestyleui.js +169 -277
- package/src/imagestyle/utils.d.ts +61 -0
- package/src/imagestyle/utils.js +253 -306
- package/src/imagestyle.d.ts +35 -0
- package/src/imagestyle.js +13 -261
- package/src/imagetextalternative/imagetextalternativecommand.d.ts +39 -0
- package/src/imagetextalternative/imagetextalternativecommand.js +31 -47
- package/src/imagetextalternative/imagetextalternativeediting.d.ts +32 -0
- package/src/imagetextalternative/imagetextalternativeediting.js +18 -25
- package/src/imagetextalternative/imagetextalternativeui.d.ts +72 -0
- package/src/imagetextalternative/imagetextalternativeui.js +156 -219
- package/src/imagetextalternative/ui/textalternativeformview.d.ts +72 -0
- package/src/imagetextalternative/ui/textalternativeformview.js +103 -192
- package/src/imagetextalternative.d.ts +32 -0
- package/src/imagetextalternative.js +12 -18
- package/src/imagetoolbar.d.ts +38 -0
- package/src/imagetoolbar.js +31 -77
- package/src/imageupload/imageuploadediting.d.ts +114 -0
- package/src/imageupload/imageuploadediting.js +308 -427
- package/src/imageupload/imageuploadprogress.d.ts +47 -0
- package/src/imageupload/imageuploadprogress.js +180 -261
- package/src/imageupload/imageuploadui.d.ts +29 -0
- package/src/imageupload/imageuploadui.js +41 -57
- package/src/imageupload/uploadimagecommand.d.ts +65 -0
- package/src/imageupload/uploadimagecommand.js +73 -87
- package/src/imageupload/utils.d.ts +33 -0
- package/src/imageupload/utils.js +87 -112
- package/src/imageupload.d.ts +34 -0
- package/src/imageupload.js +12 -61
- package/src/imageutils.d.ts +108 -0
- package/src/imageutils.js +233 -329
- package/src/index.d.ts +31 -0
- package/src/index.js +0 -2
- package/src/pictureediting.d.ts +86 -0
- package/src/pictureediting.js +101 -120
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @module image/imageupload/imageuploadprogress
|
|
7
|
+
*/
|
|
8
|
+
import { type Editor, Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
import '../../theme/imageuploadprogress.css';
|
|
10
|
+
import '../../theme/imageuploadicon.css';
|
|
11
|
+
import '../../theme/imageuploadloader.css';
|
|
12
|
+
/**
|
|
13
|
+
* The image upload progress plugin.
|
|
14
|
+
* It shows a placeholder when the image is read from the disk and a progress bar while the image is uploading.
|
|
15
|
+
*/
|
|
16
|
+
export default class ImageUploadProgress extends Plugin {
|
|
17
|
+
/**
|
|
18
|
+
* @inheritDoc
|
|
19
|
+
*/
|
|
20
|
+
static get pluginName(): 'ImageUploadProgress';
|
|
21
|
+
/**
|
|
22
|
+
* The image placeholder that is displayed before real image data can be accessed.
|
|
23
|
+
*
|
|
24
|
+
* For the record, this image is a 1x1 px GIF with an aspect ratio set by CSS.
|
|
25
|
+
*/
|
|
26
|
+
private placeholder;
|
|
27
|
+
/**
|
|
28
|
+
* @inheritDoc
|
|
29
|
+
*/
|
|
30
|
+
constructor(editor: Editor);
|
|
31
|
+
/**
|
|
32
|
+
* @inheritDoc
|
|
33
|
+
*/
|
|
34
|
+
init(): void;
|
|
35
|
+
/**
|
|
36
|
+
* This method is called each time the image `uploadStatus` attribute is changed.
|
|
37
|
+
*
|
|
38
|
+
* @param evt An object containing information about the fired event.
|
|
39
|
+
* @param data Additional information about the change.
|
|
40
|
+
*/
|
|
41
|
+
private uploadStatusChange;
|
|
42
|
+
}
|
|
43
|
+
declare module '@ckeditor/ckeditor5-core' {
|
|
44
|
+
interface PluginsMap {
|
|
45
|
+
[ImageUploadProgress.pluginName]: ImageUploadProgress;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
@@ -2,291 +2,210 @@
|
|
|
2
2
|
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
3
|
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
5
|
/**
|
|
7
6
|
* @module image/imageupload/imageuploadprogress
|
|
8
7
|
*/
|
|
9
|
-
|
|
10
8
|
/* globals setTimeout */
|
|
11
|
-
|
|
12
9
|
import { Plugin } from 'ckeditor5/src/core';
|
|
13
10
|
import { FileRepository } from 'ckeditor5/src/upload';
|
|
14
|
-
|
|
15
11
|
import '../../theme/imageuploadprogress.css';
|
|
16
12
|
import '../../theme/imageuploadicon.css';
|
|
17
13
|
import '../../theme/imageuploadloader.css';
|
|
18
|
-
|
|
19
14
|
/**
|
|
20
15
|
* The image upload progress plugin.
|
|
21
16
|
* It shows a placeholder when the image is read from the disk and a progress bar while the image is uploading.
|
|
22
|
-
*
|
|
23
|
-
* @extends module:core/plugin~Plugin
|
|
24
17
|
*/
|
|
25
18
|
export default class ImageUploadProgress extends Plugin {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
if ( !loader ) {
|
|
106
|
-
// There is no loader associated with uploadId - this means that image came from external changes.
|
|
107
|
-
// In such cases we still want to show the placeholder until image is fully uploaded.
|
|
108
|
-
// Show placeholder if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.
|
|
109
|
-
_showPlaceholder( imageUtils, placeholder, viewFigure, viewWriter );
|
|
110
|
-
} else {
|
|
111
|
-
// Hide placeholder and initialize progress bar showing upload progress.
|
|
112
|
-
_hidePlaceholder( viewFigure, viewWriter );
|
|
113
|
-
_showProgressBar( viewFigure, viewWriter, loader, editor.editing.view );
|
|
114
|
-
_displayLocalImage( imageUtils, viewFigure, viewWriter, loader );
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if ( status == 'complete' && fileRepository.loaders.get( uploadId ) ) {
|
|
121
|
-
_showCompleteIcon( viewFigure, viewWriter, editor.editing.view );
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
// Clean up.
|
|
125
|
-
_hideProgressBar( viewFigure, viewWriter );
|
|
126
|
-
_hidePlaceholder( viewFigure, viewWriter );
|
|
127
|
-
_stopAppearEffect( viewFigure, viewWriter );
|
|
128
|
-
}
|
|
19
|
+
/**
|
|
20
|
+
* @inheritDoc
|
|
21
|
+
*/
|
|
22
|
+
static get pluginName() {
|
|
23
|
+
return 'ImageUploadProgress';
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @inheritDoc
|
|
27
|
+
*/
|
|
28
|
+
constructor(editor) {
|
|
29
|
+
super(editor);
|
|
30
|
+
/**
|
|
31
|
+
* This method is called each time the image `uploadStatus` attribute is changed.
|
|
32
|
+
*
|
|
33
|
+
* @param evt An object containing information about the fired event.
|
|
34
|
+
* @param data Additional information about the change.
|
|
35
|
+
*/
|
|
36
|
+
this.uploadStatusChange = (evt, data, conversionApi) => {
|
|
37
|
+
const editor = this.editor;
|
|
38
|
+
const modelImage = data.item;
|
|
39
|
+
const uploadId = modelImage.getAttribute('uploadId');
|
|
40
|
+
if (!conversionApi.consumable.consume(data.item, evt.name)) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const imageUtils = editor.plugins.get('ImageUtils');
|
|
44
|
+
const fileRepository = editor.plugins.get(FileRepository);
|
|
45
|
+
const status = uploadId ? data.attributeNewValue : null;
|
|
46
|
+
const placeholder = this.placeholder;
|
|
47
|
+
const viewFigure = editor.editing.mapper.toViewElement(modelImage);
|
|
48
|
+
const viewWriter = conversionApi.writer;
|
|
49
|
+
if (status == 'reading') {
|
|
50
|
+
// Start "appearing" effect and show placeholder with infinite progress bar on the top
|
|
51
|
+
// while image is read from disk.
|
|
52
|
+
_startAppearEffect(viewFigure, viewWriter);
|
|
53
|
+
_showPlaceholder(imageUtils, placeholder, viewFigure, viewWriter);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Show progress bar on the top of the image when image is uploading.
|
|
57
|
+
if (status == 'uploading') {
|
|
58
|
+
const loader = fileRepository.loaders.get(uploadId);
|
|
59
|
+
// Start appear effect if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.
|
|
60
|
+
_startAppearEffect(viewFigure, viewWriter);
|
|
61
|
+
if (!loader) {
|
|
62
|
+
// There is no loader associated with uploadId - this means that image came from external changes.
|
|
63
|
+
// In such cases we still want to show the placeholder until image is fully uploaded.
|
|
64
|
+
// Show placeholder if needed - see https://github.com/ckeditor/ckeditor5-image/issues/191.
|
|
65
|
+
_showPlaceholder(imageUtils, placeholder, viewFigure, viewWriter);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// Hide placeholder and initialize progress bar showing upload progress.
|
|
69
|
+
_hidePlaceholder(viewFigure, viewWriter);
|
|
70
|
+
_showProgressBar(viewFigure, viewWriter, loader, editor.editing.view);
|
|
71
|
+
_displayLocalImage(imageUtils, viewFigure, viewWriter, loader);
|
|
72
|
+
}
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (status == 'complete' && fileRepository.loaders.get(uploadId)) {
|
|
76
|
+
_showCompleteIcon(viewFigure, viewWriter, editor.editing.view);
|
|
77
|
+
}
|
|
78
|
+
// Clean up.
|
|
79
|
+
_hideProgressBar(viewFigure, viewWriter);
|
|
80
|
+
_hidePlaceholder(viewFigure, viewWriter);
|
|
81
|
+
_stopAppearEffect(viewFigure, viewWriter);
|
|
82
|
+
};
|
|
83
|
+
this.placeholder = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* @inheritDoc
|
|
87
|
+
*/
|
|
88
|
+
init() {
|
|
89
|
+
const editor = this.editor;
|
|
90
|
+
// Upload status change - update image's view according to that status.
|
|
91
|
+
if (editor.plugins.has('ImageBlockEditing')) {
|
|
92
|
+
editor.editing.downcastDispatcher.on('attribute:uploadStatus:imageBlock', this.uploadStatusChange);
|
|
93
|
+
}
|
|
94
|
+
if (editor.plugins.has('ImageInlineEditing')) {
|
|
95
|
+
editor.editing.downcastDispatcher.on('attribute:uploadStatus:imageInline', this.uploadStatusChange);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
129
98
|
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
writer.addClass( 'ck-appear', viewFigure );
|
|
138
|
-
}
|
|
99
|
+
/**
|
|
100
|
+
* Adds ck-appear class to the image figure if one is not already applied.
|
|
101
|
+
*/
|
|
102
|
+
function _startAppearEffect(viewFigure, writer) {
|
|
103
|
+
if (!viewFigure.hasClass('ck-appear')) {
|
|
104
|
+
writer.addClass('ck-appear', viewFigure);
|
|
105
|
+
}
|
|
139
106
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
function _stopAppearEffect( viewFigure, writer ) {
|
|
146
|
-
writer.removeClass( 'ck-appear', viewFigure );
|
|
107
|
+
/**
|
|
108
|
+
* Removes ck-appear class to the image figure if one is not already removed.
|
|
109
|
+
*/
|
|
110
|
+
function _stopAppearEffect(viewFigure, writer) {
|
|
111
|
+
writer.removeClass('ck-appear', viewFigure);
|
|
147
112
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
if ( viewImg.getAttribute( 'src' ) !== placeholder ) {
|
|
163
|
-
writer.setAttribute( 'src', placeholder, viewImg );
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
if ( !_getUIElement( viewFigure, 'placeholder' ) ) {
|
|
167
|
-
writer.insert( writer.createPositionAfter( viewImg ), _createPlaceholder( writer ) );
|
|
168
|
-
}
|
|
113
|
+
/**
|
|
114
|
+
* Shows placeholder together with infinite progress bar on given image figure.
|
|
115
|
+
*/
|
|
116
|
+
function _showPlaceholder(imageUtils, placeholder, viewFigure, writer) {
|
|
117
|
+
if (!viewFigure.hasClass('ck-image-upload-placeholder')) {
|
|
118
|
+
writer.addClass('ck-image-upload-placeholder', viewFigure);
|
|
119
|
+
}
|
|
120
|
+
const viewImg = imageUtils.findViewImgElement(viewFigure);
|
|
121
|
+
if (viewImg.getAttribute('src') !== placeholder) {
|
|
122
|
+
writer.setAttribute('src', placeholder, viewImg);
|
|
123
|
+
}
|
|
124
|
+
if (!_getUIElement(viewFigure, 'placeholder')) {
|
|
125
|
+
writer.insert(writer.createPositionAfter(viewImg), _createPlaceholder(writer));
|
|
126
|
+
}
|
|
169
127
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
_removeUIElement( viewFigure, writer, 'placeholder' );
|
|
128
|
+
/**
|
|
129
|
+
* Removes placeholder together with infinite progress bar on given image figure.
|
|
130
|
+
*/
|
|
131
|
+
function _hidePlaceholder(viewFigure, writer) {
|
|
132
|
+
if (viewFigure.hasClass('ck-image-upload-placeholder')) {
|
|
133
|
+
writer.removeClass('ck-image-upload-placeholder', viewFigure);
|
|
134
|
+
}
|
|
135
|
+
_removeUIElement(viewFigure, writer, 'placeholder');
|
|
181
136
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
//
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
loader.on( 'change:uploadedPercent', ( evt, name, value ) => {
|
|
196
|
-
view.change( writer => {
|
|
197
|
-
writer.setStyle( 'width', value + '%', progressBar );
|
|
198
|
-
} );
|
|
199
|
-
} );
|
|
137
|
+
/**
|
|
138
|
+
* Shows progress bar displaying upload progress.
|
|
139
|
+
* Attaches it to the file loader to update when upload percentace is changed.
|
|
140
|
+
*/
|
|
141
|
+
function _showProgressBar(viewFigure, writer, loader, view) {
|
|
142
|
+
const progressBar = _createProgressBar(writer);
|
|
143
|
+
writer.insert(writer.createPositionAt(viewFigure, 'end'), progressBar);
|
|
144
|
+
// Update progress bar width when uploadedPercent is changed.
|
|
145
|
+
loader.on('change:uploadedPercent', (evt, name, value) => {
|
|
146
|
+
view.change(writer => {
|
|
147
|
+
writer.setStyle('width', value + '%', progressBar);
|
|
148
|
+
});
|
|
149
|
+
});
|
|
200
150
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
function _hideProgressBar( viewFigure, writer ) {
|
|
207
|
-
_removeUIElement( viewFigure, writer, 'progressBar' );
|
|
151
|
+
/**
|
|
152
|
+
* Hides upload progress bar.
|
|
153
|
+
*/
|
|
154
|
+
function _hideProgressBar(viewFigure, writer) {
|
|
155
|
+
_removeUIElement(viewFigure, writer, 'progressBar');
|
|
208
156
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
writer.insert( writer.createPositionAt( viewFigure, 'end' ), completeIcon );
|
|
219
|
-
|
|
220
|
-
setTimeout( () => {
|
|
221
|
-
view.change( writer => writer.remove( writer.createRangeOn( completeIcon ) ) );
|
|
222
|
-
}, 3000 );
|
|
157
|
+
/**
|
|
158
|
+
* Shows complete icon and hides after a certain amount of time.
|
|
159
|
+
*/
|
|
160
|
+
function _showCompleteIcon(viewFigure, writer, view) {
|
|
161
|
+
const completeIcon = writer.createUIElement('div', { class: 'ck-image-upload-complete-icon' });
|
|
162
|
+
writer.insert(writer.createPositionAt(viewFigure, 'end'), completeIcon);
|
|
163
|
+
setTimeout(() => {
|
|
164
|
+
view.change(writer => writer.remove(writer.createRangeOn(completeIcon)));
|
|
165
|
+
}, 3000);
|
|
223
166
|
}
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
const progressBar = writer.createUIElement( 'div', { class: 'ck-progress-bar' } );
|
|
232
|
-
|
|
233
|
-
writer.setCustomProperty( 'progressBar', true, progressBar );
|
|
234
|
-
|
|
235
|
-
return progressBar;
|
|
167
|
+
/**
|
|
168
|
+
* Create progress bar element using {@link module:engine/view/uielement~UIElement}.
|
|
169
|
+
*/
|
|
170
|
+
function _createProgressBar(writer) {
|
|
171
|
+
const progressBar = writer.createUIElement('div', { class: 'ck-progress-bar' });
|
|
172
|
+
writer.setCustomProperty('progressBar', true, progressBar);
|
|
173
|
+
return progressBar;
|
|
236
174
|
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
const placeholder = writer.createUIElement( 'div', { class: 'ck-upload-placeholder-loader' } );
|
|
245
|
-
|
|
246
|
-
writer.setCustomProperty( 'placeholder', true, placeholder );
|
|
247
|
-
|
|
248
|
-
return placeholder;
|
|
175
|
+
/**
|
|
176
|
+
* Create placeholder element using {@link module:engine/view/uielement~UIElement}.
|
|
177
|
+
*/
|
|
178
|
+
function _createPlaceholder(writer) {
|
|
179
|
+
const placeholder = writer.createUIElement('div', { class: 'ck-upload-placeholder-loader' });
|
|
180
|
+
writer.setCustomProperty('placeholder', true, placeholder);
|
|
181
|
+
return placeholder;
|
|
249
182
|
}
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
if ( child.getCustomProperty( uniqueProperty ) ) {
|
|
261
|
-
return child;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
183
|
+
/**
|
|
184
|
+
* Returns {@link module:engine/view/uielement~UIElement} of given unique property from image figure element.
|
|
185
|
+
* Returns `undefined` if element is not found.
|
|
186
|
+
*/
|
|
187
|
+
function _getUIElement(imageFigure, uniqueProperty) {
|
|
188
|
+
for (const child of imageFigure.getChildren()) {
|
|
189
|
+
if (child.getCustomProperty(uniqueProperty)) {
|
|
190
|
+
return child;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
264
193
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
const element = _getUIElement( viewFigure, uniqueProperty );
|
|
274
|
-
|
|
275
|
-
if ( element ) {
|
|
276
|
-
writer.remove( writer.createRangeOn( element ) );
|
|
277
|
-
}
|
|
194
|
+
/**
|
|
195
|
+
* Removes {@link module:engine/view/uielement~UIElement} of given unique property from image figure element.
|
|
196
|
+
*/
|
|
197
|
+
function _removeUIElement(viewFigure, writer, uniqueProperty) {
|
|
198
|
+
const element = _getUIElement(viewFigure, uniqueProperty);
|
|
199
|
+
if (element) {
|
|
200
|
+
writer.remove(writer.createRangeOn(element));
|
|
201
|
+
}
|
|
278
202
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
if ( loader.data ) {
|
|
288
|
-
const viewImg = imageUtils.findViewImgElement( viewFigure );
|
|
289
|
-
|
|
290
|
-
writer.setAttribute( 'src', loader.data, viewImg );
|
|
291
|
-
}
|
|
203
|
+
/**
|
|
204
|
+
* Displays local data from file loader.
|
|
205
|
+
*/
|
|
206
|
+
function _displayLocalImage(imageUtils, viewFigure, writer, loader) {
|
|
207
|
+
if (loader.data) {
|
|
208
|
+
const viewImg = imageUtils.findViewImgElement(viewFigure);
|
|
209
|
+
writer.setAttribute('src', loader.data, viewImg);
|
|
210
|
+
}
|
|
292
211
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
|
|
3
|
+
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
|
|
4
|
+
*/
|
|
5
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
6
|
+
import '../imageconfig';
|
|
7
|
+
/**
|
|
8
|
+
* The image upload button plugin.
|
|
9
|
+
*
|
|
10
|
+
* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature} documentation.
|
|
11
|
+
*
|
|
12
|
+
* Adds the `'uploadImage'` button to the {@link module:ui/componentfactory~ComponentFactory UI component factory}
|
|
13
|
+
* and also the `imageUpload` button as an alias for backward compatibility.
|
|
14
|
+
*/
|
|
15
|
+
export default class ImageUploadUI extends Plugin {
|
|
16
|
+
/**
|
|
17
|
+
* @inheritDoc
|
|
18
|
+
*/
|
|
19
|
+
static get pluginName(): 'ImageUploadUI';
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
init(): void;
|
|
24
|
+
}
|
|
25
|
+
declare module '@ckeditor/ckeditor5-core' {
|
|
26
|
+
interface PluginsMap {
|
|
27
|
+
[ImageUploadUI.pluginName]: ImageUploadUI;
|
|
28
|
+
}
|
|
29
|
+
}
|