@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
@@ -22,15 +22,15 @@ msgstr "วิดเจ็ตรูปภาพ"
22
22
 
23
23
  msgctxt "The label for the image style button that wraps text around the image."
24
24
  msgid "Wrap text"
25
- msgstr ""
25
+ msgstr "ตัดคำข้อความ"
26
26
 
27
27
  msgctxt "The label for the image style button that breaks the text around the image."
28
28
  msgid "Break text"
29
- msgstr ""
29
+ msgstr "แบ่งข้อความ"
30
30
 
31
31
  msgctxt "The label for the image style button that places the image inside the line of text."
32
32
  msgid "In line"
33
- msgstr ""
33
+ msgstr "ในบรรทัด"
34
34
 
35
35
  msgctxt "The label for the Side image option."
36
36
  msgid "Side image"
@@ -78,36 +78,44 @@ msgstr "เครื่องมือรูปภาพ"
78
78
 
79
79
  msgctxt "The label used for the dropdown in the image toolbar containing defined resize options."
80
80
  msgid "Resize image"
81
- msgstr ""
81
+ msgstr "ปรับขนาดภาพ"
82
82
 
83
83
  msgctxt "The label used for the standalone resize options buttons in the image toolbar."
84
84
  msgid "Resize image to %0"
85
- msgstr ""
85
+ msgstr "ปรับขนาดภาพเป็น %0"
86
86
 
87
87
  msgctxt "The accessibility label of the standalone image resize reset option button in the image toolbar for screen readers."
88
88
  msgid "Resize image to the original size"
89
- msgstr ""
89
+ msgstr "ปรับขนาดภาพเป็นขนาดเดิม"
90
90
 
91
91
  msgctxt "The default label for the resize option that resets the size of the image."
92
92
  msgid "Original"
93
- msgstr ""
93
+ msgstr "ดั้งเดิม"
94
94
 
95
95
  msgctxt "The accessibility label of the image resize dropdown for screen readers."
96
96
  msgid "Image resize list"
97
- msgstr ""
97
+ msgstr "รายการปรับขนาดภาพ"
98
98
 
99
99
  msgctxt "The label of the form submit button if the image source URL input has no value."
100
100
  msgid "Insert"
101
- msgstr ""
101
+ msgstr "แทรก"
102
102
 
103
103
  msgctxt "The label of the form submit button if the image source URL input has a value."
104
104
  msgid "Update"
105
- msgstr ""
105
+ msgstr "อัปเดต"
106
106
 
107
107
  msgctxt "The input label for the Insert image via URL form."
108
108
  msgid "Insert image via URL"
109
- msgstr ""
109
+ msgstr "แทรกภาพผ่าน URL"
110
110
 
111
111
  msgctxt "The input label for the Insert image via URL form for a pre-existing image."
112
112
  msgid "Update image URL"
113
- msgstr ""
113
+ msgstr "อัปเดต URL ภาพ"
114
+
115
+ msgctxt "Text used by screen readers do describe an image when the image has no text alternative."
116
+ msgid "Caption for the image"
117
+ msgstr "คำบรรยายภาพ"
118
+
119
+ msgctxt "Text used by screen readers do describe an image when there is a text alternative available, e.g. 'Caption for image: this is a description of the image.'"
120
+ msgid "Caption for image: %0"
121
+ msgstr "คำบรรยายภาพ: %0"
@@ -111,3 +111,11 @@ msgstr ""
111
111
  msgctxt "The input label for the Insert image via URL form for a pre-existing image."
112
112
  msgid "Update image URL"
113
113
  msgstr ""
114
+
115
+ msgctxt "Text used by screen readers do describe an image when the image has no text alternative."
116
+ msgid "Caption for the image"
117
+ msgstr ""
118
+
119
+ msgctxt "Text used by screen readers do describe an image when there is a text alternative available, e.g. 'Caption for image: this is a description of the image.'"
120
+ msgid "Caption for image: %0"
121
+ msgstr ""
@@ -22,15 +22,15 @@ msgstr "resim aracı"
22
22
 
23
23
  msgctxt "The label for the image style button that wraps text around the image."
24
24
  msgid "Wrap text"
25
- msgstr ""
25
+ msgstr "Metni kaydır"
26
26
 
27
27
  msgctxt "The label for the image style button that breaks the text around the image."
28
28
  msgid "Break text"
29
- msgstr ""
29
+ msgstr "Metni böl"
30
30
 
31
31
  msgctxt "The label for the image style button that places the image inside the line of text."
32
32
  msgid "In line"
33
- msgstr ""
33
+ msgstr "Aynı hizada"
34
34
 
35
35
  msgctxt "The label for the Side image option."
36
36
  msgid "Side image"
@@ -94,11 +94,11 @@ msgstr "Orijinal"
94
94
 
95
95
  msgctxt "The accessibility label of the image resize dropdown for screen readers."
96
96
  msgid "Image resize list"
97
- msgstr ""
97
+ msgstr "Resim yeniden boyutlandırma listesi"
98
98
 
99
99
  msgctxt "The label of the form submit button if the image source URL input has no value."
100
100
  msgid "Insert"
101
- msgstr ""
101
+ msgstr "Ekle"
102
102
 
103
103
  msgctxt "The label of the form submit button if the image source URL input has a value."
104
104
  msgid "Update"
@@ -106,8 +106,16 @@ msgstr "Güncelle"
106
106
 
107
107
  msgctxt "The input label for the Insert image via URL form."
108
108
  msgid "Insert image via URL"
109
- msgstr ""
109
+ msgstr "URL ile görüntü ekle"
110
110
 
111
111
  msgctxt "The input label for the Insert image via URL form for a pre-existing image."
112
112
  msgid "Update image URL"
113
- msgstr ""
113
+ msgstr "Görüntü URL'sini güncelle"
114
+
115
+ msgctxt "Text used by screen readers do describe an image when the image has no text alternative."
116
+ msgid "Caption for the image"
117
+ msgstr "Resim için başlık"
118
+
119
+ msgctxt "Text used by screen readers do describe an image when there is a text alternative available, e.g. 'Caption for image: this is a description of the image.'"
120
+ msgid "Caption for image: %0"
121
+ msgstr "Resim için başlık: %0"
@@ -111,3 +111,11 @@ msgstr ""
111
111
  msgctxt "The input label for the Insert image via URL form for a pre-existing image."
112
112
  msgid "Update image URL"
113
113
  msgstr ""
114
+
115
+ msgctxt "Text used by screen readers do describe an image when the image has no text alternative."
116
+ msgid "Caption for the image"
117
+ msgstr ""
118
+
119
+ msgctxt "Text used by screen readers do describe an image when there is a text alternative available, e.g. 'Caption for image: this is a description of the image.'"
120
+ msgid "Caption for image: %0"
121
+ msgstr ""
@@ -22,15 +22,15 @@ msgstr "Віджет зображення"
22
22
 
23
23
  msgctxt "The label for the image style button that wraps text around the image."
24
24
  msgid "Wrap text"
25
- msgstr ""
25
+ msgstr "Обернути текст"
26
26
 
27
27
  msgctxt "The label for the image style button that breaks the text around the image."
28
28
  msgid "Break text"
29
- msgstr ""
29
+ msgstr "Розірвати тексту"
30
30
 
31
31
  msgctxt "The label for the image style button that places the image inside the line of text."
32
32
  msgid "In line"
33
- msgstr ""
33
+ msgstr "В тексті"
34
34
 
35
35
  msgctxt "The label for the Side image option."
36
36
  msgid "Side image"
@@ -111,3 +111,11 @@ msgstr "Вставити зображення через посилання"
111
111
  msgctxt "The input label for the Insert image via URL form for a pre-existing image."
112
112
  msgid "Update image URL"
113
113
  msgstr "Оновити посилання на зображення"
114
+
115
+ msgctxt "Text used by screen readers do describe an image when the image has no text alternative."
116
+ msgid "Caption for the image"
117
+ msgstr "Підпис до зображення"
118
+
119
+ msgctxt "Text used by screen readers do describe an image when there is a text alternative available, e.g. 'Caption for image: this is a description of the image.'"
120
+ msgid "Caption for image: %0"
121
+ msgstr "Підпис до зображення: %0"
@@ -111,3 +111,11 @@ msgstr ""
111
111
  msgctxt "The input label for the Insert image via URL form for a pre-existing image."
112
112
  msgid "Update image URL"
113
113
  msgstr ""
114
+
115
+ msgctxt "Text used by screen readers do describe an image when the image has no text alternative."
116
+ msgid "Caption for the image"
117
+ msgstr ""
118
+
119
+ msgctxt "Text used by screen readers do describe an image when there is a text alternative available, e.g. 'Caption for image: this is a description of the image.'"
120
+ msgid "Caption for image: %0"
121
+ msgstr ""
@@ -111,3 +111,11 @@ msgstr "Rasmni URL orqali kiritish"
111
111
  msgctxt "The input label for the Insert image via URL form for a pre-existing image."
112
112
  msgid "Update image URL"
113
113
  msgstr "Rasm URL manzilini o'zgartirish"
114
+
115
+ msgctxt "Text used by screen readers do describe an image when the image has no text alternative."
116
+ msgid "Caption for the image"
117
+ msgstr ""
118
+
119
+ msgctxt "Text used by screen readers do describe an image when there is a text alternative available, e.g. 'Caption for image: this is a description of the image.'"
120
+ msgid "Caption for image: %0"
121
+ msgstr ""
@@ -22,15 +22,15 @@ msgstr "tiện ích ảnh"
22
22
 
23
23
  msgctxt "The label for the image style button that wraps text around the image."
24
24
  msgid "Wrap text"
25
- msgstr ""
25
+ msgstr "Bọc văn bản"
26
26
 
27
27
  msgctxt "The label for the image style button that breaks the text around the image."
28
28
  msgid "Break text"
29
- msgstr ""
29
+ msgstr "Ngắt văn bản"
30
30
 
31
31
  msgctxt "The label for the image style button that places the image inside the line of text."
32
32
  msgid "In line"
33
- msgstr ""
33
+ msgstr "Nội dòng"
34
34
 
35
35
  msgctxt "The label for the Side image option."
36
36
  msgid "Side image"
@@ -111,3 +111,11 @@ msgstr "Chèn ảnh từ URL"
111
111
  msgctxt "The input label for the Insert image via URL form for a pre-existing image."
112
112
  msgid "Update image URL"
113
113
  msgstr "Cập nhật ảnh từ URL"
114
+
115
+ msgctxt "Text used by screen readers do describe an image when the image has no text alternative."
116
+ msgid "Caption for the image"
117
+ msgstr "Chú thích cho hình ảnh"
118
+
119
+ msgctxt "Text used by screen readers do describe an image when there is a text alternative available, e.g. 'Caption for image: this is a description of the image.'"
120
+ msgid "Caption for image: %0"
121
+ msgstr "Chú thích cho hình ảnh: %0"
@@ -18,19 +18,19 @@ msgstr ""
18
18
 
19
19
  msgctxt "The label for the image widget."
20
20
  msgid "image widget"
21
- msgstr "图像小部件"
21
+ msgstr "图片组件"
22
22
 
23
23
  msgctxt "The label for the image style button that wraps text around the image."
24
24
  msgid "Wrap text"
25
- msgstr ""
25
+ msgstr "文字环绕"
26
26
 
27
27
  msgctxt "The label for the image style button that breaks the text around the image."
28
28
  msgid "Break text"
29
- msgstr ""
29
+ msgstr "文字断行"
30
30
 
31
31
  msgctxt "The label for the image style button that places the image inside the line of text."
32
32
  msgid "In line"
33
- msgstr ""
33
+ msgstr "行内"
34
34
 
35
35
  msgctxt "The label for the Side image option."
36
36
  msgid "Side image"
@@ -38,7 +38,7 @@ msgstr "图片侧边显示"
38
38
 
39
39
  msgctxt "The label for the Full size image option."
40
40
  msgid "Full size image"
41
- msgstr "图片通栏显示"
41
+ msgstr "全尺寸图片"
42
42
 
43
43
  msgctxt "The label for the Left aligned image option."
44
44
  msgid "Left aligned image"
@@ -111,3 +111,11 @@ msgstr "通过URL地址插入图片"
111
111
  msgctxt "The input label for the Insert image via URL form for a pre-existing image."
112
112
  msgid "Update image URL"
113
113
  msgstr "更新图片URL地址"
114
+
115
+ msgctxt "Text used by screen readers do describe an image when the image has no text alternative."
116
+ msgid "Caption for the image"
117
+ msgstr "图片说明:"
118
+
119
+ msgctxt "Text used by screen readers do describe an image when there is a text alternative available, e.g. 'Caption for image: this is a description of the image.'"
120
+ msgid "Caption for image: %0"
121
+ msgstr "图片说明:%0"
@@ -22,15 +22,15 @@ msgstr "圖片小工具"
22
22
 
23
23
  msgctxt "The label for the image style button that wraps text around the image."
24
24
  msgid "Wrap text"
25
- msgstr ""
25
+ msgstr "文繞圖"
26
26
 
27
27
  msgctxt "The label for the image style button that breaks the text around the image."
28
28
  msgid "Break text"
29
- msgstr ""
29
+ msgstr "上及下"
30
30
 
31
31
  msgctxt "The label for the image style button that places the image inside the line of text."
32
32
  msgid "In line"
33
- msgstr ""
33
+ msgstr "行中"
34
34
 
35
35
  msgctxt "The label for the Side image option."
36
36
  msgid "Side image"
@@ -111,3 +111,11 @@ msgstr "使用連結插入圖片"
111
111
  msgctxt "The input label for the Insert image via URL form for a pre-existing image."
112
112
  msgid "Update image URL"
113
113
  msgstr "更新圖片連結"
114
+
115
+ msgctxt "Text used by screen readers do describe an image when the image has no text alternative."
116
+ msgid "Caption for the image"
117
+ msgstr "影像的標題"
118
+
119
+ msgctxt "Text used by screen readers do describe an image when there is a text alternative available, e.g. 'Caption for image: this is a description of the image.'"
120
+ msgid "Caption for image: %0"
121
+ msgstr "影像標題:%0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ckeditor/ckeditor5-image",
3
- "version": "34.1.0",
3
+ "version": "35.0.1",
4
4
  "description": "Image feature for CKEditor 5.",
5
5
  "keywords": [
6
6
  "ckeditor",
@@ -12,40 +12,40 @@
12
12
  ],
13
13
  "main": "src/index.js",
14
14
  "dependencies": {
15
- "@ckeditor/ckeditor5-ui": "^34.1.0",
16
- "ckeditor5": "^34.1.0",
15
+ "@ckeditor/ckeditor5-ui": "^35.0.1",
16
+ "ckeditor5": "^35.0.1",
17
17
  "lodash-es": "^4.17.15"
18
18
  },
19
19
  "devDependencies": {
20
- "@ckeditor/ckeditor5-adapter-ckfinder": "^34.1.0",
21
- "@ckeditor/ckeditor5-autoformat": "^34.1.0",
22
- "@ckeditor/ckeditor5-basic-styles": "^34.1.0",
23
- "@ckeditor/ckeditor5-block-quote": "^34.1.0",
24
- "@ckeditor/ckeditor5-ckfinder": "^34.1.0",
25
- "@ckeditor/ckeditor5-clipboard": "^34.1.0",
26
- "@ckeditor/ckeditor5-cloud-services": "^34.1.0",
27
- "@ckeditor/ckeditor5-core": "^34.1.0",
20
+ "@ckeditor/ckeditor5-adapter-ckfinder": "^35.0.1",
21
+ "@ckeditor/ckeditor5-autoformat": "^35.0.1",
22
+ "@ckeditor/ckeditor5-basic-styles": "^35.0.1",
23
+ "@ckeditor/ckeditor5-block-quote": "^35.0.1",
24
+ "@ckeditor/ckeditor5-ckfinder": "^35.0.1",
25
+ "@ckeditor/ckeditor5-clipboard": "^35.0.1",
26
+ "@ckeditor/ckeditor5-cloud-services": "^35.0.1",
27
+ "@ckeditor/ckeditor5-core": "^35.0.1",
28
28
  "@ckeditor/ckeditor5-dev-utils": "^30.0.0",
29
- "@ckeditor/ckeditor5-easy-image": "^34.1.0",
30
- "@ckeditor/ckeditor5-editor-classic": "^34.1.0",
31
- "@ckeditor/ckeditor5-engine": "^34.1.0",
32
- "@ckeditor/ckeditor5-enter": "^34.1.0",
33
- "@ckeditor/ckeditor5-essentials": "^34.1.0",
34
- "@ckeditor/ckeditor5-heading": "^34.1.0",
35
- "@ckeditor/ckeditor5-html-embed": "^34.1.0",
36
- "@ckeditor/ckeditor5-indent": "^34.1.0",
37
- "@ckeditor/ckeditor5-link": "^34.1.0",
38
- "@ckeditor/ckeditor5-list": "^34.1.0",
39
- "@ckeditor/ckeditor5-media-embed": "^34.1.0",
40
- "@ckeditor/ckeditor5-paragraph": "^34.1.0",
41
- "@ckeditor/ckeditor5-table": "^34.1.0",
42
- "@ckeditor/ckeditor5-theme-lark": "^34.1.0",
43
- "@ckeditor/ckeditor5-typing": "^34.1.0",
44
- "@ckeditor/ckeditor5-undo": "^34.1.0",
45
- "@ckeditor/ckeditor5-upload": "^34.1.0",
46
- "@ckeditor/ckeditor5-utils": "^34.1.0",
47
- "@ckeditor/ckeditor5-watchdog": "^34.1.0",
48
- "@ckeditor/ckeditor5-widget": "^34.1.0",
29
+ "@ckeditor/ckeditor5-easy-image": "^35.0.1",
30
+ "@ckeditor/ckeditor5-editor-classic": "^35.0.1",
31
+ "@ckeditor/ckeditor5-engine": "^35.0.1",
32
+ "@ckeditor/ckeditor5-enter": "^35.0.1",
33
+ "@ckeditor/ckeditor5-essentials": "^35.0.1",
34
+ "@ckeditor/ckeditor5-heading": "^35.0.1",
35
+ "@ckeditor/ckeditor5-html-embed": "^35.0.1",
36
+ "@ckeditor/ckeditor5-indent": "^35.0.1",
37
+ "@ckeditor/ckeditor5-link": "^35.0.1",
38
+ "@ckeditor/ckeditor5-list": "^35.0.1",
39
+ "@ckeditor/ckeditor5-media-embed": "^35.0.1",
40
+ "@ckeditor/ckeditor5-paragraph": "^35.0.1",
41
+ "@ckeditor/ckeditor5-table": "^35.0.1",
42
+ "@ckeditor/ckeditor5-theme-lark": "^35.0.1",
43
+ "@ckeditor/ckeditor5-typing": "^35.0.1",
44
+ "@ckeditor/ckeditor5-undo": "^35.0.1",
45
+ "@ckeditor/ckeditor5-upload": "^35.0.1",
46
+ "@ckeditor/ckeditor5-utils": "^35.0.1",
47
+ "@ckeditor/ckeditor5-watchdog": "^35.0.1",
48
+ "@ckeditor/ckeditor5-widget": "^35.0.1",
49
49
  "webpack": "^5.58.1",
50
50
  "webpack-cli": "^4.9.0"
51
51
  },
@@ -67,7 +67,8 @@
67
67
  "src",
68
68
  "theme",
69
69
  "build",
70
- "ckeditor5-metadata.json"
70
+ "ckeditor5-metadata.json",
71
+ "CHANGELOG.md"
71
72
  ],
72
73
  "scripts": {
73
74
  "dll:build": "webpack"
@@ -40,7 +40,7 @@ export function getBalloonPositionData( editor ) {
40
40
  const imageUtils = editor.plugins.get( 'ImageUtils' );
41
41
 
42
42
  return {
43
- target: editingView.domConverter.viewToDom( imageUtils.getClosestSelectedImageWidget( editingView.document.selection ) ),
43
+ target: editingView.domConverter.mapViewToDom( imageUtils.getClosestSelectedImageWidget( editingView.document.selection ) ),
44
44
  positions: [
45
45
  defaultPositions.northArrowSouth,
46
46
  defaultPositions.northArrowSouthWest,
@@ -81,6 +81,7 @@ export default class ImageCaptionEditing extends Plugin {
81
81
 
82
82
  this._setupConversion();
83
83
  this._setupImageTypeCommandsIntegration();
84
+ this._registerCaptionReconversion();
84
85
  }
85
86
 
86
87
  /**
@@ -132,7 +133,10 @@ export default class ImageCaptionEditing extends Plugin {
132
133
  keepOnFocus: true
133
134
  } );
134
135
 
135
- return toWidgetEditable( figcaptionElement, writer );
136
+ const imageAlt = modelElement.parent.getAttribute( 'alt' );
137
+ const label = imageAlt ? t( 'Caption for image: %0', [ imageAlt ] ) : t( 'Caption for the image' );
138
+
139
+ return toWidgetEditable( figcaptionElement, writer, { label } );
136
140
  }
137
141
  } );
138
142
  }
@@ -242,4 +246,39 @@ export default class ImageCaptionEditing extends Plugin {
242
246
  _saveCaption( imageModelElement, caption ) {
243
247
  this._savedCaptionsMap.set( imageModelElement, caption.toJSON() );
244
248
  }
249
+
250
+ /**
251
+ * Reconverts image caption when image alt attribute changes.
252
+ * The change of alt attribute is reflected in caption's aria-label attribute.
253
+ *
254
+ * @private
255
+ */
256
+ _registerCaptionReconversion() {
257
+ const editor = this.editor;
258
+ const model = editor.model;
259
+ const imageUtils = editor.plugins.get( 'ImageUtils' );
260
+ const imageCaptionUtils = editor.plugins.get( 'ImageCaptionUtils' );
261
+
262
+ model.document.on( 'change:data', () => {
263
+ const changes = model.document.differ.getChanges();
264
+
265
+ for ( const change of changes ) {
266
+ if ( change.attributeKey !== 'alt' ) {
267
+ continue;
268
+ }
269
+
270
+ const image = change.range.start.nodeAfter;
271
+
272
+ if ( imageUtils.isBlockImage( image ) ) {
273
+ const caption = imageCaptionUtils.getCaptionFromImageModelElement( image );
274
+
275
+ if ( !caption ) {
276
+ return;
277
+ }
278
+
279
+ editor.editing.reconvertItem( caption );
280
+ }
281
+ }
282
+ } );
283
+ }
245
284
  }
@@ -7,8 +7,9 @@
7
7
  * @module image/imageinsert/imageinsertui
8
8
  */
9
9
 
10
- import { Plugin } from 'ckeditor5/src/core';
10
+ import { Plugin, icons } from 'ckeditor5/src/core';
11
11
  import ImageInsertPanelView from './ui/imageinsertpanelview';
12
+ import { SplitButtonView, createDropdown } from 'ckeditor5/src/ui';
12
13
  import { prepareIntegrations } from './utils';
13
14
 
14
15
  /**
@@ -54,41 +55,66 @@ export default class ImageInsertUI extends Plugin {
54
55
  */
55
56
  _createDropdownView( locale ) {
56
57
  const editor = this.editor;
57
- const imageInsertView = new ImageInsertPanelView( locale, prepareIntegrations( editor ) );
58
- const command = editor.commands.get( 'uploadImage' );
59
-
60
- const dropdownView = imageInsertView.dropdownView;
61
- const splitButtonView = dropdownView.buttonView;
62
-
63
- splitButtonView.actionView = editor.ui.componentFactory.create( 'uploadImage' );
64
- // After we replaced action button with `uploadImage` component,
65
- // we have lost a proper styling and some minor visual quirks have appeared.
66
- // Brining back original split button classes helps fix the button styling
67
- // See https://github.com/ckeditor/ckeditor5/issues/7986.
68
- splitButtonView.actionView.extendTemplate( {
58
+ const t = locale.t;
59
+
60
+ const uploadImageCommand = editor.commands.get( 'uploadImage' );
61
+ const insertImageCommand = editor.commands.get( 'insertImage' );
62
+
63
+ /**
64
+ * The dropdown view responsible for displaying the image insert UI.
65
+ *
66
+ * @member {module:ui/dropdown/dropdownview~DropdownView}
67
+ */
68
+ this.dropdownView = createDropdown( locale, uploadImageCommand ? SplitButtonView : undefined );
69
+
70
+ const buttonView = this.dropdownView.buttonView;
71
+ const panelView = this.dropdownView.panelView;
72
+
73
+ buttonView.set( {
74
+ label: t( 'Insert image' ),
75
+ icon: icons.image,
76
+ tooltip: true
77
+ } );
78
+
79
+ panelView.extendTemplate( {
69
80
  attributes: {
70
- class: 'ck ck-button ck-splitbutton__action'
81
+ class: 'ck-image-insert__panel'
71
82
  }
72
83
  } );
73
84
 
74
- return this._setUpDropdown( dropdownView, imageInsertView, command );
85
+ if ( uploadImageCommand ) {
86
+ const splitButtonView = this.dropdownView.buttonView;
87
+
88
+ splitButtonView.actionView = editor.ui.componentFactory.create( 'uploadImage' );
89
+ // After we replaced action button with `uploadImage` component,
90
+ // we have lost a proper styling and some minor visual quirks have appeared.
91
+ // Brining back original split button classes helps fix the button styling
92
+ // See https://github.com/ckeditor/ckeditor5/issues/7986.
93
+ splitButtonView.actionView.extendTemplate( {
94
+ attributes: {
95
+ class: 'ck ck-button ck-splitbutton__action'
96
+ }
97
+ } );
98
+ }
99
+
100
+ return this._setUpDropdown( uploadImageCommand || insertImageCommand );
75
101
  }
76
102
 
77
103
  /**
78
104
  * Sets up the dropdown view.
79
105
  *
80
- * @param {module:ui/dropdown/dropdownview~DropdownView} dropdownView A dropdownView.
81
- * @param {module:image/imageinsert/ui/imageinsertpanelview~ImageInsertPanelView} imageInsertView An imageInsertView.
82
- * @param {module:core/command~Command} command An insertImage command
106
+ * @param {module:core/command~Command} command An uploadImage or insertImage command.
83
107
  *
84
108
  * @private
85
109
  * @returns {module:ui/dropdown/dropdownview~DropdownView}
86
110
  */
87
- _setUpDropdown( dropdownView, imageInsertView, command ) {
111
+ _setUpDropdown( command ) {
88
112
  const editor = this.editor;
89
113
  const t = editor.t;
114
+ const imageInsertView = new ImageInsertPanelView( editor.locale, prepareIntegrations( editor ) );
90
115
  const insertButtonView = imageInsertView.insertButtonView;
91
116
  const insertImageViaUrlForm = imageInsertView.getIntegration( 'insertImageViaUrl' );
117
+ const dropdownView = this.dropdownView;
92
118
  const panelView = dropdownView.panelView;
93
119
  const imageUtils = this.editor.plugins.get( 'ImageUtils' );
94
120
 
@@ -104,8 +130,6 @@ export default class ImageInsertUI extends Plugin {
104
130
  const selectedElement = editor.model.document.selection.getSelectedElement();
105
131
 
106
132
  if ( dropdownView.isOpen ) {
107
- imageInsertView.focus();
108
-
109
133
  if ( imageUtils.isImage( selectedElement ) ) {
110
134
  imageInsertView.imageURLInputValue = selectedElement.getAttribute( 'src' );
111
135
  insertButtonView.label = t( 'Update' );
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import { icons } from 'ckeditor5/src/core';
11
- import { ButtonView, View, SplitButtonView, ViewCollection, submitHandler, createDropdown, FocusCycler } from 'ckeditor5/src/ui';
11
+ import { ButtonView, View, ViewCollection, submitHandler, FocusCycler } from 'ckeditor5/src/ui';
12
12
  import { Collection, FocusTracker, KeystrokeHandler } from 'ckeditor5/src/utils';
13
13
 
14
14
  import ImageInsertFormRowView from './imageinsertformrowview';
@@ -49,13 +49,6 @@ export default class ImageInsertPanelView extends View {
49
49
  */
50
50
  this.cancelButtonView = cancelButtonView;
51
51
 
52
- /**
53
- * The dropdown view.
54
- *
55
- * @member {module:ui/dropdown/dropdownview~DropdownView}
56
- */
57
- this.dropdownView = this._createDropdownView( locale );
58
-
59
52
  /**
60
53
  * The value of the URL input.
61
54
  *
@@ -223,35 +216,6 @@ export default class ImageInsertPanelView extends View {
223
216
  return this._integrations.find( integration => integration.name === name );
224
217
  }
225
218
 
226
- /**
227
- * Creates the dropdown view.
228
- *
229
- * @param {module:utils/locale~Locale} locale The localization services instance.
230
- *
231
- * @private
232
- * @returns {module:ui/dropdown/dropdownview~DropdownView}
233
- */
234
- _createDropdownView( locale ) {
235
- const t = locale.t;
236
- const dropdownView = createDropdown( locale, SplitButtonView );
237
- const splitButtonView = dropdownView.buttonView;
238
- const panelView = dropdownView.panelView;
239
-
240
- splitButtonView.set( {
241
- label: t( 'Insert image' ),
242
- icon: icons.image,
243
- tooltip: true
244
- } );
245
-
246
- panelView.extendTemplate( {
247
- attributes: {
248
- class: 'ck-image-insert__panel'
249
- }
250
- } );
251
-
252
- return dropdownView;
253
- }
254
-
255
219
  /**
256
220
  * Creates the following form controls:
257
221
  *
@@ -9,6 +9,7 @@
9
9
 
10
10
  import { Plugin } from 'ckeditor5/src/core';
11
11
  import ImageUpload from './imageupload';
12
+ import ImageInsertViaUrl from './imageinsertviaurl';
12
13
  import ImageInsertUI from './imageinsert/imageinsertui';
13
14
 
14
15
  /**
@@ -37,7 +38,7 @@ export default class ImageInsert extends Plugin {
37
38
  * @inheritDoc
38
39
  */
39
40
  static get requires() {
40
- return [ ImageUpload, ImageInsertUI ];
41
+ return [ ImageUpload, ImageInsertViaUrl, ImageInsertUI ];
41
42
  }
42
43
  }
43
44