@ckeditor/ckeditor5-image 39.0.2 → 40.0.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/build/image.js.map +1 -0
- package/build/translations/pt-br.js +1 -1
- package/ckeditor5-metadata.json +12 -0
- package/lang/translations/pt-br.po +1 -1
- package/package.json +3 -3
- package/src/augmentation.d.ts +56 -55
- package/src/augmentation.js +5 -5
- package/src/autoimage.d.ts +52 -52
- package/src/autoimage.js +132 -132
- package/src/image/converters.d.ts +66 -66
- package/src/image/converters.js +232 -242
- package/src/image/imageblockediting.d.ts +58 -55
- package/src/image/imageblockediting.js +152 -136
- package/src/image/imageediting.d.ts +30 -30
- package/src/image/imageediting.js +63 -74
- package/src/image/imageinlineediting.d.ts +59 -56
- package/src/image/imageinlineediting.js +176 -160
- package/src/image/imageloadobserver.d.ts +48 -48
- package/src/image/imageloadobserver.js +52 -52
- package/src/image/imagetypecommand.d.ts +44 -40
- package/src/image/imagetypecommand.js +80 -77
- package/src/image/insertimagecommand.d.ts +66 -66
- package/src/image/insertimagecommand.js +120 -120
- package/src/image/replaceimagesourcecommand.d.ts +34 -34
- package/src/image/replaceimagesourcecommand.js +44 -44
- package/src/image/ui/utils.d.ts +25 -25
- package/src/image/ui/utils.js +44 -44
- package/src/image/utils.d.ts +64 -52
- package/src/image/utils.js +121 -100
- package/src/image.d.ts +34 -34
- package/src/image.js +38 -38
- package/src/imageblock.d.ts +33 -33
- package/src/imageblock.js +37 -37
- package/src/imagecaption/imagecaptionediting.d.ts +89 -89
- package/src/imagecaption/imagecaptionediting.js +225 -225
- package/src/imagecaption/imagecaptionui.d.ts +26 -26
- package/src/imagecaption/imagecaptionui.js +61 -61
- package/src/imagecaption/imagecaptionutils.d.ts +38 -38
- package/src/imagecaption/imagecaptionutils.js +62 -62
- package/src/imagecaption/toggleimagecaptioncommand.d.ts +66 -66
- package/src/imagecaption/toggleimagecaptioncommand.js +138 -138
- package/src/imagecaption.d.ts +26 -26
- package/src/imagecaption.js +30 -30
- package/src/imageconfig.d.ts +713 -713
- package/src/imageconfig.js +5 -5
- package/src/imageinline.d.ts +33 -33
- package/src/imageinline.js +37 -37
- package/src/imageinsert/imageinsertui.d.ts +44 -44
- package/src/imageinsert/imageinsertui.js +141 -141
- package/src/imageinsert/ui/imageinsertformrowview.d.ts +61 -61
- package/src/imageinsert/ui/imageinsertformrowview.js +54 -54
- package/src/imageinsert/ui/imageinsertpanelview.d.ts +106 -106
- package/src/imageinsert/ui/imageinsertpanelview.js +161 -161
- package/src/imageinsert/utils.d.ts +25 -25
- package/src/imageinsert/utils.js +58 -58
- package/src/imageinsert.d.ts +33 -33
- package/src/imageinsert.js +37 -37
- package/src/imageinsertviaurl.d.ts +30 -30
- package/src/imageinsertviaurl.js +34 -34
- package/src/imageresize/imageresizebuttons.d.ts +67 -67
- package/src/imageresize/imageresizebuttons.js +217 -217
- package/src/imageresize/imageresizeediting.d.ts +37 -37
- package/src/imageresize/imageresizeediting.js +165 -114
- package/src/imageresize/imageresizehandles.d.ts +31 -30
- package/src/imageresize/imageresizehandles.js +114 -107
- package/src/imageresize/resizeimagecommand.d.ts +42 -42
- package/src/imageresize/resizeimagecommand.js +63 -61
- package/src/imageresize.d.ts +27 -27
- package/src/imageresize.js +31 -31
- package/src/imagesizeattributes.d.ts +34 -0
- package/src/imagesizeattributes.js +143 -0
- package/src/imagestyle/converters.d.ts +24 -24
- package/src/imagestyle/converters.js +79 -79
- package/src/imagestyle/imagestylecommand.d.ts +68 -65
- package/src/imagestyle/imagestylecommand.js +107 -101
- package/src/imagestyle/imagestyleediting.d.ts +50 -50
- package/src/imagestyle/imagestyleediting.js +108 -108
- package/src/imagestyle/imagestyleui.d.ts +56 -56
- package/src/imagestyle/imagestyleui.js +192 -192
- package/src/imagestyle/utils.d.ts +101 -101
- package/src/imagestyle/utils.js +329 -329
- package/src/imagestyle.d.ts +32 -32
- package/src/imagestyle.js +36 -36
- package/src/imagetextalternative/imagetextalternativecommand.d.ts +34 -34
- package/src/imagetextalternative/imagetextalternativecommand.js +44 -44
- package/src/imagetextalternative/imagetextalternativeediting.d.ts +28 -28
- package/src/imagetextalternative/imagetextalternativeediting.js +35 -35
- package/src/imagetextalternative/imagetextalternativeui.d.ts +68 -68
- package/src/imagetextalternative/imagetextalternativeui.js +173 -173
- package/src/imagetextalternative/ui/textalternativeformview.d.ts +72 -72
- package/src/imagetextalternative/ui/textalternativeformview.js +121 -121
- package/src/imagetextalternative.d.ts +29 -29
- package/src/imagetextalternative.js +33 -33
- package/src/imagetoolbar.d.ts +35 -35
- package/src/imagetoolbar.js +57 -57
- package/src/imageupload/imageuploadediting.d.ts +111 -111
- package/src/imageupload/imageuploadediting.js +337 -335
- package/src/imageupload/imageuploadprogress.d.ts +42 -42
- package/src/imageupload/imageuploadprogress.js +211 -211
- package/src/imageupload/imageuploadui.d.ts +23 -23
- package/src/imageupload/imageuploadui.js +57 -57
- package/src/imageupload/uploadimagecommand.d.ts +60 -60
- package/src/imageupload/uploadimagecommand.js +100 -100
- package/src/imageupload/utils.d.ts +33 -33
- package/src/imageupload/utils.js +112 -112
- package/src/imageupload.d.ts +32 -32
- package/src/imageupload.js +36 -36
- package/src/imageutils.d.ts +125 -102
- package/src/imageutils.js +306 -248
- package/src/index.d.ts +48 -47
- package/src/index.js +39 -38
- package/src/pictureediting.d.ts +88 -88
- package/src/pictureediting.js +130 -130
- package/theme/image.css +38 -11
- package/theme/imageresize.css +5 -0
package/src/imageconfig.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
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
|
-
export {};
|
|
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
|
+
export {};
|
package/src/imageinline.d.ts
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
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/imageinline
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
-
import { Widget } from 'ckeditor5/src/widget';
|
|
10
|
-
import ImageTextAlternative from './imagetextalternative';
|
|
11
|
-
import ImageInlineEditing from './image/imageinlineediting';
|
|
12
|
-
import '../theme/image.css';
|
|
13
|
-
/**
|
|
14
|
-
* The image inline plugin.
|
|
15
|
-
*
|
|
16
|
-
* This is a "glue" plugin which loads the following plugins:
|
|
17
|
-
*
|
|
18
|
-
* * {@link module:image/image/imageinlineediting~ImageInlineEditing},
|
|
19
|
-
* * {@link module:image/imagetextalternative~ImageTextAlternative}.
|
|
20
|
-
*
|
|
21
|
-
* Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}
|
|
22
|
-
* for more information.
|
|
23
|
-
*/
|
|
24
|
-
export default class ImageInline extends Plugin {
|
|
25
|
-
/**
|
|
26
|
-
* @inheritDoc
|
|
27
|
-
*/
|
|
28
|
-
static get requires(): readonly [typeof ImageInlineEditing, typeof Widget, typeof ImageTextAlternative];
|
|
29
|
-
/**
|
|
30
|
-
* @inheritDoc
|
|
31
|
-
*/
|
|
32
|
-
static get pluginName(): "ImageInline";
|
|
33
|
-
}
|
|
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/imageinline
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
import { Widget } from 'ckeditor5/src/widget';
|
|
10
|
+
import ImageTextAlternative from './imagetextalternative';
|
|
11
|
+
import ImageInlineEditing from './image/imageinlineediting';
|
|
12
|
+
import '../theme/image.css';
|
|
13
|
+
/**
|
|
14
|
+
* The image inline plugin.
|
|
15
|
+
*
|
|
16
|
+
* This is a "glue" plugin which loads the following plugins:
|
|
17
|
+
*
|
|
18
|
+
* * {@link module:image/image/imageinlineediting~ImageInlineEditing},
|
|
19
|
+
* * {@link module:image/imagetextalternative~ImageTextAlternative}.
|
|
20
|
+
*
|
|
21
|
+
* Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}
|
|
22
|
+
* for more information.
|
|
23
|
+
*/
|
|
24
|
+
export default class ImageInline extends Plugin {
|
|
25
|
+
/**
|
|
26
|
+
* @inheritDoc
|
|
27
|
+
*/
|
|
28
|
+
static get requires(): readonly [typeof ImageInlineEditing, typeof Widget, typeof ImageTextAlternative];
|
|
29
|
+
/**
|
|
30
|
+
* @inheritDoc
|
|
31
|
+
*/
|
|
32
|
+
static get pluginName(): "ImageInline";
|
|
33
|
+
}
|
package/src/imageinline.js
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
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/imageinline
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
-
import { Widget } from 'ckeditor5/src/widget';
|
|
10
|
-
import ImageTextAlternative from './imagetextalternative';
|
|
11
|
-
import ImageInlineEditing from './image/imageinlineediting';
|
|
12
|
-
import '../theme/image.css';
|
|
13
|
-
/**
|
|
14
|
-
* The image inline plugin.
|
|
15
|
-
*
|
|
16
|
-
* This is a "glue" plugin which loads the following plugins:
|
|
17
|
-
*
|
|
18
|
-
* * {@link module:image/image/imageinlineediting~ImageInlineEditing},
|
|
19
|
-
* * {@link module:image/imagetextalternative~ImageTextAlternative}.
|
|
20
|
-
*
|
|
21
|
-
* Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}
|
|
22
|
-
* for more information.
|
|
23
|
-
*/
|
|
24
|
-
export default class ImageInline extends Plugin {
|
|
25
|
-
/**
|
|
26
|
-
* @inheritDoc
|
|
27
|
-
*/
|
|
28
|
-
static get requires() {
|
|
29
|
-
return [ImageInlineEditing, Widget, ImageTextAlternative];
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* @inheritDoc
|
|
33
|
-
*/
|
|
34
|
-
static get pluginName() {
|
|
35
|
-
return 'ImageInline';
|
|
36
|
-
}
|
|
37
|
-
}
|
|
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/imageinline
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
import { Widget } from 'ckeditor5/src/widget';
|
|
10
|
+
import ImageTextAlternative from './imagetextalternative';
|
|
11
|
+
import ImageInlineEditing from './image/imageinlineediting';
|
|
12
|
+
import '../theme/image.css';
|
|
13
|
+
/**
|
|
14
|
+
* The image inline plugin.
|
|
15
|
+
*
|
|
16
|
+
* This is a "glue" plugin which loads the following plugins:
|
|
17
|
+
*
|
|
18
|
+
* * {@link module:image/image/imageinlineediting~ImageInlineEditing},
|
|
19
|
+
* * {@link module:image/imagetextalternative~ImageTextAlternative}.
|
|
20
|
+
*
|
|
21
|
+
* Usually, it is used in conjunction with other plugins from this package. See the {@glink api/image package page}
|
|
22
|
+
* for more information.
|
|
23
|
+
*/
|
|
24
|
+
export default class ImageInline extends Plugin {
|
|
25
|
+
/**
|
|
26
|
+
* @inheritDoc
|
|
27
|
+
*/
|
|
28
|
+
static get requires() {
|
|
29
|
+
return [ImageInlineEditing, Widget, ImageTextAlternative];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* @inheritDoc
|
|
33
|
+
*/
|
|
34
|
+
static get pluginName() {
|
|
35
|
+
return 'ImageInline';
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,44 +1,44 @@
|
|
|
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/imageinsert/imageinsertui
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
-
import { type DropdownView } from 'ckeditor5/src/ui';
|
|
10
|
-
/**
|
|
11
|
-
* The image insert dropdown plugin.
|
|
12
|
-
*
|
|
13
|
-
* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}
|
|
14
|
-
* and {@glink features/images/images-inserting Insert images via source URL} documentation.
|
|
15
|
-
*
|
|
16
|
-
* Adds the `'insertImage'` dropdown to the {@link module:ui/componentfactory~ComponentFactory UI component factory}
|
|
17
|
-
* and also the `imageInsert` dropdown as an alias for backward compatibility.
|
|
18
|
-
*/
|
|
19
|
-
export default class ImageInsertUI extends Plugin {
|
|
20
|
-
/**
|
|
21
|
-
* @inheritDoc
|
|
22
|
-
*/
|
|
23
|
-
static get pluginName(): "ImageInsertUI";
|
|
24
|
-
/**
|
|
25
|
-
* The dropdown view responsible for displaying the image insert UI.
|
|
26
|
-
*/
|
|
27
|
-
dropdownView?: DropdownView;
|
|
28
|
-
/**
|
|
29
|
-
* @inheritDoc
|
|
30
|
-
*/
|
|
31
|
-
init(): void;
|
|
32
|
-
/**
|
|
33
|
-
* Creates the dropdown view.
|
|
34
|
-
*
|
|
35
|
-
* @param locale The localization services instance.
|
|
36
|
-
*/
|
|
37
|
-
private _createDropdownView;
|
|
38
|
-
/**
|
|
39
|
-
* Sets up the dropdown view.
|
|
40
|
-
*
|
|
41
|
-
* @param command An uploadImage or insertImage command.
|
|
42
|
-
*/
|
|
43
|
-
private _setUpDropdown;
|
|
44
|
-
}
|
|
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/imageinsert/imageinsertui
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
import { type DropdownView } from 'ckeditor5/src/ui';
|
|
10
|
+
/**
|
|
11
|
+
* The image insert dropdown plugin.
|
|
12
|
+
*
|
|
13
|
+
* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}
|
|
14
|
+
* and {@glink features/images/images-inserting Insert images via source URL} documentation.
|
|
15
|
+
*
|
|
16
|
+
* Adds the `'insertImage'` dropdown to the {@link module:ui/componentfactory~ComponentFactory UI component factory}
|
|
17
|
+
* and also the `imageInsert` dropdown as an alias for backward compatibility.
|
|
18
|
+
*/
|
|
19
|
+
export default class ImageInsertUI extends Plugin {
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
static get pluginName(): "ImageInsertUI";
|
|
24
|
+
/**
|
|
25
|
+
* The dropdown view responsible for displaying the image insert UI.
|
|
26
|
+
*/
|
|
27
|
+
dropdownView?: DropdownView;
|
|
28
|
+
/**
|
|
29
|
+
* @inheritDoc
|
|
30
|
+
*/
|
|
31
|
+
init(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Creates the dropdown view.
|
|
34
|
+
*
|
|
35
|
+
* @param locale The localization services instance.
|
|
36
|
+
*/
|
|
37
|
+
private _createDropdownView;
|
|
38
|
+
/**
|
|
39
|
+
* Sets up the dropdown view.
|
|
40
|
+
*
|
|
41
|
+
* @param command An uploadImage or insertImage command.
|
|
42
|
+
*/
|
|
43
|
+
private _setUpDropdown;
|
|
44
|
+
}
|
|
@@ -1,141 +1,141 @@
|
|
|
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/imageinsert/imageinsertui
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin, icons } from 'ckeditor5/src/core';
|
|
9
|
-
import { SplitButtonView, createDropdown } from 'ckeditor5/src/ui';
|
|
10
|
-
import ImageInsertPanelView from './ui/imageinsertpanelview';
|
|
11
|
-
import { prepareIntegrations } from './utils';
|
|
12
|
-
/**
|
|
13
|
-
* The image insert dropdown plugin.
|
|
14
|
-
*
|
|
15
|
-
* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}
|
|
16
|
-
* and {@glink features/images/images-inserting Insert images via source URL} documentation.
|
|
17
|
-
*
|
|
18
|
-
* Adds the `'insertImage'` dropdown to the {@link module:ui/componentfactory~ComponentFactory UI component factory}
|
|
19
|
-
* and also the `imageInsert` dropdown as an alias for backward compatibility.
|
|
20
|
-
*/
|
|
21
|
-
export default class ImageInsertUI extends Plugin {
|
|
22
|
-
/**
|
|
23
|
-
* @inheritDoc
|
|
24
|
-
*/
|
|
25
|
-
static get pluginName() {
|
|
26
|
-
return 'ImageInsertUI';
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* @inheritDoc
|
|
30
|
-
*/
|
|
31
|
-
init() {
|
|
32
|
-
const editor = this.editor;
|
|
33
|
-
const componentCreator = (locale) => {
|
|
34
|
-
return this._createDropdownView(locale);
|
|
35
|
-
};
|
|
36
|
-
// Register `insertImage` dropdown and add `imageInsert` dropdown as an alias for backward compatibility.
|
|
37
|
-
editor.ui.componentFactory.add('insertImage', componentCreator);
|
|
38
|
-
editor.ui.componentFactory.add('imageInsert', componentCreator);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Creates the dropdown view.
|
|
42
|
-
*
|
|
43
|
-
* @param locale The localization services instance.
|
|
44
|
-
*/
|
|
45
|
-
_createDropdownView(locale) {
|
|
46
|
-
const editor = this.editor;
|
|
47
|
-
const t = locale.t;
|
|
48
|
-
const uploadImageCommand = editor.commands.get('uploadImage');
|
|
49
|
-
const insertImageCommand = editor.commands.get('insertImage');
|
|
50
|
-
this.dropdownView = createDropdown(locale, uploadImageCommand ? SplitButtonView : undefined);
|
|
51
|
-
const buttonView = this.dropdownView.buttonView;
|
|
52
|
-
const panelView = this.dropdownView.panelView;
|
|
53
|
-
buttonView.set({
|
|
54
|
-
label: t('Insert image'),
|
|
55
|
-
icon: icons.image,
|
|
56
|
-
tooltip: true
|
|
57
|
-
});
|
|
58
|
-
panelView.extendTemplate({
|
|
59
|
-
attributes: {
|
|
60
|
-
class: 'ck-image-insert__panel'
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
if (uploadImageCommand) {
|
|
64
|
-
const splitButtonView = this.dropdownView.buttonView;
|
|
65
|
-
// We are injecting custom button replacement to readonly field.
|
|
66
|
-
splitButtonView.actionView = editor.ui.componentFactory.create('uploadImage');
|
|
67
|
-
// After we replaced action button with `uploadImage` component,
|
|
68
|
-
// we have lost a proper styling and some minor visual quirks have appeared.
|
|
69
|
-
// Brining back original split button classes helps fix the button styling
|
|
70
|
-
// See https://github.com/ckeditor/ckeditor5/issues/7986.
|
|
71
|
-
splitButtonView.actionView.extendTemplate({
|
|
72
|
-
attributes: {
|
|
73
|
-
class: 'ck ck-button ck-splitbutton__action'
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
return this._setUpDropdown(uploadImageCommand || insertImageCommand);
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Sets up the dropdown view.
|
|
81
|
-
*
|
|
82
|
-
* @param command An uploadImage or insertImage command.
|
|
83
|
-
*/
|
|
84
|
-
_setUpDropdown(command) {
|
|
85
|
-
const editor = this.editor;
|
|
86
|
-
const t = editor.t;
|
|
87
|
-
const dropdownView = this.dropdownView;
|
|
88
|
-
const panelView = dropdownView.panelView;
|
|
89
|
-
const imageUtils = this.editor.plugins.get('ImageUtils');
|
|
90
|
-
const replaceImageSourceCommand = editor.commands.get('replaceImageSource');
|
|
91
|
-
let imageInsertView;
|
|
92
|
-
dropdownView.bind('isEnabled').to(command);
|
|
93
|
-
dropdownView.once('change:isOpen', () => {
|
|
94
|
-
imageInsertView = new ImageInsertPanelView(editor.locale, prepareIntegrations(editor));
|
|
95
|
-
imageInsertView.delegate('submit', 'cancel').to(dropdownView);
|
|
96
|
-
panelView.children.add(imageInsertView);
|
|
97
|
-
});
|
|
98
|
-
dropdownView.on('change:isOpen', () => {
|
|
99
|
-
const selectedElement = editor.model.document.selection.getSelectedElement();
|
|
100
|
-
const insertButtonView = imageInsertView.insertButtonView;
|
|
101
|
-
const insertImageViaUrlForm = imageInsertView.getIntegration('insertImageViaUrl');
|
|
102
|
-
if (dropdownView.isOpen) {
|
|
103
|
-
if (imageUtils.isImage(selectedElement)) {
|
|
104
|
-
imageInsertView.imageURLInputValue = replaceImageSourceCommand.value;
|
|
105
|
-
insertButtonView.label = t('Update');
|
|
106
|
-
insertImageViaUrlForm.label = t('Update image URL');
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
imageInsertView.imageURLInputValue = '';
|
|
110
|
-
insertButtonView.label = t('Insert');
|
|
111
|
-
insertImageViaUrlForm.label = t('Insert image via URL');
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
// Note: Use the low priority to make sure the following listener starts working after the
|
|
115
|
-
// default action of the drop-down is executed (i.e. the panel showed up). Otherwise, the
|
|
116
|
-
// invisible form/input cannot be focused/selected.
|
|
117
|
-
}, { priority: 'low' });
|
|
118
|
-
this.delegate('cancel').to(dropdownView);
|
|
119
|
-
dropdownView.on('submit', () => {
|
|
120
|
-
closePanel();
|
|
121
|
-
onSubmit();
|
|
122
|
-
});
|
|
123
|
-
dropdownView.on('cancel', () => {
|
|
124
|
-
closePanel();
|
|
125
|
-
});
|
|
126
|
-
function onSubmit() {
|
|
127
|
-
const selectedElement = editor.model.document.selection.getSelectedElement();
|
|
128
|
-
if (imageUtils.isImage(selectedElement)) {
|
|
129
|
-
editor.execute('replaceImageSource', { source: imageInsertView.imageURLInputValue });
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
editor.execute('insertImage', { source: imageInsertView.imageURLInputValue });
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
function closePanel() {
|
|
136
|
-
editor.editing.view.focus();
|
|
137
|
-
dropdownView.isOpen = false;
|
|
138
|
-
}
|
|
139
|
-
return dropdownView;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
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/imageinsert/imageinsertui
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin, icons } from 'ckeditor5/src/core';
|
|
9
|
+
import { SplitButtonView, createDropdown } from 'ckeditor5/src/ui';
|
|
10
|
+
import ImageInsertPanelView from './ui/imageinsertpanelview';
|
|
11
|
+
import { prepareIntegrations } from './utils';
|
|
12
|
+
/**
|
|
13
|
+
* The image insert dropdown plugin.
|
|
14
|
+
*
|
|
15
|
+
* For a detailed overview, check the {@glink features/images/image-upload/image-upload Image upload feature}
|
|
16
|
+
* and {@glink features/images/images-inserting Insert images via source URL} documentation.
|
|
17
|
+
*
|
|
18
|
+
* Adds the `'insertImage'` dropdown to the {@link module:ui/componentfactory~ComponentFactory UI component factory}
|
|
19
|
+
* and also the `imageInsert` dropdown as an alias for backward compatibility.
|
|
20
|
+
*/
|
|
21
|
+
export default class ImageInsertUI extends Plugin {
|
|
22
|
+
/**
|
|
23
|
+
* @inheritDoc
|
|
24
|
+
*/
|
|
25
|
+
static get pluginName() {
|
|
26
|
+
return 'ImageInsertUI';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* @inheritDoc
|
|
30
|
+
*/
|
|
31
|
+
init() {
|
|
32
|
+
const editor = this.editor;
|
|
33
|
+
const componentCreator = (locale) => {
|
|
34
|
+
return this._createDropdownView(locale);
|
|
35
|
+
};
|
|
36
|
+
// Register `insertImage` dropdown and add `imageInsert` dropdown as an alias for backward compatibility.
|
|
37
|
+
editor.ui.componentFactory.add('insertImage', componentCreator);
|
|
38
|
+
editor.ui.componentFactory.add('imageInsert', componentCreator);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Creates the dropdown view.
|
|
42
|
+
*
|
|
43
|
+
* @param locale The localization services instance.
|
|
44
|
+
*/
|
|
45
|
+
_createDropdownView(locale) {
|
|
46
|
+
const editor = this.editor;
|
|
47
|
+
const t = locale.t;
|
|
48
|
+
const uploadImageCommand = editor.commands.get('uploadImage');
|
|
49
|
+
const insertImageCommand = editor.commands.get('insertImage');
|
|
50
|
+
this.dropdownView = createDropdown(locale, uploadImageCommand ? SplitButtonView : undefined);
|
|
51
|
+
const buttonView = this.dropdownView.buttonView;
|
|
52
|
+
const panelView = this.dropdownView.panelView;
|
|
53
|
+
buttonView.set({
|
|
54
|
+
label: t('Insert image'),
|
|
55
|
+
icon: icons.image,
|
|
56
|
+
tooltip: true
|
|
57
|
+
});
|
|
58
|
+
panelView.extendTemplate({
|
|
59
|
+
attributes: {
|
|
60
|
+
class: 'ck-image-insert__panel'
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
if (uploadImageCommand) {
|
|
64
|
+
const splitButtonView = this.dropdownView.buttonView;
|
|
65
|
+
// We are injecting custom button replacement to readonly field.
|
|
66
|
+
splitButtonView.actionView = editor.ui.componentFactory.create('uploadImage');
|
|
67
|
+
// After we replaced action button with `uploadImage` component,
|
|
68
|
+
// we have lost a proper styling and some minor visual quirks have appeared.
|
|
69
|
+
// Brining back original split button classes helps fix the button styling
|
|
70
|
+
// See https://github.com/ckeditor/ckeditor5/issues/7986.
|
|
71
|
+
splitButtonView.actionView.extendTemplate({
|
|
72
|
+
attributes: {
|
|
73
|
+
class: 'ck ck-button ck-splitbutton__action'
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
return this._setUpDropdown(uploadImageCommand || insertImageCommand);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Sets up the dropdown view.
|
|
81
|
+
*
|
|
82
|
+
* @param command An uploadImage or insertImage command.
|
|
83
|
+
*/
|
|
84
|
+
_setUpDropdown(command) {
|
|
85
|
+
const editor = this.editor;
|
|
86
|
+
const t = editor.t;
|
|
87
|
+
const dropdownView = this.dropdownView;
|
|
88
|
+
const panelView = dropdownView.panelView;
|
|
89
|
+
const imageUtils = this.editor.plugins.get('ImageUtils');
|
|
90
|
+
const replaceImageSourceCommand = editor.commands.get('replaceImageSource');
|
|
91
|
+
let imageInsertView;
|
|
92
|
+
dropdownView.bind('isEnabled').to(command);
|
|
93
|
+
dropdownView.once('change:isOpen', () => {
|
|
94
|
+
imageInsertView = new ImageInsertPanelView(editor.locale, prepareIntegrations(editor));
|
|
95
|
+
imageInsertView.delegate('submit', 'cancel').to(dropdownView);
|
|
96
|
+
panelView.children.add(imageInsertView);
|
|
97
|
+
});
|
|
98
|
+
dropdownView.on('change:isOpen', () => {
|
|
99
|
+
const selectedElement = editor.model.document.selection.getSelectedElement();
|
|
100
|
+
const insertButtonView = imageInsertView.insertButtonView;
|
|
101
|
+
const insertImageViaUrlForm = imageInsertView.getIntegration('insertImageViaUrl');
|
|
102
|
+
if (dropdownView.isOpen) {
|
|
103
|
+
if (imageUtils.isImage(selectedElement)) {
|
|
104
|
+
imageInsertView.imageURLInputValue = replaceImageSourceCommand.value;
|
|
105
|
+
insertButtonView.label = t('Update');
|
|
106
|
+
insertImageViaUrlForm.label = t('Update image URL');
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
imageInsertView.imageURLInputValue = '';
|
|
110
|
+
insertButtonView.label = t('Insert');
|
|
111
|
+
insertImageViaUrlForm.label = t('Insert image via URL');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
// Note: Use the low priority to make sure the following listener starts working after the
|
|
115
|
+
// default action of the drop-down is executed (i.e. the panel showed up). Otherwise, the
|
|
116
|
+
// invisible form/input cannot be focused/selected.
|
|
117
|
+
}, { priority: 'low' });
|
|
118
|
+
this.delegate('cancel').to(dropdownView);
|
|
119
|
+
dropdownView.on('submit', () => {
|
|
120
|
+
closePanel();
|
|
121
|
+
onSubmit();
|
|
122
|
+
});
|
|
123
|
+
dropdownView.on('cancel', () => {
|
|
124
|
+
closePanel();
|
|
125
|
+
});
|
|
126
|
+
function onSubmit() {
|
|
127
|
+
const selectedElement = editor.model.document.selection.getSelectedElement();
|
|
128
|
+
if (imageUtils.isImage(selectedElement)) {
|
|
129
|
+
editor.execute('replaceImageSource', { source: imageInsertView.imageURLInputValue });
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
editor.execute('insertImage', { source: imageInsertView.imageURLInputValue });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function closePanel() {
|
|
136
|
+
editor.editing.view.focus();
|
|
137
|
+
dropdownView.isOpen = false;
|
|
138
|
+
}
|
|
139
|
+
return dropdownView;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
@@ -1,61 +1,61 @@
|
|
|
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/imageinsert/ui/imageinsertformrowview
|
|
7
|
-
*/
|
|
8
|
-
import type { Locale } from 'ckeditor5/src/utils';
|
|
9
|
-
import { View, type ViewCollection, type LabelView } from 'ckeditor5/src/ui';
|
|
10
|
-
import '../../../theme/imageinsertformrowview.css';
|
|
11
|
-
/**
|
|
12
|
-
* The class representing a single row in a complex form,
|
|
13
|
-
* used by {@link module:image/imageinsert/ui/imageinsertpanelview~ImageInsertPanelView}.
|
|
14
|
-
*
|
|
15
|
-
* **Note**: For now this class is private. When more use cases appear (beyond `ckeditor5-table` and `ckeditor5-image`),
|
|
16
|
-
* it will become a component in `ckeditor5-ui`.
|
|
17
|
-
*
|
|
18
|
-
* @private
|
|
19
|
-
*/
|
|
20
|
-
export default class ImageUploadFormRowView extends View {
|
|
21
|
-
/**
|
|
22
|
-
* An additional CSS class added to the {@link #element}.
|
|
23
|
-
*
|
|
24
|
-
* @observable
|
|
25
|
-
*/
|
|
26
|
-
class: string | null;
|
|
27
|
-
/**
|
|
28
|
-
* A collection of row items (buttons, dropdowns, etc.).
|
|
29
|
-
*/
|
|
30
|
-
readonly children: ViewCollection;
|
|
31
|
-
/**
|
|
32
|
-
* The role property reflected by the `role` DOM attribute of the {@link #element}.
|
|
33
|
-
*
|
|
34
|
-
* **Note**: Used only when a `labelView` is passed to constructor `options`.
|
|
35
|
-
*
|
|
36
|
-
* @observable
|
|
37
|
-
* @private
|
|
38
|
-
*/
|
|
39
|
-
_role: string | null;
|
|
40
|
-
/**
|
|
41
|
-
* The ARIA property reflected by the `aria-labelledby` DOM attribute of the {@link #element}.
|
|
42
|
-
*
|
|
43
|
-
* **Note**: Used only when a `labelView` is passed to constructor `options`.
|
|
44
|
-
*
|
|
45
|
-
* @observable
|
|
46
|
-
* @private
|
|
47
|
-
*/
|
|
48
|
-
_ariaLabelledBy: string | null;
|
|
49
|
-
/**
|
|
50
|
-
* Creates an instance of the form row class.
|
|
51
|
-
*
|
|
52
|
-
* @param locale The locale instance.
|
|
53
|
-
* @param options.labelView When passed, the row gets the `group` and `aria-labelledby`
|
|
54
|
-
* DOM attributes and gets described by the label.
|
|
55
|
-
*/
|
|
56
|
-
constructor(locale: Locale, options?: {
|
|
57
|
-
children?: Array<View>;
|
|
58
|
-
class?: string;
|
|
59
|
-
labelView?: LabelView;
|
|
60
|
-
});
|
|
61
|
-
}
|
|
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/imageinsert/ui/imageinsertformrowview
|
|
7
|
+
*/
|
|
8
|
+
import type { Locale } from 'ckeditor5/src/utils';
|
|
9
|
+
import { View, type ViewCollection, type LabelView } from 'ckeditor5/src/ui';
|
|
10
|
+
import '../../../theme/imageinsertformrowview.css';
|
|
11
|
+
/**
|
|
12
|
+
* The class representing a single row in a complex form,
|
|
13
|
+
* used by {@link module:image/imageinsert/ui/imageinsertpanelview~ImageInsertPanelView}.
|
|
14
|
+
*
|
|
15
|
+
* **Note**: For now this class is private. When more use cases appear (beyond `ckeditor5-table` and `ckeditor5-image`),
|
|
16
|
+
* it will become a component in `ckeditor5-ui`.
|
|
17
|
+
*
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
export default class ImageUploadFormRowView extends View {
|
|
21
|
+
/**
|
|
22
|
+
* An additional CSS class added to the {@link #element}.
|
|
23
|
+
*
|
|
24
|
+
* @observable
|
|
25
|
+
*/
|
|
26
|
+
class: string | null;
|
|
27
|
+
/**
|
|
28
|
+
* A collection of row items (buttons, dropdowns, etc.).
|
|
29
|
+
*/
|
|
30
|
+
readonly children: ViewCollection;
|
|
31
|
+
/**
|
|
32
|
+
* The role property reflected by the `role` DOM attribute of the {@link #element}.
|
|
33
|
+
*
|
|
34
|
+
* **Note**: Used only when a `labelView` is passed to constructor `options`.
|
|
35
|
+
*
|
|
36
|
+
* @observable
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
_role: string | null;
|
|
40
|
+
/**
|
|
41
|
+
* The ARIA property reflected by the `aria-labelledby` DOM attribute of the {@link #element}.
|
|
42
|
+
*
|
|
43
|
+
* **Note**: Used only when a `labelView` is passed to constructor `options`.
|
|
44
|
+
*
|
|
45
|
+
* @observable
|
|
46
|
+
* @private
|
|
47
|
+
*/
|
|
48
|
+
_ariaLabelledBy: string | null;
|
|
49
|
+
/**
|
|
50
|
+
* Creates an instance of the form row class.
|
|
51
|
+
*
|
|
52
|
+
* @param locale The locale instance.
|
|
53
|
+
* @param options.labelView When passed, the row gets the `group` and `aria-labelledby`
|
|
54
|
+
* DOM attributes and gets described by the label.
|
|
55
|
+
*/
|
|
56
|
+
constructor(locale: Locale, options?: {
|
|
57
|
+
children?: Array<View>;
|
|
58
|
+
class?: string;
|
|
59
|
+
labelView?: LabelView;
|
|
60
|
+
});
|
|
61
|
+
}
|