@ckeditor/ckeditor5-image 40.0.0 → 40.2.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 (253) hide show
  1. package/CHANGELOG.md +25 -25
  2. package/LICENSE.md +3 -3
  3. package/build/image.js +2 -2
  4. package/build/translations/ar.js +1 -1
  5. package/build/translations/ast.js +1 -1
  6. package/build/translations/az.js +1 -1
  7. package/build/translations/bg.js +1 -1
  8. package/build/translations/bn.js +1 -1
  9. package/build/translations/bs.js +1 -1
  10. package/build/translations/ca.js +1 -1
  11. package/build/translations/cs.js +1 -1
  12. package/build/translations/da.js +1 -1
  13. package/build/translations/de-ch.js +1 -1
  14. package/build/translations/de.js +1 -1
  15. package/build/translations/el.js +1 -1
  16. package/build/translations/en-au.js +1 -1
  17. package/build/translations/en-gb.js +1 -1
  18. package/build/translations/eo.js +1 -1
  19. package/build/translations/es.js +1 -1
  20. package/build/translations/et.js +1 -1
  21. package/build/translations/eu.js +1 -1
  22. package/build/translations/fa.js +1 -1
  23. package/build/translations/fi.js +1 -1
  24. package/build/translations/fr.js +1 -1
  25. package/build/translations/gl.js +1 -1
  26. package/build/translations/he.js +1 -1
  27. package/build/translations/hi.js +1 -1
  28. package/build/translations/hr.js +1 -1
  29. package/build/translations/hu.js +1 -1
  30. package/build/translations/id.js +1 -1
  31. package/build/translations/it.js +1 -1
  32. package/build/translations/ja.js +1 -1
  33. package/build/translations/jv.js +1 -1
  34. package/build/translations/km.js +1 -1
  35. package/build/translations/kn.js +1 -1
  36. package/build/translations/ko.js +1 -1
  37. package/build/translations/ku.js +1 -1
  38. package/build/translations/lt.js +1 -1
  39. package/build/translations/lv.js +1 -1
  40. package/build/translations/ms.js +1 -1
  41. package/build/translations/nb.js +1 -1
  42. package/build/translations/ne.js +1 -1
  43. package/build/translations/nl.js +1 -1
  44. package/build/translations/no.js +1 -1
  45. package/build/translations/pl.js +1 -1
  46. package/build/translations/pt-br.js +1 -1
  47. package/build/translations/pt.js +1 -1
  48. package/build/translations/ro.js +1 -1
  49. package/build/translations/ru.js +1 -1
  50. package/build/translations/si.js +1 -1
  51. package/build/translations/sk.js +1 -1
  52. package/build/translations/sq.js +1 -1
  53. package/build/translations/sr-latn.js +1 -1
  54. package/build/translations/sr.js +1 -1
  55. package/build/translations/sv.js +1 -1
  56. package/build/translations/th.js +1 -1
  57. package/build/translations/tk.js +1 -1
  58. package/build/translations/tr.js +1 -1
  59. package/build/translations/tt.js +1 -1
  60. package/build/translations/ug.js +1 -1
  61. package/build/translations/uk.js +1 -1
  62. package/build/translations/ur.js +1 -1
  63. package/build/translations/uz.js +1 -1
  64. package/build/translations/vi.js +1 -1
  65. package/build/translations/zh-cn.js +1 -1
  66. package/build/translations/zh.js +1 -1
  67. package/ckeditor5-metadata.json +3 -3
  68. package/lang/contexts.json +5 -0
  69. package/lang/translations/ar.po +20 -0
  70. package/lang/translations/ast.po +20 -0
  71. package/lang/translations/az.po +20 -0
  72. package/lang/translations/bg.po +20 -0
  73. package/lang/translations/bn.po +20 -0
  74. package/lang/translations/bs.po +20 -0
  75. package/lang/translations/ca.po +20 -0
  76. package/lang/translations/cs.po +20 -0
  77. package/lang/translations/da.po +20 -0
  78. package/lang/translations/de-ch.po +20 -0
  79. package/lang/translations/de.po +20 -0
  80. package/lang/translations/el.po +20 -0
  81. package/lang/translations/en-au.po +20 -0
  82. package/lang/translations/en-gb.po +20 -0
  83. package/lang/translations/en.po +20 -0
  84. package/lang/translations/eo.po +20 -0
  85. package/lang/translations/es.po +20 -0
  86. package/lang/translations/et.po +20 -0
  87. package/lang/translations/eu.po +20 -0
  88. package/lang/translations/fa.po +20 -0
  89. package/lang/translations/fi.po +20 -0
  90. package/lang/translations/fr.po +20 -0
  91. package/lang/translations/gl.po +20 -0
  92. package/lang/translations/he.po +20 -0
  93. package/lang/translations/hi.po +20 -0
  94. package/lang/translations/hr.po +20 -0
  95. package/lang/translations/hu.po +20 -0
  96. package/lang/translations/id.po +20 -0
  97. package/lang/translations/it.po +20 -0
  98. package/lang/translations/ja.po +20 -0
  99. package/lang/translations/jv.po +20 -0
  100. package/lang/translations/km.po +20 -0
  101. package/lang/translations/kn.po +20 -0
  102. package/lang/translations/ko.po +20 -0
  103. package/lang/translations/ku.po +20 -0
  104. package/lang/translations/lt.po +20 -0
  105. package/lang/translations/lv.po +20 -0
  106. package/lang/translations/ms.po +20 -0
  107. package/lang/translations/nb.po +20 -0
  108. package/lang/translations/ne.po +20 -0
  109. package/lang/translations/nl.po +20 -0
  110. package/lang/translations/no.po +20 -0
  111. package/lang/translations/pl.po +20 -0
  112. package/lang/translations/pt-br.po +20 -0
  113. package/lang/translations/pt.po +20 -0
  114. package/lang/translations/ro.po +20 -0
  115. package/lang/translations/ru.po +20 -0
  116. package/lang/translations/si.po +20 -0
  117. package/lang/translations/sk.po +20 -0
  118. package/lang/translations/sq.po +20 -0
  119. package/lang/translations/sr-latn.po +20 -0
  120. package/lang/translations/sr.po +20 -0
  121. package/lang/translations/sv.po +20 -0
  122. package/lang/translations/th.po +20 -0
  123. package/lang/translations/tk.po +20 -0
  124. package/lang/translations/tr.po +20 -0
  125. package/lang/translations/tt.po +20 -0
  126. package/lang/translations/ug.po +21 -1
  127. package/lang/translations/uk.po +20 -0
  128. package/lang/translations/ur.po +20 -0
  129. package/lang/translations/uz.po +20 -0
  130. package/lang/translations/vi.po +20 -0
  131. package/lang/translations/zh-cn.po +20 -0
  132. package/lang/translations/zh.po +20 -0
  133. package/package.json +3 -3
  134. package/src/augmentation.d.ts +56 -56
  135. package/src/augmentation.js +5 -5
  136. package/src/autoimage.d.ts +52 -52
  137. package/src/autoimage.js +132 -132
  138. package/src/image/converters.d.ts +66 -66
  139. package/src/image/converters.js +232 -232
  140. package/src/image/imageblockediting.d.ts +59 -58
  141. package/src/image/imageblockediting.js +153 -152
  142. package/src/image/imageediting.d.ts +30 -30
  143. package/src/image/imageediting.js +63 -63
  144. package/src/image/imageinlineediting.d.ts +60 -59
  145. package/src/image/imageinlineediting.js +177 -176
  146. package/src/image/imageloadobserver.d.ts +48 -48
  147. package/src/image/imageloadobserver.js +52 -52
  148. package/src/image/imageplaceholder.d.ts +39 -0
  149. package/src/image/imageplaceholder.js +113 -0
  150. package/src/image/imagetypecommand.d.ts +44 -44
  151. package/src/image/imagetypecommand.js +80 -80
  152. package/src/image/insertimagecommand.d.ts +66 -66
  153. package/src/image/insertimagecommand.js +120 -120
  154. package/src/image/replaceimagesourcecommand.d.ts +51 -34
  155. package/src/image/replaceimagesourcecommand.js +75 -44
  156. package/src/image/ui/utils.d.ts +25 -25
  157. package/src/image/ui/utils.js +44 -44
  158. package/src/image/utils.d.ts +64 -64
  159. package/src/image/utils.js +121 -121
  160. package/src/image.d.ts +34 -34
  161. package/src/image.js +38 -38
  162. package/src/imageblock.d.ts +34 -33
  163. package/src/imageblock.js +38 -37
  164. package/src/imagecaption/imagecaptionediting.d.ts +89 -89
  165. package/src/imagecaption/imagecaptionediting.js +225 -225
  166. package/src/imagecaption/imagecaptionui.d.ts +26 -26
  167. package/src/imagecaption/imagecaptionui.js +61 -61
  168. package/src/imagecaption/imagecaptionutils.d.ts +38 -38
  169. package/src/imagecaption/imagecaptionutils.js +62 -62
  170. package/src/imagecaption/toggleimagecaptioncommand.d.ts +66 -66
  171. package/src/imagecaption/toggleimagecaptioncommand.js +138 -138
  172. package/src/imagecaption.d.ts +26 -26
  173. package/src/imagecaption.js +30 -30
  174. package/src/imageconfig.d.ts +712 -713
  175. package/src/imageconfig.js +5 -5
  176. package/src/imageinline.d.ts +34 -33
  177. package/src/imageinline.js +38 -37
  178. package/src/imageinsert/imageinsertui.d.ts +72 -44
  179. package/src/imageinsert/imageinsertui.js +174 -141
  180. package/src/imageinsert/imageinsertviaurlui.d.ts +44 -0
  181. package/src/imageinsert/imageinsertviaurlui.js +122 -0
  182. package/src/imageinsert/ui/imageinsertformview.d.ts +56 -0
  183. package/src/imageinsert/ui/imageinsertformview.js +112 -0
  184. package/src/imageinsert/ui/imageinserturlview.d.ts +107 -0
  185. package/src/imageinsert/ui/imageinserturlview.js +156 -0
  186. package/src/imageinsert.d.ts +33 -33
  187. package/src/imageinsert.js +37 -37
  188. package/src/imageinsertviaurl.d.ts +31 -30
  189. package/src/imageinsertviaurl.js +35 -34
  190. package/src/imageresize/imageresizebuttons.d.ts +67 -67
  191. package/src/imageresize/imageresizebuttons.js +217 -217
  192. package/src/imageresize/imageresizeediting.d.ts +37 -37
  193. package/src/imageresize/imageresizeediting.js +165 -165
  194. package/src/imageresize/imageresizehandles.d.ts +31 -31
  195. package/src/imageresize/imageresizehandles.js +114 -114
  196. package/src/imageresize/resizeimagecommand.d.ts +42 -42
  197. package/src/imageresize/resizeimagecommand.js +63 -63
  198. package/src/imageresize.d.ts +27 -27
  199. package/src/imageresize.js +31 -31
  200. package/src/imagesizeattributes.d.ts +34 -34
  201. package/src/imagesizeattributes.js +142 -143
  202. package/src/imagestyle/converters.d.ts +24 -24
  203. package/src/imagestyle/converters.js +79 -79
  204. package/src/imagestyle/imagestylecommand.d.ts +68 -68
  205. package/src/imagestyle/imagestylecommand.js +107 -107
  206. package/src/imagestyle/imagestyleediting.d.ts +50 -50
  207. package/src/imagestyle/imagestyleediting.js +108 -108
  208. package/src/imagestyle/imagestyleui.d.ts +56 -56
  209. package/src/imagestyle/imagestyleui.js +192 -192
  210. package/src/imagestyle/utils.d.ts +101 -101
  211. package/src/imagestyle/utils.js +329 -329
  212. package/src/imagestyle.d.ts +32 -32
  213. package/src/imagestyle.js +36 -36
  214. package/src/imagetextalternative/imagetextalternativecommand.d.ts +34 -34
  215. package/src/imagetextalternative/imagetextalternativecommand.js +44 -44
  216. package/src/imagetextalternative/imagetextalternativeediting.d.ts +28 -28
  217. package/src/imagetextalternative/imagetextalternativeediting.js +35 -35
  218. package/src/imagetextalternative/imagetextalternativeui.d.ts +68 -68
  219. package/src/imagetextalternative/imagetextalternativeui.js +173 -173
  220. package/src/imagetextalternative/ui/textalternativeformview.d.ts +90 -72
  221. package/src/imagetextalternative/ui/textalternativeformview.js +121 -121
  222. package/src/imagetextalternative.d.ts +29 -29
  223. package/src/imagetextalternative.js +33 -33
  224. package/src/imagetoolbar.d.ts +35 -35
  225. package/src/imagetoolbar.js +57 -57
  226. package/src/imageupload/imageuploadediting.d.ts +111 -111
  227. package/src/imageupload/imageuploadediting.js +337 -337
  228. package/src/imageupload/imageuploadprogress.d.ts +42 -42
  229. package/src/imageupload/imageuploadprogress.js +211 -211
  230. package/src/imageupload/imageuploadui.d.ts +23 -23
  231. package/src/imageupload/imageuploadui.js +81 -57
  232. package/src/imageupload/uploadimagecommand.d.ts +60 -60
  233. package/src/imageupload/uploadimagecommand.js +100 -100
  234. package/src/imageupload/utils.d.ts +33 -33
  235. package/src/imageupload/utils.js +112 -112
  236. package/src/imageupload.d.ts +32 -32
  237. package/src/imageupload.js +36 -36
  238. package/src/imageutils.d.ts +125 -125
  239. package/src/imageutils.js +306 -306
  240. package/src/index.d.ts +48 -48
  241. package/src/index.js +39 -39
  242. package/src/pictureediting.d.ts +88 -88
  243. package/src/pictureediting.js +130 -130
  244. package/theme/imageinsert.css +5 -17
  245. package/theme/imageplaceholder.css +10 -0
  246. package/build/image.js.map +0 -1
  247. package/src/imageinsert/ui/imageinsertformrowview.d.ts +0 -61
  248. package/src/imageinsert/ui/imageinsertformrowview.js +0 -54
  249. package/src/imageinsert/ui/imageinsertpanelview.d.ts +0 -106
  250. package/src/imageinsert/ui/imageinsertpanelview.js +0 -161
  251. package/src/imageinsert/utils.d.ts +0 -25
  252. package/src/imageinsert/utils.js +0 -58
  253. package/theme/imageinsertformrowview.css +0 -36
@@ -1,107 +1,107 @@
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 { Command } from 'ckeditor5/src/core';
6
- /**
7
- * The image style command. It is used to apply {@link module:image/imageconfig~ImageStyleConfig#options image style option}
8
- * to a selected image.
9
- *
10
- * **Note**: Executing this command may change the image model element if the desired style requires an image of a different
11
- * type. See {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand#execute} to learn more.
12
- */
13
- export default class ImageStyleCommand extends Command {
14
- /**
15
- * Creates an instance of the image style command. When executed, the command applies one of
16
- * {@link module:image/imageconfig~ImageStyleConfig#options style options} to the currently selected image.
17
- *
18
- * @param editor The editor instance.
19
- * @param styles The style options that this command supports.
20
- */
21
- constructor(editor, styles) {
22
- super(editor);
23
- this._defaultStyles = {
24
- imageBlock: false,
25
- imageInline: false
26
- };
27
- this._styles = new Map(styles.map(style => {
28
- if (style.isDefault) {
29
- for (const modelElementName of style.modelElements) {
30
- this._defaultStyles[modelElementName] = style.name;
31
- }
32
- }
33
- return [style.name, style];
34
- }));
35
- }
36
- /**
37
- * @inheritDoc
38
- */
39
- refresh() {
40
- const editor = this.editor;
41
- const imageUtils = editor.plugins.get('ImageUtils');
42
- const element = imageUtils.getClosestSelectedImageElement(this.editor.model.document.selection);
43
- this.isEnabled = !!element;
44
- if (!this.isEnabled) {
45
- this.value = false;
46
- }
47
- else if (element.hasAttribute('imageStyle')) {
48
- this.value = element.getAttribute('imageStyle');
49
- }
50
- else {
51
- this.value = this._defaultStyles[element.name];
52
- }
53
- }
54
- /**
55
- * Executes the command and applies the style to the currently selected image:
56
- *
57
- * ```ts
58
- * editor.execute( 'imageStyle', { value: 'side' } );
59
- * ```
60
- *
61
- * **Note**: Executing this command may change the image model element if the desired style requires an image
62
- * of a different type. Learn more about {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements model element}
63
- * configuration for the style option.
64
- *
65
- * @param options.value The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).
66
- * @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.
67
- * The default is `true`.
68
- * @fires execute
69
- */
70
- execute(options = {}) {
71
- const editor = this.editor;
72
- const model = editor.model;
73
- const imageUtils = editor.plugins.get('ImageUtils');
74
- model.change(writer => {
75
- const requestedStyle = options.value;
76
- const { setImageSizes = true } = options;
77
- let imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);
78
- // Change the image type if a style requires it.
79
- if (requestedStyle && this.shouldConvertImageType(requestedStyle, imageElement)) {
80
- this.editor.execute(imageUtils.isBlockImage(imageElement) ? 'imageTypeInline' : 'imageTypeBlock', { setImageSizes });
81
- // Update the imageElement to the newly created image.
82
- imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);
83
- }
84
- // Default style means that there is no `imageStyle` attribute in the model.
85
- // https://github.com/ckeditor/ckeditor5-image/issues/147
86
- if (!requestedStyle || this._styles.get(requestedStyle).isDefault) {
87
- writer.removeAttribute('imageStyle', imageElement);
88
- }
89
- else {
90
- writer.setAttribute('imageStyle', requestedStyle, imageElement);
91
- }
92
- if (setImageSizes) {
93
- imageUtils.setImageNaturalSizeAttributes(imageElement);
94
- }
95
- });
96
- }
97
- /**
98
- * Returns `true` if requested style change would trigger the image type change.
99
- *
100
- * @param requestedStyle The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).
101
- * @param imageElement The image model element.
102
- */
103
- shouldConvertImageType(requestedStyle, imageElement) {
104
- const supportedTypes = this._styles.get(requestedStyle).modelElements;
105
- return !supportedTypes.includes(imageElement.name);
106
- }
107
- }
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 { Command } from 'ckeditor5/src/core';
6
+ /**
7
+ * The image style command. It is used to apply {@link module:image/imageconfig~ImageStyleConfig#options image style option}
8
+ * to a selected image.
9
+ *
10
+ * **Note**: Executing this command may change the image model element if the desired style requires an image of a different
11
+ * type. See {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand#execute} to learn more.
12
+ */
13
+ export default class ImageStyleCommand extends Command {
14
+ /**
15
+ * Creates an instance of the image style command. When executed, the command applies one of
16
+ * {@link module:image/imageconfig~ImageStyleConfig#options style options} to the currently selected image.
17
+ *
18
+ * @param editor The editor instance.
19
+ * @param styles The style options that this command supports.
20
+ */
21
+ constructor(editor, styles) {
22
+ super(editor);
23
+ this._defaultStyles = {
24
+ imageBlock: false,
25
+ imageInline: false
26
+ };
27
+ this._styles = new Map(styles.map(style => {
28
+ if (style.isDefault) {
29
+ for (const modelElementName of style.modelElements) {
30
+ this._defaultStyles[modelElementName] = style.name;
31
+ }
32
+ }
33
+ return [style.name, style];
34
+ }));
35
+ }
36
+ /**
37
+ * @inheritDoc
38
+ */
39
+ refresh() {
40
+ const editor = this.editor;
41
+ const imageUtils = editor.plugins.get('ImageUtils');
42
+ const element = imageUtils.getClosestSelectedImageElement(this.editor.model.document.selection);
43
+ this.isEnabled = !!element;
44
+ if (!this.isEnabled) {
45
+ this.value = false;
46
+ }
47
+ else if (element.hasAttribute('imageStyle')) {
48
+ this.value = element.getAttribute('imageStyle');
49
+ }
50
+ else {
51
+ this.value = this._defaultStyles[element.name];
52
+ }
53
+ }
54
+ /**
55
+ * Executes the command and applies the style to the currently selected image:
56
+ *
57
+ * ```ts
58
+ * editor.execute( 'imageStyle', { value: 'side' } );
59
+ * ```
60
+ *
61
+ * **Note**: Executing this command may change the image model element if the desired style requires an image
62
+ * of a different type. Learn more about {@link module:image/imageconfig~ImageStyleOptionDefinition#modelElements model element}
63
+ * configuration for the style option.
64
+ *
65
+ * @param options.value The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).
66
+ * @param options.setImageSizes Specifies whether the image `width` and `height` attributes should be set automatically.
67
+ * The default is `true`.
68
+ * @fires execute
69
+ */
70
+ execute(options = {}) {
71
+ const editor = this.editor;
72
+ const model = editor.model;
73
+ const imageUtils = editor.plugins.get('ImageUtils');
74
+ model.change(writer => {
75
+ const requestedStyle = options.value;
76
+ const { setImageSizes = true } = options;
77
+ let imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);
78
+ // Change the image type if a style requires it.
79
+ if (requestedStyle && this.shouldConvertImageType(requestedStyle, imageElement)) {
80
+ this.editor.execute(imageUtils.isBlockImage(imageElement) ? 'imageTypeInline' : 'imageTypeBlock', { setImageSizes });
81
+ // Update the imageElement to the newly created image.
82
+ imageElement = imageUtils.getClosestSelectedImageElement(model.document.selection);
83
+ }
84
+ // Default style means that there is no `imageStyle` attribute in the model.
85
+ // https://github.com/ckeditor/ckeditor5-image/issues/147
86
+ if (!requestedStyle || this._styles.get(requestedStyle).isDefault) {
87
+ writer.removeAttribute('imageStyle', imageElement);
88
+ }
89
+ else {
90
+ writer.setAttribute('imageStyle', requestedStyle, imageElement);
91
+ }
92
+ if (setImageSizes) {
93
+ imageUtils.setImageNaturalSizeAttributes(imageElement);
94
+ }
95
+ });
96
+ }
97
+ /**
98
+ * Returns `true` if requested style change would trigger the image type change.
99
+ *
100
+ * @param requestedStyle The name of the style (as configured in {@link module:image/imageconfig~ImageStyleConfig#options}).
101
+ * @param imageElement The image model element.
102
+ */
103
+ shouldConvertImageType(requestedStyle, imageElement) {
104
+ const supportedTypes = this._styles.get(requestedStyle).modelElements;
105
+ return !supportedTypes.includes(imageElement.name);
106
+ }
107
+ }
@@ -1,50 +1,50 @@
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/imagestyle/imagestyleediting
7
- */
8
- import { Plugin } from 'ckeditor5/src/core';
9
- import ImageUtils from '../imageutils';
10
- import type { ImageStyleOptionDefinition } from '../imageconfig';
11
- /**
12
- * The image style engine plugin. It sets the default configuration, creates converters and registers
13
- * {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand ImageStyleCommand}.
14
- */
15
- export default class ImageStyleEditing extends Plugin {
16
- /**
17
- * @inheritDoc
18
- */
19
- static get pluginName(): "ImageStyleEditing";
20
- /**
21
- * @inheritDoc
22
- */
23
- static get requires(): readonly [typeof ImageUtils];
24
- /**
25
- * It contains a list of the normalized and validated style options.
26
- *
27
- * * Each option contains a complete icon markup.
28
- * * The style options not supported by any of the loaded image editing plugins (
29
- * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} or
30
- * {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`}) are filtered out.
31
- *
32
- * @internal
33
- * @readonly
34
- */
35
- normalizedStyles?: Array<ImageStyleOptionDefinition>;
36
- /**
37
- * @inheritDoc
38
- */
39
- init(): void;
40
- /**
41
- * Sets the editor conversion taking the presence of
42
- * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`}
43
- * and {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugins into consideration.
44
- */
45
- private _setupConversion;
46
- /**
47
- * Registers a post-fixer that will make sure that the style attribute value is correct for a specific image type (block vs inline).
48
- */
49
- private _setupPostFixer;
50
- }
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/imagestyle/imagestyleediting
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core';
9
+ import ImageUtils from '../imageutils';
10
+ import type { ImageStyleOptionDefinition } from '../imageconfig';
11
+ /**
12
+ * The image style engine plugin. It sets the default configuration, creates converters and registers
13
+ * {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand ImageStyleCommand}.
14
+ */
15
+ export default class ImageStyleEditing extends Plugin {
16
+ /**
17
+ * @inheritDoc
18
+ */
19
+ static get pluginName(): "ImageStyleEditing";
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ static get requires(): readonly [typeof ImageUtils];
24
+ /**
25
+ * It contains a list of the normalized and validated style options.
26
+ *
27
+ * * Each option contains a complete icon markup.
28
+ * * The style options not supported by any of the loaded image editing plugins (
29
+ * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`} or
30
+ * {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`}) are filtered out.
31
+ *
32
+ * @internal
33
+ * @readonly
34
+ */
35
+ normalizedStyles?: Array<ImageStyleOptionDefinition>;
36
+ /**
37
+ * @inheritDoc
38
+ */
39
+ init(): void;
40
+ /**
41
+ * Sets the editor conversion taking the presence of
42
+ * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`}
43
+ * and {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugins into consideration.
44
+ */
45
+ private _setupConversion;
46
+ /**
47
+ * Registers a post-fixer that will make sure that the style attribute value is correct for a specific image type (block vs inline).
48
+ */
49
+ private _setupPostFixer;
50
+ }
@@ -1,108 +1,108 @@
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/imagestyle/imagestyleediting
7
- */
8
- import { Plugin } from 'ckeditor5/src/core';
9
- import ImageStyleCommand from './imagestylecommand';
10
- import ImageUtils from '../imageutils';
11
- import utils from './utils';
12
- import { viewToModelStyleAttribute, modelToViewStyleAttribute } from './converters';
13
- /**
14
- * The image style engine plugin. It sets the default configuration, creates converters and registers
15
- * {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand ImageStyleCommand}.
16
- */
17
- export default class ImageStyleEditing extends Plugin {
18
- /**
19
- * @inheritDoc
20
- */
21
- static get pluginName() {
22
- return 'ImageStyleEditing';
23
- }
24
- /**
25
- * @inheritDoc
26
- */
27
- static get requires() {
28
- return [ImageUtils];
29
- }
30
- /**
31
- * @inheritDoc
32
- */
33
- init() {
34
- const { normalizeStyles, getDefaultStylesConfiguration } = utils;
35
- const editor = this.editor;
36
- const isBlockPluginLoaded = editor.plugins.has('ImageBlockEditing');
37
- const isInlinePluginLoaded = editor.plugins.has('ImageInlineEditing');
38
- editor.config.define('image.styles', getDefaultStylesConfiguration(isBlockPluginLoaded, isInlinePluginLoaded));
39
- this.normalizedStyles = normalizeStyles({
40
- configuredStyles: editor.config.get('image.styles'),
41
- isBlockPluginLoaded,
42
- isInlinePluginLoaded
43
- });
44
- this._setupConversion(isBlockPluginLoaded, isInlinePluginLoaded);
45
- this._setupPostFixer();
46
- // Register imageStyle command.
47
- editor.commands.add('imageStyle', new ImageStyleCommand(editor, this.normalizedStyles));
48
- }
49
- /**
50
- * Sets the editor conversion taking the presence of
51
- * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`}
52
- * and {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugins into consideration.
53
- */
54
- _setupConversion(isBlockPluginLoaded, isInlinePluginLoaded) {
55
- const editor = this.editor;
56
- const schema = editor.model.schema;
57
- const modelToViewConverter = modelToViewStyleAttribute(this.normalizedStyles);
58
- const viewToModelConverter = viewToModelStyleAttribute(this.normalizedStyles);
59
- editor.editing.downcastDispatcher.on('attribute:imageStyle', modelToViewConverter);
60
- editor.data.downcastDispatcher.on('attribute:imageStyle', modelToViewConverter);
61
- // Allow imageStyle attribute in image and imageInline.
62
- // We could call it 'style' but https://github.com/ckeditor/ckeditor5-engine/issues/559.
63
- if (isBlockPluginLoaded) {
64
- schema.extend('imageBlock', { allowAttributes: 'imageStyle' });
65
- // Converter for figure element from view to model.
66
- editor.data.upcastDispatcher.on('element:figure', viewToModelConverter, { priority: 'low' });
67
- }
68
- if (isInlinePluginLoaded) {
69
- schema.extend('imageInline', { allowAttributes: 'imageStyle' });
70
- // Converter for the img element from view to model.
71
- editor.data.upcastDispatcher.on('element:img', viewToModelConverter, { priority: 'low' });
72
- }
73
- }
74
- /**
75
- * Registers a post-fixer that will make sure that the style attribute value is correct for a specific image type (block vs inline).
76
- */
77
- _setupPostFixer() {
78
- const editor = this.editor;
79
- const document = editor.model.document;
80
- const imageUtils = editor.plugins.get(ImageUtils);
81
- const stylesMap = new Map(this.normalizedStyles.map(style => [style.name, style]));
82
- // Make sure that style attribute is valid for the image type.
83
- document.registerPostFixer(writer => {
84
- let changed = false;
85
- for (const change of document.differ.getChanges()) {
86
- if (change.type == 'insert' || change.type == 'attribute' && change.attributeKey == 'imageStyle') {
87
- let element = change.type == 'insert' ? change.position.nodeAfter : change.range.start.nodeAfter;
88
- if (element && element.is('element', 'paragraph') && element.childCount > 0) {
89
- element = element.getChild(0);
90
- }
91
- if (!imageUtils.isImage(element)) {
92
- continue;
93
- }
94
- const imageStyle = element.getAttribute('imageStyle');
95
- if (!imageStyle) {
96
- continue;
97
- }
98
- const imageStyleDefinition = stylesMap.get(imageStyle);
99
- if (!imageStyleDefinition || !imageStyleDefinition.modelElements.includes(element.name)) {
100
- writer.removeAttribute('imageStyle', element);
101
- changed = true;
102
- }
103
- }
104
- }
105
- return changed;
106
- });
107
- }
108
- }
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/imagestyle/imagestyleediting
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core';
9
+ import ImageStyleCommand from './imagestylecommand';
10
+ import ImageUtils from '../imageutils';
11
+ import utils from './utils';
12
+ import { viewToModelStyleAttribute, modelToViewStyleAttribute } from './converters';
13
+ /**
14
+ * The image style engine plugin. It sets the default configuration, creates converters and registers
15
+ * {@link module:image/imagestyle/imagestylecommand~ImageStyleCommand ImageStyleCommand}.
16
+ */
17
+ export default class ImageStyleEditing extends Plugin {
18
+ /**
19
+ * @inheritDoc
20
+ */
21
+ static get pluginName() {
22
+ return 'ImageStyleEditing';
23
+ }
24
+ /**
25
+ * @inheritDoc
26
+ */
27
+ static get requires() {
28
+ return [ImageUtils];
29
+ }
30
+ /**
31
+ * @inheritDoc
32
+ */
33
+ init() {
34
+ const { normalizeStyles, getDefaultStylesConfiguration } = utils;
35
+ const editor = this.editor;
36
+ const isBlockPluginLoaded = editor.plugins.has('ImageBlockEditing');
37
+ const isInlinePluginLoaded = editor.plugins.has('ImageInlineEditing');
38
+ editor.config.define('image.styles', getDefaultStylesConfiguration(isBlockPluginLoaded, isInlinePluginLoaded));
39
+ this.normalizedStyles = normalizeStyles({
40
+ configuredStyles: editor.config.get('image.styles'),
41
+ isBlockPluginLoaded,
42
+ isInlinePluginLoaded
43
+ });
44
+ this._setupConversion(isBlockPluginLoaded, isInlinePluginLoaded);
45
+ this._setupPostFixer();
46
+ // Register imageStyle command.
47
+ editor.commands.add('imageStyle', new ImageStyleCommand(editor, this.normalizedStyles));
48
+ }
49
+ /**
50
+ * Sets the editor conversion taking the presence of
51
+ * {@link module:image/image/imageinlineediting~ImageInlineEditing `ImageInlineEditing`}
52
+ * and {@link module:image/image/imageblockediting~ImageBlockEditing `ImageBlockEditing`} plugins into consideration.
53
+ */
54
+ _setupConversion(isBlockPluginLoaded, isInlinePluginLoaded) {
55
+ const editor = this.editor;
56
+ const schema = editor.model.schema;
57
+ const modelToViewConverter = modelToViewStyleAttribute(this.normalizedStyles);
58
+ const viewToModelConverter = viewToModelStyleAttribute(this.normalizedStyles);
59
+ editor.editing.downcastDispatcher.on('attribute:imageStyle', modelToViewConverter);
60
+ editor.data.downcastDispatcher.on('attribute:imageStyle', modelToViewConverter);
61
+ // Allow imageStyle attribute in image and imageInline.
62
+ // We could call it 'style' but https://github.com/ckeditor/ckeditor5-engine/issues/559.
63
+ if (isBlockPluginLoaded) {
64
+ schema.extend('imageBlock', { allowAttributes: 'imageStyle' });
65
+ // Converter for figure element from view to model.
66
+ editor.data.upcastDispatcher.on('element:figure', viewToModelConverter, { priority: 'low' });
67
+ }
68
+ if (isInlinePluginLoaded) {
69
+ schema.extend('imageInline', { allowAttributes: 'imageStyle' });
70
+ // Converter for the img element from view to model.
71
+ editor.data.upcastDispatcher.on('element:img', viewToModelConverter, { priority: 'low' });
72
+ }
73
+ }
74
+ /**
75
+ * Registers a post-fixer that will make sure that the style attribute value is correct for a specific image type (block vs inline).
76
+ */
77
+ _setupPostFixer() {
78
+ const editor = this.editor;
79
+ const document = editor.model.document;
80
+ const imageUtils = editor.plugins.get(ImageUtils);
81
+ const stylesMap = new Map(this.normalizedStyles.map(style => [style.name, style]));
82
+ // Make sure that style attribute is valid for the image type.
83
+ document.registerPostFixer(writer => {
84
+ let changed = false;
85
+ for (const change of document.differ.getChanges()) {
86
+ if (change.type == 'insert' || change.type == 'attribute' && change.attributeKey == 'imageStyle') {
87
+ let element = change.type == 'insert' ? change.position.nodeAfter : change.range.start.nodeAfter;
88
+ if (element && element.is('element', 'paragraph') && element.childCount > 0) {
89
+ element = element.getChild(0);
90
+ }
91
+ if (!imageUtils.isImage(element)) {
92
+ continue;
93
+ }
94
+ const imageStyle = element.getAttribute('imageStyle');
95
+ if (!imageStyle) {
96
+ continue;
97
+ }
98
+ const imageStyleDefinition = stylesMap.get(imageStyle);
99
+ if (!imageStyleDefinition || !imageStyleDefinition.modelElements.includes(element.name)) {
100
+ writer.removeAttribute('imageStyle', element);
101
+ changed = true;
102
+ }
103
+ }
104
+ }
105
+ return changed;
106
+ });
107
+ }
108
+ }
@@ -1,56 +1,56 @@
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/imagestyle/imagestyleui
7
- */
8
- import { Plugin } from 'ckeditor5/src/core';
9
- import ImageStyleEditing from './imagestyleediting';
10
- import '../../theme/imagestyle.css';
11
- /**
12
- * The image style UI plugin.
13
- *
14
- * It registers buttons corresponding to the {@link module:image/imageconfig~ImageConfig#styles} configuration.
15
- * It also registers the {@link module:image/imagestyle/utils#DEFAULT_DROPDOWN_DEFINITIONS default drop-downs} and the
16
- * custom drop-downs defined by the developer in the {@link module:image/imageconfig~ImageConfig#toolbar} configuration.
17
- */
18
- export default class ImageStyleUI extends Plugin {
19
- /**
20
- * @inheritDoc
21
- */
22
- static get requires(): readonly [typeof ImageStyleEditing];
23
- /**
24
- * @inheritDoc
25
- */
26
- static get pluginName(): "ImageStyleUI";
27
- /**
28
- * Returns the default localized style titles provided by the plugin.
29
- *
30
- * The following localized titles corresponding with
31
- * {@link module:image/imagestyle/utils#DEFAULT_OPTIONS} are available:
32
- *
33
- * * `'Wrap text'`,
34
- * * `'Break text'`,
35
- * * `'In line'`,
36
- * * `'Full size image'`,
37
- * * `'Side image'`,
38
- * * `'Left aligned image'`,
39
- * * `'Centered image'`,
40
- * * `'Right aligned image'`
41
- */
42
- get localizedDefaultStylesTitles(): Record<string, string>;
43
- /**
44
- * @inheritDoc
45
- */
46
- init(): void;
47
- /**
48
- * Creates a dropdown and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.
49
- */
50
- private _createDropdown;
51
- /**
52
- * Creates a button and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.
53
- */
54
- private _createButton;
55
- private _executeCommand;
56
- }
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/imagestyle/imagestyleui
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core';
9
+ import ImageStyleEditing from './imagestyleediting';
10
+ import '../../theme/imagestyle.css';
11
+ /**
12
+ * The image style UI plugin.
13
+ *
14
+ * It registers buttons corresponding to the {@link module:image/imageconfig~ImageConfig#styles} configuration.
15
+ * It also registers the {@link module:image/imagestyle/utils#DEFAULT_DROPDOWN_DEFINITIONS default drop-downs} and the
16
+ * custom drop-downs defined by the developer in the {@link module:image/imageconfig~ImageConfig#toolbar} configuration.
17
+ */
18
+ export default class ImageStyleUI extends Plugin {
19
+ /**
20
+ * @inheritDoc
21
+ */
22
+ static get requires(): readonly [typeof ImageStyleEditing];
23
+ /**
24
+ * @inheritDoc
25
+ */
26
+ static get pluginName(): "ImageStyleUI";
27
+ /**
28
+ * Returns the default localized style titles provided by the plugin.
29
+ *
30
+ * The following localized titles corresponding with
31
+ * {@link module:image/imagestyle/utils#DEFAULT_OPTIONS} are available:
32
+ *
33
+ * * `'Wrap text'`,
34
+ * * `'Break text'`,
35
+ * * `'In line'`,
36
+ * * `'Full size image'`,
37
+ * * `'Side image'`,
38
+ * * `'Left aligned image'`,
39
+ * * `'Centered image'`,
40
+ * * `'Right aligned image'`
41
+ */
42
+ get localizedDefaultStylesTitles(): Record<string, string>;
43
+ /**
44
+ * @inheritDoc
45
+ */
46
+ init(): void;
47
+ /**
48
+ * Creates a dropdown and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.
49
+ */
50
+ private _createDropdown;
51
+ /**
52
+ * Creates a button and stores it in the editor {@link module:ui/componentfactory~ComponentFactory}.
53
+ */
54
+ private _createButton;
55
+ private _executeCommand;
56
+ }