@wordpress/block-library 9.6.1 → 9.7.1-next.5368f64a9.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 (409) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/archives/edit.js +1 -1
  3. package/build/archives/edit.js.map +1 -1
  4. package/build/audio/edit.js +2 -1
  5. package/build/audio/edit.js.map +1 -1
  6. package/build/block/edit.js +5 -8
  7. package/build/block/edit.js.map +1 -1
  8. package/build/button/edit.js +1 -1
  9. package/build/button/edit.js.map +1 -1
  10. package/build/buttons/index.js +1 -1
  11. package/build/categories/index.js +1 -0
  12. package/build/categories/index.js.map +1 -1
  13. package/build/comment-edit-link/index.js +13 -2
  14. package/build/comment-edit-link/index.js.map +1 -1
  15. package/build/comment-reply-link/index.js +13 -2
  16. package/build/comment-reply-link/index.js.map +1 -1
  17. package/build/comments/edit/comments-legacy.js +1 -0
  18. package/build/comments/edit/comments-legacy.js.map +1 -1
  19. package/build/cover/deprecated.js +1 -1
  20. package/build/cover/deprecated.js.map +1 -1
  21. package/build/cover/edit/block-controls.js +4 -2
  22. package/build/cover/edit/block-controls.js.map +1 -1
  23. package/build/cover/edit/index.js +6 -3
  24. package/build/cover/edit/index.js.map +1 -1
  25. package/build/cover/edit/inspector-controls.js +4 -12
  26. package/build/cover/edit/inspector-controls.js.map +1 -1
  27. package/build/details/index.js +3 -1
  28. package/build/details/index.js.map +1 -1
  29. package/build/details/transforms.js +24 -0
  30. package/build/details/transforms.js.map +1 -0
  31. package/build/embed/edit.js +5 -11
  32. package/build/embed/edit.js.map +1 -1
  33. package/build/embed/embed-placeholder.js +2 -0
  34. package/build/embed/embed-placeholder.js.map +1 -1
  35. package/build/embed/embed-preview.js +16 -4
  36. package/build/embed/embed-preview.js.map +1 -1
  37. package/build/file/edit.js +12 -1
  38. package/build/file/edit.js.map +1 -1
  39. package/build/file/transforms.js +18 -4
  40. package/build/file/transforms.js.map +1 -1
  41. package/build/freeform/edit.js +4 -4
  42. package/build/freeform/edit.js.map +1 -1
  43. package/build/freeform/modal.js +3 -0
  44. package/build/freeform/modal.js.map +1 -1
  45. package/build/home-link/edit.js +3 -9
  46. package/build/home-link/edit.js.map +1 -1
  47. package/build/image/edit.js +95 -45
  48. package/build/image/edit.js.map +1 -1
  49. package/build/image/image.js +39 -24
  50. package/build/image/image.js.map +1 -1
  51. package/build/image/transforms.js +0 -13
  52. package/build/image/transforms.js.map +1 -1
  53. package/build/image/use-max-width-observer.js +35 -0
  54. package/build/image/use-max-width-observer.js.map +1 -0
  55. package/build/image/utils.js +11 -0
  56. package/build/image/utils.js.map +1 -1
  57. package/build/latest-posts/edit.js +1 -1
  58. package/build/latest-posts/edit.js.map +1 -1
  59. package/build/media-text/deprecated.js +144 -3
  60. package/build/media-text/deprecated.js.map +1 -1
  61. package/build/media-text/edit.js +5 -5
  62. package/build/media-text/edit.js.map +1 -1
  63. package/build/media-text/image-fill.js +12 -0
  64. package/build/media-text/image-fill.js.map +1 -0
  65. package/build/media-text/media-container.js +21 -18
  66. package/build/media-text/media-container.js.map +1 -1
  67. package/build/media-text/media-container.native.js +0 -7
  68. package/build/media-text/media-container.native.js.map +1 -1
  69. package/build/media-text/save.js +5 -6
  70. package/build/media-text/save.js.map +1 -1
  71. package/build/missing/edit.js +3 -2
  72. package/build/missing/edit.js.map +1 -1
  73. package/build/navigation/edit/deleted-navigation-warning.js +14 -7
  74. package/build/navigation/edit/deleted-navigation-warning.js.map +1 -1
  75. package/build/navigation/edit/index.js +1 -0
  76. package/build/navigation/edit/index.js.map +1 -1
  77. package/build/navigation/edit/menu-inspector-controls.js +2 -1
  78. package/build/navigation/edit/menu-inspector-controls.js.map +1 -1
  79. package/build/navigation/edit/navigation-menu-delete-control.js +1 -0
  80. package/build/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  81. package/build/navigation/edit/placeholder/index.js +1 -0
  82. package/build/navigation/edit/placeholder/index.js.map +1 -1
  83. package/build/navigation/edit/responsive-wrapper.js +2 -0
  84. package/build/navigation/edit/responsive-wrapper.js.map +1 -1
  85. package/build/navigation/edit/unsaved-inner-blocks.js +4 -4
  86. package/build/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  87. package/build/navigation-link/link-ui.js +2 -1
  88. package/build/navigation-link/link-ui.js.map +1 -1
  89. package/build/page-list/convert-to-links-modal.js +2 -0
  90. package/build/page-list/convert-to-links-modal.js.map +1 -1
  91. package/build/page-list/edit.js +4 -1
  92. package/build/page-list/edit.js.map +1 -1
  93. package/build/post-comments-form/form.js +1 -0
  94. package/build/post-comments-form/form.js.map +1 -1
  95. package/build/post-featured-image/dimension-controls.js +6 -8
  96. package/build/post-featured-image/dimension-controls.js.map +1 -1
  97. package/build/post-featured-image/edit.js +2 -4
  98. package/build/post-featured-image/edit.js.map +1 -1
  99. package/build/post-title/index.js +4 -1
  100. package/build/post-title/index.js.map +1 -1
  101. package/build/query/edit/enhanced-pagination-modal.js +3 -2
  102. package/build/query/edit/enhanced-pagination-modal.js.map +1 -1
  103. package/build/query/edit/inspector-controls/enhanced-pagination-control.js +3 -3
  104. package/build/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
  105. package/build/query/edit/inspector-controls/index.js +2 -10
  106. package/build/query/edit/inspector-controls/index.js.map +1 -1
  107. package/build/query/edit/query-content.js +9 -3
  108. package/build/query/edit/query-content.js.map +1 -1
  109. package/build/query/edit/query-placeholder.js +2 -0
  110. package/build/query/edit/query-placeholder.js.map +1 -1
  111. package/build/site-logo/edit.js +9 -13
  112. package/build/site-logo/edit.js.map +1 -1
  113. package/build/site-title/index.js +4 -1
  114. package/build/site-title/index.js.map +1 -1
  115. package/build/social-link/edit.js +4 -1
  116. package/build/social-link/edit.js.map +1 -1
  117. package/build/social-links/edit.js +10 -9
  118. package/build/social-links/edit.js.map +1 -1
  119. package/build/template-part/edit/advanced-controls.js.map +1 -1
  120. package/build/template-part/edit/index.js +1 -1
  121. package/build/template-part/edit/index.js.map +1 -1
  122. package/build/template-part/edit/inner-blocks.js +10 -1
  123. package/build/template-part/edit/inner-blocks.js.map +1 -1
  124. package/build/template-part/edit/placeholder.js +2 -0
  125. package/build/template-part/edit/placeholder.js.map +1 -1
  126. package/build/utils/hooks.js +10 -10
  127. package/build/utils/hooks.js.map +1 -1
  128. package/build/video/edit.js +16 -12
  129. package/build/video/edit.js.map +1 -1
  130. package/build/video/tracks-editor.js +3 -0
  131. package/build/video/tracks-editor.js.map +1 -1
  132. package/build-module/archives/edit.js +1 -1
  133. package/build-module/archives/edit.js.map +1 -1
  134. package/build-module/audio/edit.js +2 -1
  135. package/build-module/audio/edit.js.map +1 -1
  136. package/build-module/block/edit.js +6 -9
  137. package/build-module/block/edit.js.map +1 -1
  138. package/build-module/button/edit.js +1 -1
  139. package/build-module/button/edit.js.map +1 -1
  140. package/build-module/buttons/index.js +1 -1
  141. package/build-module/categories/index.js +1 -0
  142. package/build-module/categories/index.js.map +1 -1
  143. package/build-module/comment-edit-link/index.js +13 -2
  144. package/build-module/comment-edit-link/index.js.map +1 -1
  145. package/build-module/comment-reply-link/index.js +13 -2
  146. package/build-module/comment-reply-link/index.js.map +1 -1
  147. package/build-module/comments/edit/comments-legacy.js +1 -0
  148. package/build-module/comments/edit/comments-legacy.js.map +1 -1
  149. package/build-module/cover/deprecated.js +1 -1
  150. package/build-module/cover/deprecated.js.map +1 -1
  151. package/build-module/cover/edit/block-controls.js +4 -2
  152. package/build-module/cover/edit/block-controls.js.map +1 -1
  153. package/build-module/cover/edit/index.js +6 -3
  154. package/build-module/cover/edit/index.js.map +1 -1
  155. package/build-module/cover/edit/inspector-controls.js +5 -13
  156. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  157. package/build-module/details/index.js +3 -1
  158. package/build-module/details/index.js.map +1 -1
  159. package/build-module/details/transforms.js +18 -0
  160. package/build-module/details/transforms.js.map +1 -0
  161. package/build-module/embed/edit.js +6 -12
  162. package/build-module/embed/edit.js.map +1 -1
  163. package/build-module/embed/embed-placeholder.js +2 -0
  164. package/build-module/embed/embed-placeholder.js.map +1 -1
  165. package/build-module/embed/embed-preview.js +16 -4
  166. package/build-module/embed/embed-preview.js.map +1 -1
  167. package/build-module/file/edit.js +12 -1
  168. package/build-module/file/edit.js.map +1 -1
  169. package/build-module/file/transforms.js +18 -4
  170. package/build-module/file/transforms.js.map +1 -1
  171. package/build-module/freeform/edit.js +4 -4
  172. package/build-module/freeform/edit.js.map +1 -1
  173. package/build-module/freeform/modal.js +3 -0
  174. package/build-module/freeform/modal.js.map +1 -1
  175. package/build-module/home-link/edit.js +3 -9
  176. package/build-module/home-link/edit.js.map +1 -1
  177. package/build-module/image/edit.js +99 -48
  178. package/build-module/image/edit.js.map +1 -1
  179. package/build-module/image/image.js +40 -25
  180. package/build-module/image/image.js.map +1 -1
  181. package/build-module/image/transforms.js +0 -13
  182. package/build-module/image/transforms.js.map +1 -1
  183. package/build-module/image/use-max-width-observer.js +29 -0
  184. package/build-module/image/use-max-width-observer.js.map +1 -0
  185. package/build-module/image/utils.js +11 -1
  186. package/build-module/image/utils.js.map +1 -1
  187. package/build-module/latest-posts/edit.js +1 -1
  188. package/build-module/latest-posts/edit.js.map +1 -1
  189. package/build-module/media-text/deprecated.js +144 -3
  190. package/build-module/media-text/deprecated.js.map +1 -1
  191. package/build-module/media-text/edit.js +5 -5
  192. package/build-module/media-text/edit.js.map +1 -1
  193. package/build-module/media-text/image-fill.js +6 -0
  194. package/build-module/media-text/image-fill.js.map +1 -0
  195. package/build-module/media-text/media-container.js +21 -17
  196. package/build-module/media-text/media-container.js.map +1 -1
  197. package/build-module/media-text/media-container.native.js +0 -1
  198. package/build-module/media-text/media-container.native.js.map +1 -1
  199. package/build-module/media-text/save.js +5 -6
  200. package/build-module/media-text/save.js.map +1 -1
  201. package/build-module/missing/edit.js +3 -2
  202. package/build-module/missing/edit.js.map +1 -1
  203. package/build-module/navigation/edit/deleted-navigation-warning.js +15 -8
  204. package/build-module/navigation/edit/deleted-navigation-warning.js.map +1 -1
  205. package/build-module/navigation/edit/index.js +1 -0
  206. package/build-module/navigation/edit/index.js.map +1 -1
  207. package/build-module/navigation/edit/menu-inspector-controls.js +2 -1
  208. package/build-module/navigation/edit/menu-inspector-controls.js.map +1 -1
  209. package/build-module/navigation/edit/navigation-menu-delete-control.js +1 -0
  210. package/build-module/navigation/edit/navigation-menu-delete-control.js.map +1 -1
  211. package/build-module/navigation/edit/placeholder/index.js +1 -0
  212. package/build-module/navigation/edit/placeholder/index.js.map +1 -1
  213. package/build-module/navigation/edit/responsive-wrapper.js +2 -0
  214. package/build-module/navigation/edit/responsive-wrapper.js.map +1 -1
  215. package/build-module/navigation/edit/unsaved-inner-blocks.js +4 -4
  216. package/build-module/navigation/edit/unsaved-inner-blocks.js.map +1 -1
  217. package/build-module/navigation-link/link-ui.js +4 -3
  218. package/build-module/navigation-link/link-ui.js.map +1 -1
  219. package/build-module/page-list/convert-to-links-modal.js +2 -0
  220. package/build-module/page-list/convert-to-links-modal.js.map +1 -1
  221. package/build-module/page-list/edit.js +4 -1
  222. package/build-module/page-list/edit.js.map +1 -1
  223. package/build-module/post-comments-form/form.js +1 -0
  224. package/build-module/post-comments-form/form.js.map +1 -1
  225. package/build-module/post-featured-image/dimension-controls.js +6 -8
  226. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  227. package/build-module/post-featured-image/edit.js +3 -5
  228. package/build-module/post-featured-image/edit.js.map +1 -1
  229. package/build-module/post-title/index.js +4 -1
  230. package/build-module/post-title/index.js.map +1 -1
  231. package/build-module/query/edit/enhanced-pagination-modal.js +3 -2
  232. package/build-module/query/edit/enhanced-pagination-modal.js.map +1 -1
  233. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js +3 -3
  234. package/build-module/query/edit/inspector-controls/enhanced-pagination-control.js.map +1 -1
  235. package/build-module/query/edit/inspector-controls/index.js +2 -10
  236. package/build-module/query/edit/inspector-controls/index.js.map +1 -1
  237. package/build-module/query/edit/query-content.js +10 -4
  238. package/build-module/query/edit/query-content.js.map +1 -1
  239. package/build-module/query/edit/query-placeholder.js +2 -0
  240. package/build-module/query/edit/query-placeholder.js.map +1 -1
  241. package/build-module/site-logo/edit.js +10 -14
  242. package/build-module/site-logo/edit.js.map +1 -1
  243. package/build-module/site-title/index.js +4 -1
  244. package/build-module/site-title/index.js.map +1 -1
  245. package/build-module/social-link/edit.js +4 -1
  246. package/build-module/social-link/edit.js.map +1 -1
  247. package/build-module/social-links/edit.js +11 -10
  248. package/build-module/social-links/edit.js.map +1 -1
  249. package/build-module/template-part/edit/advanced-controls.js.map +1 -1
  250. package/build-module/template-part/edit/index.js +1 -1
  251. package/build-module/template-part/edit/index.js.map +1 -1
  252. package/build-module/template-part/edit/inner-blocks.js +10 -1
  253. package/build-module/template-part/edit/inner-blocks.js.map +1 -1
  254. package/build-module/template-part/edit/placeholder.js +2 -0
  255. package/build-module/template-part/edit/placeholder.js.map +1 -1
  256. package/build-module/utils/hooks.js +10 -10
  257. package/build-module/utils/hooks.js.map +1 -1
  258. package/build-module/video/edit.js +16 -13
  259. package/build-module/video/edit.js.map +1 -1
  260. package/build-module/video/tracks-editor.js +3 -0
  261. package/build-module/video/tracks-editor.js.map +1 -1
  262. package/build-style/button/editor-rtl.css +0 -4
  263. package/build-style/button/editor.css +0 -4
  264. package/build-style/buttons/editor-rtl.css +2 -5
  265. package/build-style/buttons/editor.css +2 -5
  266. package/build-style/buttons/style-rtl.css +2 -2
  267. package/build-style/buttons/style.css +2 -2
  268. package/build-style/comment-edit-link/style-rtl.css +94 -0
  269. package/build-style/comment-edit-link/style.css +94 -0
  270. package/build-style/comment-reply-link/style-rtl.css +94 -0
  271. package/build-style/comment-reply-link/style.css +94 -0
  272. package/build-style/comments-pagination/editor-rtl.css +2 -2
  273. package/build-style/comments-pagination/editor.css +2 -2
  274. package/build-style/common-rtl.css +2 -2
  275. package/build-style/common.css +2 -2
  276. package/build-style/cover/editor-rtl.css +0 -6
  277. package/build-style/cover/editor.css +0 -6
  278. package/build-style/editor-rtl.css +35 -99
  279. package/build-style/editor.css +35 -101
  280. package/build-style/group/editor-rtl.css +0 -1
  281. package/build-style/group/editor.css +0 -1
  282. package/build-style/image/editor-rtl.css +6 -27
  283. package/build-style/image/editor.css +6 -27
  284. package/build-style/media-text/editor-rtl.css +3 -1
  285. package/build-style/media-text/editor.css +3 -1
  286. package/build-style/media-text/style-rtl.css +20 -0
  287. package/build-style/media-text/style.css +20 -0
  288. package/build-style/navigation/editor-rtl.css +1 -2
  289. package/build-style/navigation/editor.css +1 -2
  290. package/build-style/post-featured-image/style-rtl.css +1 -1
  291. package/build-style/post-featured-image/style.css +1 -1
  292. package/build-style/post-title/style-rtl.css +21 -0
  293. package/build-style/post-title/style.css +21 -0
  294. package/build-style/query-pagination/editor-rtl.css +2 -16
  295. package/build-style/query-pagination/editor.css +2 -18
  296. package/build-style/query-pagination/style-rtl.css +0 -11
  297. package/build-style/query-pagination/style.css +0 -13
  298. package/build-style/site-title/editor-rtl.css +0 -4
  299. package/build-style/site-title/editor.css +0 -4
  300. package/build-style/site-title/style-rtl.css +21 -0
  301. package/build-style/site-title/style.css +21 -0
  302. package/build-style/social-links/editor-rtl.css +17 -0
  303. package/build-style/social-links/editor.css +17 -0
  304. package/build-style/style-rtl.css +75 -16
  305. package/build-style/style.css +75 -18
  306. package/build-style/video/editor-rtl.css +0 -29
  307. package/build-style/video/editor.css +0 -29
  308. package/package.json +42 -35
  309. package/src/archives/edit.js +1 -1
  310. package/src/audio/edit.js +1 -0
  311. package/src/block/edit.js +9 -11
  312. package/src/button/edit.js +1 -1
  313. package/src/button/editor.scss +0 -5
  314. package/src/buttons/block.json +1 -1
  315. package/src/buttons/editor.scss +2 -8
  316. package/src/buttons/style.scss +2 -2
  317. package/src/categories/block.json +1 -0
  318. package/src/categories/index.php +13 -2
  319. package/src/comment-edit-link/block.json +13 -2
  320. package/src/comment-edit-link/style.scss +4 -0
  321. package/src/comment-reply-link/block.json +13 -2
  322. package/src/comment-reply-link/style.scss +4 -0
  323. package/src/comments/edit/comments-legacy.js +1 -0
  324. package/src/comments-pagination/editor.scss +1 -1
  325. package/src/cover/deprecated.js +3 -2
  326. package/src/cover/edit/block-controls.js +2 -0
  327. package/src/cover/edit/index.js +6 -1
  328. package/src/cover/edit/inspector-controls.js +3 -15
  329. package/src/cover/editor.scss +0 -5
  330. package/src/cover/test/edit.js +30 -26
  331. package/src/details/index.js +2 -0
  332. package/src/details/transforms.js +26 -0
  333. package/src/embed/edit.js +0 -7
  334. package/src/embed/embed-placeholder.js +10 -2
  335. package/src/embed/embed-preview.js +22 -2
  336. package/src/file/edit.js +11 -0
  337. package/src/file/index.php +1 -1
  338. package/src/file/transforms.js +26 -6
  339. package/src/freeform/edit.js +4 -4
  340. package/src/freeform/editor.scss +1 -1
  341. package/src/freeform/modal.js +7 -1
  342. package/src/gallery/editor.scss +1 -1
  343. package/src/group/editor.scss +0 -1
  344. package/src/home-link/edit.js +4 -7
  345. package/src/image/edit.js +130 -47
  346. package/src/image/editor.scss +7 -41
  347. package/src/image/image.js +100 -67
  348. package/src/image/index.php +1 -1
  349. package/src/image/transforms.js +0 -23
  350. package/src/image/use-max-width-observer.js +32 -0
  351. package/src/image/utils.js +13 -1
  352. package/src/latest-posts/edit.js +1 -1
  353. package/src/media-text/deprecated.js +159 -3
  354. package/src/media-text/edit.js +5 -5
  355. package/src/media-text/editor.scss +3 -1
  356. package/src/media-text/image-fill.js +11 -0
  357. package/src/media-text/index.php +53 -43
  358. package/src/media-text/media-container.js +25 -25
  359. package/src/media-text/media-container.native.js +0 -2
  360. package/src/media-text/save.js +9 -13
  361. package/src/media-text/style.scss +21 -0
  362. package/src/media-text/test/image-fill.js +19 -0
  363. package/src/missing/edit.js +8 -3
  364. package/src/navigation/edit/deleted-navigation-warning.js +23 -13
  365. package/src/navigation/edit/index.js +1 -0
  366. package/src/navigation/edit/menu-inspector-controls.js +3 -1
  367. package/src/navigation/edit/navigation-menu-delete-control.js +1 -0
  368. package/src/navigation/edit/placeholder/index.js +1 -0
  369. package/src/navigation/edit/responsive-wrapper.js +2 -0
  370. package/src/navigation/edit/unsaved-inner-blocks.js +4 -4
  371. package/src/navigation/editor.scss +11 -4
  372. package/src/navigation/index.php +1 -1
  373. package/src/navigation-link/link-ui.js +4 -3
  374. package/src/page-list/convert-to-links-modal.js +6 -1
  375. package/src/page-list/edit.js +6 -1
  376. package/src/page-list/index.php +3 -1
  377. package/src/post-comments-form/form.js +1 -0
  378. package/src/post-featured-image/dimension-controls.js +4 -4
  379. package/src/post-featured-image/edit.js +3 -6
  380. package/src/post-featured-image/style.scss +1 -1
  381. package/src/post-title/block.json +4 -1
  382. package/src/post-title/style.scss +24 -0
  383. package/src/query/edit/enhanced-pagination-modal.js +7 -3
  384. package/src/query/edit/inspector-controls/enhanced-pagination-control.js +3 -3
  385. package/src/query/edit/inspector-controls/index.js +2 -9
  386. package/src/query/edit/query-content.js +7 -0
  387. package/src/query/edit/query-placeholder.js +2 -0
  388. package/src/query/index.php +1 -1
  389. package/src/query-pagination/editor.scss +1 -21
  390. package/src/query-pagination/style.scss +0 -15
  391. package/src/search/index.php +1 -1
  392. package/src/site-logo/edit.js +11 -20
  393. package/src/site-title/block.json +4 -1
  394. package/src/site-title/editor.scss +0 -4
  395. package/src/site-title/style.scss +24 -0
  396. package/src/social-link/edit.js +2 -0
  397. package/src/social-links/edit.js +17 -10
  398. package/src/social-links/editor.scss +24 -5
  399. package/src/style.scss +2 -0
  400. package/src/tag-cloud/index.php +7 -2
  401. package/src/template-part/edit/advanced-controls.js +0 -1
  402. package/src/template-part/edit/index.js +12 -10
  403. package/src/template-part/edit/inner-blocks.js +20 -1
  404. package/src/template-part/edit/placeholder.js +6 -1
  405. package/src/utils/hooks.js +11 -11
  406. package/src/video/edit.js +24 -21
  407. package/src/video/editor.scss +0 -45
  408. package/src/video/tracks-editor.js +3 -0
  409. package/src/media-text/test/media-container.js +0 -24
@@ -16,9 +16,12 @@ var _element = require("@wordpress/element");
16
16
  var _i18n = require("@wordpress/i18n");
17
17
  var _icons = require("@wordpress/icons");
18
18
  var _notices = require("@wordpress/notices");
19
+ var _compose = require("@wordpress/compose");
19
20
  var _lockUnlock = require("../lock-unlock");
20
21
  var _hooks = require("../utils/hooks");
21
22
  var _image = _interopRequireDefault(require("./image"));
23
+ var _utils = require("./utils");
24
+ var _useMaxWidthObserver = require("./use-max-width-observer");
22
25
  var _constants = require("./constants");
23
26
  var _jsxRuntime = require("react/jsx-runtime");
24
27
  /**
@@ -94,6 +97,16 @@ function ImageEdit({
94
97
  metadata
95
98
  } = attributes;
96
99
  const [temporaryURL, setTemporaryURL] = (0, _element.useState)(attributes.blob);
100
+ const containerRef = (0, _element.useRef)();
101
+ // Only observe the max width from the parent container when the parent layout is not flex nor grid.
102
+ // This won't work for them because the container width changes with the image.
103
+ // TODO: Find a way to observe the container width for flex and grid layouts.
104
+ const isMaxWidthContainerWidth = !parentLayout || parentLayout.type !== 'flex' && parentLayout.type !== 'grid';
105
+ const [maxWidthObserver, maxContentWidth] = (0, _useMaxWidthObserver.useMaxWidthObserver)();
106
+ const [placeholderResizeListener, {
107
+ width: placeholderWidth
108
+ }] = (0, _compose.useResizeObserver)();
109
+ const isSmallContainer = placeholderWidth && placeholderWidth < 160;
97
110
  const altRef = (0, _element.useRef)();
98
111
  (0, _element.useEffect)(() => {
99
112
  altRef.current = alt;
@@ -103,7 +116,8 @@ function ImageEdit({
103
116
  captionRef.current = caption;
104
117
  }, [caption]);
105
118
  const {
106
- __unstableMarkNextChangeAsNotPersistent
119
+ __unstableMarkNextChangeAsNotPersistent,
120
+ replaceBlock
107
121
  } = (0, _data.useDispatch)(_blockEditor.store);
108
122
  (0, _element.useEffect)(() => {
109
123
  if (['wide', 'full'].includes(align)) {
@@ -117,7 +131,10 @@ function ImageEdit({
117
131
  }
118
132
  }, [__unstableMarkNextChangeAsNotPersistent, align, setAttributes]);
119
133
  const {
120
- getSettings
134
+ getSettings,
135
+ getBlockRootClientId,
136
+ getBlockName,
137
+ canInsertBlockType
121
138
  } = (0, _data.useSelect)(_blockEditor.store);
122
139
  const blockEditingMode = (0, _blockEditor.useBlockEditingMode)();
123
140
  const {
@@ -134,7 +151,35 @@ function ImageEdit({
134
151
  blob: undefined
135
152
  });
136
153
  }
154
+ function onSelectImagesList(images) {
155
+ const win = containerRef.current?.ownerDocument.defaultView;
156
+ if (images.every(file => file instanceof win.File)) {
157
+ /** @type {File[]} */
158
+ const files = images;
159
+ const rootClientId = getBlockRootClientId(clientId);
160
+ if (files.some(file => !(0, _utils.isValidFileType)(file))) {
161
+ // Copied from the same notice in the gallery block.
162
+ createErrorNotice((0, _i18n.__)('If uploading to a gallery all files need to be image formats'), {
163
+ id: 'gallery-upload-invalid-file',
164
+ type: 'snackbar'
165
+ });
166
+ }
167
+ const imageBlocks = files.filter(file => (0, _utils.isValidFileType)(file)).map(file => (0, _blocks.createBlock)('core/image', {
168
+ blob: (0, _blob.createBlobURL)(file)
169
+ }));
170
+ if (getBlockName(rootClientId) === 'core/gallery') {
171
+ replaceBlock(clientId, imageBlocks);
172
+ } else if (canInsertBlockType('core/gallery', rootClientId)) {
173
+ const galleryBlock = (0, _blocks.createBlock)('core/gallery', {}, imageBlocks);
174
+ replaceBlock(clientId, galleryBlock);
175
+ }
176
+ }
177
+ }
137
178
  function onSelectImage(media) {
179
+ if (Array.isArray(media)) {
180
+ onSelectImagesList(media);
181
+ return;
182
+ }
138
183
  if (!media || !media.url) {
139
184
  setAttributes({
140
185
  url: undefined,
@@ -265,6 +310,7 @@ function ImageEdit({
265
310
  'has-custom-border': !!borderProps.className || borderProps.style && Object.keys(borderProps.style).length > 0
266
311
  });
267
312
  const blockProps = (0, _blockEditor.useBlockProps)({
313
+ ref: containerRef,
268
314
  className: classes
269
315
  });
270
316
 
@@ -286,16 +332,16 @@ function ImageEdit({
286
332
  lockUrlControlsMessage: blockBindingsSource?.label ? (0, _i18n.sprintf)( /* translators: %s: Label of the bindings source. */
287
333
  (0, _i18n.__)('Connected to %s'), blockBindingsSource.label) : (0, _i18n.__)('Connected to dynamic data')
288
334
  };
289
- }, [isSingleSelected, metadata?.bindings?.url]);
335
+ }, [context, isSingleSelected, metadata?.bindings?.url]);
290
336
  const placeholder = content => {
291
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Placeholder, {
337
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.Placeholder, {
292
338
  className: (0, _clsx.default)('block-editor-media-placeholder', {
293
339
  [borderProps.className]: !!borderProps.className && !isSingleSelected
294
340
  }),
295
- withIllustration: true,
296
- icon: lockUrlControls ? _icons.plugins : _icons.image,
297
- label: (0, _i18n.__)('Image'),
298
- instructions: !lockUrlControls && (0, _i18n.__)('Upload an image file, pick one from your media library, or add one with a URL.'),
341
+ icon: !isSmallContainer && (lockUrlControls ? _icons.plugins : _icons.image),
342
+ withIllustration: !isSingleSelected || isSmallContainer,
343
+ label: !isSmallContainer && (0, _i18n.__)('Image'),
344
+ instructions: !lockUrlControls && !isSmallContainer && (0, _i18n.__)('Upload or drag an image file here, or pick one from your library.'),
299
345
  style: {
300
346
  aspectRatio: !(width && height) && aspectRatio ? aspectRatio : undefined,
301
347
  width: height && aspectRatio ? '100%' : width,
@@ -304,45 +350,49 @@ function ImageEdit({
304
350
  ...borderProps.style,
305
351
  ...shadowProps.style
306
352
  },
307
- children: lockUrlControls ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
308
- className: "block-bindings-media-placeholder-message",
309
- children: lockUrlControlsMessage
310
- }) : content
353
+ children: [lockUrlControls && !isSmallContainer && lockUrlControlsMessage, !lockUrlControls && !isSmallContainer && content, placeholderResizeListener]
311
354
  });
312
355
  };
313
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)("figure", {
314
- ...blockProps,
315
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_image.default, {
316
- temporaryURL: temporaryURL,
317
- attributes: attributes,
318
- setAttributes: setAttributes,
319
- isSingleSelected: isSingleSelected,
320
- insertBlocksAfter: insertBlocksAfter,
321
- onReplace: onReplace,
322
- onSelectImage: onSelectImage,
323
- onSelectURL: onSelectURL,
324
- onUploadError: onUploadError,
325
- context: context,
326
- clientId: clientId,
327
- blockEditingMode: blockEditingMode,
328
- parentLayoutType: parentLayout?.type
329
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.MediaPlaceholder, {
330
- icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.BlockIcon, {
331
- icon: _icons.image
332
- }),
333
- onSelect: onSelectImage,
334
- onSelectURL: onSelectURL,
335
- onError: onUploadError,
336
- placeholder: placeholder,
337
- accept: "image/*",
338
- allowedTypes: _constants.ALLOWED_MEDIA_TYPES,
339
- value: {
340
- id,
341
- src
342
- },
343
- mediaPreview: mediaPreview,
344
- disableMediaButtons: temporaryURL || url
345
- })]
356
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
357
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)("figure", {
358
+ ...blockProps,
359
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_image.default, {
360
+ temporaryURL: temporaryURL,
361
+ attributes: attributes,
362
+ setAttributes: setAttributes,
363
+ isSingleSelected: isSingleSelected,
364
+ insertBlocksAfter: insertBlocksAfter,
365
+ onReplace: onReplace,
366
+ onSelectImage: onSelectImage,
367
+ onSelectURL: onSelectURL,
368
+ onUploadError: onUploadError,
369
+ context: context,
370
+ clientId: clientId,
371
+ blockEditingMode: blockEditingMode,
372
+ parentLayoutType: parentLayout?.type,
373
+ maxContentWidth: maxContentWidth
374
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.MediaPlaceholder, {
375
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.BlockIcon, {
376
+ icon: _icons.image
377
+ }),
378
+ onSelect: onSelectImage,
379
+ onSelectURL: onSelectURL,
380
+ onError: onUploadError,
381
+ placeholder: placeholder,
382
+ accept: "image/*",
383
+ allowedTypes: _constants.ALLOWED_MEDIA_TYPES,
384
+ handleUpload: files => files.length === 1,
385
+ value: {
386
+ id,
387
+ src
388
+ },
389
+ mediaPreview: mediaPreview,
390
+ disableMediaButtons: temporaryURL || url
391
+ })]
392
+ }),
393
+ // The listener cannot be placed as the first element as it will break the in-between inserter.
394
+ // See https://github.com/WordPress/gutenberg/blob/71134165868298fc15e22896d0c28b41b3755ff7/packages/block-editor/src/components/block-list/use-in-between-inserter.js#L120
395
+ isSingleSelected && isMaxWidthContainerWidth && maxWidthObserver]
346
396
  });
347
397
  }
348
398
  var _default = exports.default = ImageEdit;
@@ -1 +1 @@
1
- {"version":3,"names":["_clsx","_interopRequireDefault","require","_blob","_blocks","_components","_data","_blockEditor","_element","_i18n","_icons","_notices","_lockUnlock","_hooks","_image","_constants","_jsxRuntime","pickRelevantMediaFiles","image","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","exports","isExternalImage","id","isBlobURL","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","isSingleSelected","className","insertBlocksAfter","onReplace","context","clientId","__unstableParentLayout","parentLayout","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","metadata","temporaryURL","setTemporaryURL","useState","blob","altRef","useRef","useEffect","current","captionRef","__unstableMarkNextChangeAsNotPersistent","useDispatch","blockEditorStore","undefined","getSettings","useSelect","blockEditingMode","useBlockEditingMode","createErrorNotice","noticesStore","onUploadError","message","type","src","onSelectImage","media","title","imageDefaultSize","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","settings","defaultProps","link","LINK_DESTINATION_NONE","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","href","onSelectURL","newURL","useUploadMediaFromBlobURL","allowedTypes","ALLOWED_MEDIA_TYPES","onChange","onError","isExternal","mediaPreview","jsx","__","borderProps","useBorderProps","shadowProps","getShadowClassesAndStyles","classes","clsx","style","keys","length","blockProps","useBlockProps","lockUrlControls","lockUrlControlsMessage","select","blockBindingsSource","unlock","blocksStore","getBlockBindingsSource","bindings","source","canUserEditValue","args","label","sprintf","placeholder","content","Placeholder","withIllustration","icon","pluginsIcon","instructions","objectFit","children","jsxs","default","parentLayoutType","MediaPlaceholder","BlockIcon","onSelect","accept","value","disableMediaButtons","_default"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { isBlobURL } from '@wordpress/blob';\nimport { store as blocksStore } from '@wordpress/blocks';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { image as icon, plugins as pluginsIcon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { useUploadMediaFromBlobURL } from '../utils/hooks';\nimport Image from './image';\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 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 the specified image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} size\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasSize( image, size ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ size ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ size ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected: isSingleSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n\t__unstableParentLayout: parentLayout,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t\tscale,\n\t\talign,\n\t\tmetadata,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );\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 { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( [ 'wide', 'full' ].includes( align ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\tscale: undefined,\n\t\t\t} );\n\t\t}\n\t}, [ __unstableMarkNextChangeAsNotPersistent, align, setAttributes ] );\n\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst blockEditingMode = useBlockEditingMode();\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\tblob: undefined,\n\t\t} );\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\tblob: undefined,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\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\tconst { imageDefaultSize } = getSettings();\n\n\t\t// Try to use the previous selected image size if its available\n\t\t// otherwise try the default image size or fallback to \"full\"\n\t\tlet newSize = 'full';\n\t\tif ( sizeSlug && hasSize( media, sizeSlug ) ) {\n\t\t\tnewSize = sizeSlug;\n\t\t} else if ( hasSize( media, imageDefaultSize ) ) {\n\t\t\tnewSize = imageDefaultSize;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, newSize );\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\tsizeSlug: newSize,\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Resolution\"\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\tblob: undefined,\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t\tsetTemporaryURL();\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\tblob: undefined,\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\tsizeSlug: getSettings().imageDefaultSize,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\n\t\t}\n\t}\n\n\tuseUploadMediaFromBlobURL( {\n\t\turl: temporaryURL,\n\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\tonChange: onSelectImage,\n\t\tonError: onUploadError,\n\t} );\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\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\n\tconst classes = clsx( 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 ||\n\t\t\t( borderProps.style &&\n\t\t\t\tObject.keys( borderProps.style ).length > 0 ),\n\t} );\n\n\tconst blockProps = useBlockProps( { className: classes } );\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst { lockUrlControls = false, lockUrlControlsMessage } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSingleSelected ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst blockBindingsSource = unlock(\n\t\t\t\tselect( blocksStore )\n\t\t\t).getBlockBindingsSource( metadata?.bindings?.url?.source );\n\n\t\t\treturn {\n\t\t\t\tlockUrlControls:\n\t\t\t\t\t!! metadata?.bindings?.url &&\n\t\t\t\t\t! blockBindingsSource?.canUserEditValue?.( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\targs: metadata?.bindings?.url?.args,\n\t\t\t\t\t} ),\n\t\t\t\tlockUrlControlsMessage: blockBindingsSource?.label\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: Label of the bindings source. */\n\t\t\t\t\t\t\t__( 'Connected to %s' ),\n\t\t\t\t\t\t\tblockBindingsSource.label\n\t\t\t\t\t )\n\t\t\t\t\t: __( 'Connected to dynamic data' ),\n\t\t\t};\n\t\t},\n\t\t[ isSingleSelected, metadata?.bindings?.url ]\n\t);\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ clsx( 'block-editor-media-placeholder', {\n\t\t\t\t\t[ borderProps.className ]:\n\t\t\t\t\t\t!! borderProps.className && ! isSingleSelected,\n\t\t\t\t} ) }\n\t\t\t\twithIllustration\n\t\t\t\ticon={ lockUrlControls ? pluginsIcon : icon }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tinstructions={\n\t\t\t\t\t! lockUrlControls &&\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tstyle={ {\n\t\t\t\t\taspectRatio:\n\t\t\t\t\t\t! ( width && height ) && aspectRatio\n\t\t\t\t\t\t\t? aspectRatio\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\twidth: height && aspectRatio ? '100%' : width,\n\t\t\t\t\theight: width && aspectRatio ? '100%' : height,\n\t\t\t\t\tobjectFit: scale,\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t...shadowProps.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ lockUrlControls ? (\n\t\t\t\t\t<span className=\"block-bindings-media-placeholder-message\">\n\t\t\t\t\t\t{ lockUrlControlsMessage }\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tcontent\n\t\t\t\t) }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t<Image\n\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSingleSelected={ isSingleSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\tcontext={ context }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t\tparentLayoutType={ parentLayout?.type }\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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_clsx","_interopRequireDefault","require","_blob","_blocks","_components","_data","_blockEditor","_element","_i18n","_icons","_notices","_compose","_lockUnlock","_hooks","_image","_utils","_useMaxWidthObserver","_constants","_jsxRuntime","pickRelevantMediaFiles","image","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","exports","isExternalImage","id","isBlobURL","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","isSingleSelected","className","insertBlocksAfter","onReplace","context","clientId","__unstableParentLayout","parentLayout","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","metadata","temporaryURL","setTemporaryURL","useState","blob","containerRef","useRef","isMaxWidthContainerWidth","type","maxWidthObserver","maxContentWidth","useMaxWidthObserver","placeholderResizeListener","placeholderWidth","useResizeObserver","isSmallContainer","altRef","useEffect","current","captionRef","__unstableMarkNextChangeAsNotPersistent","replaceBlock","useDispatch","blockEditorStore","undefined","getSettings","getBlockRootClientId","getBlockName","canInsertBlockType","useSelect","blockEditingMode","useBlockEditingMode","createErrorNotice","noticesStore","onUploadError","message","src","onSelectImagesList","images","win","ownerDocument","defaultView","every","file","File","files","rootClientId","some","isValidFileType","__","imageBlocks","map","createBlock","createBlobURL","galleryBlock","onSelectImage","media","Array","isArray","title","imageDefaultSize","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","settings","defaultProps","link","LINK_DESTINATION_NONE","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","href","onSelectURL","newURL","useUploadMediaFromBlobURL","allowedTypes","ALLOWED_MEDIA_TYPES","onChange","onError","isExternal","mediaPreview","jsx","borderProps","useBorderProps","shadowProps","getShadowClassesAndStyles","classes","clsx","style","keys","length","blockProps","useBlockProps","ref","lockUrlControls","lockUrlControlsMessage","select","blockBindingsSource","unlock","blocksStore","getBlockBindingsSource","bindings","source","canUserEditValue","args","label","sprintf","placeholder","content","jsxs","Placeholder","icon","pluginsIcon","withIllustration","instructions","objectFit","children","Fragment","default","parentLayoutType","MediaPlaceholder","BlockIcon","onSelect","accept","handleUpload","value","disableMediaButtons","_default"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { isBlobURL, createBlobURL } from '@wordpress/blob';\nimport { store as blocksStore, createBlock } from '@wordpress/blocks';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockIcon,\n\tuseBlockProps,\n\tMediaPlaceholder,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetShadowClassesAndStyles as getShadowClassesAndStyles,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { image as icon, plugins as pluginsIcon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\nimport { useResizeObserver } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../lock-unlock';\nimport { useUploadMediaFromBlobURL } from '../utils/hooks';\nimport Image from './image';\nimport { isValidFileType } from './utils';\nimport { useMaxWidthObserver } from './use-max-width-observer';\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 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 the specified image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} size\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasSize( image, size ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ size ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ size ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected: isSingleSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n\t__unstableParentLayout: parentLayout,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t\tscale,\n\t\talign,\n\t\tmetadata,\n\t} = attributes;\n\n\tconst [ temporaryURL, setTemporaryURL ] = useState( attributes.blob );\n\n\tconst containerRef = useRef();\n\t// Only observe the max width from the parent container when the parent layout is not flex nor grid.\n\t// This won't work for them because the container width changes with the image.\n\t// TODO: Find a way to observe the container width for flex and grid layouts.\n\tconst isMaxWidthContainerWidth =\n\t\t! parentLayout ||\n\t\t( parentLayout.type !== 'flex' && parentLayout.type !== 'grid' );\n\tconst [ maxWidthObserver, maxContentWidth ] = useMaxWidthObserver();\n\n\tconst [ placeholderResizeListener, { width: placeholderWidth } ] =\n\t\tuseResizeObserver();\n\n\tconst isSmallContainer = placeholderWidth && placeholderWidth < 160;\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 { __unstableMarkNextChangeAsNotPersistent, replaceBlock } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( [ 'wide', 'full' ].includes( align ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\tscale: undefined,\n\t\t\t} );\n\t\t}\n\t}, [ __unstableMarkNextChangeAsNotPersistent, align, setAttributes ] );\n\n\tconst {\n\t\tgetSettings,\n\t\tgetBlockRootClientId,\n\t\tgetBlockName,\n\t\tcanInsertBlockType,\n\t} = useSelect( blockEditorStore );\n\tconst blockEditingMode = useBlockEditingMode();\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\tblob: undefined,\n\t\t} );\n\t}\n\n\tfunction onSelectImagesList( images ) {\n\t\tconst win = containerRef.current?.ownerDocument.defaultView;\n\n\t\tif ( images.every( ( file ) => file instanceof win.File ) ) {\n\t\t\t/** @type {File[]} */\n\t\t\tconst files = images;\n\t\t\tconst rootClientId = getBlockRootClientId( clientId );\n\n\t\t\tif ( files.some( ( file ) => ! isValidFileType( file ) ) ) {\n\t\t\t\t// Copied from the same notice in the gallery block.\n\t\t\t\tcreateErrorNotice(\n\t\t\t\t\t__(\n\t\t\t\t\t\t'If uploading to a gallery all files need to be image formats'\n\t\t\t\t\t),\n\t\t\t\t\t{ id: 'gallery-upload-invalid-file', type: 'snackbar' }\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst imageBlocks = files\n\t\t\t\t.filter( ( file ) => isValidFileType( file ) )\n\t\t\t\t.map( ( file ) =>\n\t\t\t\t\tcreateBlock( 'core/image', {\n\t\t\t\t\t\tblob: createBlobURL( file ),\n\t\t\t\t\t} )\n\t\t\t\t);\n\n\t\t\tif ( getBlockName( rootClientId ) === 'core/gallery' ) {\n\t\t\t\treplaceBlock( clientId, imageBlocks );\n\t\t\t} else if ( canInsertBlockType( 'core/gallery', rootClientId ) ) {\n\t\t\t\tconst galleryBlock = createBlock(\n\t\t\t\t\t'core/gallery',\n\t\t\t\t\t{},\n\t\t\t\t\timageBlocks\n\t\t\t\t);\n\n\t\t\t\treplaceBlock( clientId, galleryBlock );\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( Array.isArray( media ) ) {\n\t\t\tonSelectImagesList( media );\n\t\t\treturn;\n\t\t}\n\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\tblob: undefined,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\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\tconst { imageDefaultSize } = getSettings();\n\n\t\t// Try to use the previous selected image size if its available\n\t\t// otherwise try the default image size or fallback to \"full\"\n\t\tlet newSize = 'full';\n\t\tif ( sizeSlug && hasSize( media, sizeSlug ) ) {\n\t\t\tnewSize = sizeSlug;\n\t\t} else if ( hasSize( media, imageDefaultSize ) ) {\n\t\t\tnewSize = imageDefaultSize;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, newSize );\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\tsizeSlug: newSize,\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Resolution\"\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\tblob: undefined,\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t\tsetTemporaryURL();\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\tblob: undefined,\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\tsizeSlug: getSettings().imageDefaultSize,\n\t\t\t} );\n\t\t\tsetTemporaryURL();\n\t\t}\n\t}\n\n\tuseUploadMediaFromBlobURL( {\n\t\turl: temporaryURL,\n\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\tonChange: onSelectImage,\n\t\tonError: onUploadError,\n\t} );\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\tconst shadowProps = getShadowClassesAndStyles( attributes );\n\n\tconst classes = clsx( 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 ||\n\t\t\t( borderProps.style &&\n\t\t\t\tObject.keys( borderProps.style ).length > 0 ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref: containerRef,\n\t\tclassName: classes,\n\t} );\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst { lockUrlControls = false, lockUrlControlsMessage } = useSelect(\n\t\t( select ) => {\n\t\t\tif ( ! isSingleSelected ) {\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\tconst blockBindingsSource = unlock(\n\t\t\t\tselect( blocksStore )\n\t\t\t).getBlockBindingsSource( metadata?.bindings?.url?.source );\n\n\t\t\treturn {\n\t\t\t\tlockUrlControls:\n\t\t\t\t\t!! metadata?.bindings?.url &&\n\t\t\t\t\t! blockBindingsSource?.canUserEditValue?.( {\n\t\t\t\t\t\tselect,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\targs: metadata?.bindings?.url?.args,\n\t\t\t\t\t} ),\n\t\t\t\tlockUrlControlsMessage: blockBindingsSource?.label\n\t\t\t\t\t? sprintf(\n\t\t\t\t\t\t\t/* translators: %s: Label of the bindings source. */\n\t\t\t\t\t\t\t__( 'Connected to %s' ),\n\t\t\t\t\t\t\tblockBindingsSource.label\n\t\t\t\t\t )\n\t\t\t\t\t: __( 'Connected to dynamic data' ),\n\t\t\t};\n\t\t},\n\t\t[ context, isSingleSelected, metadata?.bindings?.url ]\n\t);\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ clsx( 'block-editor-media-placeholder', {\n\t\t\t\t\t[ borderProps.className ]:\n\t\t\t\t\t\t!! borderProps.className && ! isSingleSelected,\n\t\t\t\t} ) }\n\t\t\t\ticon={\n\t\t\t\t\t! isSmallContainer &&\n\t\t\t\t\t( lockUrlControls ? pluginsIcon : icon )\n\t\t\t\t}\n\t\t\t\twithIllustration={ ! isSingleSelected || isSmallContainer }\n\t\t\t\tlabel={ ! isSmallContainer && __( 'Image' ) }\n\t\t\t\tinstructions={\n\t\t\t\t\t! lockUrlControls &&\n\t\t\t\t\t! isSmallContainer &&\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Upload or drag an image file here, or pick one from your library.'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tstyle={ {\n\t\t\t\t\taspectRatio:\n\t\t\t\t\t\t! ( width && height ) && aspectRatio\n\t\t\t\t\t\t\t? aspectRatio\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\twidth: height && aspectRatio ? '100%' : width,\n\t\t\t\t\theight: width && aspectRatio ? '100%' : height,\n\t\t\t\t\tobjectFit: scale,\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t...shadowProps.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ lockUrlControls &&\n\t\t\t\t\t! isSmallContainer &&\n\t\t\t\t\tlockUrlControlsMessage }\n\n\t\t\t\t{ ! lockUrlControls && ! isSmallContainer && content }\n\t\t\t\t{ placeholderResizeListener }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<figure { ...blockProps }>\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\tisSingleSelected={ isSingleSelected }\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\tcontext={ context }\n\t\t\t\t\tclientId={ clientId }\n\t\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t\t\tparentLayoutType={ parentLayout?.type }\n\t\t\t\t\tmaxContentWidth={ maxContentWidth }\n\t\t\t\t/>\n\t\t\t\t<MediaPlaceholder\n\t\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\t\tonError={ onUploadError }\n\t\t\t\t\tplaceholder={ placeholder }\n\t\t\t\t\taccept=\"image/*\"\n\t\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\t\thandleUpload={ ( files ) => files.length === 1 }\n\t\t\t\t\tvalue={ { id, src } }\n\t\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t\t/>\n\t\t\t</figure>\n\t\t\t{\n\t\t\t\t// The listener cannot be placed as the first element as it will break the in-between inserter.\n\t\t\t\t// See https://github.com/WordPress/gutenberg/blob/71134165868298fc15e22896d0c28b41b3755ff7/packages/block-editor/src/components/block-list/use-in-between-inserter.js#L120\n\t\t\t\tisSingleSelected && isMaxWidthContainerWidth && maxWidthObserver\n\t\t\t}\n\t\t</>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":"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","ignoreList":[]}
@@ -88,7 +88,8 @@ function Image({
88
88
  context,
89
89
  clientId,
90
90
  blockEditingMode,
91
- parentLayoutType
91
+ parentLayoutType,
92
+ maxContentWidth
92
93
  }) {
93
94
  const {
94
95
  url = '',
@@ -325,7 +326,7 @@ function Image({
325
326
  }
326
327
  }, [isSingleSelected]);
327
328
  const canEditImage = id && naturalWidth && naturalHeight && imageEditing;
328
- const allowCrop = isSingleSelected && canEditImage && !isEditingImage;
329
+ const allowCrop = isSingleSelected && canEditImage && !isEditingImage && !isContentOnlyMode;
329
330
  function switchToCover() {
330
331
  replaceBlocks(clientId, (0, _blocks.switchToBlockType)(getBlock(clientId), 'core/cover'));
331
332
  }
@@ -466,6 +467,20 @@ function Image({
466
467
  const showUrlInput = isSingleSelected && !isEditingImage && !lockHrefControls && !lockUrlControls;
467
468
  const showCoverControls = isSingleSelected && canInsertCover;
468
469
  const showBlockControls = showUrlInput || allowCrop || showCoverControls;
470
+ const mediaReplaceFlow = isSingleSelected && !isEditingImage && !lockUrlControls && /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.BlockControls, {
471
+ group: "other",
472
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.MediaReplaceFlow, {
473
+ mediaId: id,
474
+ mediaURL: url,
475
+ allowedTypes: _constants.ALLOWED_MEDIA_TYPES,
476
+ accept: "image/*",
477
+ onSelect: onSelectImage,
478
+ onSelectURL: onSelectURL,
479
+ onError: onUploadError,
480
+ name: !url ? (0, _i18n.__)('Add image') : (0, _i18n.__)('Replace'),
481
+ onReset: () => onSelectImage(undefined)
482
+ })
483
+ });
469
484
  const controls = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
470
485
  children: [showBlockControls && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_blockEditor.BlockControls, {
471
486
  group: "block",
@@ -491,21 +506,6 @@ function Image({
491
506
  label: (0, _i18n.__)('Add text over image'),
492
507
  onClick: switchToCover
493
508
  })]
494
- }), isSingleSelected && !isEditingImage && !lockUrlControls && /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.BlockControls, {
495
- group: "other",
496
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.MediaReplaceFlow, {
497
- mediaId: id,
498
- mediaURL: url,
499
- allowedTypes: _constants.ALLOWED_MEDIA_TYPES,
500
- accept: "image/*",
501
- onSelect: onSelectImage,
502
- onSelectURL: onSelectURL,
503
- onError: onUploadError,
504
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.MenuItem, {
505
- onClick: () => onSelectImage(undefined),
506
- children: (0, _i18n.__)('Reset')
507
- })
508
- })
509
509
  }), isSingleSelected && externalBlob && /*#__PURE__*/(0, _jsxRuntime.jsx)(_blockEditor.BlockControls, {
510
510
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarGroup, {
511
511
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarButton, {
@@ -538,7 +538,7 @@ function Image({
538
538
  onToggle();
539
539
  }
540
540
  },
541
- children: (0, _i18n._x)('Alt', 'Alternative text for an image. Block toolbar label, a low character count is preferred.')
541
+ children: (0, _i18n._x)('Alternative text', 'Alternative text for an image. Block toolbar label, a low character count is preferred.')
542
542
  }),
543
543
  renderContent: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.TextareaControl, {
544
544
  className: "wp-block-image__toolbar_content_textarea",
@@ -558,7 +558,7 @@ function Image({
558
558
  }),
559
559
  __nextHasNoMarginBottom: true
560
560
  })
561
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Dropdown, {
561
+ }), title && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Dropdown, {
562
562
  popoverProps: {
563
563
  position: 'bottom right'
564
564
  },
@@ -743,6 +743,7 @@ function Image({
743
743
  // @todo It would be good to revisit this once a content-width variable
744
744
  // becomes available.
745
745
  const maxWidthBuffer = maxWidth * 2.5;
746
+ const maxResizeWidth = maxContentWidth || maxWidthBuffer;
746
747
  let showRightHandle = false;
747
748
  let showLeftHandle = false;
748
749
 
@@ -783,9 +784,9 @@ function Image({
783
784
  },
784
785
  showHandle: isSingleSelected,
785
786
  minWidth: minWidth,
786
- maxWidth: maxWidthBuffer,
787
+ maxWidth: maxResizeWidth,
787
788
  minHeight: minHeight,
788
- maxHeight: maxWidthBuffer / ratio,
789
+ maxHeight: maxResizeWidth / ratio,
789
790
  lockAspectRatio: ratio,
790
791
  enable: {
791
792
  top: false,
@@ -796,6 +797,19 @@ function Image({
796
797
  onResizeStart: onResizeStart,
797
798
  onResizeStop: (event, direction, elt) => {
798
799
  onResizeStop();
800
+
801
+ // Clear hardcoded width if the resized width is close to the max-content width.
802
+ if (maxContentWidth &&
803
+ // Only do this if the image is bigger than the container to prevent it from being squished.
804
+ // TODO: Remove this check if the image support setting 100% width.
805
+ naturalWidth >= maxContentWidth && Math.abs(elt.offsetWidth - maxContentWidth) < 10) {
806
+ setAttributes({
807
+ width: undefined,
808
+ height: undefined
809
+ });
810
+ return;
811
+ }
812
+
799
813
  // Since the aspect ratio is locked when resizing, we can
800
814
  // use the width of the resized element to calculate the
801
815
  // height in CSS to prevent stretching when the max-width
@@ -814,11 +828,12 @@ function Image({
814
828
  });
815
829
  }
816
830
  if (!url && !temporaryURL) {
817
- // Add all controls if the image attributes are connected.
818
- return metadata?.bindings ? controls : sizeControls;
831
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
832
+ children: [mediaReplaceFlow, metadata?.bindings ? controls : sizeControls]
833
+ });
819
834
  }
820
835
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
821
- children: [controls, img, /*#__PURE__*/(0, _jsxRuntime.jsx)(_caption.Caption, {
836
+ children: [mediaReplaceFlow, controls, img, /*#__PURE__*/(0, _jsxRuntime.jsx)(_caption.Caption, {
822
837
  attributes: attributes,
823
838
  setAttributes: setAttributes,
824
839
  isSelected: isSingleSelected,