@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
|
@@ -1,42 +1,42 @@
|
|
|
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/imageresize/resizeimagecommand
|
|
7
|
-
*/
|
|
8
|
-
import { Command } from 'ckeditor5/src/core';
|
|
9
|
-
/**
|
|
10
|
-
* The resize image command. Currently, it only supports the width attribute.
|
|
11
|
-
*/
|
|
12
|
-
export default class ResizeImageCommand extends Command {
|
|
13
|
-
/**
|
|
14
|
-
* Desired image width and height.
|
|
15
|
-
*/
|
|
16
|
-
value: null | {
|
|
17
|
-
width: string | null;
|
|
18
|
-
height: string | null;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* @inheritDoc
|
|
22
|
-
*/
|
|
23
|
-
refresh(): void;
|
|
24
|
-
/**
|
|
25
|
-
* Executes the command.
|
|
26
|
-
*
|
|
27
|
-
* ```ts
|
|
28
|
-
* // Sets the width to 50%:
|
|
29
|
-
* editor.execute( 'resizeImage', { width: '50%' } );
|
|
30
|
-
*
|
|
31
|
-
* // Removes the width attribute:
|
|
32
|
-
* editor.execute( 'resizeImage', { width: null } );
|
|
33
|
-
* ```
|
|
34
|
-
*
|
|
35
|
-
* @param options
|
|
36
|
-
* @param options.width The new width of the image.
|
|
37
|
-
* @fires execute
|
|
38
|
-
*/
|
|
39
|
-
execute(options: {
|
|
40
|
-
width: string | null;
|
|
41
|
-
}): void;
|
|
42
|
-
}
|
|
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/imageresize/resizeimagecommand
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from 'ckeditor5/src/core';
|
|
9
|
+
/**
|
|
10
|
+
* The resize image command. Currently, it only supports the width attribute.
|
|
11
|
+
*/
|
|
12
|
+
export default class ResizeImageCommand extends Command {
|
|
13
|
+
/**
|
|
14
|
+
* Desired image width and height.
|
|
15
|
+
*/
|
|
16
|
+
value: null | {
|
|
17
|
+
width: string | null;
|
|
18
|
+
height: string | null;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* @inheritDoc
|
|
22
|
+
*/
|
|
23
|
+
refresh(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Executes the command.
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* // Sets the width to 50%:
|
|
29
|
+
* editor.execute( 'resizeImage', { width: '50%' } );
|
|
30
|
+
*
|
|
31
|
+
* // Removes the width attribute:
|
|
32
|
+
* editor.execute( 'resizeImage', { width: null } );
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @param options
|
|
36
|
+
* @param options.width The new width of the image.
|
|
37
|
+
* @fires execute
|
|
38
|
+
*/
|
|
39
|
+
execute(options: {
|
|
40
|
+
width: string | null;
|
|
41
|
+
}): void;
|
|
42
|
+
}
|
|
@@ -1,61 +1,63 @@
|
|
|
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/imageresize/resizeimagecommand
|
|
7
|
-
*/
|
|
8
|
-
import { Command } from 'ckeditor5/src/core';
|
|
9
|
-
/**
|
|
10
|
-
* The resize image command. Currently, it only supports the width attribute.
|
|
11
|
-
*/
|
|
12
|
-
export default class ResizeImageCommand extends Command {
|
|
13
|
-
/**
|
|
14
|
-
* @inheritDoc
|
|
15
|
-
*/
|
|
16
|
-
refresh() {
|
|
17
|
-
const editor = this.editor;
|
|
18
|
-
const imageUtils = editor.plugins.get('ImageUtils');
|
|
19
|
-
const element = imageUtils.getClosestSelectedImageElement(editor.model.document.selection);
|
|
20
|
-
this.isEnabled = !!element;
|
|
21
|
-
if (!element || !element.hasAttribute('
|
|
22
|
-
this.value = null;
|
|
23
|
-
}
|
|
24
|
-
else {
|
|
25
|
-
this.value = {
|
|
26
|
-
width: element.getAttribute('
|
|
27
|
-
height: null
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Executes the command.
|
|
33
|
-
*
|
|
34
|
-
* ```ts
|
|
35
|
-
* // Sets the width to 50%:
|
|
36
|
-
* editor.execute( 'resizeImage', { width: '50%' } );
|
|
37
|
-
*
|
|
38
|
-
* // Removes the width attribute:
|
|
39
|
-
* editor.execute( 'resizeImage', { width: null } );
|
|
40
|
-
* ```
|
|
41
|
-
*
|
|
42
|
-
* @param options
|
|
43
|
-
* @param options.width The new width of the image.
|
|
44
|
-
* @fires execute
|
|
45
|
-
*/
|
|
46
|
-
execute(options) {
|
|
47
|
-
const editor = this.editor;
|
|
48
|
-
const model = editor.model;
|
|
49
|
-
const imageUtils = editor.plugins.get('ImageUtils');
|
|
50
|
-
const imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);
|
|
51
|
-
this.value = {
|
|
52
|
-
width: options.width,
|
|
53
|
-
height: null
|
|
54
|
-
};
|
|
55
|
-
if (imageElement) {
|
|
56
|
-
model.change(writer => {
|
|
57
|
-
writer.setAttribute('
|
|
58
|
-
|
|
59
|
-
|
|
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/imageresize/resizeimagecommand
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from 'ckeditor5/src/core';
|
|
9
|
+
/**
|
|
10
|
+
* The resize image command. Currently, it only supports the width attribute.
|
|
11
|
+
*/
|
|
12
|
+
export default class ResizeImageCommand extends Command {
|
|
13
|
+
/**
|
|
14
|
+
* @inheritDoc
|
|
15
|
+
*/
|
|
16
|
+
refresh() {
|
|
17
|
+
const editor = this.editor;
|
|
18
|
+
const imageUtils = editor.plugins.get('ImageUtils');
|
|
19
|
+
const element = imageUtils.getClosestSelectedImageElement(editor.model.document.selection);
|
|
20
|
+
this.isEnabled = !!element;
|
|
21
|
+
if (!element || !element.hasAttribute('resizedWidth')) {
|
|
22
|
+
this.value = null;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
this.value = {
|
|
26
|
+
width: element.getAttribute('resizedWidth'),
|
|
27
|
+
height: null
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Executes the command.
|
|
33
|
+
*
|
|
34
|
+
* ```ts
|
|
35
|
+
* // Sets the width to 50%:
|
|
36
|
+
* editor.execute( 'resizeImage', { width: '50%' } );
|
|
37
|
+
*
|
|
38
|
+
* // Removes the width attribute:
|
|
39
|
+
* editor.execute( 'resizeImage', { width: null } );
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @param options
|
|
43
|
+
* @param options.width The new width of the image.
|
|
44
|
+
* @fires execute
|
|
45
|
+
*/
|
|
46
|
+
execute(options) {
|
|
47
|
+
const editor = this.editor;
|
|
48
|
+
const model = editor.model;
|
|
49
|
+
const imageUtils = editor.plugins.get('ImageUtils');
|
|
50
|
+
const imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);
|
|
51
|
+
this.value = {
|
|
52
|
+
width: options.width,
|
|
53
|
+
height: null
|
|
54
|
+
};
|
|
55
|
+
if (imageElement) {
|
|
56
|
+
model.change(writer => {
|
|
57
|
+
writer.setAttribute('resizedWidth', options.width, imageElement);
|
|
58
|
+
writer.removeAttribute('resizedHeight', imageElement);
|
|
59
|
+
imageUtils.setImageNaturalSizeAttributes(imageElement);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
package/src/imageresize.d.ts
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
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/imageresize
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
-
import ImageResizeButtons from './imageresize/imageresizebuttons';
|
|
10
|
-
import ImageResizeEditing from './imageresize/imageresizeediting';
|
|
11
|
-
import ImageResizeHandles from './imageresize/imageresizehandles';
|
|
12
|
-
import '../theme/imageresize.css';
|
|
13
|
-
/**
|
|
14
|
-
* The image resize plugin.
|
|
15
|
-
*
|
|
16
|
-
* It adds a possibility to resize each image using handles.
|
|
17
|
-
*/
|
|
18
|
-
export default class ImageResize extends Plugin {
|
|
19
|
-
/**
|
|
20
|
-
* @inheritDoc
|
|
21
|
-
*/
|
|
22
|
-
static get requires(): readonly [typeof ImageResizeEditing, typeof ImageResizeHandles, typeof ImageResizeButtons];
|
|
23
|
-
/**
|
|
24
|
-
* @inheritDoc
|
|
25
|
-
*/
|
|
26
|
-
static get pluginName(): "ImageResize";
|
|
27
|
-
}
|
|
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/imageresize
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
import ImageResizeButtons from './imageresize/imageresizebuttons';
|
|
10
|
+
import ImageResizeEditing from './imageresize/imageresizeediting';
|
|
11
|
+
import ImageResizeHandles from './imageresize/imageresizehandles';
|
|
12
|
+
import '../theme/imageresize.css';
|
|
13
|
+
/**
|
|
14
|
+
* The image resize plugin.
|
|
15
|
+
*
|
|
16
|
+
* It adds a possibility to resize each image using handles.
|
|
17
|
+
*/
|
|
18
|
+
export default class ImageResize extends Plugin {
|
|
19
|
+
/**
|
|
20
|
+
* @inheritDoc
|
|
21
|
+
*/
|
|
22
|
+
static get requires(): readonly [typeof ImageResizeEditing, typeof ImageResizeHandles, typeof ImageResizeButtons];
|
|
23
|
+
/**
|
|
24
|
+
* @inheritDoc
|
|
25
|
+
*/
|
|
26
|
+
static get pluginName(): "ImageResize";
|
|
27
|
+
}
|
package/src/imageresize.js
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
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/imageresize
|
|
7
|
-
*/
|
|
8
|
-
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
-
import ImageResizeButtons from './imageresize/imageresizebuttons';
|
|
10
|
-
import ImageResizeEditing from './imageresize/imageresizeediting';
|
|
11
|
-
import ImageResizeHandles from './imageresize/imageresizehandles';
|
|
12
|
-
import '../theme/imageresize.css';
|
|
13
|
-
/**
|
|
14
|
-
* The image resize plugin.
|
|
15
|
-
*
|
|
16
|
-
* It adds a possibility to resize each image using handles.
|
|
17
|
-
*/
|
|
18
|
-
export default class ImageResize extends Plugin {
|
|
19
|
-
/**
|
|
20
|
-
* @inheritDoc
|
|
21
|
-
*/
|
|
22
|
-
static get requires() {
|
|
23
|
-
return [ImageResizeEditing, ImageResizeHandles, ImageResizeButtons];
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* @inheritDoc
|
|
27
|
-
*/
|
|
28
|
-
static get pluginName() {
|
|
29
|
-
return 'ImageResize';
|
|
30
|
-
}
|
|
31
|
-
}
|
|
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/imageresize
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
import ImageResizeButtons from './imageresize/imageresizebuttons';
|
|
10
|
+
import ImageResizeEditing from './imageresize/imageresizeediting';
|
|
11
|
+
import ImageResizeHandles from './imageresize/imageresizehandles';
|
|
12
|
+
import '../theme/imageresize.css';
|
|
13
|
+
/**
|
|
14
|
+
* The image resize plugin.
|
|
15
|
+
*
|
|
16
|
+
* It adds a possibility to resize each image using handles.
|
|
17
|
+
*/
|
|
18
|
+
export default class ImageResize extends Plugin {
|
|
19
|
+
/**
|
|
20
|
+
* @inheritDoc
|
|
21
|
+
*/
|
|
22
|
+
static get requires() {
|
|
23
|
+
return [ImageResizeEditing, ImageResizeHandles, ImageResizeButtons];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* @inheritDoc
|
|
27
|
+
*/
|
|
28
|
+
static get pluginName() {
|
|
29
|
+
return 'ImageResize';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
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/imagesizeattributes
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
import ImageUtils from './imageutils';
|
|
10
|
+
/**
|
|
11
|
+
* This plugin enables `width` and `height` attributes in inline and block image elements.
|
|
12
|
+
*/
|
|
13
|
+
export default class ImageSizeAttributes extends Plugin {
|
|
14
|
+
/**
|
|
15
|
+
* @inheritDoc
|
|
16
|
+
*/
|
|
17
|
+
static get requires(): readonly [typeof ImageUtils];
|
|
18
|
+
/**
|
|
19
|
+
* @inheritDoc
|
|
20
|
+
*/
|
|
21
|
+
static get pluginName(): "ImageSizeAttributes";
|
|
22
|
+
/**
|
|
23
|
+
* @inheritDoc
|
|
24
|
+
*/
|
|
25
|
+
afterInit(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Registers the `width` and `height` attributes for inline and block images.
|
|
28
|
+
*/
|
|
29
|
+
private _registerSchema;
|
|
30
|
+
/**
|
|
31
|
+
* Registers converters for `width` and `height` attributes.
|
|
32
|
+
*/
|
|
33
|
+
private _registerConverters;
|
|
34
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
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/imagesizeattributes
|
|
7
|
+
*/
|
|
8
|
+
import { Plugin } from 'ckeditor5/src/core';
|
|
9
|
+
import ImageUtils from './imageutils';
|
|
10
|
+
import { widthAndHeightStylesAreBothSet, getSizeValueIfInPx } from './image/utils';
|
|
11
|
+
/**
|
|
12
|
+
* This plugin enables `width` and `height` attributes in inline and block image elements.
|
|
13
|
+
*/
|
|
14
|
+
export default class ImageSizeAttributes extends Plugin {
|
|
15
|
+
/**
|
|
16
|
+
* @inheritDoc
|
|
17
|
+
*/
|
|
18
|
+
static get requires() {
|
|
19
|
+
return [ImageUtils];
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* @inheritDoc
|
|
23
|
+
*/
|
|
24
|
+
static get pluginName() {
|
|
25
|
+
return 'ImageSizeAttributes';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* @inheritDoc
|
|
29
|
+
*/
|
|
30
|
+
afterInit() {
|
|
31
|
+
this._registerSchema();
|
|
32
|
+
this._registerConverters('imageBlock');
|
|
33
|
+
this._registerConverters('imageInline');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Registers the `width` and `height` attributes for inline and block images.
|
|
37
|
+
*/
|
|
38
|
+
_registerSchema() {
|
|
39
|
+
if (this.editor.plugins.has('ImageBlockEditing')) {
|
|
40
|
+
this.editor.model.schema.extend('imageBlock', { allowAttributes: ['width', 'height'] });
|
|
41
|
+
}
|
|
42
|
+
if (this.editor.plugins.has('ImageInlineEditing')) {
|
|
43
|
+
this.editor.model.schema.extend('imageInline', { allowAttributes: ['width', 'height'] });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Registers converters for `width` and `height` attributes.
|
|
48
|
+
*/
|
|
49
|
+
_registerConverters(imageType) {
|
|
50
|
+
const editor = this.editor;
|
|
51
|
+
const imageUtils = editor.plugins.get('ImageUtils');
|
|
52
|
+
const viewElementName = imageType === 'imageBlock' ? 'figure' : 'img';
|
|
53
|
+
editor.conversion.for('upcast')
|
|
54
|
+
.attributeToAttribute({
|
|
55
|
+
view: {
|
|
56
|
+
name: viewElementName,
|
|
57
|
+
styles: {
|
|
58
|
+
width: /.+/
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
model: {
|
|
62
|
+
key: 'width',
|
|
63
|
+
value: (viewElement) => {
|
|
64
|
+
if (widthAndHeightStylesAreBothSet(viewElement)) {
|
|
65
|
+
return getSizeValueIfInPx(viewElement.getStyle('width'));
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
})
|
|
71
|
+
.attributeToAttribute({
|
|
72
|
+
view: {
|
|
73
|
+
name: viewElementName,
|
|
74
|
+
key: 'width'
|
|
75
|
+
},
|
|
76
|
+
model: 'width'
|
|
77
|
+
})
|
|
78
|
+
.attributeToAttribute({
|
|
79
|
+
view: {
|
|
80
|
+
name: viewElementName,
|
|
81
|
+
styles: {
|
|
82
|
+
height: /.+/
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
model: {
|
|
86
|
+
key: 'height',
|
|
87
|
+
value: (viewElement) => {
|
|
88
|
+
if (widthAndHeightStylesAreBothSet(viewElement)) {
|
|
89
|
+
return getSizeValueIfInPx(viewElement.getStyle('height'));
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
.attributeToAttribute({
|
|
96
|
+
view: {
|
|
97
|
+
name: viewElementName,
|
|
98
|
+
key: 'height'
|
|
99
|
+
},
|
|
100
|
+
model: 'height'
|
|
101
|
+
});
|
|
102
|
+
// Dedicated converters to propagate attributes to the <img> element.
|
|
103
|
+
editor.conversion.for('editingDowncast').add(dispatcher => {
|
|
104
|
+
attachDowncastConverter(dispatcher, 'width', 'width', true);
|
|
105
|
+
attachDowncastConverter(dispatcher, 'height', 'height', true);
|
|
106
|
+
});
|
|
107
|
+
editor.conversion.for('dataDowncast').add(dispatcher => {
|
|
108
|
+
attachDowncastConverter(dispatcher, 'width', 'width', false);
|
|
109
|
+
attachDowncastConverter(dispatcher, 'height', 'height', false);
|
|
110
|
+
});
|
|
111
|
+
function attachDowncastConverter(dispatcher, modelAttributeName, viewAttributeName, setRatioForInlineImage) {
|
|
112
|
+
dispatcher.on(`attribute:${modelAttributeName}:${imageType}`, (evt, data, conversionApi) => {
|
|
113
|
+
if (!conversionApi.consumable.consume(data.item, evt.name)) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const viewWriter = conversionApi.writer;
|
|
117
|
+
const viewElement = conversionApi.mapper.toViewElement(data.item);
|
|
118
|
+
const img = imageUtils.findViewImgElement(viewElement);
|
|
119
|
+
if (data.attributeNewValue !== null) {
|
|
120
|
+
viewWriter.setAttribute(viewAttributeName, data.attributeNewValue, img);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
viewWriter.removeAttribute(viewAttributeName, img);
|
|
124
|
+
}
|
|
125
|
+
// Do not set aspect-ratio for pictures. See https://github.com/ckeditor/ckeditor5/issues/14579.
|
|
126
|
+
if (data.item.hasAttribute('sources')) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const isResized = data.item.hasAttribute('resizedWidth');
|
|
130
|
+
// Do not set aspect ratio for inline images which are not resized (data pipeline).
|
|
131
|
+
if (imageType === 'imageInline' && !isResized && !setRatioForInlineImage) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const width = data.item.getAttribute('width');
|
|
135
|
+
const height = data.item.getAttribute('height');
|
|
136
|
+
const aspectRatio = img.getStyle('aspect-ratio');
|
|
137
|
+
if (width && height && !aspectRatio) {
|
|
138
|
+
viewWriter.setStyle('aspect-ratio', `${width}/${height}`, img);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
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 type { DowncastAttributeEvent, UpcastElementEvent } from 'ckeditor5/src/engine';
|
|
6
|
-
import { type GetCallback } from 'ckeditor5/src/utils';
|
|
7
|
-
import type { ImageStyleOptionDefinition } from '../imageconfig';
|
|
8
|
-
/**
|
|
9
|
-
* @module image/imagestyle/converters
|
|
10
|
-
*/
|
|
11
|
-
/**
|
|
12
|
-
* Returns a converter for the `imageStyle` attribute. It can be used for adding, changing and removing the attribute.
|
|
13
|
-
*
|
|
14
|
-
* @param styles An array containing available image style options.
|
|
15
|
-
* @returns A model-to-view attribute converter.
|
|
16
|
-
*/
|
|
17
|
-
export declare function modelToViewStyleAttribute(styles: Array<ImageStyleOptionDefinition>): GetCallback<DowncastAttributeEvent>;
|
|
18
|
-
/**
|
|
19
|
-
* Returns a view-to-model converter converting image CSS classes to a proper value in the model.
|
|
20
|
-
*
|
|
21
|
-
* @param styles Image style options for which the converter is created.
|
|
22
|
-
* @returns A view-to-model converter.
|
|
23
|
-
*/
|
|
24
|
-
export declare function viewToModelStyleAttribute(styles: Array<ImageStyleOptionDefinition>): GetCallback<UpcastElementEvent>;
|
|
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 type { DowncastAttributeEvent, UpcastElementEvent } from 'ckeditor5/src/engine';
|
|
6
|
+
import { type GetCallback } from 'ckeditor5/src/utils';
|
|
7
|
+
import type { ImageStyleOptionDefinition } from '../imageconfig';
|
|
8
|
+
/**
|
|
9
|
+
* @module image/imagestyle/converters
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Returns a converter for the `imageStyle` attribute. It can be used for adding, changing and removing the attribute.
|
|
13
|
+
*
|
|
14
|
+
* @param styles An array containing available image style options.
|
|
15
|
+
* @returns A model-to-view attribute converter.
|
|
16
|
+
*/
|
|
17
|
+
export declare function modelToViewStyleAttribute(styles: Array<ImageStyleOptionDefinition>): GetCallback<DowncastAttributeEvent>;
|
|
18
|
+
/**
|
|
19
|
+
* Returns a view-to-model converter converting image CSS classes to a proper value in the model.
|
|
20
|
+
*
|
|
21
|
+
* @param styles Image style options for which the converter is created.
|
|
22
|
+
* @returns A view-to-model converter.
|
|
23
|
+
*/
|
|
24
|
+
export declare function viewToModelStyleAttribute(styles: Array<ImageStyleOptionDefinition>): GetCallback<UpcastElementEvent>;
|