@wordpress/block-library 8.29.0 → 8.30.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 (347) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/audio/edit.js +7 -17
  3. package/build/audio/edit.js.map +1 -1
  4. package/build/audio/edit.native.js.map +1 -1
  5. package/build/avatar/edit.js.map +1 -1
  6. package/build/block/deprecated.js +71 -11
  7. package/build/block/deprecated.js.map +1 -1
  8. package/build/block/edit.js +49 -24
  9. package/build/block/edit.js.map +1 -1
  10. package/build/button/edit.js +2 -2
  11. package/build/button/edit.js.map +1 -1
  12. package/build/buttons/edit.native.js.map +1 -1
  13. package/build/buttons/transforms.js +16 -2
  14. package/build/buttons/transforms.js.map +1 -1
  15. package/build/code/transforms.js +17 -6
  16. package/build/code/transforms.js.map +1 -1
  17. package/build/columns/edit.js +3 -2
  18. package/build/columns/edit.js.map +1 -1
  19. package/build/comment-author-avatar/edit.js +1 -1
  20. package/build/comment-author-avatar/edit.js.map +1 -1
  21. package/build/cover/edit/block-controls.js +14 -3
  22. package/build/cover/edit/block-controls.js.map +1 -1
  23. package/build/cover/edit/index.js.map +1 -1
  24. package/build/cover/edit/inspector-controls.js.map +1 -1
  25. package/build/cover/edit/resizable-cover-popover.js +0 -6
  26. package/build/cover/edit/resizable-cover-popover.js.map +1 -1
  27. package/build/cover/edit.native.js.map +1 -1
  28. package/build/file/deprecated.js.map +1 -1
  29. package/build/file/edit.js +6 -13
  30. package/build/file/edit.js.map +1 -1
  31. package/build/file/edit.native.js.map +1 -1
  32. package/build/file/save.js.map +1 -1
  33. package/build/form-input/edit.js +1 -1
  34. package/build/form-input/edit.js.map +1 -1
  35. package/build/gallery/edit.js.map +1 -1
  36. package/build/gallery/gallery.native.js.map +1 -1
  37. package/build/gallery/v1/edit.js.map +1 -1
  38. package/build/gallery/v1/gallery.native.js.map +1 -1
  39. package/build/heading/transforms.js +17 -4
  40. package/build/heading/transforms.js.map +1 -1
  41. package/build/image/edit.js +8 -4
  42. package/build/image/edit.js.map +1 -1
  43. package/build/image/edit.native.js.map +1 -1
  44. package/build/image/image.js +22 -8
  45. package/build/image/image.js.map +1 -1
  46. package/build/latest-posts/edit.native.js.map +1 -1
  47. package/build/list/ordered-list-settings.js +1 -1
  48. package/build/list/ordered-list-settings.js.map +1 -1
  49. package/build/list-item/edit.js +1 -3
  50. package/build/list-item/edit.js.map +1 -1
  51. package/build/list-item/edit.native.js.map +1 -1
  52. package/build/list-item/hooks/index.js +0 -7
  53. package/build/list-item/hooks/index.js.map +1 -1
  54. package/build/list-item/hooks/use-indent-list-item.js +1 -0
  55. package/build/list-item/hooks/use-indent-list-item.js.map +1 -1
  56. package/build/list-item/hooks/use-outdent-list-item.js +1 -0
  57. package/build/list-item/hooks/use-outdent-list-item.js.map +1 -1
  58. package/build/list-item/hooks/use-space.js +16 -7
  59. package/build/list-item/hooks/use-space.js.map +1 -1
  60. package/build/list-item/index.js +4 -1
  61. package/build/list-item/index.js.map +1 -1
  62. package/build/media-text/media-container.native.js +1 -1
  63. package/build/media-text/media-container.native.js.map +1 -1
  64. package/build/navigation/edit/index.js.map +1 -1
  65. package/build/navigation-link/link-ui.js.map +1 -1
  66. package/build/paragraph/edit.native.js.map +1 -1
  67. package/build/pattern/edit.js +11 -0
  68. package/build/pattern/edit.js.map +1 -1
  69. package/build/post-excerpt/edit.js.map +1 -1
  70. package/build/post-featured-image/dimension-controls.js.map +1 -1
  71. package/build/post-featured-image/edit.js +8 -11
  72. package/build/post-featured-image/edit.js.map +1 -1
  73. package/build/post-navigation-link/edit.js.map +1 -1
  74. package/build/post-title/edit.js +2 -2
  75. package/build/post-title/edit.js.map +1 -1
  76. package/build/query/edit/pattern-selection-modal.js.map +1 -1
  77. package/build/query/utils.js +7 -5
  78. package/build/query/utils.js.map +1 -1
  79. package/build/query-pagination-next/edit.js.map +1 -1
  80. package/build/query-pagination-previous/edit.js.map +1 -1
  81. package/build/quote/deprecated.js +111 -12
  82. package/build/quote/deprecated.js.map +1 -1
  83. package/build/quote/edit.js +5 -5
  84. package/build/quote/edit.js.map +1 -1
  85. package/build/quote/index.js +1 -1
  86. package/build/quote/index.js.map +1 -1
  87. package/build/quote/save.js +2 -2
  88. package/build/quote/save.js.map +1 -1
  89. package/build/read-more/edit.js.map +1 -1
  90. package/build/search/edit.js +1 -1
  91. package/build/search/edit.js.map +1 -1
  92. package/build/search/edit.native.js.map +1 -1
  93. package/build/site-logo/edit.js +7 -2
  94. package/build/site-logo/edit.js.map +1 -1
  95. package/build/site-title/{edit/index.js → edit.js} +1 -1
  96. package/build/site-title/edit.js.map +1 -0
  97. package/build/social-link/edit.js.map +1 -1
  98. package/build/social-links/edit.native.js.map +1 -1
  99. package/build/spacer/edit.js.map +1 -1
  100. package/build/table-of-contents/edit.js.map +1 -1
  101. package/build/template-part/edit/index.js +53 -1
  102. package/build/template-part/edit/index.js.map +1 -1
  103. package/build/template-part/edit/selection-modal.js +2 -8
  104. package/build/template-part/edit/selection-modal.js.map +1 -1
  105. package/build/template-part/edit/utils/map-template-part-to-block-pattern.js +30 -0
  106. package/build/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
  107. package/build/utils/caption.js +15 -5
  108. package/build/utils/caption.js.map +1 -1
  109. package/build/utils/get-transformed-metadata.js +57 -0
  110. package/build/utils/get-transformed-metadata.js.map +1 -0
  111. package/build/utils/hooks.js +55 -4
  112. package/build/utils/hooks.js.map +1 -1
  113. package/build/video/edit-common-settings.js.map +1 -1
  114. package/build/video/edit.js +7 -16
  115. package/build/video/edit.js.map +1 -1
  116. package/build/video/edit.native.js +2 -7
  117. package/build/video/edit.native.js.map +1 -1
  118. package/build-module/audio/edit.js +10 -20
  119. package/build-module/audio/edit.js.map +1 -1
  120. package/build-module/audio/edit.native.js.map +1 -1
  121. package/build-module/avatar/edit.js.map +1 -1
  122. package/build-module/block/deprecated.js +71 -11
  123. package/build-module/block/deprecated.js.map +1 -1
  124. package/build-module/block/edit.js +49 -24
  125. package/build-module/block/edit.js.map +1 -1
  126. package/build-module/button/edit.js +3 -3
  127. package/build-module/button/edit.js.map +1 -1
  128. package/build-module/buttons/edit.native.js.map +1 -1
  129. package/build-module/buttons/transforms.js +16 -2
  130. package/build-module/buttons/transforms.js.map +1 -1
  131. package/build-module/code/transforms.js +17 -6
  132. package/build-module/code/transforms.js.map +1 -1
  133. package/build-module/columns/edit.js +3 -2
  134. package/build-module/columns/edit.js.map +1 -1
  135. package/build-module/comment-author-avatar/edit.js +1 -1
  136. package/build-module/comment-author-avatar/edit.js.map +1 -1
  137. package/build-module/cover/edit/block-controls.js +15 -4
  138. package/build-module/cover/edit/block-controls.js.map +1 -1
  139. package/build-module/cover/edit/index.js.map +1 -1
  140. package/build-module/cover/edit/inspector-controls.js.map +1 -1
  141. package/build-module/cover/edit/resizable-cover-popover.js +1 -7
  142. package/build-module/cover/edit/resizable-cover-popover.js.map +1 -1
  143. package/build-module/cover/edit.native.js.map +1 -1
  144. package/build-module/file/deprecated.js.map +1 -1
  145. package/build-module/file/edit.js +7 -14
  146. package/build-module/file/edit.js.map +1 -1
  147. package/build-module/file/edit.native.js.map +1 -1
  148. package/build-module/file/save.js.map +1 -1
  149. package/build-module/form-input/edit.js +1 -1
  150. package/build-module/form-input/edit.js.map +1 -1
  151. package/build-module/gallery/edit.js.map +1 -1
  152. package/build-module/gallery/gallery.native.js.map +1 -1
  153. package/build-module/gallery/v1/edit.js.map +1 -1
  154. package/build-module/gallery/v1/gallery.native.js.map +1 -1
  155. package/build-module/heading/transforms.js +17 -4
  156. package/build-module/heading/transforms.js.map +1 -1
  157. package/build-module/image/edit.js +9 -5
  158. package/build-module/image/edit.js.map +1 -1
  159. package/build-module/image/edit.native.js.map +1 -1
  160. package/build-module/image/image.js +23 -9
  161. package/build-module/image/image.js.map +1 -1
  162. package/build-module/latest-posts/edit.native.js.map +1 -1
  163. package/build-module/list/ordered-list-settings.js +1 -1
  164. package/build-module/list/ordered-list-settings.js.map +1 -1
  165. package/build-module/list-item/edit.js +2 -4
  166. package/build-module/list-item/edit.js.map +1 -1
  167. package/build-module/list-item/edit.native.js.map +1 -1
  168. package/build-module/list-item/hooks/index.js +0 -1
  169. package/build-module/list-item/hooks/index.js.map +1 -1
  170. package/build-module/list-item/hooks/use-indent-list-item.js +1 -0
  171. package/build-module/list-item/hooks/use-indent-list-item.js.map +1 -1
  172. package/build-module/list-item/hooks/use-outdent-list-item.js +1 -0
  173. package/build-module/list-item/hooks/use-outdent-list-item.js.map +1 -1
  174. package/build-module/list-item/hooks/use-space.js +17 -8
  175. package/build-module/list-item/hooks/use-space.js.map +1 -1
  176. package/build-module/list-item/index.js +4 -1
  177. package/build-module/list-item/index.js.map +1 -1
  178. package/build-module/media-text/media-container.native.js +1 -1
  179. package/build-module/media-text/media-container.native.js.map +1 -1
  180. package/build-module/navigation/edit/index.js.map +1 -1
  181. package/build-module/navigation-link/link-ui.js.map +1 -1
  182. package/build-module/paragraph/edit.native.js.map +1 -1
  183. package/build-module/pattern/edit.js +11 -0
  184. package/build-module/pattern/edit.js.map +1 -1
  185. package/build-module/post-excerpt/edit.js.map +1 -1
  186. package/build-module/post-featured-image/dimension-controls.js.map +1 -1
  187. package/build-module/post-featured-image/edit.js +9 -12
  188. package/build-module/post-featured-image/edit.js.map +1 -1
  189. package/build-module/post-navigation-link/edit.js.map +1 -1
  190. package/build-module/post-title/edit.js +2 -2
  191. package/build-module/post-title/edit.js.map +1 -1
  192. package/build-module/query/edit/pattern-selection-modal.js.map +1 -1
  193. package/build-module/query/utils.js +7 -5
  194. package/build-module/query/utils.js.map +1 -1
  195. package/build-module/query-pagination-next/edit.js.map +1 -1
  196. package/build-module/query-pagination-previous/edit.js.map +1 -1
  197. package/build-module/quote/deprecated.js +112 -13
  198. package/build-module/quote/deprecated.js.map +1 -1
  199. package/build-module/quote/edit.js +5 -5
  200. package/build-module/quote/edit.js.map +1 -1
  201. package/build-module/quote/index.js +1 -1
  202. package/build-module/quote/index.js.map +1 -1
  203. package/build-module/quote/save.js +2 -2
  204. package/build-module/quote/save.js.map +1 -1
  205. package/build-module/read-more/edit.js.map +1 -1
  206. package/build-module/search/edit.js +1 -1
  207. package/build-module/search/edit.js.map +1 -1
  208. package/build-module/search/edit.native.js.map +1 -1
  209. package/build-module/site-logo/edit.js +7 -2
  210. package/build-module/site-logo/edit.js.map +1 -1
  211. package/build-module/site-title/{edit/index.js → edit.js} +1 -1
  212. package/build-module/site-title/edit.js.map +1 -0
  213. package/build-module/social-link/edit.js.map +1 -1
  214. package/build-module/social-links/edit.native.js.map +1 -1
  215. package/build-module/spacer/edit.js.map +1 -1
  216. package/build-module/table-of-contents/edit.js.map +1 -1
  217. package/build-module/template-part/edit/index.js +57 -5
  218. package/build-module/template-part/edit/index.js.map +1 -1
  219. package/build-module/template-part/edit/selection-modal.js +2 -8
  220. package/build-module/template-part/edit/selection-modal.js.map +1 -1
  221. package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js +24 -0
  222. package/build-module/template-part/edit/utils/map-template-part-to-block-pattern.js.map +1 -0
  223. package/build-module/utils/caption.js +13 -3
  224. package/build-module/utils/caption.js.map +1 -1
  225. package/build-module/utils/get-transformed-metadata.js +51 -0
  226. package/build-module/utils/get-transformed-metadata.js.map +1 -0
  227. package/build-module/utils/hooks.js +54 -3
  228. package/build-module/utils/hooks.js.map +1 -1
  229. package/build-module/video/edit-common-settings.js.map +1 -1
  230. package/build-module/video/edit.js +10 -19
  231. package/build-module/video/edit.js.map +1 -1
  232. package/build-module/video/edit.native.js +2 -7
  233. package/build-module/video/edit.native.js.map +1 -1
  234. package/build-style/common-rtl.css +1 -0
  235. package/build-style/common.css +1 -0
  236. package/build-style/cover/style-rtl.css +2 -1
  237. package/build-style/cover/style.css +2 -1
  238. package/build-style/editor-rtl.css +4 -1
  239. package/build-style/editor.css +4 -1
  240. package/build-style/group/editor-rtl.css +1 -1
  241. package/build-style/group/editor.css +1 -1
  242. package/build-style/image/editor-rtl.css +3 -0
  243. package/build-style/image/editor.css +3 -0
  244. package/build-style/search/style-rtl.css +2 -0
  245. package/build-style/search/style.css +2 -0
  246. package/build-style/style-rtl.css +4 -1
  247. package/build-style/style.css +4 -1
  248. package/package.json +34 -34
  249. package/src/audio/edit.js +9 -19
  250. package/src/audio/edit.native.js +3 -3
  251. package/src/avatar/edit.js +1 -1
  252. package/src/block/deprecated.js +76 -11
  253. package/src/block/edit.js +64 -19
  254. package/src/block/index.php +23 -12
  255. package/src/button/edit.js +4 -3
  256. package/src/buttons/edit.native.js +1 -1
  257. package/src/buttons/transforms.js +14 -4
  258. package/src/calendar/index.php +5 -0
  259. package/src/code/transforms.js +20 -5
  260. package/src/columns/edit.js +3 -2
  261. package/src/comment-author-avatar/edit.js +1 -1
  262. package/src/comments/index.php +2 -0
  263. package/src/cover/edit/block-controls.js +16 -2
  264. package/src/cover/edit/index.js +2 -2
  265. package/src/cover/edit/inspector-controls.js +1 -1
  266. package/src/cover/edit/resizable-cover-popover.js +1 -6
  267. package/src/cover/edit.native.js +1 -1
  268. package/src/cover/style.scss +3 -2
  269. package/src/file/deprecated.js +3 -3
  270. package/src/file/edit.js +8 -15
  271. package/src/file/edit.native.js +4 -4
  272. package/src/file/save.js +1 -1
  273. package/src/footnotes/index.php +1 -1
  274. package/src/form-input/edit.js +1 -1
  275. package/src/gallery/edit.js +3 -3
  276. package/src/gallery/gallery.native.js +1 -1
  277. package/src/gallery/test/index.native.js +1 -1
  278. package/src/gallery/v1/edit.js +2 -2
  279. package/src/gallery/v1/gallery.native.js +1 -1
  280. package/src/group/editor.scss +1 -1
  281. package/src/heading/transforms.js +27 -8
  282. package/src/image/edit.js +13 -5
  283. package/src/image/edit.native.js +1 -1
  284. package/src/image/editor.scss +6 -0
  285. package/src/image/image.js +34 -22
  286. package/src/latest-posts/edit.native.js +1 -1
  287. package/src/list/ordered-list-settings.js +1 -1
  288. package/src/list-item/edit.js +1 -2
  289. package/src/list-item/edit.native.js +1 -1
  290. package/src/list-item/hooks/index.js +0 -1
  291. package/src/list-item/hooks/use-indent-list-item.js +2 -0
  292. package/src/list-item/hooks/use-outdent-list-item.js +2 -0
  293. package/src/list-item/hooks/use-space.js +16 -9
  294. package/src/list-item/index.js +3 -0
  295. package/src/media-text/media-container.native.js +5 -3
  296. package/src/media-text/test/edit.native.js +58 -0
  297. package/src/missing/test/edit-integration.native.js +2 -1
  298. package/src/navigation/edit/index.js +1 -1
  299. package/src/navigation/edit/test/navigation-menu-selector.js +3 -3
  300. package/src/navigation/index.php +26 -17
  301. package/src/navigation-link/link-ui.js +2 -2
  302. package/src/paragraph/edit.native.js +1 -1
  303. package/src/paragraph/test/edit.native.js +36 -0
  304. package/src/pattern/edit.js +14 -0
  305. package/src/post-excerpt/edit.js +1 -1
  306. package/src/post-featured-image/dimension-controls.js +4 -4
  307. package/src/post-featured-image/edit.js +10 -12
  308. package/src/post-navigation-link/edit.js +1 -1
  309. package/src/post-template/index.php +2 -0
  310. package/src/post-title/edit.js +49 -43
  311. package/src/query/edit/pattern-selection-modal.js +1 -1
  312. package/src/query/utils.js +6 -4
  313. package/src/query-pagination-next/edit.js +1 -1
  314. package/src/query-pagination-previous/edit.js +1 -1
  315. package/src/quote/block.json +1 -1
  316. package/src/quote/deprecated.js +110 -15
  317. package/src/quote/edit.js +5 -5
  318. package/src/quote/save.js +2 -2
  319. package/src/quote/test/__snapshots__/transforms.native.js.snap +2 -2
  320. package/src/read-more/edit.js +1 -1
  321. package/src/search/edit.js +1 -1
  322. package/src/search/edit.native.js +4 -4
  323. package/src/search/index.php +1 -1
  324. package/src/search/style.scss +2 -0
  325. package/src/site-logo/edit.js +11 -6
  326. package/src/social-link/edit.js +1 -1
  327. package/src/social-links/edit.native.js +1 -1
  328. package/src/spacer/edit.js +1 -1
  329. package/src/table-of-contents/edit.js +1 -1
  330. package/src/template-part/edit/index.js +91 -4
  331. package/src/template-part/edit/selection-modal.js +4 -8
  332. package/src/template-part/edit/utils/map-template-part-to-block-pattern.js +23 -0
  333. package/src/utils/caption.js +10 -1
  334. package/src/utils/get-transformed-metadata.js +65 -0
  335. package/src/utils/hooks.js +53 -3
  336. package/src/video/edit-common-settings.js +1 -1
  337. package/src/video/edit.js +10 -18
  338. package/src/video/edit.native.js +5 -8
  339. package/src/video/test/edit.native.js +0 -14
  340. package/build/list-item/hooks/use-copy.js +0 -39
  341. package/build/list-item/hooks/use-copy.js.map +0 -1
  342. package/build/site-title/edit/index.js.map +0 -1
  343. package/build-module/list-item/hooks/use-copy.js +0 -32
  344. package/build-module/list-item/hooks/use-copy.js.map +0 -1
  345. package/build-module/site-title/edit/index.js.map +0 -1
  346. package/src/list-item/hooks/use-copy.js +0 -38
  347. /package/src/site-title/{edit/index.js → edit.js} +0 -0
@@ -217,8 +217,7 @@ class VideoEdit extends Component {
217
217
  } = this.props;
218
218
  const {
219
219
  id,
220
- src,
221
- guid
220
+ src
222
221
  } = attributes;
223
222
  const {
224
223
  videoContainerHeight
@@ -239,11 +238,7 @@ class VideoEdit extends Component {
239
238
  }));
240
239
  }
241
240
  });
242
-
243
- // NOTE: `guid` is not part of the block's attribute definition. This case
244
- // handled here is a temporary fix until a we find a better approach.
245
- const isSourcePresent = src || guid && id;
246
- if (!isSourcePresent) {
241
+ if (!src) {
247
242
  return createElement(View, {
248
243
  style: {
249
244
  flex: 1
@@ -1 +1 @@
1
- {"version":3,"names":["View","TouchableWithoutFeedback","Text","Component","mediaUploadSync","requestImageFailedRetryDialog","requestImageUploadCancelDialog","Icon","ToolbarButton","ToolbarGroup","PanelBody","withPreferredColorScheme","compose","BlockCaption","MediaPlaceholder","MediaUpload","MediaUploadProgress","MEDIA_TYPE_VIDEO","BlockControls","VIDEO_ASPECT_RATIO","VideoPlayer","InspectorControls","RichText","store","blockEditorStore","__","sprintf","isURL","getProtocol","doAction","hasAction","video","SvgIcon","replace","withDispatch","withSelect","noticesStore","createUpgradedEmbedBlock","style","SvgIconRetry","VideoCommonSettings","ICON_TYPE","PLACEHOLDER","RETRY","UPLOAD","VideoEdit","constructor","props","state","isCaptionSelected","videoContainerHeight","mediaUploadStateReset","bind","onSelectMediaUploadOption","onSelectURL","finishMediaUploadWithSuccess","finishMediaUploadWithFailure","updateMediaProgress","onVideoPressed","onVideoContanerLayout","onFocusCaption","componentDidMount","attributes","id","src","componentWillUnmount","isUploadInProgress","getDerivedStateFromProps","isSelected","setState","payload","setAttributes","mediaUrl","url","mediaServerId","mediaId","createErrorNotice","onReplace","test","embedBlock","undefined","poster","event","width","nativeEvent","layout","height","getIcon","iconType","iconStyle","createElement","icon","getStylesFromColorScheme","iconDark","iconUploading","iconUploadingDark","render","wasBlockJustInserted","guid","toolbarEditButton","allowedTypes","isReplacingMedia","onSelect","open","getMediaOptions","label","onClick","isSourcePresent","flex","onFocus","autoOpenMediaUpload","accessible","onPress","disabled","title","onFinishMediaUploadWithSuccess","onFinishMediaUploadWithFailure","onUpdateMediaProgress","onMediaUploadStateReset","renderContent","isUploadFailed","retryMessage","showVideo","styleIconContainer","modalIconRetry","modalIcon","iconContainer","videoStyle","containerStyle","containerFocused","container","onLayout","videoContainer","source","uri","paused","placeholderContainer","placeholderContainerDark","uploadFailedText","accessibilityLabelCreator","caption","isEmpty","clientId","onBlur","insertBlocksAfter","select","dispatch"],"sources":["@wordpress/block-library/src/video/edit.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View, TouchableWithoutFeedback, Text } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport {\n\tmediaUploadSync,\n\trequestImageFailedRetryDialog,\n\trequestImageUploadCancelDialog,\n} from '@wordpress/react-native-bridge';\nimport {\n\tIcon,\n\tToolbarButton,\n\tToolbarGroup,\n\tPanelBody,\n} from '@wordpress/components';\nimport { withPreferredColorScheme, compose } from '@wordpress/compose';\nimport {\n\tBlockCaption,\n\tMediaPlaceholder,\n\tMediaUpload,\n\tMediaUploadProgress,\n\tMEDIA_TYPE_VIDEO,\n\tBlockControls,\n\tVIDEO_ASPECT_RATIO,\n\tVideoPlayer,\n\tInspectorControls,\n\tRichText,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { isURL, getProtocol } from '@wordpress/url';\nimport { doAction, hasAction } from '@wordpress/hooks';\nimport { video as SvgIcon, replace } from '@wordpress/icons';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport style from './style.scss';\nimport SvgIconRetry from './icon-retry';\nimport VideoCommonSettings from './edit-common-settings';\n\nconst ICON_TYPE = {\n\tPLACEHOLDER: 'placeholder',\n\tRETRY: 'retry',\n\tUPLOAD: 'upload',\n};\n\nclass VideoEdit extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.state = {\n\t\t\tisCaptionSelected: false,\n\t\t\tvideoContainerHeight: 0,\n\t\t};\n\n\t\tthis.mediaUploadStateReset = this.mediaUploadStateReset.bind( this );\n\t\tthis.onSelectMediaUploadOption =\n\t\t\tthis.onSelectMediaUploadOption.bind( this );\n\t\tthis.onSelectURL = this.onSelectURL.bind( this );\n\t\tthis.finishMediaUploadWithSuccess =\n\t\t\tthis.finishMediaUploadWithSuccess.bind( this );\n\t\tthis.finishMediaUploadWithFailure =\n\t\t\tthis.finishMediaUploadWithFailure.bind( this );\n\t\tthis.updateMediaProgress = this.updateMediaProgress.bind( this );\n\t\tthis.onVideoPressed = this.onVideoPressed.bind( this );\n\t\tthis.onVideoContanerLayout = this.onVideoContanerLayout.bind( this );\n\t\tthis.onFocusCaption = this.onFocusCaption.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tconst { attributes } = this.props;\n\t\tif ( attributes.id && getProtocol( attributes.src ) === 'file:' ) {\n\t\t\tmediaUploadSync();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// This action will only exist if the user pressed the trash button on the block holder.\n\t\tif (\n\t\t\thasAction( 'blocks.onRemoveBlockCheckUpload' ) &&\n\t\t\tthis.state.isUploadInProgress\n\t\t) {\n\t\t\tdoAction(\n\t\t\t\t'blocks.onRemoveBlockCheckUpload',\n\t\t\t\tthis.props.attributes.id\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getDerivedStateFromProps( props, state ) {\n\t\t// Avoid a UI flicker in the toolbar by insuring that isCaptionSelected\n\t\t// is updated immediately any time the isSelected prop becomes false.\n\t\treturn {\n\t\t\tisCaptionSelected: props.isSelected && state.isCaptionSelected,\n\t\t};\n\t}\n\n\tonVideoPressed() {\n\t\tconst { attributes } = this.props;\n\n\t\tif ( this.state.isUploadInProgress ) {\n\t\t\trequestImageUploadCancelDialog( attributes.id );\n\t\t} else if (\n\t\t\tattributes.id &&\n\t\t\tgetProtocol( attributes.src ) === 'file:'\n\t\t) {\n\t\t\trequestImageFailedRetryDialog( attributes.id );\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tisCaptionSelected: false,\n\t\t} );\n\t}\n\n\tonFocusCaption() {\n\t\tif ( ! this.state.isCaptionSelected ) {\n\t\t\tthis.setState( { isCaptionSelected: true } );\n\t\t}\n\t}\n\n\tupdateMediaProgress( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tif ( payload.mediaUrl ) {\n\t\t\tsetAttributes( { url: payload.mediaUrl } );\n\t\t}\n\t\tif ( ! this.state.isUploadInProgress ) {\n\t\t\tthis.setState( { isUploadInProgress: true } );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithSuccess( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { src: payload.mediaUrl, id: payload.mediaServerId } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tfinishMediaUploadWithFailure( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id: payload.mediaId } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tmediaUploadStateReset() {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id: null, src: null } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tonSelectMediaUploadOption( { id, url } ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id, src: url } );\n\t}\n\n\tonSelectURL( url ) {\n\t\tconst { createErrorNotice, onReplace, setAttributes } = this.props;\n\n\t\tif ( isURL( url ) && /^https?:/.test( getProtocol( url ) ) ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetAttributes( { src: url, id: undefined, poster: undefined } );\n\t\t} else {\n\t\t\tcreateErrorNotice( __( 'Invalid URL.' ) );\n\t\t}\n\t}\n\n\tonVideoContanerLayout( event ) {\n\t\tconst { width } = event.nativeEvent.layout;\n\t\tconst height = width / VIDEO_ASPECT_RATIO;\n\t\tif ( height !== this.state.videoContainerHeight ) {\n\t\t\tthis.setState( { videoContainerHeight: height } );\n\t\t}\n\t}\n\n\tgetIcon( iconType ) {\n\t\tlet iconStyle;\n\t\tswitch ( iconType ) {\n\t\t\tcase ICON_TYPE.RETRY:\n\t\t\t\treturn <Icon icon={ SvgIconRetry } { ...style.icon } />;\n\t\t\tcase ICON_TYPE.PLACEHOLDER:\n\t\t\t\ticonStyle = this.props.getStylesFromColorScheme(\n\t\t\t\t\tstyle.icon,\n\t\t\t\t\tstyle.iconDark\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.UPLOAD:\n\t\t\t\ticonStyle = this.props.getStylesFromColorScheme(\n\t\t\t\t\tstyle.iconUploading,\n\t\t\t\t\tstyle.iconUploadingDark\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn <Icon icon={ SvgIcon } { ...iconStyle } />;\n\t}\n\n\trender() {\n\t\tconst { setAttributes, attributes, isSelected, wasBlockJustInserted } =\n\t\t\tthis.props;\n\t\tconst { id, src, guid } = attributes;\n\t\tconst { videoContainerHeight } = this.state;\n\n\t\tconst toolbarEditButton = (\n\t\t\t<MediaUpload\n\t\t\t\tallowedTypes={ [ MEDIA_TYPE_VIDEO ] }\n\t\t\t\tisReplacingMedia={ true }\n\t\t\t\tonSelect={ this.onSelectMediaUploadOption }\n\t\t\t\tonSelectURL={ this.onSelectURL }\n\t\t\t\trender={ ( { open, getMediaOptions } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t\t{ getMediaOptions() }\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tlabel={ __( 'Edit video' ) }\n\t\t\t\t\t\t\t\ticon={ replace }\n\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t></MediaUpload>\n\t\t);\n\n\t\t// NOTE: `guid` is not part of the block's attribute definition. This case\n\t\t// handled here is a temporary fix until a we find a better approach.\n\t\tconst isSourcePresent = src || ( guid && id );\n\t\tif ( ! isSourcePresent ) {\n\t\t\treturn (\n\t\t\t\t<View style={ { flex: 1 } }>\n\t\t\t\t\t<MediaPlaceholder\n\t\t\t\t\t\tallowedTypes={ [ MEDIA_TYPE_VIDEO ] }\n\t\t\t\t\t\tonSelect={ this.onSelectMediaUploadOption }\n\t\t\t\t\t\tonSelectURL={ this.onSelectURL }\n\t\t\t\t\t\ticon={ this.getIcon( ICON_TYPE.PLACEHOLDER ) }\n\t\t\t\t\t\tonFocus={ this.props.onFocus }\n\t\t\t\t\t\tautoOpenMediaUpload={\n\t\t\t\t\t\t\tisSelected && wasBlockJustInserted\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<TouchableWithoutFeedback\n\t\t\t\taccessible={ ! isSelected }\n\t\t\t\tonPress={ this.onVideoPressed }\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t>\n\t\t\t\t<View style={ { flex: 1 } }>\n\t\t\t\t\t{ ! this.state.isCaptionSelected && (\n\t\t\t\t\t\t<BlockControls>{ toolbarEditButton }</BlockControls>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isSelected && (\n\t\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t) }\n\t\t\t\t\t<MediaUploadProgress\n\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\tonFinishMediaUploadWithSuccess={\n\t\t\t\t\t\t\tthis.finishMediaUploadWithSuccess\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonFinishMediaUploadWithFailure={\n\t\t\t\t\t\t\tthis.finishMediaUploadWithFailure\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonUpdateMediaProgress={ this.updateMediaProgress }\n\t\t\t\t\t\tonMediaUploadStateReset={ this.mediaUploadStateReset }\n\t\t\t\t\t\trenderContent={ ( {\n\t\t\t\t\t\t\tisUploadInProgress,\n\t\t\t\t\t\t\tisUploadFailed,\n\t\t\t\t\t\t\tretryMessage,\n\t\t\t\t\t\t} ) => {\n\t\t\t\t\t\t\tconst showVideo =\n\t\t\t\t\t\t\t\tisURL( src ) &&\n\t\t\t\t\t\t\t\t! isUploadInProgress &&\n\t\t\t\t\t\t\t\t! isUploadFailed;\n\t\t\t\t\t\t\tconst icon = this.getIcon(\n\t\t\t\t\t\t\t\tisUploadFailed\n\t\t\t\t\t\t\t\t\t? ICON_TYPE.RETRY\n\t\t\t\t\t\t\t\t\t: ICON_TYPE.UPLOAD\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst styleIconContainer = isUploadFailed\n\t\t\t\t\t\t\t\t? style.modalIconRetry\n\t\t\t\t\t\t\t\t: style.modalIcon;\n\n\t\t\t\t\t\t\tconst iconContainer = (\n\t\t\t\t\t\t\t\t<View style={ styleIconContainer }>\n\t\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst videoStyle = {\n\t\t\t\t\t\t\t\theight: videoContainerHeight,\n\t\t\t\t\t\t\t\t...style.video,\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tconst containerStyle =\n\t\t\t\t\t\t\t\tshowVideo && isSelected\n\t\t\t\t\t\t\t\t\t? style.containerFocused\n\t\t\t\t\t\t\t\t\t: style.container;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tonLayout={ this.onVideoContanerLayout }\n\t\t\t\t\t\t\t\t\tstyle={ containerStyle }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ showVideo && (\n\t\t\t\t\t\t\t\t\t\t<View style={ style.videoContainer }>\n\t\t\t\t\t\t\t\t\t\t\t<VideoPlayer\n\t\t\t\t\t\t\t\t\t\t\t\tisSelected={\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSelected &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t! this.state\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.isCaptionSelected\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={ videoStyle }\n\t\t\t\t\t\t\t\t\t\t\t\tsource={ { uri: src } }\n\t\t\t\t\t\t\t\t\t\t\t\tpaused={ true }\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ ! showVideo && (\n\t\t\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\t\theight: videoContainerHeight,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\t\t\t\t...this.props.getStylesFromColorScheme(\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.placeholderContainer,\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.placeholderContainerDark\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ videoContainerHeight > 0 &&\n\t\t\t\t\t\t\t\t\t\t\t\ticonContainer }\n\t\t\t\t\t\t\t\t\t\t\t{ isUploadFailed && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.uploadFailedText\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ retryMessage }\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockCaption\n\t\t\t\t\t\taccessible={ true }\n\t\t\t\t\t\taccessibilityLabelCreator={ ( caption ) =>\n\t\t\t\t\t\t\tRichText.isEmpty( caption )\n\t\t\t\t\t\t\t\t? /* translators: accessibility text. Empty video caption. */\n\t\t\t\t\t\t\t\t __( 'Video caption. Empty' )\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text. %s: video caption. */\n\t\t\t\t\t\t\t\t\t\t__( 'Video caption. %s' ),\n\t\t\t\t\t\t\t\t\t\tcaption\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclientId={ this.props.clientId }\n\t\t\t\t\t\tisSelected={ this.state.isCaptionSelected }\n\t\t\t\t\t\tonFocus={ this.onFocusCaption }\n\t\t\t\t\t\tonBlur={ this.props.onBlur } // Always assign onBlur as props.\n\t\t\t\t\t\tinsertBlocksAfter={ this.props.insertBlocksAfter }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t</TouchableWithoutFeedback>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, { clientId } ) => ( {\n\t\twasBlockJustInserted: select( blockEditorStore ).wasBlockJustInserted(\n\t\t\tclientId,\n\t\t\t'inserter_menu'\n\t\t),\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createErrorNotice } = dispatch( noticesStore );\n\n\t\treturn { createErrorNotice };\n\t} ),\n\twithPreferredColorScheme,\n] )( VideoEdit );\n"],"mappings":"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"}
1
+ {"version":3,"names":["View","TouchableWithoutFeedback","Text","Component","mediaUploadSync","requestImageFailedRetryDialog","requestImageUploadCancelDialog","Icon","ToolbarButton","ToolbarGroup","PanelBody","withPreferredColorScheme","compose","BlockCaption","MediaPlaceholder","MediaUpload","MediaUploadProgress","MEDIA_TYPE_VIDEO","BlockControls","VIDEO_ASPECT_RATIO","VideoPlayer","InspectorControls","RichText","store","blockEditorStore","__","sprintf","isURL","getProtocol","doAction","hasAction","video","SvgIcon","replace","withDispatch","withSelect","noticesStore","createUpgradedEmbedBlock","style","SvgIconRetry","VideoCommonSettings","ICON_TYPE","PLACEHOLDER","RETRY","UPLOAD","VideoEdit","constructor","props","state","isCaptionSelected","videoContainerHeight","mediaUploadStateReset","bind","onSelectMediaUploadOption","onSelectURL","finishMediaUploadWithSuccess","finishMediaUploadWithFailure","updateMediaProgress","onVideoPressed","onVideoContanerLayout","onFocusCaption","componentDidMount","attributes","id","src","componentWillUnmount","isUploadInProgress","getDerivedStateFromProps","isSelected","setState","payload","setAttributes","mediaUrl","url","mediaServerId","mediaId","createErrorNotice","onReplace","test","embedBlock","undefined","poster","event","width","nativeEvent","layout","height","getIcon","iconType","iconStyle","createElement","icon","getStylesFromColorScheme","iconDark","iconUploading","iconUploadingDark","render","wasBlockJustInserted","toolbarEditButton","allowedTypes","isReplacingMedia","onSelect","open","getMediaOptions","label","onClick","flex","onFocus","autoOpenMediaUpload","accessible","onPress","disabled","title","onFinishMediaUploadWithSuccess","onFinishMediaUploadWithFailure","onUpdateMediaProgress","onMediaUploadStateReset","renderContent","isUploadFailed","retryMessage","showVideo","styleIconContainer","modalIconRetry","modalIcon","iconContainer","videoStyle","containerStyle","containerFocused","container","onLayout","videoContainer","source","uri","paused","placeholderContainer","placeholderContainerDark","uploadFailedText","accessibilityLabelCreator","caption","isEmpty","clientId","onBlur","insertBlocksAfter","select","dispatch"],"sources":["@wordpress/block-library/src/video/edit.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { View, TouchableWithoutFeedback, Text } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { Component } from '@wordpress/element';\nimport {\n\tmediaUploadSync,\n\trequestImageFailedRetryDialog,\n\trequestImageUploadCancelDialog,\n} from '@wordpress/react-native-bridge';\nimport {\n\tIcon,\n\tToolbarButton,\n\tToolbarGroup,\n\tPanelBody,\n} from '@wordpress/components';\nimport { withPreferredColorScheme, compose } from '@wordpress/compose';\nimport {\n\tBlockCaption,\n\tMediaPlaceholder,\n\tMediaUpload,\n\tMediaUploadProgress,\n\tMEDIA_TYPE_VIDEO,\n\tBlockControls,\n\tVIDEO_ASPECT_RATIO,\n\tVideoPlayer,\n\tInspectorControls,\n\tRichText,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { isURL, getProtocol } from '@wordpress/url';\nimport { doAction, hasAction } from '@wordpress/hooks';\nimport { video as SvgIcon, replace } from '@wordpress/icons';\nimport { withDispatch, withSelect } from '@wordpress/data';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport { createUpgradedEmbedBlock } from '../embed/util';\nimport style from './style.scss';\nimport SvgIconRetry from './icon-retry';\nimport VideoCommonSettings from './edit-common-settings';\n\nconst ICON_TYPE = {\n\tPLACEHOLDER: 'placeholder',\n\tRETRY: 'retry',\n\tUPLOAD: 'upload',\n};\n\nclass VideoEdit extends Component {\n\tconstructor( props ) {\n\t\tsuper( props );\n\n\t\tthis.state = {\n\t\t\tisCaptionSelected: false,\n\t\t\tvideoContainerHeight: 0,\n\t\t};\n\n\t\tthis.mediaUploadStateReset = this.mediaUploadStateReset.bind( this );\n\t\tthis.onSelectMediaUploadOption =\n\t\t\tthis.onSelectMediaUploadOption.bind( this );\n\t\tthis.onSelectURL = this.onSelectURL.bind( this );\n\t\tthis.finishMediaUploadWithSuccess =\n\t\t\tthis.finishMediaUploadWithSuccess.bind( this );\n\t\tthis.finishMediaUploadWithFailure =\n\t\t\tthis.finishMediaUploadWithFailure.bind( this );\n\t\tthis.updateMediaProgress = this.updateMediaProgress.bind( this );\n\t\tthis.onVideoPressed = this.onVideoPressed.bind( this );\n\t\tthis.onVideoContanerLayout = this.onVideoContanerLayout.bind( this );\n\t\tthis.onFocusCaption = this.onFocusCaption.bind( this );\n\t}\n\n\tcomponentDidMount() {\n\t\tconst { attributes } = this.props;\n\t\tif ( attributes.id && getProtocol( attributes.src ) === 'file:' ) {\n\t\t\tmediaUploadSync();\n\t\t}\n\t}\n\n\tcomponentWillUnmount() {\n\t\t// This action will only exist if the user pressed the trash button on the block holder.\n\t\tif (\n\t\t\thasAction( 'blocks.onRemoveBlockCheckUpload' ) &&\n\t\t\tthis.state.isUploadInProgress\n\t\t) {\n\t\t\tdoAction(\n\t\t\t\t'blocks.onRemoveBlockCheckUpload',\n\t\t\t\tthis.props.attributes.id\n\t\t\t);\n\t\t}\n\t}\n\n\tstatic getDerivedStateFromProps( props, state ) {\n\t\t// Avoid a UI flicker in the toolbar by insuring that isCaptionSelected\n\t\t// is updated immediately any time the isSelected prop becomes false.\n\t\treturn {\n\t\t\tisCaptionSelected: props.isSelected && state.isCaptionSelected,\n\t\t};\n\t}\n\n\tonVideoPressed() {\n\t\tconst { attributes } = this.props;\n\n\t\tif ( this.state.isUploadInProgress ) {\n\t\t\trequestImageUploadCancelDialog( attributes.id );\n\t\t} else if (\n\t\t\tattributes.id &&\n\t\t\tgetProtocol( attributes.src ) === 'file:'\n\t\t) {\n\t\t\trequestImageFailedRetryDialog( attributes.id );\n\t\t}\n\n\t\tthis.setState( {\n\t\t\tisCaptionSelected: false,\n\t\t} );\n\t}\n\n\tonFocusCaption() {\n\t\tif ( ! this.state.isCaptionSelected ) {\n\t\t\tthis.setState( { isCaptionSelected: true } );\n\t\t}\n\t}\n\n\tupdateMediaProgress( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tif ( payload.mediaUrl ) {\n\t\t\tsetAttributes( { url: payload.mediaUrl } );\n\t\t}\n\t\tif ( ! this.state.isUploadInProgress ) {\n\t\t\tthis.setState( { isUploadInProgress: true } );\n\t\t}\n\t}\n\n\tfinishMediaUploadWithSuccess( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { src: payload.mediaUrl, id: payload.mediaServerId } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tfinishMediaUploadWithFailure( payload ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id: payload.mediaId } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tmediaUploadStateReset() {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id: null, src: null } );\n\t\tthis.setState( { isUploadInProgress: false } );\n\t}\n\n\tonSelectMediaUploadOption( { id, url } ) {\n\t\tconst { setAttributes } = this.props;\n\t\tsetAttributes( { id, src: url } );\n\t}\n\n\tonSelectURL( url ) {\n\t\tconst { createErrorNotice, onReplace, setAttributes } = this.props;\n\n\t\tif ( isURL( url ) && /^https?:/.test( getProtocol( url ) ) ) {\n\t\t\t// Check if there's an embed block that handles this URL.\n\t\t\tconst embedBlock = createUpgradedEmbedBlock( {\n\t\t\t\tattributes: { url },\n\t\t\t} );\n\t\t\tif ( undefined !== embedBlock ) {\n\t\t\t\tonReplace( embedBlock );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetAttributes( { src: url, id: undefined, poster: undefined } );\n\t\t} else {\n\t\t\tcreateErrorNotice( __( 'Invalid URL.' ) );\n\t\t}\n\t}\n\n\tonVideoContanerLayout( event ) {\n\t\tconst { width } = event.nativeEvent.layout;\n\t\tconst height = width / VIDEO_ASPECT_RATIO;\n\t\tif ( height !== this.state.videoContainerHeight ) {\n\t\t\tthis.setState( { videoContainerHeight: height } );\n\t\t}\n\t}\n\n\tgetIcon( iconType ) {\n\t\tlet iconStyle;\n\t\tswitch ( iconType ) {\n\t\t\tcase ICON_TYPE.RETRY:\n\t\t\t\treturn <Icon icon={ SvgIconRetry } { ...style.icon } />;\n\t\t\tcase ICON_TYPE.PLACEHOLDER:\n\t\t\t\ticonStyle = this.props.getStylesFromColorScheme(\n\t\t\t\t\tstyle.icon,\n\t\t\t\t\tstyle.iconDark\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.UPLOAD:\n\t\t\t\ticonStyle = this.props.getStylesFromColorScheme(\n\t\t\t\t\tstyle.iconUploading,\n\t\t\t\t\tstyle.iconUploadingDark\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn <Icon icon={ SvgIcon } { ...iconStyle } />;\n\t}\n\n\trender() {\n\t\tconst { setAttributes, attributes, isSelected, wasBlockJustInserted } =\n\t\t\tthis.props;\n\t\tconst { id, src } = attributes;\n\t\tconst { videoContainerHeight } = this.state;\n\n\t\tconst toolbarEditButton = (\n\t\t\t<MediaUpload\n\t\t\t\tallowedTypes={ [ MEDIA_TYPE_VIDEO ] }\n\t\t\t\tisReplacingMedia\n\t\t\t\tonSelect={ this.onSelectMediaUploadOption }\n\t\t\t\tonSelectURL={ this.onSelectURL }\n\t\t\t\trender={ ( { open, getMediaOptions } ) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t\t\t{ getMediaOptions() }\n\t\t\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\t\t\tlabel={ __( 'Edit video' ) }\n\t\t\t\t\t\t\t\ticon={ replace }\n\t\t\t\t\t\t\t\tonClick={ open }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</ToolbarGroup>\n\t\t\t\t\t);\n\t\t\t\t} }\n\t\t\t></MediaUpload>\n\t\t);\n\n\t\tif ( ! src ) {\n\t\t\treturn (\n\t\t\t\t<View style={ { flex: 1 } }>\n\t\t\t\t\t<MediaPlaceholder\n\t\t\t\t\t\tallowedTypes={ [ MEDIA_TYPE_VIDEO ] }\n\t\t\t\t\t\tonSelect={ this.onSelectMediaUploadOption }\n\t\t\t\t\t\tonSelectURL={ this.onSelectURL }\n\t\t\t\t\t\ticon={ this.getIcon( ICON_TYPE.PLACEHOLDER ) }\n\t\t\t\t\t\tonFocus={ this.props.onFocus }\n\t\t\t\t\t\tautoOpenMediaUpload={\n\t\t\t\t\t\t\tisSelected && wasBlockJustInserted\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<TouchableWithoutFeedback\n\t\t\t\taccessible={ ! isSelected }\n\t\t\t\tonPress={ this.onVideoPressed }\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t>\n\t\t\t\t<View style={ { flex: 1 } }>\n\t\t\t\t\t{ ! this.state.isCaptionSelected && (\n\t\t\t\t\t\t<BlockControls>{ toolbarEditButton }</BlockControls>\n\t\t\t\t\t) }\n\t\t\t\t\t{ isSelected && (\n\t\t\t\t\t\t<InspectorControls>\n\t\t\t\t\t\t\t<PanelBody title={ __( 'Settings' ) }>\n\t\t\t\t\t\t\t\t<VideoCommonSettings\n\t\t\t\t\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</PanelBody>\n\t\t\t\t\t\t</InspectorControls>\n\t\t\t\t\t) }\n\t\t\t\t\t<MediaUploadProgress\n\t\t\t\t\t\tmediaId={ id }\n\t\t\t\t\t\tonFinishMediaUploadWithSuccess={\n\t\t\t\t\t\t\tthis.finishMediaUploadWithSuccess\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonFinishMediaUploadWithFailure={\n\t\t\t\t\t\t\tthis.finishMediaUploadWithFailure\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonUpdateMediaProgress={ this.updateMediaProgress }\n\t\t\t\t\t\tonMediaUploadStateReset={ this.mediaUploadStateReset }\n\t\t\t\t\t\trenderContent={ ( {\n\t\t\t\t\t\t\tisUploadInProgress,\n\t\t\t\t\t\t\tisUploadFailed,\n\t\t\t\t\t\t\tretryMessage,\n\t\t\t\t\t\t} ) => {\n\t\t\t\t\t\t\tconst showVideo =\n\t\t\t\t\t\t\t\tisURL( src ) &&\n\t\t\t\t\t\t\t\t! isUploadInProgress &&\n\t\t\t\t\t\t\t\t! isUploadFailed;\n\t\t\t\t\t\t\tconst icon = this.getIcon(\n\t\t\t\t\t\t\t\tisUploadFailed\n\t\t\t\t\t\t\t\t\t? ICON_TYPE.RETRY\n\t\t\t\t\t\t\t\t\t: ICON_TYPE.UPLOAD\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tconst styleIconContainer = isUploadFailed\n\t\t\t\t\t\t\t\t? style.modalIconRetry\n\t\t\t\t\t\t\t\t: style.modalIcon;\n\n\t\t\t\t\t\t\tconst iconContainer = (\n\t\t\t\t\t\t\t\t<View style={ styleIconContainer }>\n\t\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst videoStyle = {\n\t\t\t\t\t\t\t\theight: videoContainerHeight,\n\t\t\t\t\t\t\t\t...style.video,\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tconst containerStyle =\n\t\t\t\t\t\t\t\tshowVideo && isSelected\n\t\t\t\t\t\t\t\t\t? style.containerFocused\n\t\t\t\t\t\t\t\t\t: style.container;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\tonLayout={ this.onVideoContanerLayout }\n\t\t\t\t\t\t\t\t\tstyle={ containerStyle }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{ showVideo && (\n\t\t\t\t\t\t\t\t\t\t<View style={ style.videoContainer }>\n\t\t\t\t\t\t\t\t\t\t\t<VideoPlayer\n\t\t\t\t\t\t\t\t\t\t\t\tisSelected={\n\t\t\t\t\t\t\t\t\t\t\t\t\tisSelected &&\n\t\t\t\t\t\t\t\t\t\t\t\t\t! this.state\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t.isCaptionSelected\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={ videoStyle }\n\t\t\t\t\t\t\t\t\t\t\t\tsource={ { uri: src } }\n\t\t\t\t\t\t\t\t\t\t\t\tpaused\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t{ ! showVideo && (\n\t\t\t\t\t\t\t\t\t\t<View\n\t\t\t\t\t\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t\t\t\t\t\theight: videoContainerHeight,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\t\t\t\t\t...this.props.getStylesFromColorScheme(\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.placeholderContainer,\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.placeholderContainerDark\n\t\t\t\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ videoContainerHeight > 0 &&\n\t\t\t\t\t\t\t\t\t\t\t\ticonContainer }\n\t\t\t\t\t\t\t\t\t\t\t{ isUploadFailed && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle.uploadFailedText\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ retryMessage }\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<BlockCaption\n\t\t\t\t\t\taccessible\n\t\t\t\t\t\taccessibilityLabelCreator={ ( caption ) =>\n\t\t\t\t\t\t\tRichText.isEmpty( caption )\n\t\t\t\t\t\t\t\t? /* translators: accessibility text. Empty video caption. */\n\t\t\t\t\t\t\t\t __( 'Video caption. Empty' )\n\t\t\t\t\t\t\t\t: sprintf(\n\t\t\t\t\t\t\t\t\t\t/* translators: accessibility text. %s: video caption. */\n\t\t\t\t\t\t\t\t\t\t__( 'Video caption. %s' ),\n\t\t\t\t\t\t\t\t\t\tcaption\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclientId={ this.props.clientId }\n\t\t\t\t\t\tisSelected={ this.state.isCaptionSelected }\n\t\t\t\t\t\tonFocus={ this.onFocusCaption }\n\t\t\t\t\t\tonBlur={ this.props.onBlur } // Always assign onBlur as props.\n\t\t\t\t\t\tinsertBlocksAfter={ this.props.insertBlocksAfter }\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t</TouchableWithoutFeedback>\n\t\t);\n\t}\n}\n\nexport default compose( [\n\twithSelect( ( select, { clientId } ) => ( {\n\t\twasBlockJustInserted: select( blockEditorStore ).wasBlockJustInserted(\n\t\t\tclientId,\n\t\t\t'inserter_menu'\n\t\t),\n\t} ) ),\n\twithDispatch( ( dispatch ) => {\n\t\tconst { createErrorNotice } = dispatch( noticesStore );\n\n\t\treturn { createErrorNotice };\n\t} ),\n\twithPreferredColorScheme,\n] )( VideoEdit );\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,IAAI,EAAEC,wBAAwB,EAAEC,IAAI,QAAQ,cAAc;;AAEnE;AACA;AACA;AACA,SAASC,SAAS,QAAQ,oBAAoB;AAC9C,SACCC,eAAe,EACfC,6BAA6B,EAC7BC,8BAA8B,QACxB,gCAAgC;AACvC,SACCC,IAAI,EACJC,aAAa,EACbC,YAAY,EACZC,SAAS,QACH,uBAAuB;AAC9B,SAASC,wBAAwB,EAAEC,OAAO,QAAQ,oBAAoB;AACtE,SACCC,YAAY,EACZC,gBAAgB,EAChBC,WAAW,EACXC,mBAAmB,EACnBC,gBAAgB,EAChBC,aAAa,EACbC,kBAAkB,EAClBC,WAAW,EACXC,iBAAiB,EACjBC,QAAQ,EACRC,KAAK,IAAIC,gBAAgB,QACnB,yBAAyB;AAChC,SAASC,EAAE,EAAEC,OAAO,QAAQ,iBAAiB;AAC7C,SAASC,KAAK,EAAEC,WAAW,QAAQ,gBAAgB;AACnD,SAASC,QAAQ,EAAEC,SAAS,QAAQ,kBAAkB;AACtD,SAASC,KAAK,IAAIC,OAAO,EAAEC,OAAO,QAAQ,kBAAkB;AAC5D,SAASC,YAAY,EAAEC,UAAU,QAAQ,iBAAiB;AAC1D,SAASZ,KAAK,IAAIa,YAAY,QAAQ,oBAAoB;;AAE1D;AACA;AACA;AACA,SAASC,wBAAwB,QAAQ,eAAe;AACxD,OAAOC,KAAK,MAAM,cAAc;AAChC,OAAOC,YAAY,MAAM,cAAc;AACvC,OAAOC,mBAAmB,MAAM,wBAAwB;AAExD,MAAMC,SAAS,GAAG;EACjBC,WAAW,EAAE,aAAa;EAC1BC,KAAK,EAAE,OAAO;EACdC,MAAM,EAAE;AACT,CAAC;AAED,MAAMC,SAAS,SAAS1C,SAAS,CAAC;EACjC2C,WAAWA,CAAEC,KAAK,EAAG;IACpB,KAAK,CAAEA,KAAM,CAAC;IAEd,IAAI,CAACC,KAAK,GAAG;MACZC,iBAAiB,EAAE,KAAK;MACxBC,oBAAoB,EAAE;IACvB,CAAC;IAED,IAAI,CAACC,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACC,IAAI,CAAE,IAAK,CAAC;IACpE,IAAI,CAACC,yBAAyB,GAC7B,IAAI,CAACA,yBAAyB,CAACD,IAAI,CAAE,IAAK,CAAC;IAC5C,IAAI,CAACE,WAAW,GAAG,IAAI,CAACA,WAAW,CAACF,IAAI,CAAE,IAAK,CAAC;IAChD,IAAI,CAACG,4BAA4B,GAChC,IAAI,CAACA,4BAA4B,CAACH,IAAI,CAAE,IAAK,CAAC;IAC/C,IAAI,CAACI,4BAA4B,GAChC,IAAI,CAACA,4BAA4B,CAACJ,IAAI,CAAE,IAAK,CAAC;IAC/C,IAAI,CAACK,mBAAmB,GAAG,IAAI,CAACA,mBAAmB,CAACL,IAAI,CAAE,IAAK,CAAC;IAChE,IAAI,CAACM,cAAc,GAAG,IAAI,CAACA,cAAc,CAACN,IAAI,CAAE,IAAK,CAAC;IACtD,IAAI,CAACO,qBAAqB,GAAG,IAAI,CAACA,qBAAqB,CAACP,IAAI,CAAE,IAAK,CAAC;IACpE,IAAI,CAACQ,cAAc,GAAG,IAAI,CAACA,cAAc,CAACR,IAAI,CAAE,IAAK,CAAC;EACvD;EAEAS,iBAAiBA,CAAA,EAAG;IACnB,MAAM;MAAEC;IAAW,CAAC,GAAG,IAAI,CAACf,KAAK;IACjC,IAAKe,UAAU,CAACC,EAAE,IAAInC,WAAW,CAAEkC,UAAU,CAACE,GAAI,CAAC,KAAK,OAAO,EAAG;MACjE5D,eAAe,CAAC,CAAC;IAClB;EACD;EAEA6D,oBAAoBA,CAAA,EAAG;IACtB;IACA,IACCnC,SAAS,CAAE,iCAAkC,CAAC,IAC9C,IAAI,CAACkB,KAAK,CAACkB,kBAAkB,EAC5B;MACDrC,QAAQ,CACP,iCAAiC,EACjC,IAAI,CAACkB,KAAK,CAACe,UAAU,CAACC,EACvB,CAAC;IACF;EACD;EAEA,OAAOI,wBAAwBA,CAAEpB,KAAK,EAAEC,KAAK,EAAG;IAC/C;IACA;IACA,OAAO;MACNC,iBAAiB,EAAEF,KAAK,CAACqB,UAAU,IAAIpB,KAAK,CAACC;IAC9C,CAAC;EACF;EAEAS,cAAcA,CAAA,EAAG;IAChB,MAAM;MAAEI;IAAW,CAAC,GAAG,IAAI,CAACf,KAAK;IAEjC,IAAK,IAAI,CAACC,KAAK,CAACkB,kBAAkB,EAAG;MACpC5D,8BAA8B,CAAEwD,UAAU,CAACC,EAAG,CAAC;IAChD,CAAC,MAAM,IACND,UAAU,CAACC,EAAE,IACbnC,WAAW,CAAEkC,UAAU,CAACE,GAAI,CAAC,KAAK,OAAO,EACxC;MACD3D,6BAA6B,CAAEyD,UAAU,CAACC,EAAG,CAAC;IAC/C;IAEA,IAAI,CAACM,QAAQ,CAAE;MACdpB,iBAAiB,EAAE;IACpB,CAAE,CAAC;EACJ;EAEAW,cAAcA,CAAA,EAAG;IAChB,IAAK,CAAE,IAAI,CAACZ,KAAK,CAACC,iBAAiB,EAAG;MACrC,IAAI,CAACoB,QAAQ,CAAE;QAAEpB,iBAAiB,EAAE;MAAK,CAAE,CAAC;IAC7C;EACD;EAEAQ,mBAAmBA,CAAEa,OAAO,EAAG;IAC9B,MAAM;MAAEC;IAAc,CAAC,GAAG,IAAI,CAACxB,KAAK;IACpC,IAAKuB,OAAO,CAACE,QAAQ,EAAG;MACvBD,aAAa,CAAE;QAAEE,GAAG,EAAEH,OAAO,CAACE;MAAS,CAAE,CAAC;IAC3C;IACA,IAAK,CAAE,IAAI,CAACxB,KAAK,CAACkB,kBAAkB,EAAG;MACtC,IAAI,CAACG,QAAQ,CAAE;QAAEH,kBAAkB,EAAE;MAAK,CAAE,CAAC;IAC9C;EACD;EAEAX,4BAA4BA,CAAEe,OAAO,EAAG;IACvC,MAAM;MAAEC;IAAc,CAAC,GAAG,IAAI,CAACxB,KAAK;IACpCwB,aAAa,CAAE;MAAEP,GAAG,EAAEM,OAAO,CAACE,QAAQ;MAAET,EAAE,EAAEO,OAAO,CAACI;IAAc,CAAE,CAAC;IACrE,IAAI,CAACL,QAAQ,CAAE;MAAEH,kBAAkB,EAAE;IAAM,CAAE,CAAC;EAC/C;EAEAV,4BAA4BA,CAAEc,OAAO,EAAG;IACvC,MAAM;MAAEC;IAAc,CAAC,GAAG,IAAI,CAACxB,KAAK;IACpCwB,aAAa,CAAE;MAAER,EAAE,EAAEO,OAAO,CAACK;IAAQ,CAAE,CAAC;IACxC,IAAI,CAACN,QAAQ,CAAE;MAAEH,kBAAkB,EAAE;IAAM,CAAE,CAAC;EAC/C;EAEAf,qBAAqBA,CAAA,EAAG;IACvB,MAAM;MAAEoB;IAAc,CAAC,GAAG,IAAI,CAACxB,KAAK;IACpCwB,aAAa,CAAE;MAAER,EAAE,EAAE,IAAI;MAAEC,GAAG,EAAE;IAAK,CAAE,CAAC;IACxC,IAAI,CAACK,QAAQ,CAAE;MAAEH,kBAAkB,EAAE;IAAM,CAAE,CAAC;EAC/C;EAEAb,yBAAyBA,CAAE;IAAEU,EAAE;IAAEU;EAAI,CAAC,EAAG;IACxC,MAAM;MAAEF;IAAc,CAAC,GAAG,IAAI,CAACxB,KAAK;IACpCwB,aAAa,CAAE;MAAER,EAAE;MAAEC,GAAG,EAAES;IAAI,CAAE,CAAC;EAClC;EAEAnB,WAAWA,CAAEmB,GAAG,EAAG;IAClB,MAAM;MAAEG,iBAAiB;MAAEC,SAAS;MAAEN;IAAc,CAAC,GAAG,IAAI,CAACxB,KAAK;IAElE,IAAKpB,KAAK,CAAE8C,GAAI,CAAC,IAAI,UAAU,CAACK,IAAI,CAAElD,WAAW,CAAE6C,GAAI,CAAE,CAAC,EAAG;MAC5D;MACA,MAAMM,UAAU,GAAG1C,wBAAwB,CAAE;QAC5CyB,UAAU,EAAE;UAAEW;QAAI;MACnB,CAAE,CAAC;MACH,IAAKO,SAAS,KAAKD,UAAU,EAAG;QAC/BF,SAAS,CAAEE,UAAW,CAAC;QACvB;MACD;MAEAR,aAAa,CAAE;QAAEP,GAAG,EAAES,GAAG;QAAEV,EAAE,EAAEiB,SAAS;QAAEC,MAAM,EAAED;MAAU,CAAE,CAAC;IAChE,CAAC,MAAM;MACNJ,iBAAiB,CAAEnD,EAAE,CAAE,cAAe,CAAE,CAAC;IAC1C;EACD;EAEAkC,qBAAqBA,CAAEuB,KAAK,EAAG;IAC9B,MAAM;MAAEC;IAAM,CAAC,GAAGD,KAAK,CAACE,WAAW,CAACC,MAAM;IAC1C,MAAMC,MAAM,GAAGH,KAAK,GAAGhE,kBAAkB;IACzC,IAAKmE,MAAM,KAAK,IAAI,CAACtC,KAAK,CAACE,oBAAoB,EAAG;MACjD,IAAI,CAACmB,QAAQ,CAAE;QAAEnB,oBAAoB,EAAEoC;MAAO,CAAE,CAAC;IAClD;EACD;EAEAC,OAAOA,CAAEC,QAAQ,EAAG;IACnB,IAAIC,SAAS;IACb,QAASD,QAAQ;MAChB,KAAK/C,SAAS,CAACE,KAAK;QACnB,OAAO+C,aAAA,CAACnF,IAAI;UAACoF,IAAI,EAAGpD,YAAc;UAAA,GAAMD,KAAK,CAACqD;QAAI,CAAI,CAAC;MACxD,KAAKlD,SAAS,CAACC,WAAW;QACzB+C,SAAS,GAAG,IAAI,CAAC1C,KAAK,CAAC6C,wBAAwB,CAC9CtD,KAAK,CAACqD,IAAI,EACVrD,KAAK,CAACuD,QACP,CAAC;QACD;MACD,KAAKpD,SAAS,CAACG,MAAM;QACpB6C,SAAS,GAAG,IAAI,CAAC1C,KAAK,CAAC6C,wBAAwB,CAC9CtD,KAAK,CAACwD,aAAa,EACnBxD,KAAK,CAACyD,iBACP,CAAC;QACD;IACF;IAEA,OAAOL,aAAA,CAACnF,IAAI;MAACoF,IAAI,EAAG3D,OAAS;MAAA,GAAMyD;IAAS,CAAI,CAAC;EAClD;EAEAO,MAAMA,CAAA,EAAG;IACR,MAAM;MAAEzB,aAAa;MAAET,UAAU;MAAEM,UAAU;MAAE6B;IAAqB,CAAC,GACpE,IAAI,CAAClD,KAAK;IACX,MAAM;MAAEgB,EAAE;MAAEC;IAAI,CAAC,GAAGF,UAAU;IAC9B,MAAM;MAAEZ;IAAqB,CAAC,GAAG,IAAI,CAACF,KAAK;IAE3C,MAAMkD,iBAAiB,GACtBR,aAAA,CAAC3E,WAAW;MACXoF,YAAY,EAAG,CAAElF,gBAAgB,CAAI;MACrCmF,gBAAgB;MAChBC,QAAQ,EAAG,IAAI,CAAChD,yBAA2B;MAC3CC,WAAW,EAAG,IAAI,CAACA,WAAa;MAChC0C,MAAM,EAAGA,CAAE;QAAEM,IAAI;QAAEC;MAAgB,CAAC,KAAM;QACzC,OACCb,aAAA,CAACjF,YAAY,QACV8F,eAAe,CAAC,CAAC,EACnBb,aAAA,CAAClF,aAAa;UACbgG,KAAK,EAAG/E,EAAE,CAAE,YAAa,CAAG;UAC5BkE,IAAI,EAAG1D,OAAS;UAChBwE,OAAO,EAAGH;QAAM,CAChB,CACY,CAAC;MAEjB;IAAG,CACU,CACd;IAED,IAAK,CAAEtC,GAAG,EAAG;MACZ,OACC0B,aAAA,CAAC1F,IAAI;QAACsC,KAAK,EAAG;UAAEoE,IAAI,EAAE;QAAE;MAAG,GAC1BhB,aAAA,CAAC5E,gBAAgB;QAChBqF,YAAY,EAAG,CAAElF,gBAAgB,CAAI;QACrCoF,QAAQ,EAAG,IAAI,CAAChD,yBAA2B;QAC3CC,WAAW,EAAG,IAAI,CAACA,WAAa;QAChCqC,IAAI,EAAG,IAAI,CAACJ,OAAO,CAAE9C,SAAS,CAACC,WAAY,CAAG;QAC9CiE,OAAO,EAAG,IAAI,CAAC5D,KAAK,CAAC4D,OAAS;QAC9BC,mBAAmB,EAClBxC,UAAU,IAAI6B;MACd,CACD,CACI,CAAC;IAET;IAEA,OACCP,aAAA,CAACzF,wBAAwB;MACxB4G,UAAU,EAAG,CAAEzC,UAAY;MAC3B0C,OAAO,EAAG,IAAI,CAACpD,cAAgB;MAC/BqD,QAAQ,EAAG,CAAE3C;IAAY,GAEzBsB,aAAA,CAAC1F,IAAI;MAACsC,KAAK,EAAG;QAAEoE,IAAI,EAAE;MAAE;IAAG,GACxB,CAAE,IAAI,CAAC1D,KAAK,CAACC,iBAAiB,IAC/ByC,aAAA,CAACxE,aAAa,QAAGgF,iBAAkC,CACnD,EACC9B,UAAU,IACXsB,aAAA,CAACrE,iBAAiB,QACjBqE,aAAA,CAAChF,SAAS;MAACsG,KAAK,EAAGvF,EAAE,CAAE,UAAW;IAAG,GACpCiE,aAAA,CAAClD,mBAAmB;MACnB+B,aAAa,EAAGA,aAAe;MAC/BT,UAAU,EAAGA;IAAY,CACzB,CACS,CACO,CACnB,EACD4B,aAAA,CAAC1E,mBAAmB;MACnB2D,OAAO,EAAGZ,EAAI;MACdkD,8BAA8B,EAC7B,IAAI,CAAC1D,4BACL;MACD2D,8BAA8B,EAC7B,IAAI,CAAC1D,4BACL;MACD2D,qBAAqB,EAAG,IAAI,CAAC1D,mBAAqB;MAClD2D,uBAAuB,EAAG,IAAI,CAACjE,qBAAuB;MACtDkE,aAAa,EAAGA,CAAE;QACjBnD,kBAAkB;QAClBoD,cAAc;QACdC;MACD,CAAC,KAAM;QACN,MAAMC,SAAS,GACd7F,KAAK,CAAEqC,GAAI,CAAC,IACZ,CAAEE,kBAAkB,IACpB,CAAEoD,cAAc;QACjB,MAAM3B,IAAI,GAAG,IAAI,CAACJ,OAAO,CACxB+B,cAAc,GACX7E,SAAS,CAACE,KAAK,GACfF,SAAS,CAACG,MACd,CAAC;QACD,MAAM6E,kBAAkB,GAAGH,cAAc,GACtChF,KAAK,CAACoF,cAAc,GACpBpF,KAAK,CAACqF,SAAS;QAElB,MAAMC,aAAa,GAClBlC,aAAA,CAAC1F,IAAI;UAACsC,KAAK,EAAGmF;QAAoB,GAC/B9B,IACG,CACN;QAED,MAAMkC,UAAU,GAAG;UAClBvC,MAAM,EAAEpC,oBAAoB;UAC5B,GAAGZ,KAAK,CAACP;QACV,CAAC;QAED,MAAM+F,cAAc,GACnBN,SAAS,IAAIpD,UAAU,GACpB9B,KAAK,CAACyF,gBAAgB,GACtBzF,KAAK,CAAC0F,SAAS;QAEnB,OACCtC,aAAA,CAAC1F,IAAI;UACJiI,QAAQ,EAAG,IAAI,CAACtE,qBAAuB;UACvCrB,KAAK,EAAGwF;QAAgB,GAEtBN,SAAS,IACV9B,aAAA,CAAC1F,IAAI;UAACsC,KAAK,EAAGA,KAAK,CAAC4F;QAAgB,GACnCxC,aAAA,CAACtE,WAAW;UACXgD,UAAU,EACTA,UAAU,IACV,CAAE,IAAI,CAACpB,KAAK,CACVC,iBACF;UACDX,KAAK,EAAGuF,UAAY;UACpBM,MAAM,EAAG;YAAEC,GAAG,EAAEpE;UAAI,CAAG;UACvBqE,MAAM;QAAA,CACN,CACI,CACN,EACC,CAAEb,SAAS,IACZ9B,aAAA,CAAC1F,IAAI;UACJsC,KAAK,EAAG;YACPgD,MAAM,EAAEpC,oBAAoB;YAC5BiC,KAAK,EAAE,MAAM;YACb,GAAG,IAAI,CAACpC,KAAK,CAAC6C,wBAAwB,CACrCtD,KAAK,CAACgG,oBAAoB,EAC1BhG,KAAK,CAACiG,wBACP;UACD;QAAG,GAEDrF,oBAAoB,GAAG,CAAC,IACzB0E,aAAa,EACZN,cAAc,IACf5B,aAAA,CAACxF,IAAI;UACJoC,KAAK,EACJA,KAAK,CAACkG;QACN,GAECjB,YACG,CAEF,CAEF,CAAC;MAET;IAAG,CACH,CAAC,EACF7B,aAAA,CAAC7E,YAAY;MACZgG,UAAU;MACV4B,yBAAyB,EAAKC,OAAO,IACpCpH,QAAQ,CAACqH,OAAO,CAAED,OAAQ,CAAC,GACxB;MACAjH,EAAE,CAAE,sBAAuB,CAAC,GAC5BC,OAAO,EACP;MACAD,EAAE,CAAE,mBAAoB,CAAC,EACzBiH,OACA,CACH;MACDE,QAAQ,EAAG,IAAI,CAAC7F,KAAK,CAAC6F,QAAU;MAChCxE,UAAU,EAAG,IAAI,CAACpB,KAAK,CAACC,iBAAmB;MAC3C0D,OAAO,EAAG,IAAI,CAAC/C,cAAgB;MAC/BiF,MAAM,EAAG,IAAI,CAAC9F,KAAK,CAAC8F,MAAQ,CAAC;MAAA;MAC7BC,iBAAiB,EAAG,IAAI,CAAC/F,KAAK,CAAC+F;IAAmB,CAClD,CACI,CACmB,CAAC;EAE7B;AACD;AAEA,eAAelI,OAAO,CAAE,CACvBuB,UAAU,CAAE,CAAE4G,MAAM,EAAE;EAAEH;AAAS,CAAC,MAAQ;EACzC3C,oBAAoB,EAAE8C,MAAM,CAAEvH,gBAAiB,CAAC,CAACyE,oBAAoB,CACpE2C,QAAQ,EACR,eACD;AACD,CAAC,CAAG,CAAC,EACL1G,YAAY,CAAI8G,QAAQ,IAAM;EAC7B,MAAM;IAAEpE;EAAkB,CAAC,GAAGoE,QAAQ,CAAE5G,YAAa,CAAC;EAEtD,OAAO;IAAEwC;EAAkB,CAAC;AAC7B,CAAE,CAAC,EACHjE,wBAAwB,CACvB,CAAC,CAAEkC,SAAU,CAAC"}
@@ -96,6 +96,7 @@
96
96
  --wp-admin-border-width-focus: 2px;
97
97
  --wp-block-synced-color: #7a00df;
98
98
  --wp-block-synced-color--rgb: 122, 0, 223;
99
+ --wp-bound-block-color: #9747ff;
99
100
  }
100
101
  @media (min-resolution: 192dpi) {
101
102
  :root {
@@ -96,6 +96,7 @@
96
96
  --wp-admin-border-width-focus: 2px;
97
97
  --wp-block-synced-color: #7a00df;
98
98
  --wp-block-synced-color--rgb: 122, 0, 223;
99
+ --wp-bound-block-color: #9747ff;
99
100
  }
100
101
  @media (min-resolution: 192dpi) {
101
102
  :root {
@@ -95,7 +95,8 @@
95
95
  justify-content: center;
96
96
  align-items: center;
97
97
  padding: 1em;
98
- overflow-x: clip;
98
+ overflow: hidden;
99
+ overflow: clip;
99
100
  box-sizing: border-box; direction: ltr;
100
101
  /**
101
102
  * Set a default background color for has-background-dim _unless_ it includes another
@@ -95,7 +95,8 @@
95
95
  justify-content: center;
96
96
  align-items: center;
97
97
  padding: 1em;
98
- overflow-x: clip;
98
+ overflow: hidden;
99
+ overflow: clip;
99
100
  box-sizing: border-box;
100
101
  /*rtl:raw: direction: ltr; */
101
102
  /**
@@ -1248,7 +1248,6 @@ figure.wp-block-gallery .components-spinner {
1248
1248
  margin: 0;
1249
1249
  }
1250
1250
  .wp-block-group__placeholder .components-placeholder__instructions {
1251
- text-align: center;
1252
1251
  margin-bottom: 18px;
1253
1252
  }
1254
1253
  .wp-block-group__placeholder .wp-block-group-placeholder__variations svg {
@@ -1275,6 +1274,7 @@ figure.wp-block-gallery .components-spinner {
1275
1274
  .wp-block-group__placeholder .components-placeholder {
1276
1275
  min-height: auto;
1277
1276
  padding: 24px;
1277
+ align-items: center;
1278
1278
  }
1279
1279
  .wp-block-group__placeholder .is-small .wp-block-group-placeholder__variations > li,
1280
1280
  .wp-block-group__placeholder .is-medium .wp-block-group-placeholder__variations > li {
@@ -1311,6 +1311,9 @@ figure.wp-block-gallery .components-spinner {
1311
1311
  outline: 2px solid transparent !important;
1312
1312
  }
1313
1313
 
1314
+ .wp-block-image.wp-block-image:not(.is-selected) .components-placeholder__fieldset {
1315
+ display: none;
1316
+ }
1314
1317
  .wp-block-image.wp-block-image.is-selected .components-placeholder {
1315
1318
  color: #1e1e1e;
1316
1319
  background-color: #fff;
@@ -1256,7 +1256,6 @@ figure.wp-block-gallery .components-spinner {
1256
1256
  margin: 0;
1257
1257
  }
1258
1258
  .wp-block-group__placeholder .components-placeholder__instructions {
1259
- text-align: center;
1260
1259
  margin-bottom: 18px;
1261
1260
  }
1262
1261
  .wp-block-group__placeholder .wp-block-group-placeholder__variations svg {
@@ -1283,6 +1282,7 @@ figure.wp-block-gallery .components-spinner {
1283
1282
  .wp-block-group__placeholder .components-placeholder {
1284
1283
  min-height: auto;
1285
1284
  padding: 24px;
1285
+ align-items: center;
1286
1286
  }
1287
1287
  .wp-block-group__placeholder .is-small .wp-block-group-placeholder__variations > li,
1288
1288
  .wp-block-group__placeholder .is-medium .wp-block-group-placeholder__variations > li {
@@ -1319,6 +1319,9 @@ figure.wp-block-gallery .components-spinner {
1319
1319
  outline: 2px solid transparent !important;
1320
1320
  }
1321
1321
 
1322
+ .wp-block-image.wp-block-image:not(.is-selected) .components-placeholder__fieldset {
1323
+ display: none;
1324
+ }
1322
1325
  .wp-block-image.wp-block-image.is-selected .components-placeholder {
1323
1326
  color: #1e1e1e;
1324
1327
  background-color: #fff;
@@ -150,7 +150,6 @@
150
150
  margin: 0;
151
151
  }
152
152
  .wp-block-group__placeholder .components-placeholder__instructions {
153
- text-align: center;
154
153
  margin-bottom: 18px;
155
154
  }
156
155
  .wp-block-group__placeholder .wp-block-group-placeholder__variations svg {
@@ -177,6 +176,7 @@
177
176
  .wp-block-group__placeholder .components-placeholder {
178
177
  min-height: auto;
179
178
  padding: 24px;
179
+ align-items: center;
180
180
  }
181
181
  .wp-block-group__placeholder .is-small .wp-block-group-placeholder__variations > li,
182
182
  .wp-block-group__placeholder .is-medium .wp-block-group-placeholder__variations > li {
@@ -150,7 +150,6 @@
150
150
  margin: 0;
151
151
  }
152
152
  .wp-block-group__placeholder .components-placeholder__instructions {
153
- text-align: center;
154
153
  margin-bottom: 18px;
155
154
  }
156
155
  .wp-block-group__placeholder .wp-block-group-placeholder__variations svg {
@@ -177,6 +176,7 @@
177
176
  .wp-block-group__placeholder .components-placeholder {
178
177
  min-height: auto;
179
178
  padding: 24px;
179
+ align-items: center;
180
180
  }
181
181
  .wp-block-group__placeholder .is-small .wp-block-group-placeholder__variations > li,
182
182
  .wp-block-group__placeholder .is-medium .wp-block-group-placeholder__variations > li {
@@ -86,6 +86,9 @@
86
86
  /**
87
87
  * Reset the WP Admin page styles for Gutenberg-like pages.
88
88
  */
89
+ .wp-block-image.wp-block-image:not(.is-selected) .components-placeholder__fieldset {
90
+ display: none;
91
+ }
89
92
  .wp-block-image.wp-block-image.is-selected .components-placeholder {
90
93
  color: #1e1e1e;
91
94
  background-color: #fff;
@@ -86,6 +86,9 @@
86
86
  /**
87
87
  * Reset the WP Admin page styles for Gutenberg-like pages.
88
88
  */
89
+ .wp-block-image.wp-block-image:not(.is-selected) .components-placeholder__fieldset {
90
+ display: none;
91
+ }
89
92
  .wp-block-image.wp-block-image.is-selected .components-placeholder {
90
93
  color: #1e1e1e;
91
94
  background-color: #fff;
@@ -96,6 +96,8 @@
96
96
  .wp-block-search__button svg {
97
97
  min-width: 24px;
98
98
  min-height: 24px;
99
+ width: 1.25em;
100
+ height: 1.25em;
99
101
  fill: currentColor;
100
102
  vertical-align: text-bottom;
101
103
  }
@@ -96,6 +96,8 @@
96
96
  .wp-block-search__button svg {
97
97
  min-width: 24px;
98
98
  min-height: 24px;
99
+ width: 1.25em;
100
+ height: 1.25em;
99
101
  fill: currentColor;
100
102
  vertical-align: text-bottom;
101
103
  }
@@ -613,7 +613,8 @@
613
613
  justify-content: center;
614
614
  align-items: center;
615
615
  padding: 1em;
616
- overflow-x: clip;
616
+ overflow: hidden;
617
+ overflow: clip;
617
618
  box-sizing: border-box; direction: ltr;
618
619
  /**
619
620
  * Set a default background color for has-background-dim _unless_ it includes another
@@ -3252,6 +3253,8 @@ ul.wp-block-rss.is-grid li {
3252
3253
  .wp-block-search__button svg {
3253
3254
  min-width: 24px;
3254
3255
  min-height: 24px;
3256
+ width: 1.25em;
3257
+ height: 1.25em;
3255
3258
  fill: currentColor;
3256
3259
  vertical-align: text-bottom;
3257
3260
  }
@@ -618,7 +618,8 @@
618
618
  justify-content: center;
619
619
  align-items: center;
620
620
  padding: 1em;
621
- overflow-x: clip;
621
+ overflow: hidden;
622
+ overflow: clip;
622
623
  box-sizing: border-box;
623
624
  /*rtl:raw: direction: ltr; */
624
625
  /**
@@ -3286,6 +3287,8 @@ ul.wp-block-rss.is-grid li {
3286
3287
  .wp-block-search__button svg {
3287
3288
  min-width: 24px;
3288
3289
  min-height: 24px;
3290
+ width: 1.25em;
3291
+ height: 1.25em;
3289
3292
  fill: currentColor;
3290
3293
  vertical-align: text-bottom;
3291
3294
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-library",
3
- "version": "8.29.0",
3
+ "version": "8.30.0",
4
4
  "description": "Block library for the WordPress editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -31,38 +31,38 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@babel/runtime": "^7.16.0",
34
- "@wordpress/a11y": "^3.52.0",
35
- "@wordpress/api-fetch": "^6.49.0",
36
- "@wordpress/autop": "^3.52.0",
37
- "@wordpress/blob": "^3.52.0",
38
- "@wordpress/block-editor": "^12.20.0",
39
- "@wordpress/blocks": "^12.29.0",
40
- "@wordpress/components": "^27.0.0",
41
- "@wordpress/compose": "^6.29.0",
42
- "@wordpress/core-data": "^6.29.0",
43
- "@wordpress/data": "^9.22.0",
44
- "@wordpress/date": "^4.52.0",
45
- "@wordpress/deprecated": "^3.52.0",
46
- "@wordpress/dom": "^3.52.0",
47
- "@wordpress/element": "^5.29.0",
48
- "@wordpress/escape-html": "^2.52.0",
49
- "@wordpress/hooks": "^3.52.0",
50
- "@wordpress/html-entities": "^3.52.0",
51
- "@wordpress/i18n": "^4.52.0",
52
- "@wordpress/icons": "^9.43.0",
53
- "@wordpress/interactivity": "^5.1.0",
54
- "@wordpress/interactivity-router": "^1.2.0",
55
- "@wordpress/keycodes": "^3.52.0",
56
- "@wordpress/notices": "^4.20.0",
57
- "@wordpress/patterns": "^1.13.0",
58
- "@wordpress/primitives": "^3.50.0",
59
- "@wordpress/private-apis": "^0.34.0",
60
- "@wordpress/reusable-blocks": "^4.29.0",
61
- "@wordpress/rich-text": "^6.29.0",
62
- "@wordpress/server-side-render": "^4.29.0",
63
- "@wordpress/url": "^3.53.0",
64
- "@wordpress/viewport": "^5.29.0",
65
- "@wordpress/wordcount": "^3.52.0",
34
+ "@wordpress/a11y": "^3.53.0",
35
+ "@wordpress/api-fetch": "^6.50.0",
36
+ "@wordpress/autop": "^3.53.0",
37
+ "@wordpress/blob": "^3.53.0",
38
+ "@wordpress/block-editor": "^12.21.0",
39
+ "@wordpress/blocks": "^12.30.0",
40
+ "@wordpress/components": "^27.1.0",
41
+ "@wordpress/compose": "^6.30.0",
42
+ "@wordpress/core-data": "^6.30.0",
43
+ "@wordpress/data": "^9.23.0",
44
+ "@wordpress/date": "^4.53.0",
45
+ "@wordpress/deprecated": "^3.53.0",
46
+ "@wordpress/dom": "^3.53.0",
47
+ "@wordpress/element": "^5.30.0",
48
+ "@wordpress/escape-html": "^2.53.0",
49
+ "@wordpress/hooks": "^3.53.0",
50
+ "@wordpress/html-entities": "^3.53.0",
51
+ "@wordpress/i18n": "^4.53.0",
52
+ "@wordpress/icons": "^9.44.0",
53
+ "@wordpress/interactivity": "^5.2.0",
54
+ "@wordpress/interactivity-router": "^1.3.0",
55
+ "@wordpress/keycodes": "^3.53.0",
56
+ "@wordpress/notices": "^4.21.0",
57
+ "@wordpress/patterns": "^1.14.0",
58
+ "@wordpress/primitives": "^3.51.0",
59
+ "@wordpress/private-apis": "^0.35.0",
60
+ "@wordpress/reusable-blocks": "^4.30.0",
61
+ "@wordpress/rich-text": "^6.30.0",
62
+ "@wordpress/server-side-render": "^4.30.0",
63
+ "@wordpress/url": "^3.54.0",
64
+ "@wordpress/viewport": "^5.30.0",
65
+ "@wordpress/wordcount": "^3.53.0",
66
66
  "change-case": "^4.1.2",
67
67
  "classnames": "^2.3.1",
68
68
  "colord": "^2.7.0",
@@ -80,5 +80,5 @@
80
80
  "publishConfig": {
81
81
  "access": "public"
82
82
  },
83
- "gitHead": "c139588f4c668b38bafbc5431f2f4e3903dbe683"
83
+ "gitHead": "ac3c3e465a083081a86a4da6ee6fb817b41e5130"
84
84
  }
package/src/audio/edit.js CHANGED
@@ -6,7 +6,7 @@ import classnames from 'classnames';
6
6
  /**
7
7
  * WordPress dependencies
8
8
  */
9
- import { getBlobByURL, isBlobURL } from '@wordpress/blob';
9
+ import { isBlobURL } from '@wordpress/blob';
10
10
  import {
11
11
  Disabled,
12
12
  PanelBody,
@@ -21,11 +21,9 @@ import {
21
21
  MediaPlaceholder,
22
22
  MediaReplaceFlow,
23
23
  useBlockProps,
24
- store as blockEditorStore,
25
24
  } from '@wordpress/block-editor';
26
- import { useEffect } from '@wordpress/element';
27
25
  import { __, _x } from '@wordpress/i18n';
28
- import { useDispatch, useSelect } from '@wordpress/data';
26
+ import { useDispatch } from '@wordpress/data';
29
27
  import { audio as icon } from '@wordpress/icons';
30
28
  import { store as noticesStore } from '@wordpress/notices';
31
29
 
@@ -33,6 +31,7 @@ import { store as noticesStore } from '@wordpress/notices';
33
31
  * Internal dependencies
34
32
  */
35
33
  import { createUpgradedEmbedBlock } from '../embed/util';
34
+ import { useUploadMediaFromBlobURL } from '../utils/hooks';
36
35
  import { Caption } from '../utils/caption';
37
36
 
38
37
  const ALLOWED_MEDIA_TYPES = [ 'audio' ];
@@ -47,22 +46,13 @@ function AudioEdit( {
47
46
  } ) {
48
47
  const { id, autoplay, loop, preload, src } = attributes;
49
48
  const isTemporaryAudio = ! id && isBlobURL( src );
50
- const { getSettings } = useSelect( blockEditorStore );
51
49
 
52
- useEffect( () => {
53
- if ( ! id && isBlobURL( src ) ) {
54
- const file = getBlobByURL( src );
55
-
56
- if ( file ) {
57
- getSettings().mediaUpload( {
58
- filesList: [ file ],
59
- onFileChange: ( [ media ] ) => onSelectAudio( media ),
60
- onError: ( e ) => onUploadError( e ),
61
- allowedTypes: ALLOWED_MEDIA_TYPES,
62
- } );
63
- }
64
- }
65
- }, [] );
50
+ useUploadMediaFromBlobURL( {
51
+ url: src,
52
+ allowedTypes: ALLOWED_MEDIA_TYPES,
53
+ onChange: onSelectAudio,
54
+ onError: onUploadError,
55
+ } );
66
56
 
67
57
  function toggleAttribute( attribute ) {
68
58
  return ( newValue ) => {
@@ -212,13 +212,13 @@ function AudioEdit( {
212
212
  label: _x( 'None', '"Preload" value' ),
213
213
  },
214
214
  ] }
215
- hideCancelButton={ true }
215
+ hideCancelButton
216
216
  />
217
217
  </PanelBody>
218
218
  </InspectorControls>
219
219
  <MediaUpload
220
220
  allowedTypes={ ALLOWED_MEDIA_TYPES }
221
- isReplacingMedia={ true }
221
+ isReplacingMedia
222
222
  onSelect={ onSelectAudio }
223
223
  onSelectURL={ onSelectURL }
224
224
  render={ ( { open, getMediaOptions } ) => {
@@ -226,7 +226,7 @@ function AudioEdit( {
226
226
  } }
227
227
  />
228
228
  <BlockCaption
229
- accessible={ true }
229
+ accessible
230
230
  accessibilityLabelCreator={ ( caption ) =>
231
231
  RichText.isEmpty( caption )
232
232
  ? /* translators: accessibility text. Empty Audio caption. */
@@ -187,7 +187,7 @@ const UserEdit = ( { attributes, context, setAttributes, isSelected } ) => {
187
187
  return (
188
188
  <>
189
189
  <AvatarInspectorControls
190
- selectUser={ true }
190
+ selectUser
191
191
  attributes={ attributes }
192
192
  avatar={ avatar }
193
193
  setAttributes={ setAttributes }
@@ -1,4 +1,75 @@
1
- // v1: Migrate and rename the `overrides` attribute to the `content` attribute.
1
+ const isObject = ( obj ) =>
2
+ typeof obj === 'object' && ! Array.isArray( obj ) && obj !== null;
3
+
4
+ // v2: Migrate to a more condensed version of the 'content' attribute attribute.
5
+ const v2 = {
6
+ attributes: {
7
+ ref: {
8
+ type: 'number',
9
+ },
10
+ content: {
11
+ type: 'object',
12
+ },
13
+ },
14
+ supports: {
15
+ customClassName: false,
16
+ html: false,
17
+ inserter: false,
18
+ renaming: false,
19
+ },
20
+ // Force this deprecation to run whenever there's a values sub-property that's an object.
21
+ //
22
+ // This could fail in the future if a block ever has binding to a `values` attribute.
23
+ // Some extra protection is added to ensure `values` is an object, but this only reduces
24
+ // the likelihood, it doesn't solve it completely.
25
+ isEligible( { content } ) {
26
+ return (
27
+ !! content &&
28
+ Object.keys( content ).every(
29
+ ( contentKey ) =>
30
+ content[ contentKey ].values &&
31
+ isObject( content[ contentKey ].values )
32
+ )
33
+ );
34
+ },
35
+ /*
36
+ * Old attribute format:
37
+ * content: {
38
+ * "V98q_x": {
39
+ * // The attribute values are now stored as a 'values' sub-property.
40
+ * values: { content: 'My content value' },
41
+ * // ... additional metadata, like the block name can be stored here.
42
+ * }
43
+ * }
44
+ *
45
+ * New attribute format:
46
+ * content: {
47
+ * "V98q_x": {
48
+ * content: 'My content value',
49
+ * }
50
+ * }
51
+ */
52
+ migrate( attributes ) {
53
+ const { content, ...retainedAttributes } = attributes;
54
+
55
+ if ( content && Object.keys( content ).length ) {
56
+ const updatedContent = { ...content };
57
+
58
+ for ( const contentKey in content ) {
59
+ updatedContent[ contentKey ] = content[ contentKey ].values;
60
+ }
61
+
62
+ return {
63
+ ...retainedAttributes,
64
+ content: updatedContent,
65
+ };
66
+ }
67
+
68
+ return attributes;
69
+ },
70
+ };
71
+
72
+ // v1: Rename the `overrides` attribute to the `content` attribute.
2
73
  const v1 = {
3
74
  attributes: {
4
75
  ref: {
@@ -23,16 +94,12 @@ const v1 = {
23
94
  * overrides: {
24
95
  * // An key is an id that represents a block.
25
96
  * // The values are the attribute values of the block.
26
- * "V98q_x": { content: 'dwefwefwefwe' }
97
+ * "V98q_x": { content: 'My content value' }
27
98
  * }
28
99
  *
29
100
  * New attribute format:
30
101
  * content: {
31
- * "V98q_x": {
32
- * // The attribute values are now stored as a 'values' sub-property.
33
- * values: { content: 'dwefwefwefwe' },
34
- * // ... additional metadata, like the block name can be stored here.
35
- * }
102
+ * "V98q_x": { content: 'My content value' }
36
103
  * }
37
104
  *
38
105
  */
@@ -42,9 +109,7 @@ const v1 = {
42
109
  const content = {};
43
110
 
44
111
  Object.keys( overrides ).forEach( ( id ) => {
45
- content[ id ] = {
46
- values: overrides[ id ],
47
- };
112
+ content[ id ] = overrides[ id ];
48
113
  } );
49
114
 
50
115
  return {
@@ -54,4 +119,4 @@ const v1 = {
54
119
  },
55
120
  };
56
121
 
57
- export default [ v1 ];
122
+ export default [ v2, v1 ];