@ckeditor/ckeditor5-image 39.0.1 → 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.
Files changed (182) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/LICENSE.md +1 -1
  3. package/README.md +3 -3
  4. package/build/image.js +1 -1
  5. package/build/image.js.map +1 -0
  6. package/build/translations/pt-br.js +1 -1
  7. package/ckeditor5-metadata.json +12 -0
  8. package/lang/translations/ar.po +1 -0
  9. package/lang/translations/ast.po +1 -0
  10. package/lang/translations/az.po +1 -0
  11. package/lang/translations/bg.po +1 -0
  12. package/lang/translations/bn.po +1 -0
  13. package/lang/translations/bs.po +1 -0
  14. package/lang/translations/ca.po +1 -0
  15. package/lang/translations/cs.po +1 -0
  16. package/lang/translations/da.po +1 -0
  17. package/lang/translations/de-ch.po +1 -0
  18. package/lang/translations/de.po +1 -0
  19. package/lang/translations/el.po +1 -0
  20. package/lang/translations/en-au.po +1 -0
  21. package/lang/translations/en-gb.po +1 -0
  22. package/lang/translations/en.po +1 -0
  23. package/lang/translations/eo.po +1 -0
  24. package/lang/translations/es.po +1 -0
  25. package/lang/translations/et.po +1 -0
  26. package/lang/translations/eu.po +1 -0
  27. package/lang/translations/fa.po +1 -0
  28. package/lang/translations/fi.po +1 -0
  29. package/lang/translations/fr.po +1 -0
  30. package/lang/translations/gl.po +1 -0
  31. package/lang/translations/he.po +1 -0
  32. package/lang/translations/hi.po +1 -0
  33. package/lang/translations/hr.po +1 -0
  34. package/lang/translations/hu.po +1 -0
  35. package/lang/translations/id.po +1 -0
  36. package/lang/translations/it.po +1 -0
  37. package/lang/translations/ja.po +1 -0
  38. package/lang/translations/jv.po +1 -0
  39. package/lang/translations/km.po +1 -0
  40. package/lang/translations/kn.po +1 -0
  41. package/lang/translations/ko.po +1 -0
  42. package/lang/translations/ku.po +1 -0
  43. package/lang/translations/lt.po +1 -0
  44. package/lang/translations/lv.po +1 -0
  45. package/lang/translations/ms.po +1 -0
  46. package/lang/translations/nb.po +1 -0
  47. package/lang/translations/ne.po +1 -0
  48. package/lang/translations/nl.po +1 -0
  49. package/lang/translations/no.po +1 -0
  50. package/lang/translations/pl.po +1 -0
  51. package/lang/translations/pt-br.po +2 -1
  52. package/lang/translations/pt.po +1 -0
  53. package/lang/translations/ro.po +1 -0
  54. package/lang/translations/ru.po +1 -0
  55. package/lang/translations/si.po +1 -0
  56. package/lang/translations/sk.po +1 -0
  57. package/lang/translations/sq.po +1 -0
  58. package/lang/translations/sr-latn.po +1 -0
  59. package/lang/translations/sr.po +1 -0
  60. package/lang/translations/sv.po +1 -0
  61. package/lang/translations/th.po +1 -0
  62. package/lang/translations/tk.po +1 -0
  63. package/lang/translations/tr.po +1 -0
  64. package/lang/translations/tt.po +1 -0
  65. package/lang/translations/ug.po +1 -0
  66. package/lang/translations/uk.po +1 -0
  67. package/lang/translations/ur.po +1 -0
  68. package/lang/translations/uz.po +1 -0
  69. package/lang/translations/vi.po +1 -0
  70. package/lang/translations/zh-cn.po +1 -0
  71. package/lang/translations/zh.po +1 -0
  72. package/package.json +3 -7
  73. package/src/augmentation.d.ts +56 -55
  74. package/src/augmentation.js +5 -5
  75. package/src/autoimage.d.ts +52 -52
  76. package/src/autoimage.js +132 -132
  77. package/src/image/converters.d.ts +66 -66
  78. package/src/image/converters.js +232 -242
  79. package/src/image/imageblockediting.d.ts +58 -55
  80. package/src/image/imageblockediting.js +152 -136
  81. package/src/image/imageediting.d.ts +30 -30
  82. package/src/image/imageediting.js +63 -74
  83. package/src/image/imageinlineediting.d.ts +59 -56
  84. package/src/image/imageinlineediting.js +176 -160
  85. package/src/image/imageloadobserver.d.ts +48 -48
  86. package/src/image/imageloadobserver.js +52 -52
  87. package/src/image/imagetypecommand.d.ts +44 -40
  88. package/src/image/imagetypecommand.js +80 -77
  89. package/src/image/insertimagecommand.d.ts +66 -66
  90. package/src/image/insertimagecommand.js +120 -120
  91. package/src/image/replaceimagesourcecommand.d.ts +34 -34
  92. package/src/image/replaceimagesourcecommand.js +44 -44
  93. package/src/image/ui/utils.d.ts +25 -25
  94. package/src/image/ui/utils.js +44 -44
  95. package/src/image/utils.d.ts +64 -52
  96. package/src/image/utils.js +121 -100
  97. package/src/image.d.ts +34 -34
  98. package/src/image.js +38 -38
  99. package/src/imageblock.d.ts +33 -33
  100. package/src/imageblock.js +37 -37
  101. package/src/imagecaption/imagecaptionediting.d.ts +89 -89
  102. package/src/imagecaption/imagecaptionediting.js +225 -225
  103. package/src/imagecaption/imagecaptionui.d.ts +26 -26
  104. package/src/imagecaption/imagecaptionui.js +61 -61
  105. package/src/imagecaption/imagecaptionutils.d.ts +38 -38
  106. package/src/imagecaption/imagecaptionutils.js +62 -62
  107. package/src/imagecaption/toggleimagecaptioncommand.d.ts +66 -66
  108. package/src/imagecaption/toggleimagecaptioncommand.js +138 -138
  109. package/src/imagecaption.d.ts +26 -26
  110. package/src/imagecaption.js +30 -30
  111. package/src/imageconfig.d.ts +713 -713
  112. package/src/imageconfig.js +5 -5
  113. package/src/imageinline.d.ts +33 -33
  114. package/src/imageinline.js +37 -37
  115. package/src/imageinsert/imageinsertui.d.ts +44 -44
  116. package/src/imageinsert/imageinsertui.js +141 -141
  117. package/src/imageinsert/ui/imageinsertformrowview.d.ts +61 -61
  118. package/src/imageinsert/ui/imageinsertformrowview.js +54 -54
  119. package/src/imageinsert/ui/imageinsertpanelview.d.ts +106 -106
  120. package/src/imageinsert/ui/imageinsertpanelview.js +161 -161
  121. package/src/imageinsert/utils.d.ts +25 -25
  122. package/src/imageinsert/utils.js +58 -58
  123. package/src/imageinsert.d.ts +33 -33
  124. package/src/imageinsert.js +37 -37
  125. package/src/imageinsertviaurl.d.ts +30 -30
  126. package/src/imageinsertviaurl.js +34 -34
  127. package/src/imageresize/imageresizebuttons.d.ts +67 -67
  128. package/src/imageresize/imageresizebuttons.js +217 -217
  129. package/src/imageresize/imageresizeediting.d.ts +37 -37
  130. package/src/imageresize/imageresizeediting.js +165 -114
  131. package/src/imageresize/imageresizehandles.d.ts +31 -30
  132. package/src/imageresize/imageresizehandles.js +114 -107
  133. package/src/imageresize/resizeimagecommand.d.ts +42 -42
  134. package/src/imageresize/resizeimagecommand.js +63 -61
  135. package/src/imageresize.d.ts +27 -27
  136. package/src/imageresize.js +31 -31
  137. package/src/imagesizeattributes.d.ts +34 -0
  138. package/src/imagesizeattributes.js +143 -0
  139. package/src/imagestyle/converters.d.ts +24 -24
  140. package/src/imagestyle/converters.js +79 -79
  141. package/src/imagestyle/imagestylecommand.d.ts +68 -65
  142. package/src/imagestyle/imagestylecommand.js +107 -101
  143. package/src/imagestyle/imagestyleediting.d.ts +50 -50
  144. package/src/imagestyle/imagestyleediting.js +108 -108
  145. package/src/imagestyle/imagestyleui.d.ts +56 -56
  146. package/src/imagestyle/imagestyleui.js +192 -192
  147. package/src/imagestyle/utils.d.ts +101 -101
  148. package/src/imagestyle/utils.js +329 -329
  149. package/src/imagestyle.d.ts +32 -32
  150. package/src/imagestyle.js +36 -36
  151. package/src/imagetextalternative/imagetextalternativecommand.d.ts +34 -34
  152. package/src/imagetextalternative/imagetextalternativecommand.js +44 -44
  153. package/src/imagetextalternative/imagetextalternativeediting.d.ts +28 -28
  154. package/src/imagetextalternative/imagetextalternativeediting.js +35 -35
  155. package/src/imagetextalternative/imagetextalternativeui.d.ts +68 -68
  156. package/src/imagetextalternative/imagetextalternativeui.js +173 -173
  157. package/src/imagetextalternative/ui/textalternativeformview.d.ts +72 -72
  158. package/src/imagetextalternative/ui/textalternativeformview.js +121 -121
  159. package/src/imagetextalternative.d.ts +29 -29
  160. package/src/imagetextalternative.js +33 -33
  161. package/src/imagetoolbar.d.ts +35 -35
  162. package/src/imagetoolbar.js +57 -57
  163. package/src/imageupload/imageuploadediting.d.ts +111 -111
  164. package/src/imageupload/imageuploadediting.js +337 -335
  165. package/src/imageupload/imageuploadprogress.d.ts +42 -42
  166. package/src/imageupload/imageuploadprogress.js +211 -211
  167. package/src/imageupload/imageuploadui.d.ts +23 -23
  168. package/src/imageupload/imageuploadui.js +57 -57
  169. package/src/imageupload/uploadimagecommand.d.ts +60 -60
  170. package/src/imageupload/uploadimagecommand.js +100 -100
  171. package/src/imageupload/utils.d.ts +33 -33
  172. package/src/imageupload/utils.js +112 -112
  173. package/src/imageupload.d.ts +32 -32
  174. package/src/imageupload.js +36 -36
  175. package/src/imageutils.d.ts +125 -102
  176. package/src/imageutils.js +306 -248
  177. package/src/index.d.ts +48 -47
  178. package/src/index.js +39 -38
  179. package/src/pictureediting.d.ts +88 -88
  180. package/src/pictureediting.js +130 -130
  181. package/theme/image.css +38 -11
  182. 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('width')) {
22
- this.value = null;
23
- }
24
- else {
25
- this.value = {
26
- width: element.getAttribute('width'),
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('width', options.width, imageElement);
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
+ }
@@ -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
+ }
@@ -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>;