@ckeditor/ckeditor5-image 34.1.0 → 35.0.1

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 (139) hide show
  1. package/CHANGELOG.md +423 -0
  2. package/LICENSE.md +4 -0
  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 -0
  9. package/build/translations/bs.js +1 -1
  10. package/build/translations/ca.js +1 -0
  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 -0
  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/ug.js +1 -1
  60. package/build/translations/uk.js +1 -1
  61. package/build/translations/ur.js +1 -1
  62. package/build/translations/uz.js +1 -1
  63. package/build/translations/vi.js +1 -1
  64. package/build/translations/zh-cn.js +1 -1
  65. package/build/translations/zh.js +1 -1
  66. package/lang/contexts.json +3 -1
  67. package/lang/translations/ar.po +21 -13
  68. package/lang/translations/ast.po +8 -0
  69. package/lang/translations/az.po +8 -0
  70. package/lang/translations/bg.po +30 -22
  71. package/lang/translations/bn.po +121 -0
  72. package/lang/translations/bs.po +8 -0
  73. package/lang/translations/ca.po +121 -0
  74. package/lang/translations/cs.po +8 -0
  75. package/lang/translations/da.po +20 -12
  76. package/lang/translations/de-ch.po +8 -0
  77. package/lang/translations/de.po +8 -0
  78. package/lang/translations/el.po +8 -0
  79. package/lang/translations/en-au.po +8 -0
  80. package/lang/translations/en-gb.po +8 -0
  81. package/lang/translations/en.po +8 -0
  82. package/lang/translations/eo.po +8 -0
  83. package/lang/translations/es.po +9 -1
  84. package/lang/translations/et.po +20 -12
  85. package/lang/translations/eu.po +8 -0
  86. package/lang/translations/fa.po +8 -0
  87. package/lang/translations/fi.po +21 -13
  88. package/lang/translations/fr.po +12 -4
  89. package/lang/translations/gl.po +8 -0
  90. package/lang/translations/he.po +20 -12
  91. package/lang/translations/hi.po +11 -3
  92. package/lang/translations/hr.po +8 -0
  93. package/lang/translations/hu.po +8 -0
  94. package/lang/translations/id.po +8 -0
  95. package/lang/translations/it.po +9 -1
  96. package/lang/translations/ja.po +11 -3
  97. package/lang/translations/jv.po +8 -0
  98. package/lang/translations/km.po +8 -0
  99. package/lang/translations/kn.po +8 -0
  100. package/lang/translations/ko.po +15 -7
  101. package/lang/translations/ku.po +8 -0
  102. package/lang/translations/lt.po +21 -13
  103. package/lang/translations/lv.po +8 -0
  104. package/lang/translations/ms.po +121 -0
  105. package/lang/translations/nb.po +8 -0
  106. package/lang/translations/ne.po +8 -0
  107. package/lang/translations/nl.po +18 -10
  108. package/lang/translations/no.po +20 -12
  109. package/lang/translations/pl.po +12 -4
  110. package/lang/translations/pt-br.po +9 -1
  111. package/lang/translations/pt.po +25 -17
  112. package/lang/translations/ro.po +11 -3
  113. package/lang/translations/ru.po +8 -0
  114. package/lang/translations/si.po +8 -0
  115. package/lang/translations/sk.po +8 -0
  116. package/lang/translations/sq.po +8 -0
  117. package/lang/translations/sr-latn.po +8 -0
  118. package/lang/translations/sr.po +8 -0
  119. package/lang/translations/sv.po +21 -13
  120. package/lang/translations/th.po +20 -12
  121. package/lang/translations/tk.po +8 -0
  122. package/lang/translations/tr.po +15 -7
  123. package/lang/translations/ug.po +8 -0
  124. package/lang/translations/uk.po +11 -3
  125. package/lang/translations/ur.po +8 -0
  126. package/lang/translations/uz.po +8 -0
  127. package/lang/translations/vi.po +11 -3
  128. package/lang/translations/zh-cn.po +13 -5
  129. package/lang/translations/zh.po +11 -3
  130. package/package.json +33 -32
  131. package/src/image/ui/utils.js +1 -1
  132. package/src/imagecaption/imagecaptionediting.js +40 -1
  133. package/src/imageinsert/imageinsertui.js +45 -21
  134. package/src/imageinsert/ui/imageinsertpanelview.js +1 -37
  135. package/src/imageinsert.js +2 -1
  136. package/src/imageinsertviaurl.js +40 -0
  137. package/src/imageresize/imageresizehandles.js +1 -1
  138. package/src/imagestyle/imagestyleui.js +13 -1
  139. package/src/imageutils.js +7 -1
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2022, 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
+ /**
7
+ * @module image/imageinsertviaurl
8
+ */
9
+
10
+ import { Plugin } from 'ckeditor5/src/core';
11
+ import ImageInsertUI from './imageinsert/imageinsertui';
12
+
13
+ /**
14
+ * The image insert via URL plugin.
15
+ *
16
+ * For a detailed overview, check the {@glink features/images/image-upload/images-inserting#inserting-images-via-source-url
17
+ * Insert images via source URL} documentation.
18
+ *
19
+ * This plugin does not do anything directly, but it loads a set of specific plugins
20
+ * to enable image inserting via implemented integrations:
21
+ *
22
+ * * {@link module:image/imageinsert/imageinsertui~ImageInsertUI},
23
+ *
24
+ * @extends module:core/plugin~Plugin
25
+ */
26
+ export default class ImageInsertViaUrl extends Plugin {
27
+ /**
28
+ * @inheritDoc
29
+ */
30
+ static get pluginName() {
31
+ return 'ImageInsertViaUrl';
32
+ }
33
+
34
+ /**
35
+ * @inheritDoc
36
+ */
37
+ static get requires() {
38
+ return [ ImageInsertUI ];
39
+ }
40
+ }
@@ -104,7 +104,7 @@ export default class ImageResizeHandles extends Plugin {
104
104
  },
105
105
  getResizeHost() {
106
106
  // Return the model image element parent to avoid setting an inline element (<a>/<span>) as a resize host.
107
- return domConverter.viewToDom( mapper.toViewElement( imageModel.parent ) );
107
+ return domConverter.mapViewToDom( mapper.toViewElement( imageModel.parent ) );
108
108
  },
109
109
  // TODO consider other positions.
110
110
  isCentered() {
@@ -129,8 +129,9 @@ export default class ImageStyleUI extends Plugin {
129
129
 
130
130
  const dropdownView = createDropdown( locale, SplitButtonView );
131
131
  const splitButtonView = dropdownView.buttonView;
132
+ const splitButtonViewArrow = splitButtonView.arrowView;
132
133
 
133
- addToolbarToDropdown( dropdownView, buttonViews );
134
+ addToolbarToDropdown( dropdownView, buttonViews, { enableActiveItemFocusOnDropdownOpen: true } );
134
135
 
135
136
  splitButtonView.set( {
136
137
  label: getDropdownButtonTitle( title, defaultButton.label ),
@@ -138,6 +139,11 @@ export default class ImageStyleUI extends Plugin {
138
139
  tooltip: true
139
140
  } );
140
141
 
142
+ splitButtonViewArrow.unbind( 'label' );
143
+ splitButtonViewArrow.set( {
144
+ label: title
145
+ } );
146
+
141
147
  splitButtonView.bind( 'icon' ).toMany( buttonViews, 'isOn', ( ...areOn ) => {
142
148
  const index = areOn.findIndex( identity );
143
149
 
@@ -166,6 +172,12 @@ export default class ImageStyleUI extends Plugin {
166
172
  dropdownView.bind( 'isEnabled' )
167
173
  .toMany( buttonViews, 'isEnabled', ( ...areEnabled ) => areEnabled.some( identity ) );
168
174
 
175
+ // Focus the editable after executing the command.
176
+ // Overrides a default behaviour where the focus is moved to the dropdown button (#12125).
177
+ this.listenTo( dropdownView, 'execute', () => {
178
+ this.editor.editing.view.focus();
179
+ } );
180
+
169
181
  return dropdownView;
170
182
  } );
171
183
  }
package/src/imageutils.js CHANGED
@@ -127,13 +127,19 @@ export default class ImageUtils extends Plugin {
127
127
  * @returns {module:engine/view/element~Element|null}
128
128
  */
129
129
  getClosestSelectedImageWidget( selection ) {
130
+ const selectionPosition = selection.getFirstPosition();
131
+
132
+ if ( !selectionPosition ) {
133
+ return null;
134
+ }
135
+
130
136
  const viewElement = selection.getSelectedElement();
131
137
 
132
138
  if ( viewElement && this.isImageWidget( viewElement ) ) {
133
139
  return viewElement;
134
140
  }
135
141
 
136
- let parent = selection.getFirstPosition().parent;
142
+ let parent = selectionPosition.parent;
137
143
 
138
144
  while ( parent ) {
139
145
  if ( parent.is( 'element' ) && this.isImageWidget( parent ) ) {