@ckeditor/ckeditor5-image 0.0.0-internal-20241017.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 (526) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +26 -0
  4. package/build/image.js +5 -0
  5. package/build/translations/ar.js +1 -0
  6. package/build/translations/ast.js +1 -0
  7. package/build/translations/az.js +1 -0
  8. package/build/translations/bg.js +1 -0
  9. package/build/translations/bn.js +1 -0
  10. package/build/translations/bs.js +1 -0
  11. package/build/translations/ca.js +1 -0
  12. package/build/translations/cs.js +1 -0
  13. package/build/translations/da.js +1 -0
  14. package/build/translations/de-ch.js +1 -0
  15. package/build/translations/de.js +1 -0
  16. package/build/translations/el.js +1 -0
  17. package/build/translations/en-au.js +1 -0
  18. package/build/translations/en-gb.js +1 -0
  19. package/build/translations/eo.js +1 -0
  20. package/build/translations/es.js +1 -0
  21. package/build/translations/et.js +1 -0
  22. package/build/translations/eu.js +1 -0
  23. package/build/translations/fa.js +1 -0
  24. package/build/translations/fi.js +1 -0
  25. package/build/translations/fr.js +1 -0
  26. package/build/translations/gl.js +1 -0
  27. package/build/translations/he.js +1 -0
  28. package/build/translations/hi.js +1 -0
  29. package/build/translations/hr.js +1 -0
  30. package/build/translations/hu.js +1 -0
  31. package/build/translations/id.js +1 -0
  32. package/build/translations/it.js +1 -0
  33. package/build/translations/ja.js +1 -0
  34. package/build/translations/jv.js +1 -0
  35. package/build/translations/km.js +1 -0
  36. package/build/translations/kn.js +1 -0
  37. package/build/translations/ko.js +1 -0
  38. package/build/translations/ku.js +1 -0
  39. package/build/translations/lt.js +1 -0
  40. package/build/translations/lv.js +1 -0
  41. package/build/translations/ms.js +1 -0
  42. package/build/translations/nb.js +1 -0
  43. package/build/translations/ne.js +1 -0
  44. package/build/translations/nl.js +1 -0
  45. package/build/translations/no.js +1 -0
  46. package/build/translations/pl.js +1 -0
  47. package/build/translations/pt-br.js +1 -0
  48. package/build/translations/pt.js +1 -0
  49. package/build/translations/ro.js +1 -0
  50. package/build/translations/ru.js +1 -0
  51. package/build/translations/si.js +1 -0
  52. package/build/translations/sk.js +1 -0
  53. package/build/translations/sq.js +1 -0
  54. package/build/translations/sr-latn.js +1 -0
  55. package/build/translations/sr.js +1 -0
  56. package/build/translations/sv.js +1 -0
  57. package/build/translations/th.js +1 -0
  58. package/build/translations/ti.js +1 -0
  59. package/build/translations/tk.js +1 -0
  60. package/build/translations/tr.js +1 -0
  61. package/build/translations/ug.js +1 -0
  62. package/build/translations/uk.js +1 -0
  63. package/build/translations/ur.js +1 -0
  64. package/build/translations/uz.js +1 -0
  65. package/build/translations/vi.js +1 -0
  66. package/build/translations/zh-cn.js +1 -0
  67. package/build/translations/zh.js +1 -0
  68. package/ckeditor5-metadata.json +270 -0
  69. package/dist/augmentation.d.ts +61 -0
  70. package/dist/autoimage.d.ts +60 -0
  71. package/dist/image/converters.d.ts +70 -0
  72. package/dist/image/imageblockediting.d.ts +67 -0
  73. package/dist/image/imageediting.d.ts +38 -0
  74. package/dist/image/imageinlineediting.d.ts +68 -0
  75. package/dist/image/imageloadobserver.d.ts +52 -0
  76. package/dist/image/imageplaceholder.d.ts +47 -0
  77. package/dist/image/imagetypecommand.d.ts +48 -0
  78. package/dist/image/insertimagecommand.d.ts +72 -0
  79. package/dist/image/replaceimagesourcecommand.d.ts +55 -0
  80. package/dist/image/ui/utils.d.ts +29 -0
  81. package/dist/image/utils.d.ts +68 -0
  82. package/dist/image.d.ts +42 -0
  83. package/dist/imageblock.d.ts +42 -0
  84. package/dist/imagecaption/imagecaptionediting.d.ts +97 -0
  85. package/dist/imagecaption/imagecaptionui.d.ts +34 -0
  86. package/dist/imagecaption/imagecaptionutils.d.ts +46 -0
  87. package/dist/imagecaption/toggleimagecaptioncommand.d.ts +70 -0
  88. package/dist/imagecaption.d.ts +34 -0
  89. package/dist/imageconfig.d.ts +716 -0
  90. package/dist/imageinline.d.ts +42 -0
  91. package/dist/imageinsert/imageinsertui.d.ts +90 -0
  92. package/dist/imageinsert/imageinsertviaurlui.d.ts +74 -0
  93. package/dist/imageinsert/ui/imageinsertformview.d.ts +60 -0
  94. package/dist/imageinsert/ui/imageinserturlview.d.ts +68 -0
  95. package/dist/imageinsert.d.ts +41 -0
  96. package/dist/imageinsertviaurl.d.ts +39 -0
  97. package/dist/imageresize/imagecustomresizeui.d.ts +69 -0
  98. package/dist/imageresize/imageresizebuttons.d.ts +72 -0
  99. package/dist/imageresize/imageresizeediting.d.ts +49 -0
  100. package/dist/imageresize/imageresizehandles.d.ts +39 -0
  101. package/dist/imageresize/resizeimagecommand.d.ts +46 -0
  102. package/dist/imageresize/ui/imagecustomresizeformview.d.ts +133 -0
  103. package/dist/imageresize/utils/getselectedimageeditornodes.d.ts +28 -0
  104. package/dist/imageresize/utils/getselectedimagepossibleresizerange.d.ts +28 -0
  105. package/dist/imageresize/utils/getselectedimagewidthinunits.d.ts +22 -0
  106. package/dist/imageresize/utils/tryparsedimensionwithunit.d.ts +41 -0
  107. package/dist/imageresize.d.ts +36 -0
  108. package/dist/imagesizeattributes.d.ts +42 -0
  109. package/dist/imagestyle/converters.d.ts +28 -0
  110. package/dist/imagestyle/imagestylecommand.d.ts +72 -0
  111. package/dist/imagestyle/imagestyleediting.d.ts +58 -0
  112. package/dist/imagestyle/imagestyleui.d.ts +64 -0
  113. package/dist/imagestyle/utils.d.ts +105 -0
  114. package/dist/imagestyle.d.ts +40 -0
  115. package/dist/imagetextalternative/imagetextalternativecommand.d.ts +38 -0
  116. package/dist/imagetextalternative/imagetextalternativeediting.d.ts +36 -0
  117. package/dist/imagetextalternative/imagetextalternativeui.d.ts +76 -0
  118. package/dist/imagetextalternative/ui/textalternativeformview.d.ts +94 -0
  119. package/dist/imagetextalternative.d.ts +37 -0
  120. package/dist/imagetoolbar.d.ts +43 -0
  121. package/dist/imageupload/imageuploadediting.d.ts +119 -0
  122. package/dist/imageupload/imageuploadprogress.d.ts +50 -0
  123. package/dist/imageupload/imageuploadui.d.ts +55 -0
  124. package/dist/imageupload/uploadimagecommand.d.ts +78 -0
  125. package/dist/imageupload/utils.d.ts +37 -0
  126. package/dist/imageupload.d.ts +40 -0
  127. package/dist/imageutils.d.ts +133 -0
  128. package/dist/index-content.css +150 -0
  129. package/dist/index-editor.css +248 -0
  130. package/dist/index.css +579 -0
  131. package/dist/index.css.map +1 -0
  132. package/dist/index.d.ts +54 -0
  133. package/dist/index.js +6383 -0
  134. package/dist/index.js.map +1 -0
  135. package/dist/pictureediting.d.ts +96 -0
  136. package/dist/translations/ar.d.ts +8 -0
  137. package/dist/translations/ar.js +5 -0
  138. package/dist/translations/ar.umd.js +11 -0
  139. package/dist/translations/ast.d.ts +8 -0
  140. package/dist/translations/ast.js +5 -0
  141. package/dist/translations/ast.umd.js +11 -0
  142. package/dist/translations/az.d.ts +8 -0
  143. package/dist/translations/az.js +5 -0
  144. package/dist/translations/az.umd.js +11 -0
  145. package/dist/translations/bg.d.ts +8 -0
  146. package/dist/translations/bg.js +5 -0
  147. package/dist/translations/bg.umd.js +11 -0
  148. package/dist/translations/bn.d.ts +8 -0
  149. package/dist/translations/bn.js +5 -0
  150. package/dist/translations/bn.umd.js +11 -0
  151. package/dist/translations/bs.d.ts +8 -0
  152. package/dist/translations/bs.js +5 -0
  153. package/dist/translations/bs.umd.js +11 -0
  154. package/dist/translations/ca.d.ts +8 -0
  155. package/dist/translations/ca.js +5 -0
  156. package/dist/translations/ca.umd.js +11 -0
  157. package/dist/translations/cs.d.ts +8 -0
  158. package/dist/translations/cs.js +5 -0
  159. package/dist/translations/cs.umd.js +11 -0
  160. package/dist/translations/da.d.ts +8 -0
  161. package/dist/translations/da.js +5 -0
  162. package/dist/translations/da.umd.js +11 -0
  163. package/dist/translations/de-ch.d.ts +8 -0
  164. package/dist/translations/de-ch.js +5 -0
  165. package/dist/translations/de-ch.umd.js +11 -0
  166. package/dist/translations/de.d.ts +8 -0
  167. package/dist/translations/de.js +5 -0
  168. package/dist/translations/de.umd.js +11 -0
  169. package/dist/translations/el.d.ts +8 -0
  170. package/dist/translations/el.js +5 -0
  171. package/dist/translations/el.umd.js +11 -0
  172. package/dist/translations/en-au.d.ts +8 -0
  173. package/dist/translations/en-au.js +5 -0
  174. package/dist/translations/en-au.umd.js +11 -0
  175. package/dist/translations/en-gb.d.ts +8 -0
  176. package/dist/translations/en-gb.js +5 -0
  177. package/dist/translations/en-gb.umd.js +11 -0
  178. package/dist/translations/en.d.ts +8 -0
  179. package/dist/translations/en.js +5 -0
  180. package/dist/translations/en.umd.js +11 -0
  181. package/dist/translations/eo.d.ts +8 -0
  182. package/dist/translations/eo.js +5 -0
  183. package/dist/translations/eo.umd.js +11 -0
  184. package/dist/translations/es.d.ts +8 -0
  185. package/dist/translations/es.js +5 -0
  186. package/dist/translations/es.umd.js +11 -0
  187. package/dist/translations/et.d.ts +8 -0
  188. package/dist/translations/et.js +5 -0
  189. package/dist/translations/et.umd.js +11 -0
  190. package/dist/translations/eu.d.ts +8 -0
  191. package/dist/translations/eu.js +5 -0
  192. package/dist/translations/eu.umd.js +11 -0
  193. package/dist/translations/fa.d.ts +8 -0
  194. package/dist/translations/fa.js +5 -0
  195. package/dist/translations/fa.umd.js +11 -0
  196. package/dist/translations/fi.d.ts +8 -0
  197. package/dist/translations/fi.js +5 -0
  198. package/dist/translations/fi.umd.js +11 -0
  199. package/dist/translations/fr.d.ts +8 -0
  200. package/dist/translations/fr.js +5 -0
  201. package/dist/translations/fr.umd.js +11 -0
  202. package/dist/translations/gl.d.ts +8 -0
  203. package/dist/translations/gl.js +5 -0
  204. package/dist/translations/gl.umd.js +11 -0
  205. package/dist/translations/he.d.ts +8 -0
  206. package/dist/translations/he.js +5 -0
  207. package/dist/translations/he.umd.js +11 -0
  208. package/dist/translations/hi.d.ts +8 -0
  209. package/dist/translations/hi.js +5 -0
  210. package/dist/translations/hi.umd.js +11 -0
  211. package/dist/translations/hr.d.ts +8 -0
  212. package/dist/translations/hr.js +5 -0
  213. package/dist/translations/hr.umd.js +11 -0
  214. package/dist/translations/hu.d.ts +8 -0
  215. package/dist/translations/hu.js +5 -0
  216. package/dist/translations/hu.umd.js +11 -0
  217. package/dist/translations/id.d.ts +8 -0
  218. package/dist/translations/id.js +5 -0
  219. package/dist/translations/id.umd.js +11 -0
  220. package/dist/translations/it.d.ts +8 -0
  221. package/dist/translations/it.js +5 -0
  222. package/dist/translations/it.umd.js +11 -0
  223. package/dist/translations/ja.d.ts +8 -0
  224. package/dist/translations/ja.js +5 -0
  225. package/dist/translations/ja.umd.js +11 -0
  226. package/dist/translations/jv.d.ts +8 -0
  227. package/dist/translations/jv.js +5 -0
  228. package/dist/translations/jv.umd.js +11 -0
  229. package/dist/translations/km.d.ts +8 -0
  230. package/dist/translations/km.js +5 -0
  231. package/dist/translations/km.umd.js +11 -0
  232. package/dist/translations/kn.d.ts +8 -0
  233. package/dist/translations/kn.js +5 -0
  234. package/dist/translations/kn.umd.js +11 -0
  235. package/dist/translations/ko.d.ts +8 -0
  236. package/dist/translations/ko.js +5 -0
  237. package/dist/translations/ko.umd.js +11 -0
  238. package/dist/translations/ku.d.ts +8 -0
  239. package/dist/translations/ku.js +5 -0
  240. package/dist/translations/ku.umd.js +11 -0
  241. package/dist/translations/lt.d.ts +8 -0
  242. package/dist/translations/lt.js +5 -0
  243. package/dist/translations/lt.umd.js +11 -0
  244. package/dist/translations/lv.d.ts +8 -0
  245. package/dist/translations/lv.js +5 -0
  246. package/dist/translations/lv.umd.js +11 -0
  247. package/dist/translations/ms.d.ts +8 -0
  248. package/dist/translations/ms.js +5 -0
  249. package/dist/translations/ms.umd.js +11 -0
  250. package/dist/translations/nb.d.ts +8 -0
  251. package/dist/translations/nb.js +5 -0
  252. package/dist/translations/nb.umd.js +11 -0
  253. package/dist/translations/ne.d.ts +8 -0
  254. package/dist/translations/ne.js +5 -0
  255. package/dist/translations/ne.umd.js +11 -0
  256. package/dist/translations/nl.d.ts +8 -0
  257. package/dist/translations/nl.js +5 -0
  258. package/dist/translations/nl.umd.js +11 -0
  259. package/dist/translations/no.d.ts +8 -0
  260. package/dist/translations/no.js +5 -0
  261. package/dist/translations/no.umd.js +11 -0
  262. package/dist/translations/pl.d.ts +8 -0
  263. package/dist/translations/pl.js +5 -0
  264. package/dist/translations/pl.umd.js +11 -0
  265. package/dist/translations/pt-br.d.ts +8 -0
  266. package/dist/translations/pt-br.js +5 -0
  267. package/dist/translations/pt-br.umd.js +11 -0
  268. package/dist/translations/pt.d.ts +8 -0
  269. package/dist/translations/pt.js +5 -0
  270. package/dist/translations/pt.umd.js +11 -0
  271. package/dist/translations/ro.d.ts +8 -0
  272. package/dist/translations/ro.js +5 -0
  273. package/dist/translations/ro.umd.js +11 -0
  274. package/dist/translations/ru.d.ts +8 -0
  275. package/dist/translations/ru.js +5 -0
  276. package/dist/translations/ru.umd.js +11 -0
  277. package/dist/translations/si.d.ts +8 -0
  278. package/dist/translations/si.js +5 -0
  279. package/dist/translations/si.umd.js +11 -0
  280. package/dist/translations/sk.d.ts +8 -0
  281. package/dist/translations/sk.js +5 -0
  282. package/dist/translations/sk.umd.js +11 -0
  283. package/dist/translations/sq.d.ts +8 -0
  284. package/dist/translations/sq.js +5 -0
  285. package/dist/translations/sq.umd.js +11 -0
  286. package/dist/translations/sr-latn.d.ts +8 -0
  287. package/dist/translations/sr-latn.js +5 -0
  288. package/dist/translations/sr-latn.umd.js +11 -0
  289. package/dist/translations/sr.d.ts +8 -0
  290. package/dist/translations/sr.js +5 -0
  291. package/dist/translations/sr.umd.js +11 -0
  292. package/dist/translations/sv.d.ts +8 -0
  293. package/dist/translations/sv.js +5 -0
  294. package/dist/translations/sv.umd.js +11 -0
  295. package/dist/translations/th.d.ts +8 -0
  296. package/dist/translations/th.js +5 -0
  297. package/dist/translations/th.umd.js +11 -0
  298. package/dist/translations/ti.d.ts +8 -0
  299. package/dist/translations/ti.js +5 -0
  300. package/dist/translations/ti.umd.js +11 -0
  301. package/dist/translations/tk.d.ts +8 -0
  302. package/dist/translations/tk.js +5 -0
  303. package/dist/translations/tk.umd.js +11 -0
  304. package/dist/translations/tr.d.ts +8 -0
  305. package/dist/translations/tr.js +5 -0
  306. package/dist/translations/tr.umd.js +11 -0
  307. package/dist/translations/ug.d.ts +8 -0
  308. package/dist/translations/ug.js +5 -0
  309. package/dist/translations/ug.umd.js +11 -0
  310. package/dist/translations/uk.d.ts +8 -0
  311. package/dist/translations/uk.js +5 -0
  312. package/dist/translations/uk.umd.js +11 -0
  313. package/dist/translations/ur.d.ts +8 -0
  314. package/dist/translations/ur.js +5 -0
  315. package/dist/translations/ur.umd.js +11 -0
  316. package/dist/translations/uz.d.ts +8 -0
  317. package/dist/translations/uz.js +5 -0
  318. package/dist/translations/uz.umd.js +11 -0
  319. package/dist/translations/vi.d.ts +8 -0
  320. package/dist/translations/vi.js +5 -0
  321. package/dist/translations/vi.umd.js +11 -0
  322. package/dist/translations/zh-cn.d.ts +8 -0
  323. package/dist/translations/zh-cn.js +5 -0
  324. package/dist/translations/zh-cn.umd.js +11 -0
  325. package/dist/translations/zh.d.ts +8 -0
  326. package/dist/translations/zh.js +5 -0
  327. package/dist/translations/zh.umd.js +11 -0
  328. package/lang/contexts.json +46 -0
  329. package/lang/translations/ar.po +194 -0
  330. package/lang/translations/ast.po +194 -0
  331. package/lang/translations/az.po +194 -0
  332. package/lang/translations/bg.po +194 -0
  333. package/lang/translations/bn.po +194 -0
  334. package/lang/translations/bs.po +194 -0
  335. package/lang/translations/ca.po +194 -0
  336. package/lang/translations/cs.po +194 -0
  337. package/lang/translations/da.po +194 -0
  338. package/lang/translations/de-ch.po +194 -0
  339. package/lang/translations/de.po +194 -0
  340. package/lang/translations/el.po +194 -0
  341. package/lang/translations/en-au.po +194 -0
  342. package/lang/translations/en-gb.po +194 -0
  343. package/lang/translations/en.po +194 -0
  344. package/lang/translations/eo.po +194 -0
  345. package/lang/translations/es.po +194 -0
  346. package/lang/translations/et.po +194 -0
  347. package/lang/translations/eu.po +194 -0
  348. package/lang/translations/fa.po +194 -0
  349. package/lang/translations/fi.po +194 -0
  350. package/lang/translations/fr.po +194 -0
  351. package/lang/translations/gl.po +194 -0
  352. package/lang/translations/he.po +194 -0
  353. package/lang/translations/hi.po +194 -0
  354. package/lang/translations/hr.po +194 -0
  355. package/lang/translations/hu.po +194 -0
  356. package/lang/translations/id.po +194 -0
  357. package/lang/translations/it.po +194 -0
  358. package/lang/translations/ja.po +194 -0
  359. package/lang/translations/jv.po +194 -0
  360. package/lang/translations/km.po +194 -0
  361. package/lang/translations/kn.po +194 -0
  362. package/lang/translations/ko.po +194 -0
  363. package/lang/translations/ku.po +194 -0
  364. package/lang/translations/lt.po +194 -0
  365. package/lang/translations/lv.po +194 -0
  366. package/lang/translations/ms.po +194 -0
  367. package/lang/translations/nb.po +194 -0
  368. package/lang/translations/ne.po +194 -0
  369. package/lang/translations/nl.po +194 -0
  370. package/lang/translations/no.po +194 -0
  371. package/lang/translations/pl.po +194 -0
  372. package/lang/translations/pt-br.po +194 -0
  373. package/lang/translations/pt.po +194 -0
  374. package/lang/translations/ro.po +194 -0
  375. package/lang/translations/ru.po +194 -0
  376. package/lang/translations/si.po +194 -0
  377. package/lang/translations/sk.po +194 -0
  378. package/lang/translations/sq.po +194 -0
  379. package/lang/translations/sr-latn.po +194 -0
  380. package/lang/translations/sr.po +194 -0
  381. package/lang/translations/sv.po +194 -0
  382. package/lang/translations/th.po +194 -0
  383. package/lang/translations/ti.po +194 -0
  384. package/lang/translations/tk.po +194 -0
  385. package/lang/translations/tr.po +194 -0
  386. package/lang/translations/ug.po +194 -0
  387. package/lang/translations/uk.po +194 -0
  388. package/lang/translations/ur.po +194 -0
  389. package/lang/translations/uz.po +194 -0
  390. package/lang/translations/vi.po +194 -0
  391. package/lang/translations/zh-cn.po +194 -0
  392. package/lang/translations/zh.po +194 -0
  393. package/package.json +48 -0
  394. package/src/augmentation.d.ts +57 -0
  395. package/src/augmentation.js +5 -0
  396. package/src/autoimage.d.ts +56 -0
  397. package/src/autoimage.js +138 -0
  398. package/src/image/converters.d.ts +66 -0
  399. package/src/image/converters.js +232 -0
  400. package/src/image/imageblockediting.d.ts +63 -0
  401. package/src/image/imageblockediting.js +159 -0
  402. package/src/image/imageediting.d.ts +34 -0
  403. package/src/image/imageediting.js +69 -0
  404. package/src/image/imageinlineediting.d.ts +64 -0
  405. package/src/image/imageinlineediting.js +178 -0
  406. package/src/image/imageloadobserver.d.ts +48 -0
  407. package/src/image/imageloadobserver.js +52 -0
  408. package/src/image/imageplaceholder.d.ts +43 -0
  409. package/src/image/imageplaceholder.js +119 -0
  410. package/src/image/imagetypecommand.d.ts +44 -0
  411. package/src/image/imagetypecommand.js +80 -0
  412. package/src/image/insertimagecommand.d.ts +68 -0
  413. package/src/image/insertimagecommand.js +121 -0
  414. package/src/image/replaceimagesourcecommand.d.ts +51 -0
  415. package/src/image/replaceimagesourcecommand.js +75 -0
  416. package/src/image/ui/utils.d.ts +25 -0
  417. package/src/image/ui/utils.js +44 -0
  418. package/src/image/utils.d.ts +64 -0
  419. package/src/image/utils.js +121 -0
  420. package/src/image.d.ts +38 -0
  421. package/src/image.js +44 -0
  422. package/src/imageblock.d.ts +38 -0
  423. package/src/imageblock.js +44 -0
  424. package/src/imagecaption/imagecaptionediting.d.ts +93 -0
  425. package/src/imagecaption/imagecaptionediting.js +231 -0
  426. package/src/imagecaption/imagecaptionui.d.ts +30 -0
  427. package/src/imagecaption/imagecaptionui.js +67 -0
  428. package/src/imagecaption/imagecaptionutils.d.ts +42 -0
  429. package/src/imagecaption/imagecaptionutils.js +68 -0
  430. package/src/imagecaption/toggleimagecaptioncommand.d.ts +66 -0
  431. package/src/imagecaption/toggleimagecaptioncommand.js +138 -0
  432. package/src/imagecaption.d.ts +30 -0
  433. package/src/imagecaption.js +36 -0
  434. package/src/imageconfig.d.ts +712 -0
  435. package/src/imageconfig.js +5 -0
  436. package/src/imageinline.d.ts +38 -0
  437. package/src/imageinline.js +44 -0
  438. package/src/imageinsert/imageinsertui.d.ts +86 -0
  439. package/src/imageinsert/imageinsertui.js +217 -0
  440. package/src/imageinsert/imageinsertviaurlui.d.ts +70 -0
  441. package/src/imageinsert/imageinsertviaurlui.js +174 -0
  442. package/src/imageinsert/ui/imageinsertformview.d.ts +56 -0
  443. package/src/imageinsert/ui/imageinsertformview.js +95 -0
  444. package/src/imageinsert/ui/imageinserturlview.d.ts +64 -0
  445. package/src/imageinsert/ui/imageinserturlview.js +88 -0
  446. package/src/imageinsert.d.ts +37 -0
  447. package/src/imageinsert.js +43 -0
  448. package/src/imageinsertviaurl.d.ts +35 -0
  449. package/src/imageinsertviaurl.js +41 -0
  450. package/src/imageresize/imagecustomresizeui.d.ts +65 -0
  451. package/src/imageresize/imagecustomresizeui.js +174 -0
  452. package/src/imageresize/imageresizebuttons.d.ts +68 -0
  453. package/src/imageresize/imageresizebuttons.js +295 -0
  454. package/src/imageresize/imageresizeediting.d.ts +45 -0
  455. package/src/imageresize/imageresizeediting.js +183 -0
  456. package/src/imageresize/imageresizehandles.d.ts +35 -0
  457. package/src/imageresize/imageresizehandles.js +118 -0
  458. package/src/imageresize/resizeimagecommand.d.ts +42 -0
  459. package/src/imageresize/resizeimagecommand.js +63 -0
  460. package/src/imageresize/ui/imagecustomresizeformview.d.ts +129 -0
  461. package/src/imageresize/ui/imagecustomresizeformview.js +186 -0
  462. package/src/imageresize/utils/getselectedimageeditornodes.d.ts +24 -0
  463. package/src/imageresize/utils/getselectedimageeditornodes.js +24 -0
  464. package/src/imageresize/utils/getselectedimagepossibleresizerange.d.ts +24 -0
  465. package/src/imageresize/utils/getselectedimagepossibleresizerange.js +32 -0
  466. package/src/imageresize/utils/getselectedimagewidthinunits.d.ts +18 -0
  467. package/src/imageresize/utils/getselectedimagewidthinunits.js +41 -0
  468. package/src/imageresize/utils/tryparsedimensionwithunit.d.ts +37 -0
  469. package/src/imageresize/utils/tryparsedimensionwithunit.js +56 -0
  470. package/src/imageresize.d.ts +32 -0
  471. package/src/imageresize.js +38 -0
  472. package/src/imagesizeattributes.d.ts +38 -0
  473. package/src/imagesizeattributes.js +148 -0
  474. package/src/imagestyle/converters.d.ts +24 -0
  475. package/src/imagestyle/converters.js +79 -0
  476. package/src/imagestyle/imagestylecommand.d.ts +68 -0
  477. package/src/imagestyle/imagestylecommand.js +107 -0
  478. package/src/imagestyle/imagestyleediting.d.ts +54 -0
  479. package/src/imagestyle/imagestyleediting.js +114 -0
  480. package/src/imagestyle/imagestyleui.d.ts +60 -0
  481. package/src/imagestyle/imagestyleui.js +198 -0
  482. package/src/imagestyle/utils.d.ts +101 -0
  483. package/src/imagestyle/utils.js +328 -0
  484. package/src/imagestyle.d.ts +36 -0
  485. package/src/imagestyle.js +42 -0
  486. package/src/imagetextalternative/imagetextalternativecommand.d.ts +34 -0
  487. package/src/imagetextalternative/imagetextalternativecommand.js +44 -0
  488. package/src/imagetextalternative/imagetextalternativeediting.d.ts +32 -0
  489. package/src/imagetextalternative/imagetextalternativeediting.js +41 -0
  490. package/src/imagetextalternative/imagetextalternativeui.d.ts +72 -0
  491. package/src/imagetextalternative/imagetextalternativeui.js +179 -0
  492. package/src/imagetextalternative/ui/textalternativeformview.d.ts +90 -0
  493. package/src/imagetextalternative/ui/textalternativeformview.js +121 -0
  494. package/src/imagetextalternative.d.ts +33 -0
  495. package/src/imagetextalternative.js +39 -0
  496. package/src/imagetoolbar.d.ts +39 -0
  497. package/src/imagetoolbar.js +63 -0
  498. package/src/imageupload/imageuploadediting.d.ts +115 -0
  499. package/src/imageupload/imageuploadediting.js +361 -0
  500. package/src/imageupload/imageuploadprogress.d.ts +46 -0
  501. package/src/imageupload/imageuploadprogress.js +217 -0
  502. package/src/imageupload/imageuploadui.d.ts +51 -0
  503. package/src/imageupload/imageuploadui.js +134 -0
  504. package/src/imageupload/uploadimagecommand.d.ts +74 -0
  505. package/src/imageupload/uploadimagecommand.js +110 -0
  506. package/src/imageupload/utils.d.ts +33 -0
  507. package/src/imageupload/utils.js +112 -0
  508. package/src/imageupload.d.ts +36 -0
  509. package/src/imageupload.js +42 -0
  510. package/src/imageutils.d.ts +129 -0
  511. package/src/imageutils.js +312 -0
  512. package/src/index.d.ts +50 -0
  513. package/src/index.js +41 -0
  514. package/src/pictureediting.d.ts +92 -0
  515. package/src/pictureediting.js +136 -0
  516. package/theme/image.css +143 -0
  517. package/theme/imagecaption.css +51 -0
  518. package/theme/imagecustomresizeform.css +33 -0
  519. package/theme/imageinsert.css +14 -0
  520. package/theme/imageplaceholder.css +10 -0
  521. package/theme/imageresize.css +53 -0
  522. package/theme/imagestyle.css +120 -0
  523. package/theme/imageuploadicon.css +23 -0
  524. package/theme/imageuploadloader.css +18 -0
  525. package/theme/imageuploadprogress.css +19 -0
  526. package/theme/textalternativeform.css +32 -0
@@ -0,0 +1,174 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, 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/imagecustomresizeui
7
+ */
8
+ import { Plugin } from 'ckeditor5/src/core.js';
9
+ import { ContextualBalloon, clickOutsideHandler, CssTransitionDisablerMixin } from 'ckeditor5/src/ui.js';
10
+ import { getBalloonPositionData } from '../image/ui/utils.js';
11
+ import { getSelectedImageWidthInUnits } from './utils/getselectedimagewidthinunits.js';
12
+ import ImageCustomResizeFormView from './ui/imagecustomresizeformview.js';
13
+ import { getSelectedImagePossibleResizeRange } from './utils/getselectedimagepossibleresizerange.js';
14
+ /**
15
+ * The custom resize image UI plugin.
16
+ *
17
+ * The plugin uses the {@link module:ui/panel/balloon/contextualballoon~ContextualBalloon}.
18
+ */
19
+ export default class ImageCustomResizeUI extends Plugin {
20
+ /**
21
+ * @inheritDoc
22
+ */
23
+ static get requires() {
24
+ return [ContextualBalloon];
25
+ }
26
+ /**
27
+ * @inheritDoc
28
+ */
29
+ static get pluginName() {
30
+ return 'ImageCustomResizeUI';
31
+ }
32
+ /**
33
+ * @inheritDoc
34
+ */
35
+ static get isOfficialPlugin() {
36
+ return true;
37
+ }
38
+ /**
39
+ * @inheritDoc
40
+ */
41
+ destroy() {
42
+ super.destroy();
43
+ // Destroy created UI components as they are not automatically destroyed (see ckeditor5#1341).
44
+ if (this._form) {
45
+ this._form.destroy();
46
+ }
47
+ }
48
+ /**
49
+ * Creates the {@link module:image/imageresize/ui/imagecustomresizeformview~ImageCustomResizeFormView}
50
+ * form.
51
+ */
52
+ _createForm(unit) {
53
+ const editor = this.editor;
54
+ this._balloon = this.editor.plugins.get('ContextualBalloon');
55
+ this._form = new (CssTransitionDisablerMixin(ImageCustomResizeFormView))(editor.locale, unit, getFormValidators(editor));
56
+ // Render the form so its #element is available for clickOutsideHandler.
57
+ this._form.render();
58
+ this.listenTo(this._form, 'submit', () => {
59
+ if (this._form.isValid()) {
60
+ editor.execute('resizeImage', {
61
+ width: this._form.sizeWithUnits
62
+ });
63
+ this._hideForm(true);
64
+ }
65
+ });
66
+ // Update balloon position when form error label is added .
67
+ this.listenTo(this._form.labeledInput, 'change:errorText', () => {
68
+ editor.ui.update();
69
+ });
70
+ this.listenTo(this._form, 'cancel', () => {
71
+ this._hideForm(true);
72
+ });
73
+ // Close the form on Esc key press.
74
+ this._form.keystrokes.set('Esc', (data, cancel) => {
75
+ this._hideForm(true);
76
+ cancel();
77
+ });
78
+ // Close on click outside of balloon panel element.
79
+ clickOutsideHandler({
80
+ emitter: this._form,
81
+ activator: () => this._isVisible,
82
+ contextElements: () => [this._balloon.view.element],
83
+ callback: () => this._hideForm()
84
+ });
85
+ }
86
+ /**
87
+ * Shows the {@link #_form} in the {@link #_balloon}.
88
+ *
89
+ * @internal
90
+ */
91
+ _showForm(unit) {
92
+ if (this._isVisible) {
93
+ return;
94
+ }
95
+ if (!this._form) {
96
+ this._createForm(unit);
97
+ }
98
+ const editor = this.editor;
99
+ const labeledInput = this._form.labeledInput;
100
+ this._form.disableCssTransitions();
101
+ this._form.resetFormStatus();
102
+ if (!this._isInBalloon) {
103
+ this._balloon.add({
104
+ view: this._form,
105
+ position: getBalloonPositionData(editor)
106
+ });
107
+ }
108
+ // Make sure that each time the panel shows up, the field remains in sync with the value of
109
+ // the command. If the user typed in the input, then canceled the balloon (`labeledInput#value`
110
+ // stays unaltered) and re-opened it without changing the value of the command, they would see the
111
+ // old value instead of the actual value of the command.
112
+ const currentParsedWidth = getSelectedImageWidthInUnits(editor, unit);
113
+ const initialInputValue = currentParsedWidth ? currentParsedWidth.value.toFixed(1) : '';
114
+ const possibleRange = getSelectedImagePossibleResizeRange(editor, unit);
115
+ labeledInput.fieldView.value = labeledInput.fieldView.element.value = initialInputValue;
116
+ if (possibleRange) {
117
+ Object.assign(labeledInput.fieldView, {
118
+ min: possibleRange.lower.toFixed(1),
119
+ max: Math.ceil(possibleRange.upper).toFixed(1)
120
+ });
121
+ }
122
+ this._form.labeledInput.fieldView.select();
123
+ this._form.enableCssTransitions();
124
+ }
125
+ /**
126
+ * Removes the {@link #_form} from the {@link #_balloon}.
127
+ *
128
+ * @param focusEditable Controls whether the editing view is focused afterwards.
129
+ */
130
+ _hideForm(focusEditable = false) {
131
+ if (!this._isInBalloon) {
132
+ return;
133
+ }
134
+ // Blur the input element before removing it from DOM to prevent issues in some browsers.
135
+ // See https://github.com/ckeditor/ckeditor5/issues/1501.
136
+ if (this._form.focusTracker.isFocused) {
137
+ this._form.saveButtonView.focus();
138
+ }
139
+ this._balloon.remove(this._form);
140
+ if (focusEditable) {
141
+ this.editor.editing.view.focus();
142
+ }
143
+ }
144
+ /**
145
+ * Returns `true` when the {@link #_form} is the visible view in the {@link #_balloon}.
146
+ */
147
+ get _isVisible() {
148
+ return !!this._balloon && this._balloon.visibleView === this._form;
149
+ }
150
+ /**
151
+ * Returns `true` when the {@link #_form} is in the {@link #_balloon}.
152
+ */
153
+ get _isInBalloon() {
154
+ return !!this._balloon && this._balloon.hasView(this._form);
155
+ }
156
+ }
157
+ /**
158
+ * Returns image resize form validation callbacks.
159
+ *
160
+ * @param editor Editor instance.
161
+ */
162
+ function getFormValidators(editor) {
163
+ const t = editor.t;
164
+ return [
165
+ form => {
166
+ if (form.rawSize.trim() === '') {
167
+ return t('The value must not be empty.');
168
+ }
169
+ if (form.parsedSize === null) {
170
+ return t('The value should be a plain number.');
171
+ }
172
+ }
173
+ ];
174
+ }
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, 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 { Plugin, type Editor } from 'ckeditor5/src/core.js';
6
+ import ImageResizeEditing from './imageresizeediting.js';
7
+ /**
8
+ * The image resize buttons plugin.
9
+ *
10
+ * It adds a possibility to resize images using the toolbar dropdown or individual buttons, depending on the plugin configuration.
11
+ */
12
+ export default class ImageResizeButtons extends Plugin {
13
+ /**
14
+ * @inheritDoc
15
+ */
16
+ static get requires(): readonly [typeof ImageResizeEditing];
17
+ /**
18
+ * @inheritDoc
19
+ */
20
+ static get pluginName(): "ImageResizeButtons";
21
+ /**
22
+ * @inheritDoc
23
+ */
24
+ static get isOfficialPlugin(): true;
25
+ /**
26
+ * The resize unit.
27
+ * @default '%'
28
+ */
29
+ private readonly _resizeUnit;
30
+ /**
31
+ * @inheritDoc
32
+ */
33
+ constructor(editor: Editor);
34
+ /**
35
+ * @inheritDoc
36
+ */
37
+ init(): void;
38
+ /**
39
+ * A helper function that creates a standalone button component for the plugin.
40
+ *
41
+ * @param resizeOption A model of the resize option.
42
+ */
43
+ private _registerImageResizeButton;
44
+ /**
45
+ * A helper function that creates a dropdown component for the plugin containing all the resize options defined in
46
+ * the editor configuration.
47
+ *
48
+ * @param options An array of configured options.
49
+ */
50
+ private _registerImageResizeDropdown;
51
+ /**
52
+ * A helper function for creating an option label value string.
53
+ *
54
+ * @param option A resize option object.
55
+ * @param forTooltip An optional flag for creating a tooltip label.
56
+ * @returns A user-defined label combined from the numeric value and the resize unit or the default label
57
+ * for reset options (`Original`).
58
+ */
59
+ private _getOptionLabelValue;
60
+ /**
61
+ * A helper function that parses the resize options and returns list item definitions ready for use in the dropdown.
62
+ *
63
+ * @param options The resize options.
64
+ * @param command The resize image command.
65
+ * @returns Dropdown item definitions.
66
+ */
67
+ private _getResizeDropdownListItemDefinitions;
68
+ }
@@ -0,0 +1,295 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, 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/imageresizebuttons
7
+ */
8
+ import { map } from 'lodash-es';
9
+ import { Plugin, icons } from 'ckeditor5/src/core.js';
10
+ import { ButtonView, DropdownButtonView, ViewModel, createDropdown, addListToDropdown } from 'ckeditor5/src/ui.js';
11
+ import { CKEditorError, Collection } from 'ckeditor5/src/utils.js';
12
+ import ImageResizeEditing from './imageresizeediting.js';
13
+ const RESIZE_ICONS = /* #__PURE__ */ (() => ({
14
+ small: icons.objectSizeSmall,
15
+ medium: icons.objectSizeMedium,
16
+ large: icons.objectSizeLarge,
17
+ custom: icons.objectSizeCustom,
18
+ original: icons.objectSizeFull
19
+ }))();
20
+ /**
21
+ * The image resize buttons plugin.
22
+ *
23
+ * It adds a possibility to resize images using the toolbar dropdown or individual buttons, depending on the plugin configuration.
24
+ */
25
+ export default class ImageResizeButtons extends Plugin {
26
+ /**
27
+ * @inheritDoc
28
+ */
29
+ static get requires() {
30
+ return [ImageResizeEditing];
31
+ }
32
+ /**
33
+ * @inheritDoc
34
+ */
35
+ static get pluginName() {
36
+ return 'ImageResizeButtons';
37
+ }
38
+ /**
39
+ * @inheritDoc
40
+ */
41
+ static get isOfficialPlugin() {
42
+ return true;
43
+ }
44
+ /**
45
+ * @inheritDoc
46
+ */
47
+ constructor(editor) {
48
+ super(editor);
49
+ this._resizeUnit = editor.config.get('image.resizeUnit');
50
+ }
51
+ /**
52
+ * @inheritDoc
53
+ */
54
+ init() {
55
+ const editor = this.editor;
56
+ const options = editor.config.get('image.resizeOptions');
57
+ const command = editor.commands.get('resizeImage');
58
+ this.bind('isEnabled').to(command);
59
+ for (const option of options) {
60
+ this._registerImageResizeButton(option);
61
+ }
62
+ this._registerImageResizeDropdown(options);
63
+ }
64
+ /**
65
+ * A helper function that creates a standalone button component for the plugin.
66
+ *
67
+ * @param resizeOption A model of the resize option.
68
+ */
69
+ _registerImageResizeButton(option) {
70
+ const editor = this.editor;
71
+ const { name, value, icon } = option;
72
+ editor.ui.componentFactory.add(name, locale => {
73
+ const button = new ButtonView(locale);
74
+ const command = editor.commands.get('resizeImage');
75
+ const labelText = this._getOptionLabelValue(option, true);
76
+ if (!RESIZE_ICONS[icon]) {
77
+ /**
78
+ * When configuring {@link module:image/imageconfig~ImageConfig#resizeOptions `config.image.resizeOptions`} for standalone
79
+ * buttons, a valid `icon` token must be set for each option.
80
+ *
81
+ * See all valid options described in the
82
+ * {@link module:image/imageconfig~ImageResizeOption plugin configuration}.
83
+ *
84
+ * @error imageresizebuttons-missing-icon
85
+ * @param option Invalid image resize option.
86
+ */
87
+ throw new CKEditorError('imageresizebuttons-missing-icon', editor, option);
88
+ }
89
+ button.set({
90
+ // Use the `label` property for a verbose description (because of ARIA).
91
+ label: labelText,
92
+ icon: RESIZE_ICONS[icon],
93
+ tooltip: labelText,
94
+ isToggleable: true
95
+ });
96
+ // Bind button to the command.
97
+ button.bind('isEnabled').to(this);
98
+ if (editor.plugins.has('ImageCustomResizeUI') && isCustomImageResizeOption(option)) {
99
+ const customResizeUI = editor.plugins.get('ImageCustomResizeUI');
100
+ this.listenTo(button, 'execute', () => {
101
+ customResizeUI._showForm(this._resizeUnit);
102
+ });
103
+ }
104
+ else {
105
+ const optionValueWithUnit = value ? value + this._resizeUnit : null;
106
+ button.bind('isOn').to(command, 'value', getIsOnButtonCallback(optionValueWithUnit));
107
+ this.listenTo(button, 'execute', () => {
108
+ editor.execute('resizeImage', { width: optionValueWithUnit });
109
+ });
110
+ }
111
+ return button;
112
+ });
113
+ }
114
+ /**
115
+ * A helper function that creates a dropdown component for the plugin containing all the resize options defined in
116
+ * the editor configuration.
117
+ *
118
+ * @param options An array of configured options.
119
+ */
120
+ _registerImageResizeDropdown(options) {
121
+ const editor = this.editor;
122
+ const t = editor.t;
123
+ const originalSizeOption = options.find(option => !option.value);
124
+ const componentCreator = (locale) => {
125
+ const command = editor.commands.get('resizeImage');
126
+ const dropdownView = createDropdown(locale, DropdownButtonView);
127
+ const dropdownButton = dropdownView.buttonView;
128
+ const accessibleLabel = t('Resize image');
129
+ dropdownButton.set({
130
+ tooltip: accessibleLabel,
131
+ commandValue: originalSizeOption.value,
132
+ icon: RESIZE_ICONS.medium,
133
+ isToggleable: true,
134
+ label: this._getOptionLabelValue(originalSizeOption),
135
+ withText: true,
136
+ class: 'ck-resize-image-button',
137
+ ariaLabel: accessibleLabel,
138
+ ariaLabelledBy: undefined
139
+ });
140
+ dropdownButton.bind('label').to(command, 'value', commandValue => {
141
+ if (commandValue && commandValue.width) {
142
+ return commandValue.width;
143
+ }
144
+ else {
145
+ return this._getOptionLabelValue(originalSizeOption);
146
+ }
147
+ });
148
+ dropdownView.bind('isEnabled').to(this);
149
+ addListToDropdown(dropdownView, () => this._getResizeDropdownListItemDefinitions(options, command), {
150
+ ariaLabel: t('Image resize list'),
151
+ role: 'menu'
152
+ });
153
+ // Execute command when an item from the dropdown is selected.
154
+ this.listenTo(dropdownView, 'execute', evt => {
155
+ if ('onClick' in evt.source) {
156
+ evt.source.onClick();
157
+ }
158
+ else {
159
+ editor.execute(evt.source.commandName, { width: evt.source.commandValue });
160
+ editor.editing.view.focus();
161
+ }
162
+ });
163
+ return dropdownView;
164
+ };
165
+ // Register `resizeImage` dropdown and add `imageResize` dropdown as an alias for backward compatibility.
166
+ editor.ui.componentFactory.add('resizeImage', componentCreator);
167
+ editor.ui.componentFactory.add('imageResize', componentCreator);
168
+ }
169
+ /**
170
+ * A helper function for creating an option label value string.
171
+ *
172
+ * @param option A resize option object.
173
+ * @param forTooltip An optional flag for creating a tooltip label.
174
+ * @returns A user-defined label combined from the numeric value and the resize unit or the default label
175
+ * for reset options (`Original`).
176
+ */
177
+ _getOptionLabelValue(option, forTooltip = false) {
178
+ const t = this.editor.t;
179
+ if (option.label) {
180
+ return option.label;
181
+ }
182
+ else if (forTooltip) {
183
+ if (isCustomImageResizeOption(option)) {
184
+ return t('Custom image size');
185
+ }
186
+ else if (option.value) {
187
+ return t('Resize image to %0', option.value + this._resizeUnit);
188
+ }
189
+ else {
190
+ return t('Resize image to the original size');
191
+ }
192
+ }
193
+ else {
194
+ if (isCustomImageResizeOption(option)) {
195
+ return t('Custom');
196
+ }
197
+ else if (option.value) {
198
+ return option.value + this._resizeUnit;
199
+ }
200
+ else {
201
+ return t('Original');
202
+ }
203
+ }
204
+ }
205
+ /**
206
+ * A helper function that parses the resize options and returns list item definitions ready for use in the dropdown.
207
+ *
208
+ * @param options The resize options.
209
+ * @param command The resize image command.
210
+ * @returns Dropdown item definitions.
211
+ */
212
+ _getResizeDropdownListItemDefinitions(options, command) {
213
+ const { editor } = this;
214
+ const itemDefinitions = new Collection();
215
+ const optionsWithSerializedValues = options.map(option => {
216
+ if (isCustomImageResizeOption(option)) {
217
+ return {
218
+ ...option,
219
+ valueWithUnits: 'custom'
220
+ };
221
+ }
222
+ if (!option.value) {
223
+ return {
224
+ ...option,
225
+ valueWithUnits: null
226
+ };
227
+ }
228
+ return {
229
+ ...option,
230
+ valueWithUnits: `${option.value}${this._resizeUnit}`
231
+ };
232
+ });
233
+ for (const option of optionsWithSerializedValues) {
234
+ let definition = null;
235
+ if (editor.plugins.has('ImageCustomResizeUI') && isCustomImageResizeOption(option)) {
236
+ const customResizeUI = editor.plugins.get('ImageCustomResizeUI');
237
+ definition = {
238
+ type: 'button',
239
+ model: new ViewModel({
240
+ label: this._getOptionLabelValue(option),
241
+ role: 'menuitemradio',
242
+ withText: true,
243
+ icon: null,
244
+ onClick: () => {
245
+ customResizeUI._showForm(this._resizeUnit);
246
+ }
247
+ })
248
+ };
249
+ const allDropdownValues = map(optionsWithSerializedValues, 'valueWithUnits');
250
+ definition.model.bind('isOn').to(command, 'value', getIsOnCustomButtonCallback(allDropdownValues));
251
+ }
252
+ else {
253
+ definition = {
254
+ type: 'button',
255
+ model: new ViewModel({
256
+ commandName: 'resizeImage',
257
+ commandValue: option.valueWithUnits,
258
+ label: this._getOptionLabelValue(option),
259
+ role: 'menuitemradio',
260
+ withText: true,
261
+ icon: null
262
+ })
263
+ };
264
+ definition.model.bind('isOn').to(command, 'value', getIsOnButtonCallback(option.valueWithUnits));
265
+ }
266
+ definition.model.bind('isEnabled').to(command, 'isEnabled');
267
+ itemDefinitions.add(definition);
268
+ }
269
+ return itemDefinitions;
270
+ }
271
+ }
272
+ /**
273
+ * A helper that checks if provided option triggers custom resize balloon.
274
+ */
275
+ function isCustomImageResizeOption(option) {
276
+ return option.value === 'custom';
277
+ }
278
+ /**
279
+ * A helper function for setting the `isOn` state of buttons in value bindings.
280
+ */
281
+ function getIsOnButtonCallback(value) {
282
+ return (commandValue) => {
283
+ const objectCommandValue = commandValue;
284
+ if (value === null && objectCommandValue === value) {
285
+ return true;
286
+ }
287
+ return objectCommandValue !== null && objectCommandValue.width === value;
288
+ };
289
+ }
290
+ /**
291
+ * A helper function for setting the `isOn` state of custom size button in value bindings.
292
+ */
293
+ function getIsOnCustomButtonCallback(allDropdownValues) {
294
+ return (commandValue) => !allDropdownValues.some(dropdownValue => getIsOnButtonCallback(dropdownValue)(commandValue));
295
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @license Copyright (c) 2003-2024, 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 Editor, Plugin } from 'ckeditor5/src/core.js';
6
+ import ImageUtils from '../imageutils.js';
7
+ /**
8
+ * The image resize editing feature.
9
+ *
10
+ * It adds the ability to resize each image using handles or manually by
11
+ * {@link module:image/imageresize/imageresizebuttons~ImageResizeButtons} buttons.
12
+ */
13
+ export default class ImageResizeEditing extends Plugin {
14
+ /**
15
+ * @inheritDoc
16
+ */
17
+ static get requires(): readonly [typeof ImageUtils];
18
+ /**
19
+ * @inheritDoc
20
+ */
21
+ static get pluginName(): "ImageResizeEditing";
22
+ /**
23
+ * @inheritDoc
24
+ */
25
+ static get isOfficialPlugin(): true;
26
+ /**
27
+ * @inheritDoc
28
+ */
29
+ constructor(editor: Editor);
30
+ /**
31
+ * @inheritDoc
32
+ */
33
+ init(): void;
34
+ /**
35
+ * @inheritDoc
36
+ */
37
+ afterInit(): void;
38
+ private _registerSchema;
39
+ /**
40
+ * Registers image resize converters.
41
+ *
42
+ * @param imageType The type of the image.
43
+ */
44
+ private _registerConverters;
45
+ }