@wordpress/block-library 8.3.6 → 8.5.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 (738) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/build/archives/edit.js +3 -0
  3. package/build/archives/edit.js.map +1 -1
  4. package/build/archives/index.js +1 -0
  5. package/build/archives/index.js.map +1 -1
  6. package/build/audio/edit.js +2 -0
  7. package/build/audio/edit.js.map +1 -1
  8. package/build/avatar/edit.js +5 -9
  9. package/build/avatar/edit.js.map +1 -1
  10. package/build/avatar/index.js +1 -0
  11. package/build/avatar/index.js.map +1 -1
  12. package/build/button/edit.js +3 -1
  13. package/build/button/edit.js.map +1 -1
  14. package/build/button/index.js +17 -6
  15. package/build/button/index.js.map +1 -1
  16. package/build/calendar/index.js +1 -0
  17. package/build/calendar/index.js.map +1 -1
  18. package/build/categories/edit.js +5 -0
  19. package/build/categories/edit.js.map +1 -1
  20. package/build/categories/index.js +1 -0
  21. package/build/categories/index.js.map +1 -1
  22. package/build/columns/edit.js +1 -0
  23. package/build/columns/edit.js.map +1 -1
  24. package/build/columns/utils.js +2 -2
  25. package/build/columns/utils.js.map +1 -1
  26. package/build/comment-author-avatar/index.js +1 -0
  27. package/build/comment-author-avatar/index.js.map +1 -1
  28. package/build/comment-author-name/edit.js +2 -0
  29. package/build/comment-author-name/edit.js.map +1 -1
  30. package/build/comment-author-name/index.js +1 -0
  31. package/build/comment-author-name/index.js.map +1 -1
  32. package/build/comment-content/index.js +1 -0
  33. package/build/comment-content/index.js.map +1 -1
  34. package/build/comment-date/edit.js +1 -0
  35. package/build/comment-date/edit.js.map +1 -1
  36. package/build/comment-date/index.js +1 -0
  37. package/build/comment-date/index.js.map +1 -1
  38. package/build/comment-edit-link/edit.js +1 -0
  39. package/build/comment-edit-link/edit.js.map +1 -1
  40. package/build/comment-edit-link/index.js +1 -0
  41. package/build/comment-edit-link/index.js.map +1 -1
  42. package/build/comment-reply-link/index.js +1 -0
  43. package/build/comment-reply-link/index.js.map +1 -1
  44. package/build/comment-template/index.js +1 -0
  45. package/build/comment-template/index.js.map +1 -1
  46. package/build/comments/index.js +2 -1
  47. package/build/comments/index.js.map +1 -1
  48. package/build/comments-pagination/index.js +1 -0
  49. package/build/comments-pagination/index.js.map +1 -1
  50. package/build/comments-pagination-next/index.js +1 -0
  51. package/build/comments-pagination-next/index.js.map +1 -1
  52. package/build/comments-pagination-numbers/index.js +1 -0
  53. package/build/comments-pagination-numbers/index.js.map +1 -1
  54. package/build/comments-pagination-previous/index.js +1 -0
  55. package/build/comments-pagination-previous/index.js.map +1 -1
  56. package/build/comments-title/edit.js +2 -0
  57. package/build/comments-title/edit.js.map +1 -1
  58. package/build/cover/edit/inspector-controls.js +2 -0
  59. package/build/cover/edit/inspector-controls.js.map +1 -1
  60. package/build/embed/embed-controls.js +1 -0
  61. package/build/embed/embed-controls.js.map +1 -1
  62. package/build/file/index.js +10 -1
  63. package/build/file/index.js.map +1 -1
  64. package/build/file/inspector.js +3 -0
  65. package/build/file/inspector.js.map +1 -1
  66. package/build/freeform/modal.js +1 -1
  67. package/build/freeform/modal.js.map +1 -1
  68. package/build/gallery/edit.js +2 -0
  69. package/build/gallery/edit.js.map +1 -1
  70. package/build/gallery/shared.js +4 -8
  71. package/build/gallery/shared.js.map +1 -1
  72. package/build/gallery/use-image-sizes.js +4 -8
  73. package/build/gallery/use-image-sizes.js.map +1 -1
  74. package/build/gallery/v1/edit.js +8 -3
  75. package/build/gallery/v1/edit.js.map +1 -1
  76. package/build/gallery/v1/gallery-image.js +1 -3
  77. package/build/gallery/v1/gallery-image.js.map +1 -1
  78. package/build/gallery/v1/shared.js +4 -7
  79. package/build/gallery/v1/shared.js.map +1 -1
  80. package/build/home-link/index.js +1 -0
  81. package/build/home-link/index.js.map +1 -1
  82. package/build/image/edit.js +6 -4
  83. package/build/image/edit.js.map +1 -1
  84. package/build/image/image.js +18 -13
  85. package/build/image/image.js.map +1 -1
  86. package/build/image/utils.js +3 -1
  87. package/build/image/utils.js.map +1 -1
  88. package/build/index.js +3 -1
  89. package/build/index.js.map +1 -1
  90. package/build/latest-comments/edit.js +9 -2
  91. package/build/latest-comments/edit.js.map +1 -1
  92. package/build/latest-comments/index.js +14 -0
  93. package/build/latest-comments/index.js.map +1 -1
  94. package/build/latest-posts/deprecated.js +1 -0
  95. package/build/latest-posts/deprecated.js.map +1 -1
  96. package/build/latest-posts/edit.js +4 -0
  97. package/build/latest-posts/edit.js.map +1 -1
  98. package/build/latest-posts/index.js +1 -0
  99. package/build/latest-posts/index.js.map +1 -1
  100. package/build/list/ordered-list-settings.js +1 -0
  101. package/build/list/ordered-list-settings.js.map +1 -1
  102. package/build/list-item/edit.js +2 -2
  103. package/build/list-item/edit.js.map +1 -1
  104. package/build/list-item/hooks/use-outdent-list-item.js +2 -1
  105. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  106. package/build/loginout/edit.js +2 -0
  107. package/build/loginout/edit.js.map +1 -1
  108. package/build/loginout/index.js +1 -0
  109. package/build/loginout/index.js.map +1 -1
  110. package/build/media-text/edit.js +2 -0
  111. package/build/media-text/edit.js.map +1 -1
  112. package/build/more/edit.js +1 -0
  113. package/build/more/edit.js.map +1 -1
  114. package/build/navigation/edit/index.js +80 -54
  115. package/build/navigation/edit/index.js.map +1 -1
  116. package/build/navigation/edit/navigation-menu-selector.js +14 -11
  117. package/build/navigation/edit/navigation-menu-selector.js.map +1 -1
  118. package/build/navigation/edit/overlay-menu-preview.js +1 -0
  119. package/build/navigation/edit/overlay-menu-preview.js.map +1 -1
  120. package/build/navigation/edit/placeholder/index.js +1 -1
  121. package/build/navigation/edit/placeholder/index.js.map +1 -1
  122. package/build/navigation/edit/unsaved-inner-blocks.js +1 -1
  123. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  124. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
  125. package/build/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  126. package/build/navigation/edit/use-create-navigation-menu.js +1 -1
  127. package/build/navigation/edit/use-create-navigation-menu.js.map +1 -1
  128. package/build/navigation/edit/use-generate-default-navigation-title.js +1 -1
  129. package/build/navigation/edit/use-generate-default-navigation-title.js.map +1 -1
  130. package/build/navigation/edit/use-navigation-notice.js +4 -7
  131. package/build/navigation/edit/use-navigation-notice.js.map +1 -1
  132. package/build/navigation/index.js +1 -0
  133. package/build/navigation/index.js.map +1 -1
  134. package/build/navigation/use-navigation-menu.js +1 -1
  135. package/build/navigation/use-navigation-menu.js.map +1 -1
  136. package/build/navigation-link/edit.js +10 -5
  137. package/build/navigation-link/edit.js.map +1 -1
  138. package/build/navigation-link/link-ui.js +2 -0
  139. package/build/navigation-link/link-ui.js.map +1 -1
  140. package/build/page-list/convert-to-links-modal.js +47 -0
  141. package/build/page-list/convert-to-links-modal.js.map +1 -0
  142. package/build/page-list/edit.js +15 -28
  143. package/build/page-list/edit.js.map +1 -1
  144. package/build/page-list/index.js +1 -0
  145. package/build/page-list/index.js.map +1 -1
  146. package/build/page-list/use-convert-to-navigation-links.js +61 -5
  147. package/build/page-list/use-convert-to-navigation-links.js.map +1 -1
  148. package/build/paragraph/edit.js +1 -0
  149. package/build/paragraph/edit.js.map +1 -1
  150. package/build/post-author/edit.js +4 -0
  151. package/build/post-author/edit.js.map +1 -1
  152. package/build/post-author/index.js +1 -0
  153. package/build/post-author/index.js.map +1 -1
  154. package/build/post-author-biography/index.js +1 -0
  155. package/build/post-author-biography/index.js.map +1 -1
  156. package/build/post-author-name/edit.js +2 -0
  157. package/build/post-author-name/edit.js.map +1 -1
  158. package/build/post-author-name/index.js +1 -0
  159. package/build/post-author-name/index.js.map +1 -1
  160. package/build/post-comments-count/index.js +1 -0
  161. package/build/post-comments-count/index.js.map +1 -1
  162. package/build/post-comments-form/index.js +1 -0
  163. package/build/post-comments-form/index.js.map +1 -1
  164. package/build/post-comments-link/index.js +1 -0
  165. package/build/post-comments-link/index.js.map +1 -1
  166. package/build/post-content/index.js +1 -0
  167. package/build/post-content/index.js.map +1 -1
  168. package/build/post-date/edit.js +2 -0
  169. package/build/post-date/edit.js.map +1 -1
  170. package/build/post-date/index.js +1 -0
  171. package/build/post-date/index.js.map +1 -1
  172. package/build/post-excerpt/edit.js +50 -3
  173. package/build/post-excerpt/edit.js.map +1 -1
  174. package/build/post-excerpt/index.js +5 -0
  175. package/build/post-excerpt/index.js.map +1 -1
  176. package/build/post-featured-image/dimension-controls.js +52 -1
  177. package/build/post-featured-image/dimension-controls.js.map +1 -1
  178. package/build/post-featured-image/edit.js +11 -4
  179. package/build/post-featured-image/edit.js.map +1 -1
  180. package/build/post-featured-image/index.js +4 -0
  181. package/build/post-featured-image/index.js.map +1 -1
  182. package/build/post-navigation-link/edit.js +2 -0
  183. package/build/post-navigation-link/edit.js.map +1 -1
  184. package/build/post-navigation-link/index.js +1 -0
  185. package/build/post-navigation-link/index.js.map +1 -1
  186. package/build/post-template/index.js +1 -0
  187. package/build/post-template/index.js.map +1 -1
  188. package/build/post-terms/index.js +1 -0
  189. package/build/post-terms/index.js.map +1 -1
  190. package/build/post-terms/use-post-terms.js +1 -1
  191. package/build/post-terms/use-post-terms.js.map +1 -1
  192. package/build/post-time-to-read/edit.js +104 -0
  193. package/build/post-time-to-read/edit.js.map +1 -0
  194. package/build/post-time-to-read/icon.js +25 -0
  195. package/build/post-time-to-read/icon.js.map +1 -0
  196. package/build/post-time-to-read/index.js +57 -0
  197. package/build/post-time-to-read/index.js.map +1 -0
  198. package/build/post-title/edit.js +2 -0
  199. package/build/post-title/edit.js.map +1 -1
  200. package/build/post-title/index.js +1 -0
  201. package/build/post-title/index.js.map +1 -1
  202. package/build/query/edit/inspector-controls/index.js +1 -0
  203. package/build/query/edit/inspector-controls/index.js.map +1 -1
  204. package/build/query/index.js +1 -0
  205. package/build/query/index.js.map +1 -1
  206. package/build/query/utils.js +1 -0
  207. package/build/query/utils.js.map +1 -1
  208. package/build/query-no-results/index.js +1 -0
  209. package/build/query-no-results/index.js.map +1 -1
  210. package/build/query-pagination/index.js +1 -0
  211. package/build/query-pagination/index.js.map +1 -1
  212. package/build/query-pagination-next/index.js +1 -0
  213. package/build/query-pagination-next/index.js.map +1 -1
  214. package/build/query-pagination-numbers/index.js +1 -0
  215. package/build/query-pagination-numbers/index.js.map +1 -1
  216. package/build/query-pagination-previous/index.js +1 -0
  217. package/build/query-pagination-previous/index.js.map +1 -1
  218. package/build/query-title/edit.js +2 -0
  219. package/build/query-title/edit.js.map +1 -1
  220. package/build/query-title/index.js +1 -0
  221. package/build/query-title/index.js.map +1 -1
  222. package/build/read-more/edit.js +1 -0
  223. package/build/read-more/edit.js.map +1 -1
  224. package/build/read-more/index.js +1 -0
  225. package/build/read-more/index.js.map +1 -1
  226. package/build/rss/edit.js +3 -0
  227. package/build/rss/edit.js.map +1 -1
  228. package/build/rss/index.js +1 -0
  229. package/build/rss/index.js.map +1 -1
  230. package/build/search/index.js +1 -0
  231. package/build/search/index.js.map +1 -1
  232. package/build/site-logo/edit.js +10 -11
  233. package/build/site-logo/edit.js.map +1 -1
  234. package/build/site-logo/index.js +1 -0
  235. package/build/site-logo/index.js.map +1 -1
  236. package/build/site-tagline/index.js +1 -0
  237. package/build/site-tagline/index.js.map +1 -1
  238. package/build/site-title/edit/index.js +2 -0
  239. package/build/site-title/edit/index.js.map +1 -1
  240. package/build/site-title/index.js +1 -0
  241. package/build/site-title/index.js.map +1 -1
  242. package/build/social-link/index.js +1 -0
  243. package/build/social-link/index.js.map +1 -1
  244. package/build/social-links/edit.js +2 -0
  245. package/build/social-links/edit.js.map +1 -1
  246. package/build/spacer/controls.native.js +10 -8
  247. package/build/spacer/controls.native.js.map +1 -1
  248. package/build/spacer/edit.native.js +43 -5
  249. package/build/spacer/edit.native.js.map +1 -1
  250. package/build/spacer/save.native.js +30 -0
  251. package/build/spacer/save.native.js.map +1 -0
  252. package/build/table/edit.js +6 -3
  253. package/build/table/edit.js.map +1 -1
  254. package/build/table-of-contents/edit.js +1 -0
  255. package/build/table-of-contents/edit.js.map +1 -1
  256. package/build/table-of-contents/utils.js +1 -1
  257. package/build/table-of-contents/utils.js.map +1 -1
  258. package/build/tag-cloud/edit.js +1 -0
  259. package/build/tag-cloud/edit.js.map +1 -1
  260. package/build/tag-cloud/index.js +1 -0
  261. package/build/tag-cloud/index.js.map +1 -1
  262. package/build/template-part/index.js +1 -0
  263. package/build/template-part/index.js.map +1 -1
  264. package/build/term-description/index.js +1 -0
  265. package/build/term-description/index.js.map +1 -1
  266. package/build/verse/index.js +6 -0
  267. package/build/verse/index.js.map +1 -1
  268. package/build/video/edit-common-settings.js +5 -0
  269. package/build/video/edit-common-settings.js.map +1 -1
  270. package/build-module/archives/edit.js +3 -0
  271. package/build-module/archives/edit.js.map +1 -1
  272. package/build-module/archives/index.js +1 -0
  273. package/build-module/archives/index.js.map +1 -1
  274. package/build-module/audio/edit.js +2 -0
  275. package/build-module/audio/edit.js.map +1 -1
  276. package/build-module/avatar/edit.js +5 -8
  277. package/build-module/avatar/edit.js.map +1 -1
  278. package/build-module/avatar/index.js +1 -0
  279. package/build-module/avatar/index.js.map +1 -1
  280. package/build-module/button/edit.js +2 -1
  281. package/build-module/button/edit.js.map +1 -1
  282. package/build-module/button/index.js +17 -6
  283. package/build-module/button/index.js.map +1 -1
  284. package/build-module/calendar/index.js +1 -0
  285. package/build-module/calendar/index.js.map +1 -1
  286. package/build-module/categories/edit.js +5 -0
  287. package/build-module/categories/edit.js.map +1 -1
  288. package/build-module/categories/index.js +1 -0
  289. package/build-module/categories/index.js.map +1 -1
  290. package/build-module/columns/edit.js +1 -0
  291. package/build-module/columns/edit.js.map +1 -1
  292. package/build-module/columns/utils.js +3 -3
  293. package/build-module/columns/utils.js.map +1 -1
  294. package/build-module/comment-author-avatar/index.js +1 -0
  295. package/build-module/comment-author-avatar/index.js.map +1 -1
  296. package/build-module/comment-author-name/edit.js +2 -0
  297. package/build-module/comment-author-name/edit.js.map +1 -1
  298. package/build-module/comment-author-name/index.js +1 -0
  299. package/build-module/comment-author-name/index.js.map +1 -1
  300. package/build-module/comment-content/index.js +1 -0
  301. package/build-module/comment-content/index.js.map +1 -1
  302. package/build-module/comment-date/edit.js +1 -0
  303. package/build-module/comment-date/edit.js.map +1 -1
  304. package/build-module/comment-date/index.js +1 -0
  305. package/build-module/comment-date/index.js.map +1 -1
  306. package/build-module/comment-edit-link/edit.js +1 -0
  307. package/build-module/comment-edit-link/edit.js.map +1 -1
  308. package/build-module/comment-edit-link/index.js +1 -0
  309. package/build-module/comment-edit-link/index.js.map +1 -1
  310. package/build-module/comment-reply-link/index.js +1 -0
  311. package/build-module/comment-reply-link/index.js.map +1 -1
  312. package/build-module/comment-template/index.js +1 -0
  313. package/build-module/comment-template/index.js.map +1 -1
  314. package/build-module/comments/index.js +2 -1
  315. package/build-module/comments/index.js.map +1 -1
  316. package/build-module/comments-pagination/index.js +1 -0
  317. package/build-module/comments-pagination/index.js.map +1 -1
  318. package/build-module/comments-pagination-next/index.js +1 -0
  319. package/build-module/comments-pagination-next/index.js.map +1 -1
  320. package/build-module/comments-pagination-numbers/index.js +1 -0
  321. package/build-module/comments-pagination-numbers/index.js.map +1 -1
  322. package/build-module/comments-pagination-previous/index.js +1 -0
  323. package/build-module/comments-pagination-previous/index.js.map +1 -1
  324. package/build-module/comments-title/edit.js +2 -0
  325. package/build-module/comments-title/edit.js.map +1 -1
  326. package/build-module/cover/edit/inspector-controls.js +2 -0
  327. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  328. package/build-module/embed/embed-controls.js +1 -0
  329. package/build-module/embed/embed-controls.js.map +1 -1
  330. package/build-module/file/index.js +10 -1
  331. package/build-module/file/index.js.map +1 -1
  332. package/build-module/file/inspector.js +3 -0
  333. package/build-module/file/inspector.js.map +1 -1
  334. package/build-module/freeform/modal.js +1 -1
  335. package/build-module/freeform/modal.js.map +1 -1
  336. package/build-module/gallery/edit.js +2 -0
  337. package/build-module/gallery/edit.js.map +1 -1
  338. package/build-module/gallery/shared.js +4 -7
  339. package/build-module/gallery/shared.js.map +1 -1
  340. package/build-module/gallery/use-image-sizes.js +4 -7
  341. package/build-module/gallery/use-image-sizes.js.map +1 -1
  342. package/build-module/gallery/v1/edit.js +9 -4
  343. package/build-module/gallery/v1/edit.js.map +1 -1
  344. package/build-module/gallery/v1/gallery-image.js +1 -2
  345. package/build-module/gallery/v1/gallery-image.js.map +1 -1
  346. package/build-module/gallery/v1/shared.js +4 -6
  347. package/build-module/gallery/v1/shared.js.map +1 -1
  348. package/build-module/home-link/index.js +1 -0
  349. package/build-module/home-link/index.js.map +1 -1
  350. package/build-module/image/edit.js +7 -5
  351. package/build-module/image/edit.js.map +1 -1
  352. package/build-module/image/image.js +19 -14
  353. package/build-module/image/image.js.map +1 -1
  354. package/build-module/image/utils.js +4 -2
  355. package/build-module/image/utils.js.map +1 -1
  356. package/build-module/index.js +2 -1
  357. package/build-module/index.js.map +1 -1
  358. package/build-module/latest-comments/edit.js +9 -2
  359. package/build-module/latest-comments/edit.js.map +1 -1
  360. package/build-module/latest-comments/index.js +14 -0
  361. package/build-module/latest-comments/index.js.map +1 -1
  362. package/build-module/latest-posts/deprecated.js +1 -0
  363. package/build-module/latest-posts/deprecated.js.map +1 -1
  364. package/build-module/latest-posts/edit.js +4 -0
  365. package/build-module/latest-posts/edit.js.map +1 -1
  366. package/build-module/latest-posts/index.js +1 -0
  367. package/build-module/latest-posts/index.js.map +1 -1
  368. package/build-module/list/ordered-list-settings.js +1 -0
  369. package/build-module/list/ordered-list-settings.js.map +1 -1
  370. package/build-module/list-item/edit.js +2 -2
  371. package/build-module/list-item/edit.js.map +1 -1
  372. package/build-module/list-item/hooks/use-outdent-list-item.js +2 -1
  373. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  374. package/build-module/loginout/edit.js +2 -0
  375. package/build-module/loginout/edit.js.map +1 -1
  376. package/build-module/loginout/index.js +1 -0
  377. package/build-module/loginout/index.js.map +1 -1
  378. package/build-module/media-text/edit.js +2 -0
  379. package/build-module/media-text/edit.js.map +1 -1
  380. package/build-module/more/edit.js +1 -0
  381. package/build-module/more/edit.js.map +1 -1
  382. package/build-module/navigation/edit/index.js +82 -56
  383. package/build-module/navigation/edit/index.js.map +1 -1
  384. package/build-module/navigation/edit/navigation-menu-selector.js +14 -10
  385. package/build-module/navigation/edit/navigation-menu-selector.js.map +1 -1
  386. package/build-module/navigation/edit/overlay-menu-preview.js +1 -0
  387. package/build-module/navigation/edit/overlay-menu-preview.js.map +1 -1
  388. package/build-module/navigation/edit/placeholder/index.js +1 -1
  389. package/build-module/navigation/edit/placeholder/index.js.map +1 -1
  390. package/build-module/navigation/edit/unsaved-inner-blocks.js +1 -1
  391. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  392. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js +1 -1
  393. package/build-module/navigation/edit/use-convert-classic-menu-to-block-menu.js.map +1 -1
  394. package/build-module/navigation/edit/use-create-navigation-menu.js +1 -1
  395. package/build-module/navigation/edit/use-create-navigation-menu.js.map +1 -1
  396. package/build-module/navigation/edit/use-generate-default-navigation-title.js +1 -1
  397. package/build-module/navigation/edit/use-generate-default-navigation-title.js.map +1 -1
  398. package/build-module/navigation/edit/use-navigation-notice.js +5 -8
  399. package/build-module/navigation/edit/use-navigation-notice.js.map +1 -1
  400. package/build-module/navigation/index.js +1 -0
  401. package/build-module/navigation/index.js.map +1 -1
  402. package/build-module/navigation/use-navigation-menu.js +1 -1
  403. package/build-module/navigation/use-navigation-menu.js.map +1 -1
  404. package/build-module/navigation-link/edit.js +10 -5
  405. package/build-module/navigation-link/edit.js.map +1 -1
  406. package/build-module/navigation-link/link-ui.js +2 -0
  407. package/build-module/navigation-link/link-ui.js.map +1 -1
  408. package/build-module/page-list/convert-to-links-modal.js +35 -0
  409. package/build-module/page-list/convert-to-links-modal.js.map +1 -0
  410. package/build-module/page-list/edit.js +15 -29
  411. package/build-module/page-list/edit.js.map +1 -1
  412. package/build-module/page-list/index.js +1 -0
  413. package/build-module/page-list/index.js.map +1 -1
  414. package/build-module/page-list/use-convert-to-navigation-links.js +61 -5
  415. package/build-module/page-list/use-convert-to-navigation-links.js.map +1 -1
  416. package/build-module/paragraph/edit.js +1 -0
  417. package/build-module/paragraph/edit.js.map +1 -1
  418. package/build-module/post-author/edit.js +4 -0
  419. package/build-module/post-author/edit.js.map +1 -1
  420. package/build-module/post-author/index.js +1 -0
  421. package/build-module/post-author/index.js.map +1 -1
  422. package/build-module/post-author-biography/index.js +1 -0
  423. package/build-module/post-author-biography/index.js.map +1 -1
  424. package/build-module/post-author-name/edit.js +2 -0
  425. package/build-module/post-author-name/edit.js.map +1 -1
  426. package/build-module/post-author-name/index.js +1 -0
  427. package/build-module/post-author-name/index.js.map +1 -1
  428. package/build-module/post-comments-count/index.js +1 -0
  429. package/build-module/post-comments-count/index.js.map +1 -1
  430. package/build-module/post-comments-form/index.js +1 -0
  431. package/build-module/post-comments-form/index.js.map +1 -1
  432. package/build-module/post-comments-link/index.js +1 -0
  433. package/build-module/post-comments-link/index.js.map +1 -1
  434. package/build-module/post-content/index.js +1 -0
  435. package/build-module/post-content/index.js.map +1 -1
  436. package/build-module/post-date/edit.js +2 -0
  437. package/build-module/post-date/edit.js.map +1 -1
  438. package/build-module/post-date/index.js +1 -0
  439. package/build-module/post-date/index.js.map +1 -1
  440. package/build-module/post-excerpt/edit.js +53 -5
  441. package/build-module/post-excerpt/edit.js.map +1 -1
  442. package/build-module/post-excerpt/index.js +5 -0
  443. package/build-module/post-excerpt/index.js.map +1 -1
  444. package/build-module/post-featured-image/dimension-controls.js +52 -1
  445. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  446. package/build-module/post-featured-image/edit.js +11 -4
  447. package/build-module/post-featured-image/edit.js.map +1 -1
  448. package/build-module/post-featured-image/index.js +4 -0
  449. package/build-module/post-featured-image/index.js.map +1 -1
  450. package/build-module/post-navigation-link/edit.js +2 -0
  451. package/build-module/post-navigation-link/edit.js.map +1 -1
  452. package/build-module/post-navigation-link/index.js +1 -0
  453. package/build-module/post-navigation-link/index.js.map +1 -1
  454. package/build-module/post-template/index.js +1 -0
  455. package/build-module/post-template/index.js.map +1 -1
  456. package/build-module/post-terms/index.js +1 -0
  457. package/build-module/post-terms/index.js.map +1 -1
  458. package/build-module/post-terms/use-post-terms.js +1 -1
  459. package/build-module/post-terms/use-post-terms.js.map +1 -1
  460. package/build-module/post-time-to-read/edit.js +90 -0
  461. package/build-module/post-time-to-read/edit.js.map +1 -0
  462. package/build-module/post-time-to-read/icon.js +15 -0
  463. package/build-module/post-time-to-read/icon.js.map +1 -0
  464. package/build-module/post-time-to-read/index.js +40 -0
  465. package/build-module/post-time-to-read/index.js.map +1 -0
  466. package/build-module/post-title/edit.js +2 -0
  467. package/build-module/post-title/edit.js.map +1 -1
  468. package/build-module/post-title/index.js +1 -0
  469. package/build-module/post-title/index.js.map +1 -1
  470. package/build-module/query/edit/inspector-controls/index.js +1 -0
  471. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  472. package/build-module/query/index.js +1 -0
  473. package/build-module/query/index.js.map +1 -1
  474. package/build-module/query/utils.js +1 -0
  475. package/build-module/query/utils.js.map +1 -1
  476. package/build-module/query-no-results/index.js +1 -0
  477. package/build-module/query-no-results/index.js.map +1 -1
  478. package/build-module/query-pagination/index.js +1 -0
  479. package/build-module/query-pagination/index.js.map +1 -1
  480. package/build-module/query-pagination-next/index.js +1 -0
  481. package/build-module/query-pagination-next/index.js.map +1 -1
  482. package/build-module/query-pagination-numbers/index.js +1 -0
  483. package/build-module/query-pagination-numbers/index.js.map +1 -1
  484. package/build-module/query-pagination-previous/index.js +1 -0
  485. package/build-module/query-pagination-previous/index.js.map +1 -1
  486. package/build-module/query-title/edit.js +2 -0
  487. package/build-module/query-title/edit.js.map +1 -1
  488. package/build-module/query-title/index.js +1 -0
  489. package/build-module/query-title/index.js.map +1 -1
  490. package/build-module/read-more/edit.js +1 -0
  491. package/build-module/read-more/edit.js.map +1 -1
  492. package/build-module/read-more/index.js +1 -0
  493. package/build-module/read-more/index.js.map +1 -1
  494. package/build-module/rss/edit.js +3 -0
  495. package/build-module/rss/edit.js.map +1 -1
  496. package/build-module/rss/index.js +1 -0
  497. package/build-module/rss/index.js.map +1 -1
  498. package/build-module/search/index.js +1 -0
  499. package/build-module/search/index.js.map +1 -1
  500. package/build-module/site-logo/edit.js +10 -11
  501. package/build-module/site-logo/edit.js.map +1 -1
  502. package/build-module/site-logo/index.js +1 -0
  503. package/build-module/site-logo/index.js.map +1 -1
  504. package/build-module/site-tagline/index.js +1 -0
  505. package/build-module/site-tagline/index.js.map +1 -1
  506. package/build-module/site-title/edit/index.js +2 -0
  507. package/build-module/site-title/edit/index.js.map +1 -1
  508. package/build-module/site-title/index.js +1 -0
  509. package/build-module/site-title/index.js.map +1 -1
  510. package/build-module/social-link/index.js +1 -0
  511. package/build-module/social-link/index.js.map +1 -1
  512. package/build-module/social-links/edit.js +2 -0
  513. package/build-module/social-links/edit.js.map +1 -1
  514. package/build-module/spacer/controls.native.js +9 -8
  515. package/build-module/spacer/controls.native.js.map +1 -1
  516. package/build-module/spacer/edit.native.js +39 -7
  517. package/build-module/spacer/edit.native.js.map +1 -1
  518. package/build-module/spacer/save.native.js +22 -0
  519. package/build-module/spacer/save.native.js.map +1 -0
  520. package/build-module/table/edit.js +6 -3
  521. package/build-module/table/edit.js.map +1 -1
  522. package/build-module/table-of-contents/edit.js +1 -0
  523. package/build-module/table-of-contents/edit.js.map +1 -1
  524. package/build-module/table-of-contents/utils.js +1 -1
  525. package/build-module/table-of-contents/utils.js.map +1 -1
  526. package/build-module/tag-cloud/edit.js +1 -0
  527. package/build-module/tag-cloud/edit.js.map +1 -1
  528. package/build-module/tag-cloud/index.js +1 -0
  529. package/build-module/tag-cloud/index.js.map +1 -1
  530. package/build-module/template-part/index.js +1 -0
  531. package/build-module/template-part/index.js.map +1 -1
  532. package/build-module/term-description/index.js +1 -0
  533. package/build-module/term-description/index.js.map +1 -1
  534. package/build-module/verse/index.js +6 -0
  535. package/build-module/verse/index.js.map +1 -1
  536. package/build-module/video/edit-common-settings.js +5 -0
  537. package/build-module/video/edit-common-settings.js.map +1 -1
  538. package/build-style/avatar/style-rtl.css +3 -0
  539. package/build-style/avatar/style.css +3 -0
  540. package/build-style/button/editor-rtl.css +31 -0
  541. package/build-style/button/editor.css +31 -0
  542. package/build-style/button/style-rtl.css +31 -0
  543. package/build-style/button/style.css +31 -0
  544. package/build-style/editor-rtl.css +33 -1
  545. package/build-style/editor.css +33 -1
  546. package/build-style/file/style-rtl.css +1 -0
  547. package/build-style/file/style.css +1 -0
  548. package/build-style/image/editor-rtl.css +1 -0
  549. package/build-style/image/editor.css +1 -0
  550. package/build-style/image/style-rtl.css +6 -2
  551. package/build-style/image/style.css +6 -0
  552. package/build-style/latest-comments/style-rtl.css +18 -5
  553. package/build-style/latest-comments/style.css +18 -5
  554. package/build-style/post-excerpt/editor-rtl.css +1 -1
  555. package/build-style/post-excerpt/editor.css +1 -1
  556. package/build-style/style-rtl.css +59 -7
  557. package/build-style/style.css +59 -5
  558. package/build-types/table-of-contents/utils.d.ts +1 -1
  559. package/package.json +31 -30
  560. package/src/archives/block.json +1 -0
  561. package/src/archives/edit.js +3 -0
  562. package/src/audio/edit.js +2 -0
  563. package/src/audio/test/__snapshots__/edit.native.js.snap +38 -38
  564. package/src/avatar/block.json +1 -0
  565. package/src/avatar/edit.js +2 -4
  566. package/src/avatar/index.php +67 -63
  567. package/src/avatar/style.scss +3 -0
  568. package/src/button/block.json +17 -6
  569. package/src/button/edit.js +2 -1
  570. package/src/button/editor.scss +36 -0
  571. package/src/button/style.scss +37 -1
  572. package/src/buttons/test/__snapshots__/edit.native.js.snap +11 -11
  573. package/src/calendar/block.json +1 -0
  574. package/src/categories/block.json +1 -0
  575. package/src/categories/edit.js +5 -0
  576. package/src/code/test/__snapshots__/edit.native.js.snap +2 -2
  577. package/src/columns/edit.js +1 -0
  578. package/src/columns/test/__snapshots__/edit.native.js.snap +66 -66
  579. package/src/columns/test/utils.js +54 -0
  580. package/src/columns/utils.js +8 -8
  581. package/src/comment-author-avatar/block.json +1 -0
  582. package/src/comment-author-name/block.json +1 -0
  583. package/src/comment-author-name/edit.js +2 -0
  584. package/src/comment-content/block.json +1 -0
  585. package/src/comment-date/block.json +1 -0
  586. package/src/comment-date/edit.js +1 -0
  587. package/src/comment-edit-link/block.json +1 -0
  588. package/src/comment-edit-link/edit.js +1 -0
  589. package/src/comment-reply-link/block.json +1 -0
  590. package/src/comment-template/block.json +1 -0
  591. package/src/comments/block.json +2 -1
  592. package/src/comments-pagination/block.json +1 -0
  593. package/src/comments-pagination-next/block.json +1 -0
  594. package/src/comments-pagination-numbers/block.json +1 -0
  595. package/src/comments-pagination-previous/block.json +1 -0
  596. package/src/comments-title/edit.js +2 -0
  597. package/src/cover/edit/inspector-controls.js +2 -0
  598. package/src/cover/index.php +4 -6
  599. package/src/cover/test/__snapshots__/edit.native.js.snap +36 -36
  600. package/src/embed/embed-controls.js +1 -0
  601. package/src/embed/test/__snapshots__/index.native.js.snap +52 -52
  602. package/src/file/block.json +10 -1
  603. package/src/file/inspector.js +3 -0
  604. package/src/file/style.scss +1 -0
  605. package/src/file/test/__snapshots__/edit.native.js.snap +49 -49
  606. package/src/freeform/modal.js +1 -1
  607. package/src/gallery/edit.js +2 -0
  608. package/src/gallery/shared.js +6 -11
  609. package/src/gallery/test/__snapshots__/index.native.js.snap +71 -71
  610. package/src/gallery/use-image-sizes.js +3 -16
  611. package/src/gallery/v1/edit.js +8 -16
  612. package/src/gallery/v1/gallery-image.js +1 -2
  613. package/src/gallery/v1/shared.js +5 -10
  614. package/src/group/test/__snapshots__/edit.native.js.snap +5 -5
  615. package/src/heading/test/__snapshots__/index.native.js.snap +1 -1
  616. package/src/home-link/block.json +1 -0
  617. package/src/image/edit.js +4 -4
  618. package/src/image/editor.scss +1 -0
  619. package/src/image/image.js +9 -20
  620. package/src/image/index.php +4 -4
  621. package/src/image/style.scss +13 -0
  622. package/src/image/utils.js +2 -2
  623. package/src/index.js +2 -0
  624. package/src/latest-comments/block.json +14 -0
  625. package/src/latest-comments/edit.js +12 -2
  626. package/src/latest-comments/style.scss +25 -7
  627. package/src/latest-posts/block.json +1 -0
  628. package/src/latest-posts/edit.js +4 -0
  629. package/src/list/ordered-list-settings.js +1 -0
  630. package/src/list/test/__snapshots__/edit.native.js.snap +4 -4
  631. package/src/list-item/edit.js +10 -3
  632. package/src/list-item/hooks/use-outdent-list-item.js +2 -1
  633. package/src/loginout/block.json +1 -0
  634. package/src/loginout/edit.js +2 -0
  635. package/src/media-text/edit.js +2 -0
  636. package/src/missing/test/__snapshots__/edit.native.js.snap +1 -1
  637. package/src/more/edit.js +1 -0
  638. package/src/navigation/block.json +1 -0
  639. package/src/navigation/edit/index.js +130 -82
  640. package/src/navigation/edit/navigation-menu-selector.js +12 -26
  641. package/src/navigation/edit/overlay-menu-preview.js +1 -0
  642. package/src/navigation/edit/placeholder/index.js +1 -1
  643. package/src/navigation/edit/test/navigation-menu-selector.js +638 -0
  644. package/src/navigation/edit/unsaved-inner-blocks.js +1 -0
  645. package/src/navigation/edit/use-convert-classic-menu-to-block-menu.js +51 -48
  646. package/src/navigation/edit/use-create-navigation-menu.js +1 -1
  647. package/src/navigation/edit/use-generate-default-navigation-title.js +1 -1
  648. package/src/navigation/edit/use-navigation-notice.js +16 -13
  649. package/src/navigation/index.php +50 -25
  650. package/src/navigation/use-navigation-menu.js +1 -1
  651. package/src/navigation-link/edit.js +10 -5
  652. package/src/navigation-link/link-ui.js +2 -0
  653. package/src/navigation-link/test/__snapshots__/hooks.js.snap +12 -12
  654. package/src/page-list/block.json +1 -0
  655. package/src/page-list/convert-to-links-modal.js +38 -0
  656. package/src/page-list/edit.js +17 -37
  657. package/src/page-list/index.php +4 -4
  658. package/src/page-list/test/convert-to-links-modal.js +134 -0
  659. package/src/page-list/use-convert-to-navigation-links.js +64 -4
  660. package/src/paragraph/edit.js +1 -0
  661. package/src/post-author/block.json +1 -0
  662. package/src/post-author/edit.js +4 -0
  663. package/src/post-author-biography/block.json +1 -0
  664. package/src/post-author-name/block.json +1 -0
  665. package/src/post-author-name/edit.js +2 -0
  666. package/src/post-comments-count/block.json +1 -0
  667. package/src/post-comments-form/block.json +1 -0
  668. package/src/post-comments-link/block.json +1 -0
  669. package/src/post-content/block.json +1 -0
  670. package/src/post-date/block.json +1 -0
  671. package/src/post-date/edit.js +2 -0
  672. package/src/post-excerpt/block.json +5 -0
  673. package/src/post-excerpt/edit.js +73 -7
  674. package/src/post-excerpt/editor.scss +1 -1
  675. package/src/post-excerpt/index.php +29 -5
  676. package/src/post-featured-image/block.json +4 -0
  677. package/src/post-featured-image/dimension-controls.js +64 -2
  678. package/src/post-featured-image/edit.js +20 -6
  679. package/src/post-featured-image/index.php +25 -9
  680. package/src/post-navigation-link/block.json +1 -0
  681. package/src/post-navigation-link/edit.js +2 -0
  682. package/src/post-template/block.json +1 -0
  683. package/src/post-terms/block.json +1 -0
  684. package/src/post-terms/index.php +1 -0
  685. package/src/post-terms/use-post-terms.js +1 -1
  686. package/src/post-time-to-read/block.json +20 -0
  687. package/src/post-time-to-read/edit.js +101 -0
  688. package/src/post-time-to-read/icon.js +15 -0
  689. package/src/post-time-to-read/index.js +17 -0
  690. package/src/post-time-to-read/index.php +62 -0
  691. package/src/post-title/block.json +1 -0
  692. package/src/post-title/edit.js +2 -0
  693. package/src/post-title/index.php +3 -3
  694. package/src/preformatted/test/__snapshots__/edit.native.js.snap +10 -10
  695. package/src/query/block.json +1 -0
  696. package/src/query/edit/inspector-controls/index.js +1 -0
  697. package/src/query-no-results/block.json +1 -0
  698. package/src/query-pagination/block.json +1 -0
  699. package/src/query-pagination-next/block.json +1 -0
  700. package/src/query-pagination-numbers/block.json +1 -0
  701. package/src/query-pagination-previous/block.json +1 -0
  702. package/src/query-title/block.json +1 -0
  703. package/src/query-title/edit.js +2 -0
  704. package/src/read-more/block.json +1 -0
  705. package/src/read-more/edit.js +1 -0
  706. package/src/rss/block.json +1 -0
  707. package/src/rss/edit.js +3 -0
  708. package/src/search/block.json +1 -0
  709. package/src/search/test/__snapshots__/edit.native.js.snap +60 -60
  710. package/src/separator/test/__snapshots__/edit.native.js.snap +1 -1
  711. package/src/site-logo/block.json +1 -0
  712. package/src/site-logo/edit.js +6 -6
  713. package/src/site-logo/index.php +7 -2
  714. package/src/site-tagline/block.json +1 -0
  715. package/src/site-title/block.json +1 -0
  716. package/src/site-title/edit/index.js +2 -0
  717. package/src/social-link/block.json +1 -0
  718. package/src/social-link/index.php +6 -6
  719. package/src/social-links/edit.js +2 -0
  720. package/src/social-links/test/__snapshots__/edit.native.js.snap +16 -16
  721. package/src/spacer/controls.native.js +13 -5
  722. package/src/spacer/edit.native.js +45 -6
  723. package/src/spacer/save.native.js +18 -0
  724. package/src/spacer/test/__snapshots__/index.native.js.snap +21 -9
  725. package/src/spacer/test/index.native.js +81 -0
  726. package/src/table/edit.js +6 -3
  727. package/src/table-of-contents/edit.js +1 -0
  728. package/src/table-of-contents/utils.ts +1 -1
  729. package/src/tag-cloud/block.json +1 -0
  730. package/src/tag-cloud/edit.js +1 -0
  731. package/src/template-part/block.json +1 -0
  732. package/src/template-part/index.php +7 -6
  733. package/src/term-description/block.json +1 -0
  734. package/src/verse/block.json +6 -0
  735. package/src/verse/test/__snapshots__/edit.native.js.snap +2 -2
  736. package/src/video/edit-common-settings.js +5 -0
  737. package/tsconfig.json +2 -1
  738. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/gallery/use-image-sizes.js"],"names":["get","useMemo","useImageSizes","images","isSelected","getSettings","getImageSizing","length","imageSizes","resizedImages","reduce","currentResizedImages","img","id","sizes","currentSizes","size","defaultUrl","slug","mediaDetailsUrl","parseInt","resizedImageSizes","Object","values","filter","some","map","name","value","label"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,GAAT,QAAoB,QAApB;AAEA;AACA;AACA;;AACA,SAASC,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,aAAT,CAAwBC,MAAxB,EAAgCC,UAAhC,EAA4CC,WAA5C,EAA0D;AACxE,SAAOJ,OAAO,CAAE,MAAMK,cAAc,EAAtB,EAA0B,CAAEH,MAAF,EAAUC,UAAV,CAA1B,CAAd;;AAEA,WAASE,cAAT,GAA0B;AACzB,QAAK,CAAEH,MAAF,IAAYA,MAAM,CAACI,MAAP,KAAkB,CAAnC,EAAuC;AACtC;AACA;;AACD,UAAM;AAAEC,MAAAA;AAAF,QAAiBH,WAAW,EAAlC;AACA,QAAII,aAAa,GAAG,EAApB;;AAEA,QAAKL,UAAL,EAAkB;AACjBK,MAAAA,aAAa,GAAGN,MAAM,CAACO,MAAP,CAAe,CAAEC,oBAAF,EAAwBC,GAAxB,KAAiC;AAC/D,YAAK,CAAEA,GAAG,CAACC,EAAX,EAAgB;AACf,iBAAOF,oBAAP;AACA;;AAED,cAAMG,KAAK,GAAGN,UAAU,CAACE,MAAX,CAAmB,CAAEK,YAAF,EAAgBC,IAAhB,KAA0B;AAC1D,gBAAMC,UAAU,GAAGjB,GAAG,CAAEY,GAAF,EAAO,CAC5B,OAD4B,EAE5BI,IAAI,CAACE,IAFuB,EAG5B,KAH4B,CAAP,CAAtB;AAKA,gBAAMC,eAAe,GAAGnB,GAAG,CAAEY,GAAF,EAAO,CACjC,eADiC,EAEjC,OAFiC,EAGjCI,IAAI,CAACE,IAH4B,EAIjC,YAJiC,CAAP,CAA3B;AAMA,iBAAO,EACN,GAAGH,YADG;AAEN,aAAEC,IAAI,CAACE,IAAP,GAAeD,UAAU,IAAIE;AAFvB,WAAP;AAIA,SAhBa,EAgBX,EAhBW,CAAd;AAiBA,eAAO,EACN,GAAGR,oBADG;AAEN,WAAES,QAAQ,CAAER,GAAG,CAACC,EAAN,EAAU,EAAV,CAAV,GAA4BC;AAFtB,SAAP;AAIA,OA1Be,EA0Bb,EA1Ba,CAAhB;AA2BA;;AACD,UAAMO,iBAAiB,GAAGC,MAAM,CAACC,MAAP,CAAed,aAAf,CAA1B;AACA,WAAOD,UAAU,CACfgB,MADK,CACG;AAAA,UAAE;AAAEN,QAAAA;AAAF,OAAF;AAAA,aACRG,iBAAiB,CAACI,IAAlB,CAA0BX,KAAF,IAAaA,KAAK,CAAEI,IAAF,CAA1C,CADQ;AAAA,KADH,EAILQ,GAJK,CAIA;AAAA,UAAE;AAAEC,QAAAA,IAAF;AAAQT,QAAAA;AAAR,OAAF;AAAA,aAAwB;AAAEU,QAAAA,KAAK,EAAEV,IAAT;AAAeW,QAAAA,KAAK,EAAEF;AAAtB,OAAxB;AAAA,KAJA,CAAP;AAKA;AACD","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Calculates the image sizes that are avaible for the current gallery images in order to\n * populate the 'Image size' selector.\n *\n * @param {Array} images Basic image block data taken from current gallery innerBlock\n * @param {boolean} isSelected Is the block currently selected in the editor.\n * @param {Function} getSettings Block editor store selector.\n *\n * @return {Array} An array of image size options.\n */\nexport default function useImageSizes( images, isSelected, getSettings ) {\n\treturn useMemo( () => getImageSizing(), [ images, isSelected ] );\n\n\tfunction getImageSizing() {\n\t\tif ( ! images || images.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { imageSizes } = getSettings();\n\t\tlet resizedImages = {};\n\n\t\tif ( isSelected ) {\n\t\t\tresizedImages = images.reduce( ( currentResizedImages, img ) => {\n\t\t\t\tif ( ! img.id ) {\n\t\t\t\t\treturn currentResizedImages;\n\t\t\t\t}\n\n\t\t\t\tconst sizes = imageSizes.reduce( ( currentSizes, size ) => {\n\t\t\t\t\tconst defaultUrl = get( img, [\n\t\t\t\t\t\t'sizes',\n\t\t\t\t\t\tsize.slug,\n\t\t\t\t\t\t'url',\n\t\t\t\t\t] );\n\t\t\t\t\tconst mediaDetailsUrl = get( img, [\n\t\t\t\t\t\t'media_details',\n\t\t\t\t\t\t'sizes',\n\t\t\t\t\t\tsize.slug,\n\t\t\t\t\t\t'source_url',\n\t\t\t\t\t] );\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...currentSizes,\n\t\t\t\t\t\t[ size.slug ]: defaultUrl || mediaDetailsUrl,\n\t\t\t\t\t};\n\t\t\t\t}, {} );\n\t\t\t\treturn {\n\t\t\t\t\t...currentResizedImages,\n\t\t\t\t\t[ parseInt( img.id, 10 ) ]: sizes,\n\t\t\t\t};\n\t\t\t}, {} );\n\t\t}\n\t\tconst resizedImageSizes = Object.values( resizedImages );\n\t\treturn imageSizes\n\t\t\t.filter( ( { slug } ) =>\n\t\t\t\tresizedImageSizes.some( ( sizes ) => sizes[ slug ] )\n\t\t\t)\n\t\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\t}\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/gallery/use-image-sizes.js"],"names":["useMemo","useImageSizes","images","isSelected","getSettings","getImageSizing","length","imageSizes","resizedImages","reduce","currentResizedImages","img","id","sizes","currentSizes","size","defaultUrl","slug","url","mediaDetailsUrl","media_details","source_url","parseInt","resizedImageSizes","Object","values","filter","some","map","name","value","label"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,aAAT,CAAwBC,MAAxB,EAAgCC,UAAhC,EAA4CC,WAA5C,EAA0D;AACxE,SAAOJ,OAAO,CAAE,MAAMK,cAAc,EAAtB,EAA0B,CAAEH,MAAF,EAAUC,UAAV,CAA1B,CAAd;;AAEA,WAASE,cAAT,GAA0B;AACzB,QAAK,CAAEH,MAAF,IAAYA,MAAM,CAACI,MAAP,KAAkB,CAAnC,EAAuC;AACtC;AACA;;AACD,UAAM;AAAEC,MAAAA;AAAF,QAAiBH,WAAW,EAAlC;AACA,QAAII,aAAa,GAAG,EAApB;;AAEA,QAAKL,UAAL,EAAkB;AACjBK,MAAAA,aAAa,GAAGN,MAAM,CAACO,MAAP,CAAe,CAAEC,oBAAF,EAAwBC,GAAxB,KAAiC;AAC/D,YAAK,CAAEA,GAAG,CAACC,EAAX,EAAgB;AACf,iBAAOF,oBAAP;AACA;;AAED,cAAMG,KAAK,GAAGN,UAAU,CAACE,MAAX,CAAmB,CAAEK,YAAF,EAAgBC,IAAhB,KAA0B;AAAA;;AAC1D,gBAAMC,UAAU,iBAAGL,GAAG,CAACE,KAAP,uEAAG,WAAaE,IAAI,CAACE,IAAlB,CAAH,yDAAG,qBAA0BC,GAA7C;AACA,gBAAMC,eAAe,yBACpBR,GAAG,CAACS,aADgB,gFACpB,mBAAmBP,KADC,oFACpB,sBAA4BE,IAAI,CAACE,IAAjC,CADoB,2DACpB,uBAAyCI,UAD1C;AAEA,iBAAO,EACN,GAAGP,YADG;AAEN,aAAEC,IAAI,CAACE,IAAP,GAAeD,UAAU,IAAIG;AAFvB,WAAP;AAIA,SARa,EAQX,EARW,CAAd;AASA,eAAO,EACN,GAAGT,oBADG;AAEN,WAAEY,QAAQ,CAAEX,GAAG,CAACC,EAAN,EAAU,EAAV,CAAV,GAA4BC;AAFtB,SAAP;AAIA,OAlBe,EAkBb,EAlBa,CAAhB;AAmBA;;AACD,UAAMU,iBAAiB,GAAGC,MAAM,CAACC,MAAP,CAAejB,aAAf,CAA1B;AACA,WAAOD,UAAU,CACfmB,MADK,CACG;AAAA,UAAE;AAAET,QAAAA;AAAF,OAAF;AAAA,aACRM,iBAAiB,CAACI,IAAlB,CAA0Bd,KAAF,IAAaA,KAAK,CAAEI,IAAF,CAA1C,CADQ;AAAA,KADH,EAILW,GAJK,CAIA;AAAA,UAAE;AAAEC,QAAAA,IAAF;AAAQZ,QAAAA;AAAR,OAAF;AAAA,aAAwB;AAAEa,QAAAA,KAAK,EAAEb,IAAT;AAAec,QAAAA,KAAK,EAAEF;AAAtB,OAAxB;AAAA,KAJA,CAAP;AAKA;AACD","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\n\n/**\n * Calculates the image sizes that are avaible for the current gallery images in order to\n * populate the 'Image size' selector.\n *\n * @param {Array} images Basic image block data taken from current gallery innerBlock\n * @param {boolean} isSelected Is the block currently selected in the editor.\n * @param {Function} getSettings Block editor store selector.\n *\n * @return {Array} An array of image size options.\n */\nexport default function useImageSizes( images, isSelected, getSettings ) {\n\treturn useMemo( () => getImageSizing(), [ images, isSelected ] );\n\n\tfunction getImageSizing() {\n\t\tif ( ! images || images.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\tconst { imageSizes } = getSettings();\n\t\tlet resizedImages = {};\n\n\t\tif ( isSelected ) {\n\t\t\tresizedImages = images.reduce( ( currentResizedImages, img ) => {\n\t\t\t\tif ( ! img.id ) {\n\t\t\t\t\treturn currentResizedImages;\n\t\t\t\t}\n\n\t\t\t\tconst sizes = imageSizes.reduce( ( currentSizes, size ) => {\n\t\t\t\t\tconst defaultUrl = img.sizes?.[ size.slug ]?.url;\n\t\t\t\t\tconst mediaDetailsUrl =\n\t\t\t\t\t\timg.media_details?.sizes?.[ size.slug ]?.source_url;\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...currentSizes,\n\t\t\t\t\t\t[ size.slug ]: defaultUrl || mediaDetailsUrl,\n\t\t\t\t\t};\n\t\t\t\t}, {} );\n\t\t\t\treturn {\n\t\t\t\t\t...currentResizedImages,\n\t\t\t\t\t[ parseInt( img.id, 10 ) ]: sizes,\n\t\t\t\t};\n\t\t\t}, {} );\n\t\t}\n\t\tconst resizedImageSizes = Object.values( resizedImages );\n\t\treturn imageSizes\n\t\t\t.filter( ( { slug } ) =>\n\t\t\t\tresizedImageSizes.some( ( sizes ) => sizes[ slug ] )\n\t\t\t)\n\t\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\t}\n}\n"]}
@@ -4,7 +4,7 @@ import { createElement, Fragment } from "@wordpress/element";
4
4
  /**
5
5
  * External dependencies
6
6
  */
7
- import { get, isEmpty } from 'lodash';
7
+ import { isEmpty } from 'lodash';
8
8
  /**
9
9
  * WordPress dependencies
10
10
  */
@@ -97,8 +97,10 @@ function GalleryEdit(props) {
97
97
 
98
98
  const image = getMedia(id);
99
99
  const sizes = imageSizes.reduce((currentSizes, size) => {
100
- const defaultUrl = get(image, ['sizes', size.slug, 'url']);
101
- const mediaDetailsUrl = get(image, ['media_details', 'sizes', size.slug, 'source_url']);
100
+ var _image$sizes, _image$sizes$size$slu, _image$media_details, _image$media_details$, _image$media_details$2;
101
+
102
+ const defaultUrl = image === null || image === void 0 ? void 0 : (_image$sizes = image.sizes) === null || _image$sizes === void 0 ? void 0 : (_image$sizes$size$slu = _image$sizes[size.slug]) === null || _image$sizes$size$slu === void 0 ? void 0 : _image$sizes$size$slu.url;
103
+ const mediaDetailsUrl = image === null || image === void 0 ? void 0 : (_image$media_details = image.media_details) === null || _image$media_details === void 0 ? void 0 : (_image$media_details$ = _image$media_details.sizes) === null || _image$media_details$ === void 0 ? void 0 : (_image$media_details$2 = _image$media_details$[size.slug]) === null || _image$media_details$2 === void 0 ? void 0 : _image$media_details$2.source_url;
102
104
  return { ...currentSizes,
103
105
  [size.slug]: defaultUrl || mediaDetailsUrl
104
106
  };
@@ -300,11 +302,13 @@ function GalleryEdit(props) {
300
302
 
301
303
  function updateImagesSize(newSizeSlug) {
302
304
  const updatedImages = (images !== null && images !== void 0 ? images : []).map(image => {
305
+ var _resizedImages$parseI;
306
+
303
307
  if (!image.id) {
304
308
  return image;
305
309
  }
306
310
 
307
- const url = get(resizedImages, [parseInt(image.id, 10), newSizeSlug]);
311
+ const url = (_resizedImages$parseI = resizedImages[parseInt(image.id, 10)]) === null || _resizedImages$parseI === void 0 ? void 0 : _resizedImages$parseI[newSizeSlug];
308
312
  return { ...image,
309
313
  ...(url && {
310
314
  url
@@ -403,6 +407,7 @@ function GalleryEdit(props) {
403
407
  }, MOBILE_CONTROL_PROPS_RANGE_CONTROL, {
404
408
  required: true
405
409
  })), createElement(ToggleControl, {
410
+ __nextHasNoMarginBottom: true,
406
411
  label: __('Crop images'),
407
412
  checked: !!imageCrop,
408
413
  onChange: toggleImageCrop,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/gallery/v1/edit.js"],"names":["get","isEmpty","compose","PanelBody","SelectControl","ToggleControl","withNotices","RangeControl","MediaPlaceholder","InspectorControls","useBlockProps","store","blockEditorStore","Platform","useEffect","useState","useMemo","__","getBlobByURL","isBlobURL","revokeBlobURL","useDispatch","useSelect","withViewportMatch","View","coreStore","sharedIcon","pickRelevantMediaFiles","defaultColumnsNumberV1","Gallery","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","MAX_COLUMNS","linkOptions","value","label","ALLOWED_MEDIA_TYPES","PLACEHOLDER_TEXT","select","web","native","MOBILE_CONTROL_PROPS_RANGE_CONTROL","type","GalleryEdit","props","attributes","clientId","isSelected","noticeUI","noticeOperations","onFocus","columns","imageCrop","images","linkTo","sizeSlug","selectedImage","setSelectedImage","attachmentCaptions","setAttachmentCaptions","__unstableMarkNextChangeAsNotPersistent","imageSizes","mediaUpload","getMedia","wasBlockJustInserted","settings","getSettings","resizedImages","ids","reduce","currentResizedImages","id","image","sizes","currentSizes","size","defaultUrl","slug","mediaDetailsUrl","parseInt","onFocusGalleryCaption","setAttributes","newAttrs","Error","map","onSelectImage","index","onDeselectImage","onMove","oldIndex","newIndex","newImages","splice","onMoveForward","length","onMoveBackward","onRemoveImage","filter","img","i","Math","min","selectCaption","newImage","newImageId","toString","currentImage","find","currentImageCaption","caption","attachment","onSelectImages","onUploadError","message","removeAllNotices","createErrorNotice","setLinkTo","setColumnsNumber","toggleImageCrop","getImageCropHelp","checked","setImageAttributes","newAttributes","slice","getImagesSizeOptions","resizedImageSizes","Object","values","some","name","updateImagesSize","newSizeSlug","updatedImages","url","OS","every","filesList","forEach","onFileChange","allowedTypes","window","wp","media","view","defaultProps","link","hasImages","hasImageIds","mediaPlaceholder","title","instructions","undefined","blockProps","imageSizeOptions","shouldShowSizeOptions","isNarrow"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get, isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport {\n\tPanelBody,\n\tSelectControl,\n\tToggleControl,\n\twithNotices,\n\tRangeControl,\n} from '@wordpress/components';\nimport {\n\tMediaPlaceholder,\n\tInspectorControls,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { Platform, useEffect, useState, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { withViewportMatch } from '@wordpress/viewport';\nimport { View } from '@wordpress/primitives';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { sharedIcon } from '../shared-icon';\nimport { pickRelevantMediaFiles } from './shared';\nimport { defaultColumnsNumberV1 } from '../deprecated';\nimport Gallery from './gallery';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n} from './constants';\n\nconst MAX_COLUMNS = 8;\nconst linkOptions = [\n\t{ value: LINK_DESTINATION_ATTACHMENT, label: __( 'Attachment Page' ) },\n\t{ value: LINK_DESTINATION_MEDIA, label: __( 'Media File' ) },\n\t{ value: LINK_DESTINATION_NONE, label: __( 'None' ) },\n];\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nconst PLACEHOLDER_TEXT = Platform.select( {\n\tweb: __(\n\t\t'Drag images, upload new ones or select files from your library.'\n\t),\n\tnative: __( 'ADD MEDIA' ),\n} );\n\nconst MOBILE_CONTROL_PROPS_RANGE_CONTROL = Platform.select( {\n\tweb: {},\n\tnative: { type: 'stepper' },\n} );\n\nfunction GalleryEdit( props ) {\n\tconst {\n\t\tattributes,\n\t\tclientId,\n\t\tisSelected,\n\t\tnoticeUI,\n\t\tnoticeOperations,\n\t\tonFocus,\n\t} = props;\n\tconst {\n\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\timageCrop,\n\t\timages,\n\t\tlinkTo,\n\t\tsizeSlug,\n\t} = attributes;\n\tconst [ selectedImage, setSelectedImage ] = useState();\n\tconst [ attachmentCaptions, setAttachmentCaptions ] = useState();\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst { imageSizes, mediaUpload, getMedia, wasBlockJustInserted } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\n\t\t\treturn {\n\t\t\t\timageSizes: settings.imageSizes,\n\t\t\t\tmediaUpload: settings.mediaUpload,\n\t\t\t\tgetMedia: select( coreStore ).getMedia,\n\t\t\t\twasBlockJustInserted: select(\n\t\t\t\t\tblockEditorStore\n\t\t\t\t).wasBlockJustInserted( clientId, 'inserter_menu' ),\n\t\t\t};\n\t\t} );\n\n\tconst resizedImages = useMemo( () => {\n\t\tif ( isSelected ) {\n\t\t\treturn ( attributes.ids ?? [] ).reduce(\n\t\t\t\t( currentResizedImages, id ) => {\n\t\t\t\t\tif ( ! id ) {\n\t\t\t\t\t\treturn currentResizedImages;\n\t\t\t\t\t}\n\t\t\t\t\tconst image = getMedia( id );\n\t\t\t\t\tconst sizes = imageSizes.reduce( ( currentSizes, size ) => {\n\t\t\t\t\t\tconst defaultUrl = get( image, [\n\t\t\t\t\t\t\t'sizes',\n\t\t\t\t\t\t\tsize.slug,\n\t\t\t\t\t\t\t'url',\n\t\t\t\t\t\t] );\n\t\t\t\t\t\tconst mediaDetailsUrl = get( image, [\n\t\t\t\t\t\t\t'media_details',\n\t\t\t\t\t\t\t'sizes',\n\t\t\t\t\t\t\tsize.slug,\n\t\t\t\t\t\t\t'source_url',\n\t\t\t\t\t\t] );\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...currentSizes,\n\t\t\t\t\t\t\t[ size.slug ]: defaultUrl || mediaDetailsUrl,\n\t\t\t\t\t\t};\n\t\t\t\t\t}, {} );\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...currentResizedImages,\n\t\t\t\t\t\t[ parseInt( id, 10 ) ]: sizes,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t}\n\t\treturn {};\n\t}, [ isSelected, attributes.ids, imageSizes ] );\n\n\tfunction onFocusGalleryCaption() {\n\t\tsetSelectedImage();\n\t}\n\n\tfunction setAttributes( newAttrs ) {\n\t\tif ( newAttrs.ids ) {\n\t\t\tthrow new Error(\n\t\t\t\t'The \"ids\" attribute should not be changed directly. It is managed automatically when \"images\" attribute changes'\n\t\t\t);\n\t\t}\n\n\t\tif ( newAttrs.images ) {\n\t\t\tnewAttrs = {\n\t\t\t\t...newAttrs,\n\t\t\t\t// Unlike images[ n ].id which is a string, always ensure the\n\t\t\t\t// ids array contains numbers as per its attribute type.\n\t\t\t\tids: newAttrs.images.map( ( { id } ) => parseInt( id, 10 ) ),\n\t\t\t};\n\t\t}\n\n\t\tprops.setAttributes( newAttrs );\n\t}\n\n\tfunction onSelectImage( index ) {\n\t\treturn () => {\n\t\t\tsetSelectedImage( index );\n\t\t};\n\t}\n\n\tfunction onDeselectImage() {\n\t\treturn () => {\n\t\t\tsetSelectedImage();\n\t\t};\n\t}\n\n\tfunction onMove( oldIndex, newIndex ) {\n\t\tconst newImages = [ ...images ];\n\t\tnewImages.splice( newIndex, 1, images[ oldIndex ] );\n\t\tnewImages.splice( oldIndex, 1, images[ newIndex ] );\n\t\tsetSelectedImage( newIndex );\n\t\tsetAttributes( { images: newImages } );\n\t}\n\n\tfunction onMoveForward( oldIndex ) {\n\t\treturn () => {\n\t\t\tif ( oldIndex === images.length - 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonMove( oldIndex, oldIndex + 1 );\n\t\t};\n\t}\n\n\tfunction onMoveBackward( oldIndex ) {\n\t\treturn () => {\n\t\t\tif ( oldIndex === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonMove( oldIndex, oldIndex - 1 );\n\t\t};\n\t}\n\n\tfunction onRemoveImage( index ) {\n\t\treturn () => {\n\t\t\tconst newImages = images.filter( ( img, i ) => index !== i );\n\t\t\tsetSelectedImage();\n\t\t\tsetAttributes( {\n\t\t\t\timages: newImages,\n\t\t\t\tcolumns: attributes.columns\n\t\t\t\t\t? Math.min( newImages.length, attributes.columns )\n\t\t\t\t\t: attributes.columns,\n\t\t\t} );\n\t\t};\n\t}\n\n\tfunction selectCaption( newImage ) {\n\t\t// The image id in both the images and attachmentCaptions arrays is a\n\t\t// string, so ensure comparison works correctly by converting the\n\t\t// newImage.id to a string.\n\t\tconst newImageId = newImage.id.toString();\n\t\tconst currentImage = images.find( ( { id } ) => id === newImageId );\n\t\tconst currentImageCaption = currentImage\n\t\t\t? currentImage.caption\n\t\t\t: newImage.caption;\n\n\t\tif ( ! attachmentCaptions ) {\n\t\t\treturn currentImageCaption;\n\t\t}\n\n\t\tconst attachment = attachmentCaptions.find(\n\t\t\t( { id } ) => id === newImageId\n\t\t);\n\n\t\t// If the attachment caption is updated.\n\t\tif ( attachment && attachment.caption !== newImage.caption ) {\n\t\t\treturn newImage.caption;\n\t\t}\n\n\t\treturn currentImageCaption;\n\t}\n\n\tfunction onSelectImages( newImages ) {\n\t\tsetAttachmentCaptions(\n\t\t\tnewImages.map( ( newImage ) => ( {\n\t\t\t\t// Store the attachmentCaption id as a string for consistency\n\t\t\t\t// with the type of the id in the images attribute.\n\t\t\t\tid: newImage.id.toString(),\n\t\t\t\tcaption: newImage.caption,\n\t\t\t} ) )\n\t\t);\n\t\tsetAttributes( {\n\t\t\timages: newImages.map( ( newImage ) => ( {\n\t\t\t\t...pickRelevantMediaFiles( newImage, sizeSlug ),\n\t\t\t\tcaption: selectCaption( newImage, images, attachmentCaptions ),\n\t\t\t\t// The id value is stored in a data attribute, so when the\n\t\t\t\t// block is parsed it's converted to a string. Converting\n\t\t\t\t// to a string here ensures it's type is consistent.\n\t\t\t\tid: newImage.id.toString(),\n\t\t\t} ) ),\n\t\t\tcolumns: attributes.columns\n\t\t\t\t? Math.min( newImages.length, attributes.columns )\n\t\t\t\t: attributes.columns,\n\t\t} );\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tnoticeOperations.removeAllNotices();\n\t\tnoticeOperations.createErrorNotice( message );\n\t}\n\n\tfunction setLinkTo( value ) {\n\t\tsetAttributes( { linkTo: value } );\n\t}\n\n\tfunction setColumnsNumber( value ) {\n\t\tsetAttributes( { columns: value } );\n\t}\n\n\tfunction toggleImageCrop() {\n\t\tsetAttributes( { imageCrop: ! imageCrop } );\n\t}\n\n\tfunction getImageCropHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Thumbnails are cropped to align.' )\n\t\t\t: __( 'Thumbnails are not cropped.' );\n\t}\n\n\tfunction setImageAttributes( index, newAttributes ) {\n\t\tif ( ! images[ index ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\timages: [\n\t\t\t\t...images.slice( 0, index ),\n\t\t\t\t{\n\t\t\t\t\t...images[ index ],\n\t\t\t\t\t...newAttributes,\n\t\t\t\t},\n\t\t\t\t...images.slice( index + 1 ),\n\t\t\t],\n\t\t} );\n\t}\n\n\tfunction getImagesSizeOptions() {\n\t\tconst resizedImageSizes = Object.values( resizedImages );\n\t\treturn imageSizes\n\t\t\t.filter( ( { slug } ) =>\n\t\t\t\tresizedImageSizes.some( ( sizes ) => sizes[ slug ] )\n\t\t\t)\n\t\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\t}\n\n\tfunction updateImagesSize( newSizeSlug ) {\n\t\tconst updatedImages = ( images ?? [] ).map( ( image ) => {\n\t\t\tif ( ! image.id ) {\n\t\t\t\treturn image;\n\t\t\t}\n\t\t\tconst url = get( resizedImages, [\n\t\t\t\tparseInt( image.id, 10 ),\n\t\t\t\tnewSizeSlug,\n\t\t\t] );\n\t\t\treturn {\n\t\t\t\t...image,\n\t\t\t\t...( url && { url } ),\n\t\t\t};\n\t\t} );\n\n\t\tsetAttributes( { images: updatedImages, sizeSlug: newSizeSlug } );\n\t}\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tPlatform.OS === 'web' &&\n\t\t\timages &&\n\t\t\timages.length > 0 &&\n\t\t\timages.every( ( { url } ) => isBlobURL( url ) )\n\t\t) {\n\t\t\tconst filesList = images.map( ( { url } ) => getBlobByURL( url ) );\n\t\t\timages.forEach( ( { url } ) => revokeBlobURL( url ) );\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList,\n\t\t\t\tonFileChange: onSelectImages,\n\t\t\t\tallowedTypes: [ 'image' ],\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\t// Deselect images when deselecting the block.\n\t\tif ( ! isSelected ) {\n\t\t\tsetSelectedImage();\n\t\t}\n\t}, [ isSelected ] );\n\n\tuseEffect( () => {\n\t\t// linkTo attribute must be saved so blocks don't break when changing\n\t\t// image_default_link_type in options.php.\n\t\tif ( ! linkTo ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tlinkTo:\n\t\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t} );\n\t\t}\n\t}, [ linkTo ] );\n\n\tconst hasImages = !! images.length;\n\tconst hasImageIds = hasImages && images.some( ( image ) => !! image.id );\n\n\tconst mediaPlaceholder = (\n\t\t<MediaPlaceholder\n\t\t\taddToGallery={ hasImageIds }\n\t\t\tisAppender={ hasImages }\n\t\t\tdisableMediaButtons={ hasImages && ! isSelected }\n\t\t\ticon={ ! hasImages && sharedIcon }\n\t\t\tlabels={ {\n\t\t\t\ttitle: ! hasImages && __( 'Gallery' ),\n\t\t\t\tinstructions: ! hasImages && PLACEHOLDER_TEXT,\n\t\t\t} }\n\t\t\tonSelect={ onSelectImages }\n\t\t\taccept=\"image/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tmultiple\n\t\t\tvalue={ hasImageIds ? images : {} }\n\t\t\tonError={ onUploadError }\n\t\t\tnotices={ hasImages ? undefined : noticeUI }\n\t\t\tonFocus={ onFocus }\n\t\t\tautoOpenMediaUpload={\n\t\t\t\t! hasImages && isSelected && wasBlockJustInserted\n\t\t\t}\n\t\t/>\n\t);\n\n\tconst blockProps = useBlockProps();\n\n\tif ( ! hasImages ) {\n\t\treturn <View { ...blockProps }>{ mediaPlaceholder }</View>;\n\t}\n\n\tconst imageSizeOptions = getImagesSizeOptions();\n\tconst shouldShowSizeOptions = hasImages && ! isEmpty( imageSizeOptions );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\tvalue={ columns }\n\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={ Math.min( MAX_COLUMNS, images.length ) }\n\t\t\t\t\t\t\t{ ...MOBILE_CONTROL_PROPS_RANGE_CONTROL }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\tlabel={ __( 'Crop images' ) }\n\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\thelp={ getImageCropHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Link to' ) }\n\t\t\t\t\t\tvalue={ linkTo }\n\t\t\t\t\t\tonChange={ setLinkTo }\n\t\t\t\t\t\toptions={ linkOptions }\n\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t/>\n\t\t\t\t\t{ shouldShowSizeOptions && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Image size' ) }\n\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ noticeUI }\n\t\t\t<Gallery\n\t\t\t\t{ ...props }\n\t\t\t\tselectedImage={ selectedImage }\n\t\t\t\tmediaPlaceholder={ mediaPlaceholder }\n\t\t\t\tonMoveBackward={ onMoveBackward }\n\t\t\t\tonMoveForward={ onMoveForward }\n\t\t\t\tonRemoveImage={ onRemoveImage }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonDeselectImage={ onDeselectImage }\n\t\t\t\tonSetImageAttributes={ setImageAttributes }\n\t\t\t\tblockProps={ blockProps }\n\t\t\t\t// This prop is used by gallery.native.js.\n\t\t\t\tonFocusGalleryCaption={ onFocusGalleryCaption }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default compose( [\n\twithNotices,\n\twithViewportMatch( { isNarrow: '< small' } ),\n] )( GalleryEdit );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/gallery/v1/edit.js"],"names":["isEmpty","compose","PanelBody","SelectControl","ToggleControl","withNotices","RangeControl","MediaPlaceholder","InspectorControls","useBlockProps","store","blockEditorStore","Platform","useEffect","useState","useMemo","__","getBlobByURL","isBlobURL","revokeBlobURL","useDispatch","useSelect","withViewportMatch","View","coreStore","sharedIcon","pickRelevantMediaFiles","defaultColumnsNumberV1","Gallery","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","MAX_COLUMNS","linkOptions","value","label","ALLOWED_MEDIA_TYPES","PLACEHOLDER_TEXT","select","web","native","MOBILE_CONTROL_PROPS_RANGE_CONTROL","type","GalleryEdit","props","attributes","clientId","isSelected","noticeUI","noticeOperations","onFocus","columns","imageCrop","images","linkTo","sizeSlug","selectedImage","setSelectedImage","attachmentCaptions","setAttachmentCaptions","__unstableMarkNextChangeAsNotPersistent","imageSizes","mediaUpload","getMedia","wasBlockJustInserted","settings","getSettings","resizedImages","ids","reduce","currentResizedImages","id","image","sizes","currentSizes","size","defaultUrl","slug","url","mediaDetailsUrl","media_details","source_url","parseInt","onFocusGalleryCaption","setAttributes","newAttrs","Error","map","onSelectImage","index","onDeselectImage","onMove","oldIndex","newIndex","newImages","splice","onMoveForward","length","onMoveBackward","onRemoveImage","filter","img","i","Math","min","selectCaption","newImage","newImageId","toString","currentImage","find","currentImageCaption","caption","attachment","onSelectImages","onUploadError","message","removeAllNotices","createErrorNotice","setLinkTo","setColumnsNumber","toggleImageCrop","getImageCropHelp","checked","setImageAttributes","newAttributes","slice","getImagesSizeOptions","resizedImageSizes","Object","values","some","name","updateImagesSize","newSizeSlug","updatedImages","OS","every","filesList","forEach","onFileChange","allowedTypes","window","wp","media","view","defaultProps","link","hasImages","hasImageIds","mediaPlaceholder","title","instructions","undefined","blockProps","imageSizeOptions","shouldShowSizeOptions","isNarrow"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { compose } from '@wordpress/compose';\nimport {\n\tPanelBody,\n\tSelectControl,\n\tToggleControl,\n\twithNotices,\n\tRangeControl,\n} from '@wordpress/components';\nimport {\n\tMediaPlaceholder,\n\tInspectorControls,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { Platform, useEffect, useState, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { withViewportMatch } from '@wordpress/viewport';\nimport { View } from '@wordpress/primitives';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { sharedIcon } from '../shared-icon';\nimport { pickRelevantMediaFiles } from './shared';\nimport { defaultColumnsNumberV1 } from '../deprecated';\nimport Gallery from './gallery';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n} from './constants';\n\nconst MAX_COLUMNS = 8;\nconst linkOptions = [\n\t{ value: LINK_DESTINATION_ATTACHMENT, label: __( 'Attachment Page' ) },\n\t{ value: LINK_DESTINATION_MEDIA, label: __( 'Media File' ) },\n\t{ value: LINK_DESTINATION_NONE, label: __( 'None' ) },\n];\nconst ALLOWED_MEDIA_TYPES = [ 'image' ];\n\nconst PLACEHOLDER_TEXT = Platform.select( {\n\tweb: __(\n\t\t'Drag images, upload new ones or select files from your library.'\n\t),\n\tnative: __( 'ADD MEDIA' ),\n} );\n\nconst MOBILE_CONTROL_PROPS_RANGE_CONTROL = Platform.select( {\n\tweb: {},\n\tnative: { type: 'stepper' },\n} );\n\nfunction GalleryEdit( props ) {\n\tconst {\n\t\tattributes,\n\t\tclientId,\n\t\tisSelected,\n\t\tnoticeUI,\n\t\tnoticeOperations,\n\t\tonFocus,\n\t} = props;\n\tconst {\n\t\tcolumns = defaultColumnsNumberV1( attributes ),\n\t\timageCrop,\n\t\timages,\n\t\tlinkTo,\n\t\tsizeSlug,\n\t} = attributes;\n\tconst [ selectedImage, setSelectedImage ] = useState();\n\tconst [ attachmentCaptions, setAttachmentCaptions ] = useState();\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tconst { imageSizes, mediaUpload, getMedia, wasBlockJustInserted } =\n\t\tuseSelect( ( select ) => {\n\t\t\tconst settings = select( blockEditorStore ).getSettings();\n\n\t\t\treturn {\n\t\t\t\timageSizes: settings.imageSizes,\n\t\t\t\tmediaUpload: settings.mediaUpload,\n\t\t\t\tgetMedia: select( coreStore ).getMedia,\n\t\t\t\twasBlockJustInserted: select(\n\t\t\t\t\tblockEditorStore\n\t\t\t\t).wasBlockJustInserted( clientId, 'inserter_menu' ),\n\t\t\t};\n\t\t} );\n\n\tconst resizedImages = useMemo( () => {\n\t\tif ( isSelected ) {\n\t\t\treturn ( attributes.ids ?? [] ).reduce(\n\t\t\t\t( currentResizedImages, id ) => {\n\t\t\t\t\tif ( ! id ) {\n\t\t\t\t\t\treturn currentResizedImages;\n\t\t\t\t\t}\n\t\t\t\t\tconst image = getMedia( id );\n\t\t\t\t\tconst sizes = imageSizes.reduce( ( currentSizes, size ) => {\n\t\t\t\t\t\tconst defaultUrl = image?.sizes?.[ size.slug ]?.url;\n\t\t\t\t\t\tconst mediaDetailsUrl =\n\t\t\t\t\t\t\timage?.media_details?.sizes?.[ size.slug ]\n\t\t\t\t\t\t\t\t?.source_url;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t...currentSizes,\n\t\t\t\t\t\t\t[ size.slug ]: defaultUrl || mediaDetailsUrl,\n\t\t\t\t\t\t};\n\t\t\t\t\t}, {} );\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...currentResizedImages,\n\t\t\t\t\t\t[ parseInt( id, 10 ) ]: sizes,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\t{}\n\t\t\t);\n\t\t}\n\t\treturn {};\n\t}, [ isSelected, attributes.ids, imageSizes ] );\n\n\tfunction onFocusGalleryCaption() {\n\t\tsetSelectedImage();\n\t}\n\n\tfunction setAttributes( newAttrs ) {\n\t\tif ( newAttrs.ids ) {\n\t\t\tthrow new Error(\n\t\t\t\t'The \"ids\" attribute should not be changed directly. It is managed automatically when \"images\" attribute changes'\n\t\t\t);\n\t\t}\n\n\t\tif ( newAttrs.images ) {\n\t\t\tnewAttrs = {\n\t\t\t\t...newAttrs,\n\t\t\t\t// Unlike images[ n ].id which is a string, always ensure the\n\t\t\t\t// ids array contains numbers as per its attribute type.\n\t\t\t\tids: newAttrs.images.map( ( { id } ) => parseInt( id, 10 ) ),\n\t\t\t};\n\t\t}\n\n\t\tprops.setAttributes( newAttrs );\n\t}\n\n\tfunction onSelectImage( index ) {\n\t\treturn () => {\n\t\t\tsetSelectedImage( index );\n\t\t};\n\t}\n\n\tfunction onDeselectImage() {\n\t\treturn () => {\n\t\t\tsetSelectedImage();\n\t\t};\n\t}\n\n\tfunction onMove( oldIndex, newIndex ) {\n\t\tconst newImages = [ ...images ];\n\t\tnewImages.splice( newIndex, 1, images[ oldIndex ] );\n\t\tnewImages.splice( oldIndex, 1, images[ newIndex ] );\n\t\tsetSelectedImage( newIndex );\n\t\tsetAttributes( { images: newImages } );\n\t}\n\n\tfunction onMoveForward( oldIndex ) {\n\t\treturn () => {\n\t\t\tif ( oldIndex === images.length - 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonMove( oldIndex, oldIndex + 1 );\n\t\t};\n\t}\n\n\tfunction onMoveBackward( oldIndex ) {\n\t\treturn () => {\n\t\t\tif ( oldIndex === 0 ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tonMove( oldIndex, oldIndex - 1 );\n\t\t};\n\t}\n\n\tfunction onRemoveImage( index ) {\n\t\treturn () => {\n\t\t\tconst newImages = images.filter( ( img, i ) => index !== i );\n\t\t\tsetSelectedImage();\n\t\t\tsetAttributes( {\n\t\t\t\timages: newImages,\n\t\t\t\tcolumns: attributes.columns\n\t\t\t\t\t? Math.min( newImages.length, attributes.columns )\n\t\t\t\t\t: attributes.columns,\n\t\t\t} );\n\t\t};\n\t}\n\n\tfunction selectCaption( newImage ) {\n\t\t// The image id in both the images and attachmentCaptions arrays is a\n\t\t// string, so ensure comparison works correctly by converting the\n\t\t// newImage.id to a string.\n\t\tconst newImageId = newImage.id.toString();\n\t\tconst currentImage = images.find( ( { id } ) => id === newImageId );\n\t\tconst currentImageCaption = currentImage\n\t\t\t? currentImage.caption\n\t\t\t: newImage.caption;\n\n\t\tif ( ! attachmentCaptions ) {\n\t\t\treturn currentImageCaption;\n\t\t}\n\n\t\tconst attachment = attachmentCaptions.find(\n\t\t\t( { id } ) => id === newImageId\n\t\t);\n\n\t\t// If the attachment caption is updated.\n\t\tif ( attachment && attachment.caption !== newImage.caption ) {\n\t\t\treturn newImage.caption;\n\t\t}\n\n\t\treturn currentImageCaption;\n\t}\n\n\tfunction onSelectImages( newImages ) {\n\t\tsetAttachmentCaptions(\n\t\t\tnewImages.map( ( newImage ) => ( {\n\t\t\t\t// Store the attachmentCaption id as a string for consistency\n\t\t\t\t// with the type of the id in the images attribute.\n\t\t\t\tid: newImage.id.toString(),\n\t\t\t\tcaption: newImage.caption,\n\t\t\t} ) )\n\t\t);\n\t\tsetAttributes( {\n\t\t\timages: newImages.map( ( newImage ) => ( {\n\t\t\t\t...pickRelevantMediaFiles( newImage, sizeSlug ),\n\t\t\t\tcaption: selectCaption( newImage, images, attachmentCaptions ),\n\t\t\t\t// The id value is stored in a data attribute, so when the\n\t\t\t\t// block is parsed it's converted to a string. Converting\n\t\t\t\t// to a string here ensures it's type is consistent.\n\t\t\t\tid: newImage.id.toString(),\n\t\t\t} ) ),\n\t\t\tcolumns: attributes.columns\n\t\t\t\t? Math.min( newImages.length, attributes.columns )\n\t\t\t\t: attributes.columns,\n\t\t} );\n\t}\n\n\tfunction onUploadError( message ) {\n\t\tnoticeOperations.removeAllNotices();\n\t\tnoticeOperations.createErrorNotice( message );\n\t}\n\n\tfunction setLinkTo( value ) {\n\t\tsetAttributes( { linkTo: value } );\n\t}\n\n\tfunction setColumnsNumber( value ) {\n\t\tsetAttributes( { columns: value } );\n\t}\n\n\tfunction toggleImageCrop() {\n\t\tsetAttributes( { imageCrop: ! imageCrop } );\n\t}\n\n\tfunction getImageCropHelp( checked ) {\n\t\treturn checked\n\t\t\t? __( 'Thumbnails are cropped to align.' )\n\t\t\t: __( 'Thumbnails are not cropped.' );\n\t}\n\n\tfunction setImageAttributes( index, newAttributes ) {\n\t\tif ( ! images[ index ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAttributes( {\n\t\t\timages: [\n\t\t\t\t...images.slice( 0, index ),\n\t\t\t\t{\n\t\t\t\t\t...images[ index ],\n\t\t\t\t\t...newAttributes,\n\t\t\t\t},\n\t\t\t\t...images.slice( index + 1 ),\n\t\t\t],\n\t\t} );\n\t}\n\n\tfunction getImagesSizeOptions() {\n\t\tconst resizedImageSizes = Object.values( resizedImages );\n\t\treturn imageSizes\n\t\t\t.filter( ( { slug } ) =>\n\t\t\t\tresizedImageSizes.some( ( sizes ) => sizes[ slug ] )\n\t\t\t)\n\t\t\t.map( ( { name, slug } ) => ( { value: slug, label: name } ) );\n\t}\n\n\tfunction updateImagesSize( newSizeSlug ) {\n\t\tconst updatedImages = ( images ?? [] ).map( ( image ) => {\n\t\t\tif ( ! image.id ) {\n\t\t\t\treturn image;\n\t\t\t}\n\t\t\tconst url =\n\t\t\t\tresizedImages[ parseInt( image.id, 10 ) ]?.[ newSizeSlug ];\n\t\t\treturn {\n\t\t\t\t...image,\n\t\t\t\t...( url && { url } ),\n\t\t\t};\n\t\t} );\n\n\t\tsetAttributes( { images: updatedImages, sizeSlug: newSizeSlug } );\n\t}\n\n\tuseEffect( () => {\n\t\tif (\n\t\t\tPlatform.OS === 'web' &&\n\t\t\timages &&\n\t\t\timages.length > 0 &&\n\t\t\timages.every( ( { url } ) => isBlobURL( url ) )\n\t\t) {\n\t\t\tconst filesList = images.map( ( { url } ) => getBlobByURL( url ) );\n\t\t\timages.forEach( ( { url } ) => revokeBlobURL( url ) );\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList,\n\t\t\t\tonFileChange: onSelectImages,\n\t\t\t\tallowedTypes: [ 'image' ],\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\tuseEffect( () => {\n\t\t// Deselect images when deselecting the block.\n\t\tif ( ! isSelected ) {\n\t\t\tsetSelectedImage();\n\t\t}\n\t}, [ isSelected ] );\n\n\tuseEffect( () => {\n\t\t// linkTo attribute must be saved so blocks don't break when changing\n\t\t// image_default_link_type in options.php.\n\t\tif ( ! linkTo ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tlinkTo:\n\t\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\t\tLINK_DESTINATION_NONE,\n\t\t\t} );\n\t\t}\n\t}, [ linkTo ] );\n\n\tconst hasImages = !! images.length;\n\tconst hasImageIds = hasImages && images.some( ( image ) => !! image.id );\n\n\tconst mediaPlaceholder = (\n\t\t<MediaPlaceholder\n\t\t\taddToGallery={ hasImageIds }\n\t\t\tisAppender={ hasImages }\n\t\t\tdisableMediaButtons={ hasImages && ! isSelected }\n\t\t\ticon={ ! hasImages && sharedIcon }\n\t\t\tlabels={ {\n\t\t\t\ttitle: ! hasImages && __( 'Gallery' ),\n\t\t\t\tinstructions: ! hasImages && PLACEHOLDER_TEXT,\n\t\t\t} }\n\t\t\tonSelect={ onSelectImages }\n\t\t\taccept=\"image/*\"\n\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\tmultiple\n\t\t\tvalue={ hasImageIds ? images : {} }\n\t\t\tonError={ onUploadError }\n\t\t\tnotices={ hasImages ? undefined : noticeUI }\n\t\t\tonFocus={ onFocus }\n\t\t\tautoOpenMediaUpload={\n\t\t\t\t! hasImages && isSelected && wasBlockJustInserted\n\t\t\t}\n\t\t/>\n\t);\n\n\tconst blockProps = useBlockProps();\n\n\tif ( ! hasImages ) {\n\t\treturn <View { ...blockProps }>{ mediaPlaceholder }</View>;\n\t}\n\n\tconst imageSizeOptions = getImagesSizeOptions();\n\tconst shouldShowSizeOptions = hasImages && ! isEmpty( imageSizeOptions );\n\n\treturn (\n\t\t<>\n\t\t\t<InspectorControls>\n\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t{ images.length > 1 && (\n\t\t\t\t\t\t<RangeControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Columns' ) }\n\t\t\t\t\t\t\tvalue={ columns }\n\t\t\t\t\t\t\tonChange={ setColumnsNumber }\n\t\t\t\t\t\t\tmin={ 1 }\n\t\t\t\t\t\t\tmax={ Math.min( MAX_COLUMNS, images.length ) }\n\t\t\t\t\t\t\t{ ...MOBILE_CONTROL_PROPS_RANGE_CONTROL }\n\t\t\t\t\t\t\trequired\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t\t<ToggleControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Crop images' ) }\n\t\t\t\t\t\tchecked={ !! imageCrop }\n\t\t\t\t\t\tonChange={ toggleImageCrop }\n\t\t\t\t\t\thelp={ getImageCropHelp }\n\t\t\t\t\t/>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\tlabel={ __( 'Link to' ) }\n\t\t\t\t\t\tvalue={ linkTo }\n\t\t\t\t\t\tonChange={ setLinkTo }\n\t\t\t\t\t\toptions={ linkOptions }\n\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t/>\n\t\t\t\t\t{ shouldShowSizeOptions && (\n\t\t\t\t\t\t<SelectControl\n\t\t\t\t\t\t\t__nextHasNoMarginBottom\n\t\t\t\t\t\t\tlabel={ __( 'Image size' ) }\n\t\t\t\t\t\t\tvalue={ sizeSlug }\n\t\t\t\t\t\t\toptions={ imageSizeOptions }\n\t\t\t\t\t\t\tonChange={ updateImagesSize }\n\t\t\t\t\t\t\thideCancelButton={ true }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\t\t\t</InspectorControls>\n\t\t\t{ noticeUI }\n\t\t\t<Gallery\n\t\t\t\t{ ...props }\n\t\t\t\tselectedImage={ selectedImage }\n\t\t\t\tmediaPlaceholder={ mediaPlaceholder }\n\t\t\t\tonMoveBackward={ onMoveBackward }\n\t\t\t\tonMoveForward={ onMoveForward }\n\t\t\t\tonRemoveImage={ onRemoveImage }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonDeselectImage={ onDeselectImage }\n\t\t\t\tonSetImageAttributes={ setImageAttributes }\n\t\t\t\tblockProps={ blockProps }\n\t\t\t\t// This prop is used by gallery.native.js.\n\t\t\t\tonFocusGalleryCaption={ onFocusGalleryCaption }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default compose( [\n\twithNotices,\n\twithViewportMatch( { isNarrow: '< small' } ),\n] )( GalleryEdit );\n"]}
@@ -4,7 +4,6 @@ import { createElement, Fragment } from "@wordpress/element";
4
4
  * External dependencies
5
5
  */
6
6
  import classnames from 'classnames';
7
- import { get } from 'lodash';
8
7
  /**
9
8
  * WordPress dependencies
10
9
  */
@@ -115,7 +114,7 @@ class GalleryImage extends Component {
115
114
  // make sure the text is not overwritten by empty captions.
116
115
 
117
116
 
118
- if (caption && !get(mediaAttributes, ['caption'])) {
117
+ if (caption && !mediaAttributes.caption) {
119
118
  const {
120
119
  caption: omittedCaption,
121
120
  ...restMediaAttributes
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/gallery/v1/gallery-image.js"],"names":["classnames","get","Component","Button","Spinner","ButtonGroup","__","BACKSPACE","DELETE","withSelect","withDispatch","RichText","MediaPlaceholder","store","blockEditorStore","__experimentalGetElementClassName","isBlobURL","compose","closeSmall","chevronLeft","chevronRight","edit","image","imageIcon","coreStore","pickRelevantMediaFiles","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_MEDIA","isTemporaryImage","id","url","GalleryImage","constructor","arguments","onSelectImage","bind","onRemoveImage","bindContainer","onEdit","onSelectImageFromLibrary","onSelectCustomURL","state","isEditing","ref","container","props","isSelected","onSelect","event","ownerDocument","activeElement","indexOf","keyCode","preventDefault","onRemove","setState","componentDidUpdate","__unstableMarkNextChangeAsNotPersistent","setAttributes","source_url","alt","alt_text","deselectOnBlur","onDeselect","media","caption","sizeSlug","mediaAttributes","omittedAlt","restMediaAttributes","omittedCaption","newURL","undefined","render","linkTo","link","isFirstItem","isLastItem","onMoveForward","onMoveBackward","ariaLabel","href","img","className","title","src","newCaption","select","ownProps","getMedia","parseInt","dispatch"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { Button, Spinner, ButtonGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport {\n\tRichText,\n\tMediaPlaceholder,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { isBlobURL } from '@wordpress/blob';\nimport { compose } from '@wordpress/compose';\nimport {\n\tcloseSmall,\n\tchevronLeft,\n\tchevronRight,\n\tedit,\n\timage as imageIcon,\n} from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { pickRelevantMediaFiles } from './shared';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n} from './constants';\n\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\nclass GalleryImage extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onSelectImage = this.onSelectImage.bind( this );\n\t\tthis.onRemoveImage = this.onRemoveImage.bind( this );\n\t\tthis.bindContainer = this.bindContainer.bind( this );\n\t\tthis.onEdit = this.onEdit.bind( this );\n\t\tthis.onSelectImageFromLibrary =\n\t\t\tthis.onSelectImageFromLibrary.bind( this );\n\t\tthis.onSelectCustomURL = this.onSelectCustomURL.bind( this );\n\t\tthis.state = {\n\t\t\tisEditing: false,\n\t\t};\n\t}\n\n\tbindContainer( ref ) {\n\t\tthis.container = ref;\n\t}\n\n\tonSelectImage() {\n\t\tif ( ! this.props.isSelected ) {\n\t\t\tthis.props.onSelect();\n\t\t}\n\t}\n\n\tonRemoveImage( event ) {\n\t\tif (\n\t\t\tthis.container === this.container.ownerDocument.activeElement &&\n\t\t\tthis.props.isSelected &&\n\t\t\t[ BACKSPACE, DELETE ].indexOf( event.keyCode ) !== -1\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.props.onRemove();\n\t\t}\n\t}\n\n\tonEdit() {\n\t\tthis.setState( {\n\t\t\tisEditing: true,\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\t\tconst { image, url, __unstableMarkNextChangeAsNotPersistent } =\n\t\t\tthis.props;\n\t\tif ( image && ! url ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tthis.props.setAttributes( {\n\t\t\t\turl: image.source_url,\n\t\t\t\talt: image.alt_text,\n\t\t\t} );\n\t\t}\n\t}\n\n\tdeselectOnBlur() {\n\t\tthis.props.onDeselect();\n\t}\n\n\tonSelectImageFromLibrary( media ) {\n\t\tconst { setAttributes, id, url, alt, caption, sizeSlug } = this.props;\n\t\tif ( ! media || ! media.url ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, sizeSlug );\n\n\t\t// If the current image is temporary but an alt text was meanwhile\n\t\t// written by the user, make sure the text is not overwritten.\n\t\tif ( isTemporaryImage( id, url ) ) {\n\t\t\tif ( alt ) {\n\t\t\t\tconst { alt: omittedAlt, ...restMediaAttributes } =\n\t\t\t\t\tmediaAttributes;\n\t\t\t\tmediaAttributes = restMediaAttributes;\n\t\t\t}\n\t\t}\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( caption && ! get( mediaAttributes, [ 'caption' ] ) ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tsetAttributes( mediaAttributes );\n\t\tthis.setState( {\n\t\t\tisEditing: false,\n\t\t} );\n\t}\n\n\tonSelectCustomURL( newURL ) {\n\t\tconst { setAttributes, url } = this.props;\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t} );\n\t\t\tthis.setState( {\n\t\t\t\tisEditing: false,\n\t\t\t} );\n\t\t}\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\turl,\n\t\t\talt,\n\t\t\tid,\n\t\t\tlinkTo,\n\t\t\tlink,\n\t\t\tisFirstItem,\n\t\t\tisLastItem,\n\t\t\tisSelected,\n\t\t\tcaption,\n\t\t\tonRemove,\n\t\t\tonMoveForward,\n\t\t\tonMoveBackward,\n\t\t\tsetAttributes,\n\t\t\t'aria-label': ariaLabel,\n\t\t} = this.props;\n\t\tconst { isEditing } = this.state;\n\n\t\tlet href;\n\n\t\tswitch ( linkTo ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = link;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst img = (\n\t\t\t// Disable reason: Image itself is not meant to be interactive, but should\n\t\t\t// direct image selection and unfocus caption fields.\n\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t<>\n\t\t\t\t<img\n\t\t\t\t\tsrc={ url }\n\t\t\t\t\talt={ alt }\n\t\t\t\t\tdata-id={ id }\n\t\t\t\t\tonKeyDown={ this.onRemoveImage }\n\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\tref={ this.bindContainer }\n\t\t\t\t/>\n\t\t\t\t{ isBlobURL( url ) && <Spinner /> }\n\t\t\t</>\n\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions */\n\t\t);\n\n\t\tconst className = classnames( {\n\t\t\t'is-selected': isSelected,\n\t\t\t'is-transient': isBlobURL( url ),\n\t\t} );\n\n\t\treturn (\n\t\t\t// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions\n\t\t\t<figure\n\t\t\t\tclassName={ className }\n\t\t\t\tonClick={ this.onSelectImage }\n\t\t\t\tonFocus={ this.onSelectImage }\n\t\t\t>\n\t\t\t\t{ ! isEditing && ( href ? <a href={ href }>{ img }</a> : img ) }\n\t\t\t\t{ isEditing && (\n\t\t\t\t\t<MediaPlaceholder\n\t\t\t\t\t\tlabels={ { title: __( 'Edit gallery image' ) } }\n\t\t\t\t\t\ticon={ imageIcon }\n\t\t\t\t\t\tonSelect={ this.onSelectImageFromLibrary }\n\t\t\t\t\t\tonSelectURL={ this.onSelectCustomURL }\n\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\tallowedTypes={ [ 'image' ] }\n\t\t\t\t\t\tvalue={ { id, src: url } }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<ButtonGroup className=\"block-library-gallery-item__inline-menu is-left\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ chevronLeft }\n\t\t\t\t\t\tonClick={ isFirstItem ? undefined : onMoveBackward }\n\t\t\t\t\t\tlabel={ __( 'Move image backward' ) }\n\t\t\t\t\t\taria-disabled={ isFirstItem }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ chevronRight }\n\t\t\t\t\t\tonClick={ isLastItem ? undefined : onMoveForward }\n\t\t\t\t\t\tlabel={ __( 'Move image forward' ) }\n\t\t\t\t\t\taria-disabled={ isLastItem }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t</ButtonGroup>\n\t\t\t\t<ButtonGroup className=\"block-library-gallery-item__inline-menu is-right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\tonClick={ this.onEdit }\n\t\t\t\t\t\tlabel={ __( 'Replace image' ) }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tonClick={ onRemove }\n\t\t\t\t\t\tlabel={ __( 'Remove image' ) }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t</ButtonGroup>\n\t\t\t\t{ ! isEditing && ( isSelected || caption ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tclassName={ __experimentalGetElementClassName(\n\t\t\t\t\t\t\t'caption'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\taria-label={ __( 'Image caption text' ) }\n\t\t\t\t\t\tplaceholder={ isSelected ? __( 'Add caption' ) : null }\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tonChange={ ( newCaption ) =>\n\t\t\t\t\t\t\tsetAttributes( { caption: newCaption } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinlineToolbar\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</figure>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, ownProps ) => {\n\t\tconst { getMedia } = select( coreStore );\n\t\tconst { id } = ownProps;\n\n\t\treturn {\n\t\t\timage: id ? getMedia( parseInt( id, 10 ) ) : null,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\t\tdispatch( blockEditorStore );\n\t\treturn {\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t};\n\t} ),\n] )( GalleryImage );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/gallery/v1/gallery-image.js"],"names":["classnames","Component","Button","Spinner","ButtonGroup","__","BACKSPACE","DELETE","withSelect","withDispatch","RichText","MediaPlaceholder","store","blockEditorStore","__experimentalGetElementClassName","isBlobURL","compose","closeSmall","chevronLeft","chevronRight","edit","image","imageIcon","coreStore","pickRelevantMediaFiles","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_MEDIA","isTemporaryImage","id","url","GalleryImage","constructor","arguments","onSelectImage","bind","onRemoveImage","bindContainer","onEdit","onSelectImageFromLibrary","onSelectCustomURL","state","isEditing","ref","container","props","isSelected","onSelect","event","ownerDocument","activeElement","indexOf","keyCode","preventDefault","onRemove","setState","componentDidUpdate","__unstableMarkNextChangeAsNotPersistent","setAttributes","source_url","alt","alt_text","deselectOnBlur","onDeselect","media","caption","sizeSlug","mediaAttributes","omittedAlt","restMediaAttributes","omittedCaption","newURL","undefined","render","linkTo","link","isFirstItem","isLastItem","onMoveForward","onMoveBackward","ariaLabel","href","img","className","title","src","newCaption","select","ownProps","getMedia","parseInt","dispatch"],"mappings":";;AAAA;AACA;AACA;AACA,OAAOA,UAAP,MAAuB,YAAvB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,QAA0B,oBAA1B;AACA,SAASC,MAAT,EAAiBC,OAAjB,EAA0BC,WAA1B,QAA6C,uBAA7C;AACA,SAASC,EAAT,QAAmB,iBAAnB;AACA,SAASC,SAAT,EAAoBC,MAApB,QAAkC,qBAAlC;AACA,SAASC,UAAT,EAAqBC,YAArB,QAAyC,iBAAzC;AACA,SACCC,QADD,EAECC,gBAFD,EAGCC,KAAK,IAAIC,gBAHV,EAICC,iCAJD,QAKO,yBALP;AAMA,SAASC,SAAT,QAA0B,iBAA1B;AACA,SAASC,OAAT,QAAwB,oBAAxB;AACA,SACCC,UADD,EAECC,WAFD,EAGCC,YAHD,EAICC,IAJD,EAKCC,KAAK,IAAIC,SALV,QAMO,kBANP;AAOA,SAASV,KAAK,IAAIW,SAAlB,QAAmC,sBAAnC;AAEA;AACA;AACA;;AACA,SAASC,sBAAT,QAAuC,UAAvC;AACA,SACCC,2BADD,EAECC,sBAFD,QAGO,aAHP;;AAKA,MAAMC,gBAAgB,GAAG,CAAEC,EAAF,EAAMC,GAAN,KAAe,CAAED,EAAF,IAAQb,SAAS,CAAEc,GAAF,CAAzD;;AAEA,MAAMC,YAAN,SAA2B7B,SAA3B,CAAqC;AACpC8B,EAAAA,WAAW,GAAG;AACb,UAAO,GAAGC,SAAV;AAEA,SAAKC,aAAL,GAAqB,KAAKA,aAAL,CAAmBC,IAAnB,CAAyB,IAAzB,CAArB;AACA,SAAKC,aAAL,GAAqB,KAAKA,aAAL,CAAmBD,IAAnB,CAAyB,IAAzB,CAArB;AACA,SAAKE,aAAL,GAAqB,KAAKA,aAAL,CAAmBF,IAAnB,CAAyB,IAAzB,CAArB;AACA,SAAKG,MAAL,GAAc,KAAKA,MAAL,CAAYH,IAAZ,CAAkB,IAAlB,CAAd;AACA,SAAKI,wBAAL,GACC,KAAKA,wBAAL,CAA8BJ,IAA9B,CAAoC,IAApC,CADD;AAEA,SAAKK,iBAAL,GAAyB,KAAKA,iBAAL,CAAuBL,IAAvB,CAA6B,IAA7B,CAAzB;AACA,SAAKM,KAAL,GAAa;AACZC,MAAAA,SAAS,EAAE;AADC,KAAb;AAGA;;AAEDL,EAAAA,aAAa,CAAEM,GAAF,EAAQ;AACpB,SAAKC,SAAL,GAAiBD,GAAjB;AACA;;AAEDT,EAAAA,aAAa,GAAG;AACf,QAAK,CAAE,KAAKW,KAAL,CAAWC,UAAlB,EAA+B;AAC9B,WAAKD,KAAL,CAAWE,QAAX;AACA;AACD;;AAEDX,EAAAA,aAAa,CAAEY,KAAF,EAAU;AACtB,QACC,KAAKJ,SAAL,KAAmB,KAAKA,SAAL,CAAeK,aAAf,CAA6BC,aAAhD,IACA,KAAKL,KAAL,CAAWC,UADX,IAEA,CAAEvC,SAAF,EAAaC,MAAb,EAAsB2C,OAAtB,CAA+BH,KAAK,CAACI,OAArC,MAAmD,CAAC,CAHrD,EAIE;AACDJ,MAAAA,KAAK,CAACK,cAAN;AACA,WAAKR,KAAL,CAAWS,QAAX;AACA;AACD;;AAEDhB,EAAAA,MAAM,GAAG;AACR,SAAKiB,QAAL,CAAe;AACdb,MAAAA,SAAS,EAAE;AADG,KAAf;AAGA;;AAEDc,EAAAA,kBAAkB,GAAG;AACpB,UAAM;AAAElC,MAAAA,KAAF;AAASQ,MAAAA,GAAT;AAAc2B,MAAAA;AAAd,QACL,KAAKZ,KADN;;AAEA,QAAKvB,KAAK,IAAI,CAAEQ,GAAhB,EAAsB;AACrB2B,MAAAA,uCAAuC;;AACvC,WAAKZ,KAAL,CAAWa,aAAX,CAA0B;AACzB5B,QAAAA,GAAG,EAAER,KAAK,CAACqC,UADc;AAEzBC,QAAAA,GAAG,EAAEtC,KAAK,CAACuC;AAFc,OAA1B;AAIA;AACD;;AAEDC,EAAAA,cAAc,GAAG;AAChB,SAAKjB,KAAL,CAAWkB,UAAX;AACA;;AAEDxB,EAAAA,wBAAwB,CAAEyB,KAAF,EAAU;AACjC,UAAM;AAAEN,MAAAA,aAAF;AAAiB7B,MAAAA,EAAjB;AAAqBC,MAAAA,GAArB;AAA0B8B,MAAAA,GAA1B;AAA+BK,MAAAA,OAA/B;AAAwCC,MAAAA;AAAxC,QAAqD,KAAKrB,KAAhE;;AACA,QAAK,CAAEmB,KAAF,IAAW,CAAEA,KAAK,CAAClC,GAAxB,EAA8B;AAC7B;AACA;;AAED,QAAIqC,eAAe,GAAG1C,sBAAsB,CAAEuC,KAAF,EAASE,QAAT,CAA5C,CANiC,CAQjC;AACA;;AACA,QAAKtC,gBAAgB,CAAEC,EAAF,EAAMC,GAAN,CAArB,EAAmC;AAClC,UAAK8B,GAAL,EAAW;AACV,cAAM;AAAEA,UAAAA,GAAG,EAAEQ,UAAP;AAAmB,aAAGC;AAAtB,YACLF,eADD;AAEAA,QAAAA,eAAe,GAAGE,mBAAlB;AACA;AACD,KAhBgC,CAkBjC;AACA;;;AACA,QAAKJ,OAAO,IAAI,CAAEE,eAAe,CAACF,OAAlC,EAA4C;AAC3C,YAAM;AAAEA,QAAAA,OAAO,EAAEK,cAAX;AAA2B,WAAGD;AAA9B,UACLF,eADD;AAEAA,MAAAA,eAAe,GAAGE,mBAAlB;AACA;;AAEDX,IAAAA,aAAa,CAAES,eAAF,CAAb;AACA,SAAKZ,QAAL,CAAe;AACdb,MAAAA,SAAS,EAAE;AADG,KAAf;AAGA;;AAEDF,EAAAA,iBAAiB,CAAE+B,MAAF,EAAW;AAC3B,UAAM;AAAEb,MAAAA,aAAF;AAAiB5B,MAAAA;AAAjB,QAAyB,KAAKe,KAApC;;AACA,QAAK0B,MAAM,KAAKzC,GAAhB,EAAsB;AACrB4B,MAAAA,aAAa,CAAE;AACd5B,QAAAA,GAAG,EAAEyC,MADS;AAEd1C,QAAAA,EAAE,EAAE2C;AAFU,OAAF,CAAb;AAIA,WAAKjB,QAAL,CAAe;AACdb,QAAAA,SAAS,EAAE;AADG,OAAf;AAGA;AACD;;AAED+B,EAAAA,MAAM,GAAG;AACR,UAAM;AACL3C,MAAAA,GADK;AAEL8B,MAAAA,GAFK;AAGL/B,MAAAA,EAHK;AAIL6C,MAAAA,MAJK;AAKLC,MAAAA,IALK;AAMLC,MAAAA,WANK;AAOLC,MAAAA,UAPK;AAQL/B,MAAAA,UARK;AASLmB,MAAAA,OATK;AAULX,MAAAA,QAVK;AAWLwB,MAAAA,aAXK;AAYLC,MAAAA,cAZK;AAaLrB,MAAAA,aAbK;AAcL,oBAAcsB;AAdT,QAeF,KAAKnC,KAfT;AAgBA,UAAM;AAAEH,MAAAA;AAAF,QAAgB,KAAKD,KAA3B;AAEA,QAAIwC,IAAJ;;AAEA,YAASP,MAAT;AACC,WAAK/C,sBAAL;AACCsD,QAAAA,IAAI,GAAGnD,GAAP;AACA;;AACD,WAAKJ,2BAAL;AACCuD,QAAAA,IAAI,GAAGN,IAAP;AACA;AANF;;AASA,UAAMO,GAAG,GACR;AACA;;AACA;AACA,kCACC;AACC,MAAA,GAAG,EAAGpD,GADP;AAEC,MAAA,GAAG,EAAG8B,GAFP;AAGC,iBAAU/B,EAHX;AAIC,MAAA,SAAS,EAAG,KAAKO,aAJlB;AAKC,MAAA,QAAQ,EAAC,GALV;AAMC,oBAAa4C,SANd;AAOC,MAAA,GAAG,EAAG,KAAK3C;AAPZ,MADD,EAUGrB,SAAS,CAAEc,GAAF,CAAT,IAAoB,cAAC,OAAD,OAVvB;AAYA;AAhBD;AAmBA,UAAMqD,SAAS,GAAGlF,UAAU,CAAE;AAC7B,qBAAe6C,UADc;AAE7B,sBAAgB9B,SAAS,CAAEc,GAAF;AAFI,KAAF,CAA5B;AAKA,WACC;AACA;AACC,QAAA,SAAS,EAAGqD,SADb;AAEC,QAAA,OAAO,EAAG,KAAKjD,aAFhB;AAGC,QAAA,OAAO,EAAG,KAAKA;AAHhB,SAKG,CAAEQ,SAAF,KAAiBuC,IAAI,GAAG;AAAG,QAAA,IAAI,EAAGA;AAAV,SAAmBC,GAAnB,CAAH,GAAkCA,GAAvD,CALH,EAMGxC,SAAS,IACV,cAAC,gBAAD;AACC,QAAA,MAAM,EAAG;AAAE0C,UAAAA,KAAK,EAAE9E,EAAE,CAAE,oBAAF;AAAX,SADV;AAEC,QAAA,IAAI,EAAGiB,SAFR;AAGC,QAAA,QAAQ,EAAG,KAAKgB,wBAHjB;AAIC,QAAA,WAAW,EAAG,KAAKC,iBAJpB;AAKC,QAAA,MAAM,EAAC,SALR;AAMC,QAAA,YAAY,EAAG,CAAE,OAAF,CANhB;AAOC,QAAA,KAAK,EAAG;AAAEX,UAAAA,EAAF;AAAMwD,UAAAA,GAAG,EAAEvD;AAAX;AAPT,QAPF,EAiBC,cAAC,WAAD;AAAa,QAAA,SAAS,EAAC;AAAvB,SACC,cAAC,MAAD;AACC,QAAA,IAAI,EAAGX,WADR;AAEC,QAAA,OAAO,EAAGyD,WAAW,GAAGJ,SAAH,GAAeO,cAFrC;AAGC,QAAA,KAAK,EAAGzE,EAAE,CAAE,qBAAF,CAHX;AAIC,yBAAgBsE,WAJjB;AAKC,QAAA,QAAQ,EAAG,CAAE9B;AALd,QADD,EAQC,cAAC,MAAD;AACC,QAAA,IAAI,EAAG1B,YADR;AAEC,QAAA,OAAO,EAAGyD,UAAU,GAAGL,SAAH,GAAeM,aAFpC;AAGC,QAAA,KAAK,EAAGxE,EAAE,CAAE,oBAAF,CAHX;AAIC,yBAAgBuE,UAJjB;AAKC,QAAA,QAAQ,EAAG,CAAE/B;AALd,QARD,CAjBD,EAiCC,cAAC,WAAD;AAAa,QAAA,SAAS,EAAC;AAAvB,SACC,cAAC,MAAD;AACC,QAAA,IAAI,EAAGzB,IADR;AAEC,QAAA,OAAO,EAAG,KAAKiB,MAFhB;AAGC,QAAA,KAAK,EAAGhC,EAAE,CAAE,eAAF,CAHX;AAIC,QAAA,QAAQ,EAAG,CAAEwC;AAJd,QADD,EAOC,cAAC,MAAD;AACC,QAAA,IAAI,EAAG5B,UADR;AAEC,QAAA,OAAO,EAAGoC,QAFX;AAGC,QAAA,KAAK,EAAGhD,EAAE,CAAE,cAAF,CAHX;AAIC,QAAA,QAAQ,EAAG,CAAEwC;AAJd,QAPD,CAjCD,EA+CG,CAAEJ,SAAF,KAAiBI,UAAU,IAAImB,OAA/B,KACD,cAAC,QAAD;AACC,QAAA,OAAO,EAAC,YADT;AAEC,QAAA,SAAS,EAAGlD,iCAAiC,CAC5C,SAD4C,CAF9C;AAKC,sBAAaT,EAAE,CAAE,oBAAF,CALhB;AAMC,QAAA,WAAW,EAAGwC,UAAU,GAAGxC,EAAE,CAAE,aAAF,CAAL,GAAyB,IANlD;AAOC,QAAA,KAAK,EAAG2D,OAPT;AAQC,QAAA,QAAQ,EAAKqB,UAAF,IACV5B,aAAa,CAAE;AAAEO,UAAAA,OAAO,EAAEqB;AAAX,SAAF,CATf;AAWC,QAAA,aAAa;AAXd,QAhDF;AAFD;AAkEA;;AAhOmC;;AAmOrC,eAAerE,OAAO,CAAE,CACvBR,UAAU,CAAE,CAAE8E,MAAF,EAAUC,QAAV,KAAwB;AACnC,QAAM;AAAEC,IAAAA;AAAF,MAAeF,MAAM,CAAE/D,SAAF,CAA3B;AACA,QAAM;AAAEK,IAAAA;AAAF,MAAS2D,QAAf;AAEA,SAAO;AACNlE,IAAAA,KAAK,EAAEO,EAAE,GAAG4D,QAAQ,CAAEC,QAAQ,CAAE7D,EAAF,EAAM,EAAN,CAAV,CAAX,GAAoC;AADvC,GAAP;AAGA,CAPS,CADa,EASvBnB,YAAY,CAAIiF,QAAF,IAAgB;AAC7B,QAAM;AAAElC,IAAAA;AAAF,MACLkC,QAAQ,CAAE7E,gBAAF,CADT;AAEA,SAAO;AACN2C,IAAAA;AADM,GAAP;AAGA,CANW,CATW,CAAF,CAAP,CAgBV1B,YAhBU,CAAf","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport { Button, Spinner, ButtonGroup } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\nimport { BACKSPACE, DELETE } from '@wordpress/keycodes';\nimport { withSelect, withDispatch } from '@wordpress/data';\nimport {\n\tRichText,\n\tMediaPlaceholder,\n\tstore as blockEditorStore,\n\t__experimentalGetElementClassName,\n} from '@wordpress/block-editor';\nimport { isBlobURL } from '@wordpress/blob';\nimport { compose } from '@wordpress/compose';\nimport {\n\tcloseSmall,\n\tchevronLeft,\n\tchevronRight,\n\tedit,\n\timage as imageIcon,\n} from '@wordpress/icons';\nimport { store as coreStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { pickRelevantMediaFiles } from './shared';\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_MEDIA,\n} from './constants';\n\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\nclass GalleryImage extends Component {\n\tconstructor() {\n\t\tsuper( ...arguments );\n\n\t\tthis.onSelectImage = this.onSelectImage.bind( this );\n\t\tthis.onRemoveImage = this.onRemoveImage.bind( this );\n\t\tthis.bindContainer = this.bindContainer.bind( this );\n\t\tthis.onEdit = this.onEdit.bind( this );\n\t\tthis.onSelectImageFromLibrary =\n\t\t\tthis.onSelectImageFromLibrary.bind( this );\n\t\tthis.onSelectCustomURL = this.onSelectCustomURL.bind( this );\n\t\tthis.state = {\n\t\t\tisEditing: false,\n\t\t};\n\t}\n\n\tbindContainer( ref ) {\n\t\tthis.container = ref;\n\t}\n\n\tonSelectImage() {\n\t\tif ( ! this.props.isSelected ) {\n\t\t\tthis.props.onSelect();\n\t\t}\n\t}\n\n\tonRemoveImage( event ) {\n\t\tif (\n\t\t\tthis.container === this.container.ownerDocument.activeElement &&\n\t\t\tthis.props.isSelected &&\n\t\t\t[ BACKSPACE, DELETE ].indexOf( event.keyCode ) !== -1\n\t\t) {\n\t\t\tevent.preventDefault();\n\t\t\tthis.props.onRemove();\n\t\t}\n\t}\n\n\tonEdit() {\n\t\tthis.setState( {\n\t\t\tisEditing: true,\n\t\t} );\n\t}\n\n\tcomponentDidUpdate() {\n\t\tconst { image, url, __unstableMarkNextChangeAsNotPersistent } =\n\t\t\tthis.props;\n\t\tif ( image && ! url ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tthis.props.setAttributes( {\n\t\t\t\turl: image.source_url,\n\t\t\t\talt: image.alt_text,\n\t\t\t} );\n\t\t}\n\t}\n\n\tdeselectOnBlur() {\n\t\tthis.props.onDeselect();\n\t}\n\n\tonSelectImageFromLibrary( media ) {\n\t\tconst { setAttributes, id, url, alt, caption, sizeSlug } = this.props;\n\t\tif ( ! media || ! media.url ) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, sizeSlug );\n\n\t\t// If the current image is temporary but an alt text was meanwhile\n\t\t// written by the user, make sure the text is not overwritten.\n\t\tif ( isTemporaryImage( id, url ) ) {\n\t\t\tif ( alt ) {\n\t\t\t\tconst { alt: omittedAlt, ...restMediaAttributes } =\n\t\t\t\t\tmediaAttributes;\n\t\t\t\tmediaAttributes = restMediaAttributes;\n\t\t\t}\n\t\t}\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( caption && ! mediaAttributes.caption ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tsetAttributes( mediaAttributes );\n\t\tthis.setState( {\n\t\t\tisEditing: false,\n\t\t} );\n\t}\n\n\tonSelectCustomURL( newURL ) {\n\t\tconst { setAttributes, url } = this.props;\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t} );\n\t\t\tthis.setState( {\n\t\t\t\tisEditing: false,\n\t\t\t} );\n\t\t}\n\t}\n\n\trender() {\n\t\tconst {\n\t\t\turl,\n\t\t\talt,\n\t\t\tid,\n\t\t\tlinkTo,\n\t\t\tlink,\n\t\t\tisFirstItem,\n\t\t\tisLastItem,\n\t\t\tisSelected,\n\t\t\tcaption,\n\t\t\tonRemove,\n\t\t\tonMoveForward,\n\t\t\tonMoveBackward,\n\t\t\tsetAttributes,\n\t\t\t'aria-label': ariaLabel,\n\t\t} = this.props;\n\t\tconst { isEditing } = this.state;\n\n\t\tlet href;\n\n\t\tswitch ( linkTo ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = link;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst img = (\n\t\t\t// Disable reason: Image itself is not meant to be interactive, but should\n\t\t\t// direct image selection and unfocus caption fields.\n\t\t\t/* eslint-disable jsx-a11y/no-noninteractive-element-interactions */\n\t\t\t<>\n\t\t\t\t<img\n\t\t\t\t\tsrc={ url }\n\t\t\t\t\talt={ alt }\n\t\t\t\t\tdata-id={ id }\n\t\t\t\t\tonKeyDown={ this.onRemoveImage }\n\t\t\t\t\ttabIndex=\"0\"\n\t\t\t\t\taria-label={ ariaLabel }\n\t\t\t\t\tref={ this.bindContainer }\n\t\t\t\t/>\n\t\t\t\t{ isBlobURL( url ) && <Spinner /> }\n\t\t\t</>\n\t\t\t/* eslint-enable jsx-a11y/no-noninteractive-element-interactions */\n\t\t);\n\n\t\tconst className = classnames( {\n\t\t\t'is-selected': isSelected,\n\t\t\t'is-transient': isBlobURL( url ),\n\t\t} );\n\n\t\treturn (\n\t\t\t// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions\n\t\t\t<figure\n\t\t\t\tclassName={ className }\n\t\t\t\tonClick={ this.onSelectImage }\n\t\t\t\tonFocus={ this.onSelectImage }\n\t\t\t>\n\t\t\t\t{ ! isEditing && ( href ? <a href={ href }>{ img }</a> : img ) }\n\t\t\t\t{ isEditing && (\n\t\t\t\t\t<MediaPlaceholder\n\t\t\t\t\t\tlabels={ { title: __( 'Edit gallery image' ) } }\n\t\t\t\t\t\ticon={ imageIcon }\n\t\t\t\t\t\tonSelect={ this.onSelectImageFromLibrary }\n\t\t\t\t\t\tonSelectURL={ this.onSelectCustomURL }\n\t\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\t\tallowedTypes={ [ 'image' ] }\n\t\t\t\t\t\tvalue={ { id, src: url } }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t<ButtonGroup className=\"block-library-gallery-item__inline-menu is-left\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ chevronLeft }\n\t\t\t\t\t\tonClick={ isFirstItem ? undefined : onMoveBackward }\n\t\t\t\t\t\tlabel={ __( 'Move image backward' ) }\n\t\t\t\t\t\taria-disabled={ isFirstItem }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ chevronRight }\n\t\t\t\t\t\tonClick={ isLastItem ? undefined : onMoveForward }\n\t\t\t\t\t\tlabel={ __( 'Move image forward' ) }\n\t\t\t\t\t\taria-disabled={ isLastItem }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t</ButtonGroup>\n\t\t\t\t<ButtonGroup className=\"block-library-gallery-item__inline-menu is-right\">\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ edit }\n\t\t\t\t\t\tonClick={ this.onEdit }\n\t\t\t\t\t\tlabel={ __( 'Replace image' ) }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t\t<Button\n\t\t\t\t\t\ticon={ closeSmall }\n\t\t\t\t\t\tonClick={ onRemove }\n\t\t\t\t\t\tlabel={ __( 'Remove image' ) }\n\t\t\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\t\t/>\n\t\t\t\t</ButtonGroup>\n\t\t\t\t{ ! isEditing && ( isSelected || caption ) && (\n\t\t\t\t\t<RichText\n\t\t\t\t\t\ttagName=\"figcaption\"\n\t\t\t\t\t\tclassName={ __experimentalGetElementClassName(\n\t\t\t\t\t\t\t'caption'\n\t\t\t\t\t\t) }\n\t\t\t\t\t\taria-label={ __( 'Image caption text' ) }\n\t\t\t\t\t\tplaceholder={ isSelected ? __( 'Add caption' ) : null }\n\t\t\t\t\t\tvalue={ caption }\n\t\t\t\t\t\tonChange={ ( newCaption ) =>\n\t\t\t\t\t\t\tsetAttributes( { caption: newCaption } )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinlineToolbar\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</figure>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, ownProps ) => {\n\t\tconst { getMedia } = select( coreStore );\n\t\tconst { id } = ownProps;\n\n\t\treturn {\n\t\t\timage: id ? getMedia( parseInt( id, 10 ) ) : null,\n\t\t};\n\t} ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\t\tdispatch( blockEditorStore );\n\t\treturn {\n\t\t\t__unstableMarkNextChangeAsNotPersistent,\n\t\t};\n\t} ),\n] )( GalleryImage );\n"]}
@@ -1,15 +1,13 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { get } from 'lodash';
5
1
  export const pickRelevantMediaFiles = function (image) {
2
+ var _image$sizes, _image$sizes$sizeSlug, _image$media_details, _image$media_details$, _image$media_details$2, _image$sizes2, _image$sizes2$full, _image$media_details2, _image$media_details3, _image$media_details4;
3
+
6
4
  let sizeSlug = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'large';
7
5
  const imageProps = Object.fromEntries(Object.entries(image !== null && image !== void 0 ? image : {}).filter(_ref => {
8
6
  let [key] = _ref;
9
7
  return ['alt', 'id', 'link', 'caption'].includes(key);
10
8
  }));
11
- imageProps.url = get(image, ['sizes', sizeSlug, 'url']) || get(image, ['media_details', 'sizes', sizeSlug, 'source_url']) || image.url;
12
- const fullUrl = get(image, ['sizes', 'full', 'url']) || get(image, ['media_details', 'sizes', 'full', 'source_url']);
9
+ imageProps.url = (image === null || image === void 0 ? void 0 : (_image$sizes = image.sizes) === null || _image$sizes === void 0 ? void 0 : (_image$sizes$sizeSlug = _image$sizes[sizeSlug]) === null || _image$sizes$sizeSlug === void 0 ? void 0 : _image$sizes$sizeSlug.url) || (image === null || image === void 0 ? void 0 : (_image$media_details = image.media_details) === null || _image$media_details === void 0 ? void 0 : (_image$media_details$ = _image$media_details.sizes) === null || _image$media_details$ === void 0 ? void 0 : (_image$media_details$2 = _image$media_details$[sizeSlug]) === null || _image$media_details$2 === void 0 ? void 0 : _image$media_details$2.source_url) || (image === null || image === void 0 ? void 0 : image.url);
10
+ const fullUrl = (image === null || image === void 0 ? void 0 : (_image$sizes2 = image.sizes) === null || _image$sizes2 === void 0 ? void 0 : (_image$sizes2$full = _image$sizes2.full) === null || _image$sizes2$full === void 0 ? void 0 : _image$sizes2$full.url) || (image === null || image === void 0 ? void 0 : (_image$media_details2 = image.media_details) === null || _image$media_details2 === void 0 ? void 0 : (_image$media_details3 = _image$media_details2.sizes) === null || _image$media_details3 === void 0 ? void 0 : (_image$media_details4 = _image$media_details3.full) === null || _image$media_details4 === void 0 ? void 0 : _image$media_details4.source_url);
13
11
 
14
12
  if (fullUrl) {
15
13
  imageProps.fullUrl = fullUrl;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/gallery/v1/shared.js"],"names":["get","pickRelevantMediaFiles","image","sizeSlug","imageProps","Object","fromEntries","entries","filter","key","includes","url","fullUrl"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,GAAT,QAAoB,QAApB;AAEA,OAAO,MAAMC,sBAAsB,GAAG,UAAEC,KAAF,EAAiC;AAAA,MAAxBC,QAAwB,uEAAb,OAAa;AACtE,QAAMC,UAAU,GAAGC,MAAM,CAACC,WAAP,CAClBD,MAAM,CAACE,OAAP,CAAgBL,KAAhB,aAAgBA,KAAhB,cAAgBA,KAAhB,GAAyB,EAAzB,EAA8BM,MAA9B,CAAsC;AAAA,QAAE,CAAEC,GAAF,CAAF;AAAA,WACrC,CAAE,KAAF,EAAS,IAAT,EAAe,MAAf,EAAuB,SAAvB,EAAmCC,QAAnC,CAA6CD,GAA7C,CADqC;AAAA,GAAtC,CADkB,CAAnB;AAMAL,EAAAA,UAAU,CAACO,GAAX,GACCX,GAAG,CAAEE,KAAF,EAAS,CAAE,OAAF,EAAWC,QAAX,EAAqB,KAArB,CAAT,CAAH,IACAH,GAAG,CAAEE,KAAF,EAAS,CAAE,eAAF,EAAmB,OAAnB,EAA4BC,QAA5B,EAAsC,YAAtC,CAAT,CADH,IAEAD,KAAK,CAACS,GAHP;AAIA,QAAMC,OAAO,GACZZ,GAAG,CAAEE,KAAF,EAAS,CAAE,OAAF,EAAW,MAAX,EAAmB,KAAnB,CAAT,CAAH,IACAF,GAAG,CAAEE,KAAF,EAAS,CAAE,eAAF,EAAmB,OAAnB,EAA4B,MAA5B,EAAoC,YAApC,CAAT,CAFJ;;AAGA,MAAKU,OAAL,EAAe;AACdR,IAAAA,UAAU,CAACQ,OAAX,GAAqBA,OAArB;AACA;;AACD,SAAOR,UAAP;AACA,CAlBM","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\nexport const pickRelevantMediaFiles = ( image, sizeSlug = 'large' ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\tget( image, [ 'sizes', sizeSlug, 'url' ] ) ||\n\t\tget( image, [ 'media_details', 'sizes', sizeSlug, 'source_url' ] ) ||\n\t\timage.url;\n\tconst fullUrl =\n\t\tget( image, [ 'sizes', 'full', 'url' ] ) ||\n\t\tget( image, [ 'media_details', 'sizes', 'full', 'source_url' ] );\n\tif ( fullUrl ) {\n\t\timageProps.fullUrl = fullUrl;\n\t}\n\treturn imageProps;\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/gallery/v1/shared.js"],"names":["pickRelevantMediaFiles","image","sizeSlug","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","fullUrl","full"],"mappings":"AAAA,OAAO,MAAMA,sBAAsB,GAAG,UAAEC,KAAF,EAAiC;AAAA;;AAAA,MAAxBC,QAAwB,uEAAb,OAAa;AACtE,QAAMC,UAAU,GAAGC,MAAM,CAACC,WAAP,CAClBD,MAAM,CAACE,OAAP,CAAgBL,KAAhB,aAAgBA,KAAhB,cAAgBA,KAAhB,GAAyB,EAAzB,EAA8BM,MAA9B,CAAsC;AAAA,QAAE,CAAEC,GAAF,CAAF;AAAA,WACrC,CAAE,KAAF,EAAS,IAAT,EAAe,MAAf,EAAuB,SAAvB,EAAmCC,QAAnC,CAA6CD,GAA7C,CADqC;AAAA,GAAtC,CADkB,CAAnB;AAMAL,EAAAA,UAAU,CAACO,GAAX,GACC,CAAAT,KAAK,SAAL,IAAAA,KAAK,WAAL,4BAAAA,KAAK,CAAEU,KAAP,uFAAgBT,QAAhB,iFAA4BQ,GAA5B,MACAT,KADA,aACAA,KADA,+CACAA,KAAK,CAAEW,aADP,kFACA,qBAAsBD,KADtB,oFACA,sBAA+BT,QAA/B,CADA,2DACA,uBAA2CW,UAD3C,MAEAZ,KAFA,aAEAA,KAFA,uBAEAA,KAAK,CAAES,GAFP,CADD;AAIA,QAAMI,OAAO,GACZ,CAAAb,KAAK,SAAL,IAAAA,KAAK,WAAL,6BAAAA,KAAK,CAAEU,KAAP,sFAAcI,IAAd,0EAAoBL,GAApB,MACAT,KADA,aACAA,KADA,gDACAA,KAAK,CAAEW,aADP,mFACA,sBAAsBD,KADtB,mFACA,sBAA6BI,IAD7B,0DACA,sBAAmCF,UADnC,CADD;;AAGA,MAAKC,OAAL,EAAe;AACdX,IAAAA,UAAU,CAACW,OAAX,GAAqBA,OAArB;AACA;;AACD,SAAOX,UAAP;AACA,CAlBM","sourcesContent":["export const pickRelevantMediaFiles = ( image, sizeSlug = 'large' ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\timage?.sizes?.[ sizeSlug ]?.url ||\n\t\timage?.media_details?.sizes?.[ sizeSlug ]?.source_url ||\n\t\timage?.url;\n\tconst fullUrl =\n\t\timage?.sizes?.full?.url ||\n\t\timage?.media_details?.sizes?.full?.source_url;\n\tif ( fullUrl ) {\n\t\timageProps.fullUrl = fullUrl;\n\t}\n\treturn imageProps;\n};\n"]}
@@ -24,6 +24,7 @@ const metadata = {
24
24
  },
25
25
  usesContext: ["textColor", "customTextColor", "backgroundColor", "customBackgroundColor", "fontSize", "customFontSize", "style"],
26
26
  supports: {
27
+ anchor: true,
27
28
  reusable: false,
28
29
  html: false,
29
30
  typography: {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/home-link/index.js"],"names":["_x","home","initBlock","edit","save","name","metadata","settings","icon","example","attributes","label","init"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,IAAT,QAAqB,kBAArB;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,qBAAtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAOC,IAAP,MAAiB,QAAjB;AACA,OAAOC,IAAP,MAAiB,QAAjB;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAWC,QAAjB;AAEA,SAASA,QAAT,EAAmBD,IAAnB;AAEA,OAAO,MAAME,QAAQ,GAAG;AACvBC,EAAAA,IAAI,EAAEP,IADiB;AAGvBE,EAAAA,IAHuB;AAKvBC,EAAAA,IALuB;AAOvBK,EAAAA,OAAO,EAAE;AACRC,IAAAA,UAAU,EAAE;AACXC,MAAAA,KAAK,EAAEX,EAAE,CAAE,WAAF,EAAe,eAAf;AADE;AADJ;AAPc,CAAjB;AAcP,OAAO,MAAMY,IAAI,GAAG,MAAMV,SAAS,CAAE;AAAEG,EAAAA,IAAF;AAAQC,EAAAA,QAAR;AAAkBC,EAAAA;AAAlB,CAAF,CAA5B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { _x } from '@wordpress/i18n';\nimport { home } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon: home,\n\n\tedit,\n\n\tsave,\n\n\texample: {\n\t\tattributes: {\n\t\t\tlabel: _x( 'Home Link', 'block example' ),\n\t\t},\n\t},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/home-link/index.js"],"names":["_x","home","initBlock","edit","save","name","metadata","settings","icon","example","attributes","label","init"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAT,QAAmB,iBAAnB;AACA,SAASC,IAAT,QAAqB,kBAArB;AAEA;AACA;AACA;;AACA,OAAOC,SAAP,MAAsB,qBAAtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAOC,IAAP,MAAiB,QAAjB;AACA,OAAOC,IAAP,MAAiB,QAAjB;AAEA,MAAM;AAAEC,EAAAA;AAAF,IAAWC,QAAjB;AAEA,SAASA,QAAT,EAAmBD,IAAnB;AAEA,OAAO,MAAME,QAAQ,GAAG;AACvBC,EAAAA,IAAI,EAAEP,IADiB;AAGvBE,EAAAA,IAHuB;AAKvBC,EAAAA,IALuB;AAOvBK,EAAAA,OAAO,EAAE;AACRC,IAAAA,UAAU,EAAE;AACXC,MAAAA,KAAK,EAAEX,EAAE,CAAE,WAAF,EAAe,eAAf;AADE;AADJ;AAPc,CAAjB;AAcP,OAAO,MAAMY,IAAI,GAAG,MAAMV,SAAS,CAAE;AAAEG,EAAAA,IAAF;AAAQC,EAAAA,QAAR;AAAkBC,EAAAA;AAAlB,CAAF,CAA5B","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { _x } from '@wordpress/i18n';\nimport { home } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport metadata from './block.json';\nimport edit from './edit';\nimport save from './save';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon: home,\n\n\tedit,\n\n\tsave,\n\n\texample: {\n\t\tattributes: {\n\t\t\tlabel: _x( 'Home Link', 'block example' ),\n\t\t},\n\t},\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"]}
@@ -4,7 +4,7 @@ import { createElement } from "@wordpress/element";
4
4
  * External dependencies
5
5
  */
6
6
  import classnames from 'classnames';
7
- import { get, isEmpty } from 'lodash';
7
+ import { isEmpty } from 'lodash';
8
8
  /**
9
9
  * WordPress dependencies
10
10
  */
@@ -39,11 +39,13 @@ const placeholder = content => {
39
39
 
40
40
  import { LINK_DESTINATION_ATTACHMENT, LINK_DESTINATION_CUSTOM, LINK_DESTINATION_MEDIA, LINK_DESTINATION_NONE, ALLOWED_MEDIA_TYPES } from './constants';
41
41
  export const pickRelevantMediaFiles = (image, size) => {
42
+ var _image$sizes, _image$sizes$size, _image$media_details, _image$media_details$, _image$media_details$2;
43
+
42
44
  const imageProps = Object.fromEntries(Object.entries(image !== null && image !== void 0 ? image : {}).filter(_ref => {
43
45
  let [key] = _ref;
44
46
  return ['alt', 'id', 'link', 'caption'].includes(key);
45
47
  }));
46
- imageProps.url = get(image, ['sizes', size, 'url']) || get(image, ['media_details', 'sizes', size, 'source_url']) || image.url;
48
+ imageProps.url = (image === null || image === void 0 ? void 0 : (_image$sizes = image.sizes) === null || _image$sizes === void 0 ? void 0 : (_image$sizes$size = _image$sizes[size]) === null || _image$sizes$size === void 0 ? void 0 : _image$sizes$size.url) || (image === null || image === void 0 ? void 0 : (_image$media_details = image.media_details) === null || _image$media_details === void 0 ? void 0 : (_image$media_details$ = _image$media_details.sizes) === null || _image$media_details$ === void 0 ? void 0 : (_image$media_details$2 = _image$media_details$[size]) === null || _image$media_details$2 === void 0 ? void 0 : _image$media_details$2.source_url) || image.url;
47
49
  return imageProps;
48
50
  };
49
51
  /**
@@ -80,9 +82,9 @@ export const isExternalImage = (id, url) => url && !id && !isBlobURL(url);
80
82
  */
81
83
 
82
84
  function hasDefaultSize(image, defaultSize) {
83
- var _image$sizes$defaultS, _image$sizes, _image$media_details$, _image$media_details, _image$media_details$2;
85
+ var _image$sizes$defaultS, _image$sizes2, _image$media_details$3, _image$media_details2, _image$media_details3;
84
86
 
85
- return 'url' in ((_image$sizes$defaultS = image === null || image === void 0 ? void 0 : (_image$sizes = image.sizes) === null || _image$sizes === void 0 ? void 0 : _image$sizes[defaultSize]) !== null && _image$sizes$defaultS !== void 0 ? _image$sizes$defaultS : {}) || 'source_url' in ((_image$media_details$ = image === null || image === void 0 ? void 0 : (_image$media_details = image.media_details) === null || _image$media_details === void 0 ? void 0 : (_image$media_details$2 = _image$media_details.sizes) === null || _image$media_details$2 === void 0 ? void 0 : _image$media_details$2[defaultSize]) !== null && _image$media_details$ !== void 0 ? _image$media_details$ : {});
87
+ return 'url' in ((_image$sizes$defaultS = image === null || image === void 0 ? void 0 : (_image$sizes2 = image.sizes) === null || _image$sizes2 === void 0 ? void 0 : _image$sizes2[defaultSize]) !== null && _image$sizes$defaultS !== void 0 ? _image$sizes$defaultS : {}) || 'source_url' in ((_image$media_details$3 = image === null || image === void 0 ? void 0 : (_image$media_details2 = image.media_details) === null || _image$media_details2 === void 0 ? void 0 : (_image$media_details3 = _image$media_details2.sizes) === null || _image$media_details3 === void 0 ? void 0 : _image$media_details3[defaultSize]) !== null && _image$media_details$3 !== void 0 ? _image$media_details$3 : {});
86
88
  }
87
89
 
88
90
  export function ImageEdit(_ref2) {
@@ -171,7 +173,7 @@ export function ImageEdit(_ref2) {
171
173
  let mediaAttributes = pickRelevantMediaFiles(media, imageDefaultSize); // If a caption text was meanwhile written by the user,
172
174
  // make sure the text is not overwritten by empty captions.
173
175
 
174
- if (captionRef.current && !get(mediaAttributes, ['caption'])) {
176
+ if (captionRef.current && !mediaAttributes.caption) {
175
177
  const {
176
178
  caption: omittedCaption,
177
179
  ...restMediaAttributes
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/block-library/src/image/edit.js"],"names":["classnames","get","isEmpty","getBlobByURL","isBlobURL","revokeBlobURL","Placeholder","useDispatch","useSelect","BlockAlignmentControl","BlockControls","BlockIcon","MediaPlaceholder","useBlockProps","store","blockEditorStore","__experimentalUseBorderProps","useBorderProps","useEffect","useRef","useState","__","image","icon","noticesStore","Image","placeholder","content","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","ALLOWED_MEDIA_TYPES","pickRelevantMediaFiles","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","isTemporaryImage","id","isExternalImage","hasDefaultSize","defaultSize","sizes","media_details","ImageEdit","attributes","setAttributes","isSelected","className","insertBlocksAfter","onReplace","context","clientId","alt","caption","align","width","height","sizeSlug","temporaryURL","setTemporaryURL","altRef","current","captionRef","ref","imageDefaultSize","mediaUpload","isContentLocked","select","getSettings","__unstableGetContentLockingParent","settings","createErrorNotice","onUploadError","message","type","src","undefined","onSelectImage","media","title","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","defaultProps","link","href","onSelectURL","newURL","updateAlignment","nextAlign","extraUpdatedAttributes","isTemp","file","filesList","onFileChange","img","allowedTypes","onError","isExternal","mediaPreview","borderProps","classes","style","blockProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { get, isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockAlignmentControl,\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { image as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport Image from './image';\n\n// Much of this description is duplicated from MediaPlaceholder.\nconst placeholder = ( content ) => {\n\treturn (\n\t\t<Placeholder\n\t\t\tclassName=\"block-editor-media-placeholder\"\n\t\t\twithIllustration={ true }\n\t\t\ticon={ icon }\n\t\t\tlabel={ __( 'Image' ) }\n\t\t\tinstructions={ __(\n\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t) }\n\t\t>\n\t\t\t{ content }\n\t\t</Placeholder>\n\t);\n};\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\tget( image, [ 'sizes', size, 'url' ] ) ||\n\t\tget( image, [ 'media_details', 'sizes', size, 'source_url' ] ) ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated default image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} defaultSize\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasDefaultSize( image, defaultSize ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ defaultSize ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ defaultSize ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\talign,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst ref = useRef();\n\tconst { imageDefaultSize, mediaUpload, isContentLocked } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, __unstableGetContentLockingParent } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst settings = getSettings();\n\t\t\treturn {\n\t\t\t\timageDefaultSize: settings.imageDefaultSize,\n\t\t\t\tmediaUpload: settings.mediaUpload,\n\t\t\t\tisContentLocked:\n\t\t\t\t\t!! __unstableGetContentLockingParent( clientId ),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, imageDefaultSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! get( mediaAttributes, [ 'caption' ] ) ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\t// Fallback to size \"full\" if there's no default image size.\n\t\t\t\t// It means the image is smaller, and the block will use a full-size URL.\n\t\t\t\tsizeSlug: hasDefaultSize( media, imageDefaultSize )\n\t\t\t\t\t? imageDefaultSize\n\t\t\t\t\t: 'full',\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Image Size\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\tsizeSlug: imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction updateAlignment( nextAlign ) {\n\t\tconst extraUpdatedAttributes = [ 'wide', 'full' ].includes( nextAlign )\n\t\t\t? { width: undefined, height: undefined }\n\t\t\t: {};\n\t\tsetAttributes( {\n\t\t\t...extraUpdatedAttributes,\n\t\t\talign: nextAlign,\n\t\t} );\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className || ! isEmpty( borderProps.style ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t{ ( temporaryURL || url ) && (\n\t\t\t\t<Image\n\t\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\t\tcontainerRef={ ref }\n\t\t\t\t\tcontext={ context }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisContentLocked={ isContentLocked }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! url && ! isContentLocked && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\tvalue={ align }\n\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n"]}
1
+ {"version":3,"sources":["@wordpress/block-library/src/image/edit.js"],"names":["classnames","isEmpty","getBlobByURL","isBlobURL","revokeBlobURL","Placeholder","useDispatch","useSelect","BlockAlignmentControl","BlockControls","BlockIcon","MediaPlaceholder","useBlockProps","store","blockEditorStore","__experimentalUseBorderProps","useBorderProps","useEffect","useRef","useState","__","image","icon","noticesStore","Image","placeholder","content","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","LINK_DESTINATION_MEDIA","LINK_DESTINATION_NONE","ALLOWED_MEDIA_TYPES","pickRelevantMediaFiles","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","isTemporaryImage","id","isExternalImage","hasDefaultSize","defaultSize","ImageEdit","attributes","setAttributes","isSelected","className","insertBlocksAfter","onReplace","context","clientId","alt","caption","align","width","height","sizeSlug","temporaryURL","setTemporaryURL","altRef","current","captionRef","ref","imageDefaultSize","mediaUpload","isContentLocked","select","getSettings","__unstableGetContentLockingParent","settings","createErrorNotice","onUploadError","message","type","src","undefined","onSelectImage","media","title","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","defaultProps","link","href","onSelectURL","newURL","updateAlignment","nextAlign","extraUpdatedAttributes","isTemp","file","filesList","onFileChange","img","allowedTypes","onError","isExternal","mediaPreview","borderProps","classes","style","blockProps"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockAlignmentControl,\n\tBlockControls,\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { image as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport Image from './image';\n\n// Much of this description is duplicated from MediaPlaceholder.\nconst placeholder = ( content ) => {\n\treturn (\n\t\t<Placeholder\n\t\t\tclassName=\"block-editor-media-placeholder\"\n\t\t\twithIllustration={ true }\n\t\t\ticon={ icon }\n\t\t\tlabel={ __( 'Image' ) }\n\t\t\tinstructions={ __(\n\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t) }\n\t\t>\n\t\t\t{ content }\n\t\t</Placeholder>\n\t);\n};\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\timage?.sizes?.[ size ]?.url ||\n\t\timage?.media_details?.sizes?.[ size ]?.source_url ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated default image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} defaultSize\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasDefaultSize( image, defaultSize ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ defaultSize ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ defaultSize ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\talign,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst ref = useRef();\n\tconst { imageDefaultSize, mediaUpload, isContentLocked } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, __unstableGetContentLockingParent } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst settings = getSettings();\n\t\t\treturn {\n\t\t\t\timageDefaultSize: settings.imageDefaultSize,\n\t\t\t\tmediaUpload: settings.mediaUpload,\n\t\t\t\tisContentLocked:\n\t\t\t\t\t!! __unstableGetContentLockingParent( clientId ),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, imageDefaultSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! mediaAttributes.caption ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\t// Fallback to size \"full\" if there's no default image size.\n\t\t\t\t// It means the image is smaller, and the block will use a full-size URL.\n\t\t\t\tsizeSlug: hasDefaultSize( media, imageDefaultSize )\n\t\t\t\t\t? imageDefaultSize\n\t\t\t\t\t: 'full',\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Image Size\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\tsizeSlug: imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tfunction updateAlignment( nextAlign ) {\n\t\tconst extraUpdatedAttributes = [ 'wide', 'full' ].includes( nextAlign )\n\t\t\t? { width: undefined, height: undefined }\n\t\t\t: {};\n\t\tsetAttributes( {\n\t\t\t...extraUpdatedAttributes,\n\t\t\talign: nextAlign,\n\t\t} );\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className || ! isEmpty( borderProps.style ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t{ ( temporaryURL || url ) && (\n\t\t\t\t<Image\n\t\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\t\tonReplace={ onReplace }\n\t\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\t\tcontainerRef={ ref }\n\t\t\t\t\tcontext={ context }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tisContentLocked={ isContentLocked }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t{ ! url && ! isContentLocked && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<BlockAlignmentControl\n\t\t\t\t\t\tvalue={ align }\n\t\t\t\t\t\tonChange={ updateAlignment }\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n"]}
@@ -3,7 +3,7 @@ import { createElement, Fragment } from "@wordpress/element";
3
3
  /**
4
4
  * External dependencies
5
5
  */
6
- import { get, isEmpty } from 'lodash';
6
+ import { isEmpty } from 'lodash';
7
7
  /**
8
8
  * WordPress dependencies
9
9
  */
@@ -107,11 +107,12 @@ export default function Image(_ref) {
107
107
  canInsertBlockType
108
108
  } = select(blockEditorStore);
109
109
  const rootClientId = getBlockRootClientId(clientId);
110
- const settings = Object.fromEntries(Object.entries(getSettings()).filter(_ref2 => {
111
- let [key] = _ref2;
112
- return ['imageEditing', 'imageSizes', 'maxWidth', 'mediaUpload'].includes(key);
113
- }));
114
- return { ...settings,
110
+ const settings = getSettings();
111
+ return {
112
+ imageEditing: settings.imageEditing,
113
+ imageSizes: settings.imageSizes,
114
+ maxWidth: settings.maxWidth,
115
+ mediaUpload: settings.mediaUpload,
115
116
  canInsertCover: canInsertBlockType('core/cover', rootClientId)
116
117
  };
117
118
  }, [clientId]);
@@ -133,16 +134,18 @@ export default function Image(_ref) {
133
134
  const [externalBlob, setExternalBlob] = useState();
134
135
  const clientWidth = useClientWidth(containerRef, [align]);
135
136
  const isResizable = allowResize && !isContentLocked && !(isWideAligned && isLargeViewport);
136
- const imageSizeOptions = imageSizes.filter(_ref3 => {
137
+ const imageSizeOptions = imageSizes.filter(_ref2 => {
138
+ var _image$media_details, _image$media_details$, _image$media_details$2;
139
+
137
140
  let {
138
141
  slug
139
- } = _ref3;
140
- return get(image, ['media_details', 'sizes', slug, 'source_url']);
141
- }).map(_ref4 => {
142
+ } = _ref2;
143
+ return image === null || image === void 0 ? void 0 : (_image$media_details = image.media_details) === null || _image$media_details === void 0 ? void 0 : (_image$media_details$ = _image$media_details.sizes) === null || _image$media_details$ === void 0 ? void 0 : (_image$media_details$2 = _image$media_details$[slug]) === null || _image$media_details$2 === void 0 ? void 0 : _image$media_details$2.source_url;
144
+ }).map(_ref3 => {
142
145
  let {
143
146
  name,
144
147
  slug
145
- } = _ref4;
148
+ } = _ref3;
146
149
  return {
147
150
  value: slug,
148
151
  label: name
@@ -229,7 +232,9 @@ export default function Image(_ref) {
229
232
  }
230
233
 
231
234
  function updateImage(newSizeSlug) {
232
- const newUrl = get(image, ['media_details', 'sizes', newSizeSlug, 'source_url']);
235
+ var _image$media_details2, _image$media_details3, _image$media_details4;
236
+
237
+ const newUrl = image === null || image === void 0 ? void 0 : (_image$media_details2 = image.media_details) === null || _image$media_details2 === void 0 ? void 0 : (_image$media_details3 = _image$media_details2.sizes) === null || _image$media_details3 === void 0 ? void 0 : (_image$media_details4 = _image$media_details3[newSizeSlug]) === null || _image$media_details4 === void 0 ? void 0 : _image$media_details4.source_url;
233
238
 
234
239
  if (!newUrl) {
235
240
  return null;
@@ -247,8 +252,8 @@ export default function Image(_ref) {
247
252
  mediaUpload({
248
253
  filesList: [externalBlob],
249
254
 
250
- onFileChange(_ref5) {
251
- let [img] = _ref5;
255
+ onFileChange(_ref4) {
256
+ let [img] = _ref4;
252
257
  onSelectImage(img);
253
258
 
254
259
  if (isBlobURL(img.url)) {