@wordpress/block-library 9.41.1-next.v.202603102151.0 → 9.42.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 (140) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/cover/edit/cover-placeholder.cjs +7 -0
  3. package/build/cover/edit/cover-placeholder.cjs.map +2 -2
  4. package/build/html/modal.cjs +151 -229
  5. package/build/html/modal.cjs.map +2 -2
  6. package/build/image/edit.cjs +7 -0
  7. package/build/image/edit.cjs.map +2 -2
  8. package/build/media-text/media-container.cjs +6 -0
  9. package/build/media-text/media-container.cjs.map +2 -2
  10. package/build/navigation/edit/index.cjs +5 -4
  11. package/build/navigation/edit/index.cjs.map +2 -2
  12. package/build/navigation-link/shared/use-link-preview.cjs +29 -0
  13. package/build/navigation-link/shared/use-link-preview.cjs.map +2 -2
  14. package/build/nextpage/block.json +0 -1
  15. package/build/playlist-track/block.json +0 -0
  16. package/build/post-date/block.json +1 -3
  17. package/build/post-date/deprecated.cjs +82 -6
  18. package/build/post-date/deprecated.cjs.map +3 -3
  19. package/build/post-date/edit.cjs +49 -62
  20. package/build/post-date/edit.cjs.map +3 -3
  21. package/build/site-logo/edit.cjs +1 -3
  22. package/build/site-logo/edit.cjs.map +2 -2
  23. package/build/site-title/index.cjs +5 -1
  24. package/build/site-title/index.cjs.map +2 -2
  25. package/build/tab/add-tab-toolbar-control.cjs +22 -5
  26. package/build/tab/add-tab-toolbar-control.cjs.map +2 -2
  27. package/build/tab/remove-tab-toolbar-control.cjs +19 -1
  28. package/build/tab/remove-tab-toolbar-control.cjs.map +2 -2
  29. package/build/tabs/edit.cjs +85 -7
  30. package/build/tabs/edit.cjs.map +2 -2
  31. package/build/tabs/index.cjs +12 -2
  32. package/build/tabs/index.cjs.map +2 -2
  33. package/build/tabs-menu/block.json +1 -6
  34. package/build/tabs-menu/edit.cjs +11 -151
  35. package/build/tabs-menu/edit.cjs.map +3 -3
  36. package/build/tabs-menu/save.cjs.map +2 -2
  37. package/build/tabs-menu-item/block.json +14 -11
  38. package/build/tabs-menu-item/controls.cjs +2 -133
  39. package/build/tabs-menu-item/controls.cjs.map +3 -3
  40. package/build/tabs-menu-item/edit.cjs +44 -56
  41. package/build/tabs-menu-item/edit.cjs.map +3 -3
  42. package/build/tabs-menu-item/save.cjs +0 -1
  43. package/build/tabs-menu-item/save.cjs.map +2 -2
  44. package/build/utils/media-control.cjs +72 -29
  45. package/build/utils/media-control.cjs.map +3 -3
  46. package/build-module/cover/edit/cover-placeholder.mjs +7 -0
  47. package/build-module/cover/edit/cover-placeholder.mjs.map +2 -2
  48. package/build-module/html/modal.mjs +151 -229
  49. package/build-module/html/modal.mjs.map +2 -2
  50. package/build-module/image/edit.mjs +7 -0
  51. package/build-module/image/edit.mjs.map +2 -2
  52. package/build-module/media-text/media-container.mjs +7 -1
  53. package/build-module/media-text/media-container.mjs.map +2 -2
  54. package/build-module/navigation/edit/index.mjs +5 -4
  55. package/build-module/navigation/edit/index.mjs.map +2 -2
  56. package/build-module/navigation-link/shared/use-link-preview.mjs +28 -0
  57. package/build-module/navigation-link/shared/use-link-preview.mjs.map +2 -2
  58. package/build-module/nextpage/block.json +0 -1
  59. package/build-module/playlist-track/block.json +0 -0
  60. package/build-module/post-date/block.json +1 -3
  61. package/build-module/post-date/deprecated.mjs +82 -6
  62. package/build-module/post-date/deprecated.mjs.map +2 -2
  63. package/build-module/post-date/edit.mjs +49 -63
  64. package/build-module/post-date/edit.mjs.map +2 -2
  65. package/build-module/site-logo/edit.mjs +1 -3
  66. package/build-module/site-logo/edit.mjs.map +2 -2
  67. package/build-module/site-title/index.mjs +5 -1
  68. package/build-module/site-title/index.mjs.map +2 -2
  69. package/build-module/tab/add-tab-toolbar-control.mjs +22 -5
  70. package/build-module/tab/add-tab-toolbar-control.mjs.map +2 -2
  71. package/build-module/tab/remove-tab-toolbar-control.mjs +19 -1
  72. package/build-module/tab/remove-tab-toolbar-control.mjs.map +2 -2
  73. package/build-module/tabs/edit.mjs +87 -9
  74. package/build-module/tabs/edit.mjs.map +2 -2
  75. package/build-module/tabs/index.mjs +12 -2
  76. package/build-module/tabs/index.mjs.map +2 -2
  77. package/build-module/tabs-menu/block.json +1 -6
  78. package/build-module/tabs-menu/edit.mjs +13 -162
  79. package/build-module/tabs-menu/edit.mjs.map +2 -2
  80. package/build-module/tabs-menu/save.mjs.map +2 -2
  81. package/build-module/tabs-menu-item/block.json +14 -11
  82. package/build-module/tabs-menu-item/controls.mjs +4 -143
  83. package/build-module/tabs-menu-item/controls.mjs.map +2 -2
  84. package/build-module/tabs-menu-item/edit.mjs +45 -57
  85. package/build-module/tabs-menu-item/edit.mjs.map +3 -3
  86. package/build-module/tabs-menu-item/save.mjs +0 -1
  87. package/build-module/tabs-menu-item/save.mjs.map +2 -2
  88. package/build-module/utils/media-control.mjs +73 -30
  89. package/build-module/utils/media-control.mjs.map +2 -2
  90. package/build-style/editor-rtl.css +45 -11
  91. package/build-style/editor.css +45 -11
  92. package/build-style/navigation/style-rtl.css +4 -0
  93. package/build-style/navigation/style.css +4 -0
  94. package/build-style/navigation-overlay-close/style-rtl.css +3 -3
  95. package/build-style/navigation-overlay-close/style.css +3 -3
  96. package/build-style/style-rtl.css +7 -3
  97. package/build-style/style.css +7 -3
  98. package/build-style/tabs-menu/editor-rtl.css +5 -3
  99. package/build-style/tabs-menu/editor.css +5 -3
  100. package/package.json +38 -38
  101. package/src/cover/edit/cover-placeholder.js +8 -0
  102. package/src/html/modal.js +6 -77
  103. package/src/image/edit.js +8 -0
  104. package/src/media-text/media-container.js +8 -1
  105. package/src/navigation/edit/index.js +6 -4
  106. package/src/navigation/index.php +24 -17
  107. package/src/navigation/style.scss +10 -0
  108. package/src/navigation-link/index.php +9 -9
  109. package/src/navigation-link/shared/test/use-link-preview.test.js +149 -0
  110. package/src/navigation-link/shared/use-link-preview.js +43 -1
  111. package/src/navigation-overlay-close/style.scss +3 -3
  112. package/src/navigation-submenu/index.php +17 -11
  113. package/src/nextpage/block.json +0 -1
  114. package/src/playlist-track/block.json +0 -0
  115. package/src/playlist-track/edit.js +0 -0
  116. package/src/playlist-track/index.js +0 -0
  117. package/src/playlist-track/index.php +0 -0
  118. package/src/playlist-track/init.js +0 -0
  119. package/src/playlist-track/style.scss +0 -0
  120. package/src/post-date/block.json +1 -3
  121. package/src/post-date/deprecated.js +86 -6
  122. package/src/post-date/edit.js +65 -82
  123. package/src/site-logo/edit.js +1 -3
  124. package/src/site-title/index.js +5 -1
  125. package/src/tab/add-tab-toolbar-control.js +48 -23
  126. package/src/tab/remove-tab-toolbar-control.js +30 -10
  127. package/src/tabs/edit.js +133 -10
  128. package/src/tabs/index.js +12 -2
  129. package/src/tabs-menu/block.json +1 -6
  130. package/src/tabs-menu/edit.js +13 -214
  131. package/src/tabs-menu/editor.scss +7 -3
  132. package/src/tabs-menu/index.php +42 -27
  133. package/src/tabs-menu/save.js +0 -4
  134. package/src/tabs-menu-item/block.json +14 -11
  135. package/src/tabs-menu-item/controls.js +4 -167
  136. package/src/tabs-menu-item/edit.js +60 -69
  137. package/src/tabs-menu-item/index.php +11 -23
  138. package/src/tabs-menu-item/save.js +0 -1
  139. package/src/utils/media-control.js +61 -21
  140. package/src/utils/media-control.scss +54 -18
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  Button,
4
4
  DropZone,
5
- FlexItem,
5
+ FlexBlock,
6
6
  Spinner,
7
7
  __experimentalItemGroup as ItemGroup,
8
8
  __experimentalHStack as HStack,
@@ -12,25 +12,45 @@ import {
12
12
  MediaReplaceFlow,
13
13
  store as blockEditorStore
14
14
  } from "@wordpress/block-editor";
15
+ import { focus } from "@wordpress/dom";
16
+ import { useRef } from "@wordpress/element";
15
17
  import { __ } from "@wordpress/i18n";
16
18
  import { useSelect } from "@wordpress/data";
19
+ import { reset as resetIcon } from "@wordpress/icons";
20
+ import { getFilename } from "@wordpress/url";
17
21
  import { jsx, jsxs } from "react/jsx-runtime";
22
+ var focusToggleButton = (containerRef) => {
23
+ window.requestAnimationFrame(() => {
24
+ const [toggleButton] = focus.tabbable.find(containerRef?.current);
25
+ if (!toggleButton) {
26
+ return;
27
+ }
28
+ toggleButton.focus();
29
+ });
30
+ };
18
31
  function MediaControlPreview({
19
32
  url,
20
- alt,
21
33
  filename,
22
34
  itemGroupProps,
23
- className
35
+ className,
36
+ label
24
37
  }) {
25
- return /* @__PURE__ */ jsx(ItemGroup, { ...itemGroupProps, as: "span", children: /* @__PURE__ */ jsxs(HStack, { justify: "flex-start", as: "span", children: [
26
- /* @__PURE__ */ jsx("img", { src: url, alt }),
27
- /* @__PURE__ */ jsx(FlexItem, { as: "span", children: /* @__PURE__ */ jsx(Truncate, { numberOfLines: 1, className, children: filename }) })
38
+ return /* @__PURE__ */ jsx(ItemGroup, { ...itemGroupProps, as: "span", children: /* @__PURE__ */ jsxs(HStack, { justify: "flex-start", children: [
39
+ /* @__PURE__ */ jsx(
40
+ "span",
41
+ {
42
+ className: "block-library-utils__media-control__inspector-image-indicator",
43
+ style: {
44
+ backgroundImage: url ? `url(${url})` : void 0
45
+ }
46
+ }
47
+ ),
48
+ /* @__PURE__ */ jsx(FlexBlock, { children: /* @__PURE__ */ jsx(Truncate, { numberOfLines: 1, className, children: filename ?? label }) })
28
49
  ] }) });
29
50
  }
30
51
  function MediaControl({
31
52
  mediaId,
32
53
  mediaUrl,
33
- alt = "",
34
54
  filename,
35
55
  allowedTypes,
36
56
  onSelect,
@@ -38,7 +58,7 @@ function MediaControl({
38
58
  onError,
39
59
  onReset,
40
60
  isUploading = false,
41
- emptyLabel = __("Add media")
61
+ emptyLabel = __("Media")
42
62
  }) {
43
63
  const { getSettings } = useSelect(blockEditorStore);
44
64
  const onFilesDrop = (filesList) => {
@@ -56,30 +76,53 @@ function MediaControl({
56
76
  multiple: false
57
77
  });
58
78
  };
59
- return /* @__PURE__ */ jsxs("div", { className: "block-library-utils__media-control", children: [
60
- /* @__PURE__ */ jsx(
61
- MediaReplaceFlow,
62
- {
63
- mediaId,
64
- mediaURL: mediaUrl,
65
- allowedTypes,
66
- onSelect,
67
- onSelectURL,
68
- onError,
69
- name: mediaUrl ? /* @__PURE__ */ jsx(
70
- MediaControlPreview,
79
+ const containerRef = useRef();
80
+ return /* @__PURE__ */ jsxs(
81
+ "div",
82
+ {
83
+ ref: containerRef,
84
+ className: "block-library-utils__media-control",
85
+ children: [
86
+ /* @__PURE__ */ jsx(
87
+ MediaReplaceFlow,
71
88
  {
72
- url: mediaUrl,
73
- alt,
74
- filename
89
+ className: "block-library-utils__media-control__replace-flow",
90
+ mediaId,
91
+ mediaURL: mediaUrl,
92
+ allowedTypes,
93
+ onSelect,
94
+ onSelectURL,
95
+ onError,
96
+ name: /* @__PURE__ */ jsx(
97
+ MediaControlPreview,
98
+ {
99
+ url: mediaUrl,
100
+ filename,
101
+ className: "block-library-utils__media-control__inspector-media-replace-title",
102
+ label: mediaUrl ? getFilename(filename) : emptyLabel
103
+ }
104
+ ),
105
+ renderToggle: (props) => /* @__PURE__ */ jsx(Button, { ...props, __next40pxDefaultSize: true, children: isUploading ? /* @__PURE__ */ jsx(Spinner, {}) : props.children }),
106
+ onReset
75
107
  }
76
- ) : emptyLabel,
77
- renderToggle: (props) => /* @__PURE__ */ jsx(Button, { ...props, __next40pxDefaultSize: true, children: isUploading ? /* @__PURE__ */ jsx(Spinner, {}) : props.children }),
78
- onReset
79
- }
80
- ),
81
- /* @__PURE__ */ jsx(DropZone, { onFilesDrop })
82
- ] });
108
+ ),
109
+ mediaUrl && onReset && /* @__PURE__ */ jsx(
110
+ Button,
111
+ {
112
+ label: __("Reset"),
113
+ className: "block-library-utils__media-control__reset",
114
+ size: "small",
115
+ icon: resetIcon,
116
+ onClick: () => {
117
+ onReset();
118
+ focusToggleButton(containerRef);
119
+ }
120
+ }
121
+ ),
122
+ /* @__PURE__ */ jsx(DropZone, { onFilesDrop })
123
+ ]
124
+ }
125
+ );
83
126
  }
84
127
  export {
85
128
  MediaControl,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/media-control.js"],
4
- "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tDropZone,\n\tFlexItem,\n\tSpinner,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n} from '@wordpress/components';\nimport {\n\tMediaReplaceFlow,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * MediaControlPreview - Preview component showing media thumbnail and filename\n *\n * @param {Object} props\n * @param {string} props.url Media URL for thumbnail\n * @param {string} props.alt Alt text for image\n * @param {string} props.filename Filename to display\n * @param {Object} props.itemGroupProps Optional props to pass to ItemGroup\n * @param {string} props.className Optional className for Truncate\n * @return {Element} Preview component\n */\nexport function MediaControlPreview( {\n\turl,\n\talt,\n\tfilename,\n\titemGroupProps,\n\tclassName,\n} ) {\n\treturn (\n\t\t<ItemGroup { ...itemGroupProps } as=\"span\">\n\t\t\t<HStack justify=\"flex-start\" as=\"span\">\n\t\t\t\t<img src={ url } alt={ alt } />\n\t\t\t\t<FlexItem as=\"span\">\n\t\t\t\t\t<Truncate numberOfLines={ 1 } className={ className }>\n\t\t\t\t\t\t{ filename }\n\t\t\t\t\t</Truncate>\n\t\t\t\t</FlexItem>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\n/**\n * MediaControl - Complete media selection control for inspector panels\n *\n * @param {Object} props\n * @param {number} props.mediaId Media attachment ID\n * @param {string} props.mediaUrl Media URL\n * @param {string} props.alt Alt text for preview\n * @param {string} props.filename Filename to display\n * @param {Array} props.allowedTypes Allowed media types\n * @param {Function} props.onSelect Callback when media selected\n * @param {Function} props.onSelectURL Callback when URL entered\n * @param {Function} props.onError Error callback\n * @param {Function} props.onReset Reset/remove callback\n * @param {boolean} props.isUploading Whether upload in progress\n * @param {string} props.emptyLabel Label when no media (default: 'Add media')\n * @return {Element} Media control component\n */\nexport function MediaControl( {\n\tmediaId,\n\tmediaUrl,\n\talt = '',\n\tfilename,\n\tallowedTypes,\n\tonSelect,\n\tonSelectURL,\n\tonError,\n\tonReset,\n\tisUploading = false,\n\temptyLabel = __( 'Add media' ),\n} ) {\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst onFilesDrop = ( filesList ) => {\n\t\tconst { mediaUpload } = getSettings();\n\t\tif ( ! mediaUpload ) {\n\t\t\treturn;\n\t\t}\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList,\n\t\t\tonFileChange( [ media ] ) {\n\t\t\t\tonSelect( media );\n\t\t\t},\n\t\t\tonError,\n\t\t\tmultiple: false,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<div className=\"block-library-utils__media-control\">\n\t\t\t<MediaReplaceFlow\n\t\t\t\tmediaId={ mediaId }\n\t\t\t\tmediaURL={ mediaUrl }\n\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onError }\n\t\t\t\tname={\n\t\t\t\t\tmediaUrl ? (\n\t\t\t\t\t\t<MediaControlPreview\n\t\t\t\t\t\t\turl={ mediaUrl }\n\t\t\t\t\t\t\talt={ alt }\n\t\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\temptyLabel\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\trenderToggle={ ( props ) => (\n\t\t\t\t\t<Button { ...props } __next40pxDefaultSize>\n\t\t\t\t\t\t{ isUploading ? <Spinner /> : props.children }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\tonReset={ onReset }\n\t\t\t/>\n\t\t\t<DropZone onFilesDrop={ onFilesDrop } />\n\t\t</div>\n\t);\n}\n"],
5
- "mappings": ";AAGA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,2BAA2B;AAAA,EAC3B,wBAAwB;AAAA,EACxB,0BAA0B;AAAA,OACpB;AACP;AAAA,EACC;AAAA,EACA,SAAS;AAAA,OACH;AACP,SAAS,UAAU;AACnB,SAAS,iBAAiB;AAsBvB,SACC,KADD;AATI,SAAS,oBAAqB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,SACC,oBAAC,aAAY,GAAG,gBAAiB,IAAG,QACnC,+BAAC,UAAO,SAAQ,cAAa,IAAG,QAC/B;AAAA,wBAAC,SAAI,KAAM,KAAM,KAAY;AAAA,IAC7B,oBAAC,YAAS,IAAG,QACZ,8BAAC,YAAS,eAAgB,GAAI,WAC3B,oBACH,GACD;AAAA,KACD,GACD;AAEF;AAmBO,SAAS,aAAc;AAAA,EAC7B;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,aAAa,GAAI,WAAY;AAC9B,GAAI;AACH,QAAM,EAAE,YAAY,IAAI,UAAW,gBAAiB;AACpD,QAAM,cAAc,CAAE,cAAe;AACpC,UAAM,EAAE,YAAY,IAAI,YAAY;AACpC,QAAK,CAAE,aAAc;AACpB;AAAA,IACD;AACA,gBAAa;AAAA,MACZ;AAAA,MACA;AAAA,MACA,aAAc,CAAE,KAAM,GAAI;AACzB,iBAAU,KAAM;AAAA,MACjB;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IACX,CAAE;AAAA,EACH;AAEA,SACC,qBAAC,SAAI,WAAU,sCACd;AAAA;AAAA,MAAC;AAAA;AAAA,QACA;AAAA,QACA,UAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,MACC,WACC;AAAA,UAAC;AAAA;AAAA,YACA,KAAM;AAAA,YACN;AAAA,YACA;AAAA;AAAA,QACD,IAEA;AAAA,QAGF,cAAe,CAAE,UAChB,oBAAC,UAAS,GAAG,OAAQ,uBAAqB,MACvC,wBAAc,oBAAC,WAAQ,IAAK,MAAM,UACrC;AAAA,QAED;AAAA;AAAA,IACD;AAAA,IACA,oBAAC,YAAS,aAA4B;AAAA,KACvC;AAEF;",
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport {\n\tButton,\n\tDropZone,\n\tFlexBlock,\n\tSpinner,\n\t__experimentalItemGroup as ItemGroup,\n\t__experimentalHStack as HStack,\n\t__experimentalTruncate as Truncate,\n} from '@wordpress/components';\nimport {\n\tMediaReplaceFlow,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { focus } from '@wordpress/dom';\nimport { useRef } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { useSelect } from '@wordpress/data';\nimport { reset as resetIcon } from '@wordpress/icons';\nimport { getFilename } from '@wordpress/url';\n\n/**\n * Focuses the toggle button.\n *\n * @param {Object} containerRef - ref object containing current element\n */\nconst focusToggleButton = ( containerRef ) => {\n\t// Use requestAnimationFrame to ensure DOM updates are complete.\n\twindow.requestAnimationFrame( () => {\n\t\tconst [ toggleButton ] = focus.tabbable.find( containerRef?.current );\n\t\tif ( ! toggleButton ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleButton.focus();\n\t} );\n};\n\n/**\n * MediaControlPreview - Preview component showing media thumbnail and filename\n *\n * @param {Object} props\n * @param {string} props.url Media URL for thumbnail\n * @param {string} props.filename Filename to display\n * @param {Object} props.itemGroupProps Optional props to pass to ItemGroup\n * @param {string} props.className Optional className for Truncate\n * @param {string} props.label Optional label for accessibility\n * @return {Element} Preview component\n */\nexport function MediaControlPreview( {\n\turl,\n\tfilename,\n\titemGroupProps,\n\tclassName,\n\tlabel,\n} ) {\n\treturn (\n\t\t<ItemGroup { ...itemGroupProps } as=\"span\">\n\t\t\t<HStack justify=\"flex-start\">\n\t\t\t\t<span\n\t\t\t\t\tclassName=\"block-library-utils__media-control__inspector-image-indicator\"\n\t\t\t\t\tstyle={ {\n\t\t\t\t\t\tbackgroundImage: url ? `url(${ url })` : undefined,\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<FlexBlock>\n\t\t\t\t\t<Truncate numberOfLines={ 1 } className={ className }>\n\t\t\t\t\t\t{ filename ?? label }\n\t\t\t\t\t</Truncate>\n\t\t\t\t</FlexBlock>\n\t\t\t</HStack>\n\t\t</ItemGroup>\n\t);\n}\n\n/**\n * MediaControl - Complete media selection control for inspector panels\n *\n * @param {Object} props\n * @param {number} props.mediaId Media attachment ID\n * @param {string} props.mediaUrl Media URL\n * @param {string} props.filename Filename to display\n * @param {Array} props.allowedTypes Allowed media types\n * @param {Function} props.onSelect Callback when media selected\n * @param {Function} props.onSelectURL Callback when URL entered\n * @param {Function} props.onError Error callback\n * @param {Function} props.onReset Reset/remove callback\n * @param {boolean} props.isUploading Whether upload in progress\n * @param {string} props.emptyLabel Label when no media (default: 'Add media')\n * @return {Element} Media control component\n */\nexport function MediaControl( {\n\tmediaId,\n\tmediaUrl,\n\tfilename,\n\tallowedTypes,\n\tonSelect,\n\tonSelectURL,\n\tonError,\n\tonReset,\n\tisUploading = false,\n\temptyLabel = __( 'Media' ),\n} ) {\n\tconst { getSettings } = useSelect( blockEditorStore );\n\tconst onFilesDrop = ( filesList ) => {\n\t\tconst { mediaUpload } = getSettings();\n\t\tif ( ! mediaUpload ) {\n\t\t\treturn;\n\t\t}\n\t\tmediaUpload( {\n\t\t\tallowedTypes,\n\t\t\tfilesList,\n\t\t\tonFileChange( [ media ] ) {\n\t\t\t\tonSelect( media );\n\t\t\t},\n\t\t\tonError,\n\t\t\tmultiple: false,\n\t\t} );\n\t};\n\tconst containerRef = useRef();\n\n\treturn (\n\t\t<div\n\t\t\tref={ containerRef }\n\t\t\tclassName=\"block-library-utils__media-control\"\n\t\t>\n\t\t\t<MediaReplaceFlow\n\t\t\t\tclassName=\"block-library-utils__media-control__replace-flow\"\n\t\t\t\tmediaId={ mediaId }\n\t\t\t\tmediaURL={ mediaUrl }\n\t\t\t\tallowedTypes={ allowedTypes }\n\t\t\t\tonSelect={ onSelect }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onError }\n\t\t\t\tname={\n\t\t\t\t\t<MediaControlPreview\n\t\t\t\t\t\turl={ mediaUrl }\n\t\t\t\t\t\tfilename={ filename }\n\t\t\t\t\t\tclassName=\"block-library-utils__media-control__inspector-media-replace-title\"\n\t\t\t\t\t\tlabel={\n\t\t\t\t\t\t\tmediaUrl ? getFilename( filename ) : emptyLabel\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\trenderToggle={ ( props ) => (\n\t\t\t\t\t<Button { ...props } __next40pxDefaultSize>\n\t\t\t\t\t\t{ isUploading ? <Spinner /> : props.children }\n\t\t\t\t\t</Button>\n\t\t\t\t) }\n\t\t\t\tonReset={ onReset }\n\t\t\t/>\n\t\t\t{ mediaUrl && onReset && (\n\t\t\t\t<Button\n\t\t\t\t\tlabel={ __( 'Reset' ) }\n\t\t\t\t\tclassName=\"block-library-utils__media-control__reset\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\ticon={ resetIcon }\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tonReset();\n\t\t\t\t\t\tfocusToggleButton( containerRef );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<DropZone onFilesDrop={ onFilesDrop } />\n\t\t</div>\n\t);\n}\n"],
5
+ "mappings": ";AAGA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,2BAA2B;AAAA,EAC3B,wBAAwB;AAAA,EACxB,0BAA0B;AAAA,OACpB;AACP;AAAA,EACC;AAAA,EACA,SAAS;AAAA,OACH;AACP,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,UAAU;AACnB,SAAS,iBAAiB;AAC1B,SAAS,SAAS,iBAAiB;AACnC,SAAS,mBAAmB;AAuCzB,SACC,KADD;AAhCH,IAAM,oBAAoB,CAAE,iBAAkB;AAE7C,SAAO,sBAAuB,MAAM;AACnC,UAAM,CAAE,YAAa,IAAI,MAAM,SAAS,KAAM,cAAc,OAAQ;AACpE,QAAK,CAAE,cAAe;AACrB;AAAA,IACD;AAEA,iBAAa,MAAM;AAAA,EACpB,CAAE;AACH;AAaO,SAAS,oBAAqB;AAAA,EACpC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,SACC,oBAAC,aAAY,GAAG,gBAAiB,IAAG,QACnC,+BAAC,UAAO,SAAQ,cACf;AAAA;AAAA,MAAC;AAAA;AAAA,QACA,WAAU;AAAA,QACV,OAAQ;AAAA,UACP,iBAAiB,MAAM,OAAQ,GAAI,MAAM;AAAA,QAC1C;AAAA;AAAA,IACD;AAAA,IACA,oBAAC,aACA,8BAAC,YAAS,eAAgB,GAAI,WAC3B,sBAAY,OACf,GACD;AAAA,KACD,GACD;AAEF;AAkBO,SAAS,aAAc;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd,aAAa,GAAI,OAAQ;AAC1B,GAAI;AACH,QAAM,EAAE,YAAY,IAAI,UAAW,gBAAiB;AACpD,QAAM,cAAc,CAAE,cAAe;AACpC,UAAM,EAAE,YAAY,IAAI,YAAY;AACpC,QAAK,CAAE,aAAc;AACpB;AAAA,IACD;AACA,gBAAa;AAAA,MACZ;AAAA,MACA;AAAA,MACA,aAAc,CAAE,KAAM,GAAI;AACzB,iBAAU,KAAM;AAAA,MACjB;AAAA,MACA;AAAA,MACA,UAAU;AAAA,IACX,CAAE;AAAA,EACH;AACA,QAAM,eAAe,OAAO;AAE5B,SACC;AAAA,IAAC;AAAA;AAAA,MACA,KAAM;AAAA,MACN,WAAU;AAAA,MAEV;AAAA;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV;AAAA,YACA,UAAW;AAAA,YACX;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,MACC;AAAA,cAAC;AAAA;AAAA,gBACA,KAAM;AAAA,gBACN;AAAA,gBACA,WAAU;AAAA,gBACV,OACC,WAAW,YAAa,QAAS,IAAI;AAAA;AAAA,YAEvC;AAAA,YAED,cAAe,CAAE,UAChB,oBAAC,UAAS,GAAG,OAAQ,uBAAqB,MACvC,wBAAc,oBAAC,WAAQ,IAAK,MAAM,UACrC;AAAA,YAED;AAAA;AAAA,QACD;AAAA,QACE,YAAY,WACb;AAAA,UAAC;AAAA;AAAA,YACA,OAAQ,GAAI,OAAQ;AAAA,YACpB,WAAU;AAAA,YACV,MAAK;AAAA,YACL,MAAO;AAAA,YACP,SAAU,MAAM;AACf,sBAAQ;AACR,gCAAmB,YAAa;AAAA,YACjC;AAAA;AAAA,QACD;AAAA,QAED,oBAAC,YAAS,aAA4B;AAAA;AAAA;AAAA,EACvC;AAEF;",
6
6
  "names": []
7
7
  }
@@ -93,29 +93,61 @@
93
93
  .block-library-utils__media-control .components-drop-zone__content-icon {
94
94
  display: none;
95
95
  }
96
- .block-library-utils__media-control button.components-button {
96
+ .block-library-utils__media-control .block-library-utils__media-control__replace-flow {
97
+ display: block;
98
+ }
99
+ .block-library-utils__media-control .block-library-utils__media-control__replace-flow button.components-button {
97
100
  color: #1e1e1e;
98
101
  box-shadow: inset 0 0 0 1px #ccc;
99
102
  width: 100%;
100
103
  display: block;
101
104
  height: 40px;
105
+ padding-left: 32px;
102
106
  }
103
- .block-library-utils__media-control button.components-button:hover {
107
+ .block-library-utils__media-control .block-library-utils__media-control__replace-flow button.components-button:hover {
104
108
  color: var(--wp-admin-theme-color);
105
109
  }
106
- .block-library-utils__media-control button.components-button:focus {
110
+ .block-library-utils__media-control .block-library-utils__media-control__replace-flow button.components-button:focus {
107
111
  box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
108
112
  }
109
- .block-library-utils__media-control .components-dropdown {
110
- display: block;
113
+
114
+ .block-library-utils__media-control__inspector-media-replace-title {
115
+ word-break: break-all;
116
+ white-space: normal;
117
+ text-align: start;
111
118
  }
112
- .block-library-utils__media-control img {
119
+
120
+ .block-library-utils__media-control__inspector-image-indicator {
113
121
  width: 20px;
114
- min-width: 20px;
115
- aspect-ratio: 1;
122
+ height: 20px;
123
+ border-radius: 2px;
116
124
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2);
125
+ background: #fff linear-gradient(45deg, transparent 48%, #ddd 48%, #ddd 52%, transparent 52%);
126
+ background-size: cover;
127
+ outline: 1px solid transparent;
128
+ }
129
+
130
+ .block-library-utils__media-control__reset {
131
+ position: absolute;
132
+ left: 0;
133
+ top: 8px;
134
+ margin: auto 8px auto;
135
+ opacity: 0;
117
136
  border-radius: 2px;
118
137
  }
138
+ @media not (prefers-reduced-motion) {
139
+ .block-library-utils__media-control__reset {
140
+ transition: opacity 0.1s ease-in-out;
141
+ }
142
+ }
143
+ .block-library-utils__media-control:hover .block-library-utils__media-control__reset, .block-library-utils__media-control__reset:focus, .block-library-utils__media-control__reset:hover {
144
+ opacity: 1;
145
+ }
146
+ @media (hover: none) {
147
+ .block-library-utils__media-control__reset {
148
+ opacity: 1;
149
+ }
150
+ }
119
151
 
120
152
  .wp-block-audio {
121
153
  margin-right: 0;
@@ -2333,9 +2365,11 @@ html[dir=rtl] .has-drop-cap:not(:focus)::first-letter {
2333
2365
  width: 112px;
2334
2366
  }
2335
2367
 
2336
- .wp-block-tabs-menu .tabs__tab-label--placeholder {
2337
- opacity: 0.5;
2338
- font-style: italic;
2368
+ .wp-block-tabs-menu > .block-editor-block-list__layout {
2369
+ display: contents;
2370
+ }
2371
+ .wp-block-tabs-menu .block-editor-block-list__block:has(> .wp-block-tabs-menu-item) {
2372
+ display: contents;
2339
2373
  }
2340
2374
 
2341
2375
  .wp-block-tabs-menu-item.is-selected {
@@ -93,29 +93,61 @@
93
93
  .block-library-utils__media-control .components-drop-zone__content-icon {
94
94
  display: none;
95
95
  }
96
- .block-library-utils__media-control button.components-button {
96
+ .block-library-utils__media-control .block-library-utils__media-control__replace-flow {
97
+ display: block;
98
+ }
99
+ .block-library-utils__media-control .block-library-utils__media-control__replace-flow button.components-button {
97
100
  color: #1e1e1e;
98
101
  box-shadow: inset 0 0 0 1px #ccc;
99
102
  width: 100%;
100
103
  display: block;
101
104
  height: 40px;
105
+ padding-right: 32px;
102
106
  }
103
- .block-library-utils__media-control button.components-button:hover {
107
+ .block-library-utils__media-control .block-library-utils__media-control__replace-flow button.components-button:hover {
104
108
  color: var(--wp-admin-theme-color);
105
109
  }
106
- .block-library-utils__media-control button.components-button:focus {
110
+ .block-library-utils__media-control .block-library-utils__media-control__replace-flow button.components-button:focus {
107
111
  box-shadow: inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-admin-theme-color);
108
112
  }
109
- .block-library-utils__media-control .components-dropdown {
110
- display: block;
113
+
114
+ .block-library-utils__media-control__inspector-media-replace-title {
115
+ word-break: break-all;
116
+ white-space: normal;
117
+ text-align: start;
111
118
  }
112
- .block-library-utils__media-control img {
119
+
120
+ .block-library-utils__media-control__inspector-image-indicator {
113
121
  width: 20px;
114
- min-width: 20px;
115
- aspect-ratio: 1;
122
+ height: 20px;
123
+ border-radius: 2px;
116
124
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2);
125
+ background: #fff linear-gradient(-45deg, transparent 48%, #ddd 48%, #ddd 52%, transparent 52%);
126
+ background-size: cover;
127
+ outline: 1px solid transparent;
128
+ }
129
+
130
+ .block-library-utils__media-control__reset {
131
+ position: absolute;
132
+ right: 0;
133
+ top: 8px;
134
+ margin: auto 8px auto;
135
+ opacity: 0;
117
136
  border-radius: 2px;
118
137
  }
138
+ @media not (prefers-reduced-motion) {
139
+ .block-library-utils__media-control__reset {
140
+ transition: opacity 0.1s ease-in-out;
141
+ }
142
+ }
143
+ .block-library-utils__media-control:hover .block-library-utils__media-control__reset, .block-library-utils__media-control__reset:focus, .block-library-utils__media-control__reset:hover {
144
+ opacity: 1;
145
+ }
146
+ @media (hover: none) {
147
+ .block-library-utils__media-control__reset {
148
+ opacity: 1;
149
+ }
150
+ }
119
151
 
120
152
  .wp-block-audio {
121
153
  margin-left: 0;
@@ -2337,9 +2369,11 @@ html[dir=rtl] .has-drop-cap:not(:focus)::first-letter {
2337
2369
  width: 112px;
2338
2370
  }
2339
2371
 
2340
- .wp-block-tabs-menu .tabs__tab-label--placeholder {
2341
- opacity: 0.5;
2342
- font-style: italic;
2372
+ .wp-block-tabs-menu > .block-editor-block-list__layout {
2373
+ display: contents;
2374
+ }
2375
+ .wp-block-tabs-menu .block-editor-block-list__block:has(> .wp-block-tabs-menu-item) {
2376
+ display: contents;
2343
2377
  }
2344
2378
 
2345
2379
  .wp-block-tabs-menu-item.is-selected {
@@ -574,6 +574,10 @@ button.wp-block-navigation-item__content {
574
574
  .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container {
575
575
  display: block;
576
576
  }
577
+ .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container .wp-block-navigation__submenu-container {
578
+ left: auto;
579
+ right: 0;
580
+ }
577
581
  @media (min-width: 600px) {
578
582
  .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
579
583
  display: block;
@@ -574,6 +574,10 @@ button.wp-block-navigation-item__content {
574
574
  .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container {
575
575
  display: block;
576
576
  }
577
+ .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container .wp-block-navigation__submenu-container {
578
+ right: auto;
579
+ left: 0;
580
+ }
577
581
  @media (min-width: 600px) {
578
582
  .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
579
583
  display: block;
@@ -3,7 +3,7 @@
3
3
  align-items: center;
4
4
  justify-content: center;
5
5
  gap: 0.5em;
6
- padding: 0.5em;
6
+ padding: 0;
7
7
  border: none;
8
8
  background: transparent;
9
9
  cursor: pointer;
@@ -13,8 +13,8 @@
13
13
  outline-offset: 2px;
14
14
  }
15
15
  .wp-block-navigation-overlay-close svg {
16
- width: 1.5em;
17
- height: 1.5em;
16
+ width: 24px;
17
+ height: 24px;
18
18
  fill: currentColor;
19
19
  display: block;
20
20
  flex-shrink: 0;
@@ -3,7 +3,7 @@
3
3
  align-items: center;
4
4
  justify-content: center;
5
5
  gap: 0.5em;
6
- padding: 0.5em;
6
+ padding: 0;
7
7
  border: none;
8
8
  background: transparent;
9
9
  cursor: pointer;
@@ -13,8 +13,8 @@
13
13
  outline-offset: 2px;
14
14
  }
15
15
  .wp-block-navigation-overlay-close svg {
16
- width: 1.5em;
17
- height: 1.5em;
16
+ width: 24px;
17
+ height: 24px;
18
18
  fill: currentColor;
19
19
  display: block;
20
20
  flex-shrink: 0;
@@ -2941,6 +2941,10 @@ button.wp-block-navigation-item__content {
2941
2941
  .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container {
2942
2942
  display: block;
2943
2943
  }
2944
+ .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container .wp-block-navigation__submenu-container {
2945
+ left: auto;
2946
+ right: 0;
2947
+ }
2944
2948
  @media (min-width: 600px) {
2945
2949
  .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
2946
2950
  display: block;
@@ -3082,7 +3086,7 @@ html.has-modal-open {
3082
3086
  align-items: center;
3083
3087
  justify-content: center;
3084
3088
  gap: 0.5em;
3085
- padding: 0.5em;
3089
+ padding: 0;
3086
3090
  border: none;
3087
3091
  background: transparent;
3088
3092
  cursor: pointer;
@@ -3092,8 +3096,8 @@ html.has-modal-open {
3092
3096
  outline-offset: 2px;
3093
3097
  }
3094
3098
  .wp-block-navigation-overlay-close svg {
3095
- width: 1.5em;
3096
- height: 1.5em;
3099
+ width: 24px;
3100
+ height: 24px;
3097
3101
  fill: currentColor;
3098
3102
  display: block;
3099
3103
  flex-shrink: 0;
@@ -2971,6 +2971,10 @@ button.wp-block-navigation-item__content {
2971
2971
  .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container {
2972
2972
  display: block;
2973
2973
  }
2974
+ .wp-block-navigation__responsive-container.disable-default-overlay.is-menu-open .wp-block-navigation__responsive-container-content .wp-block-navigation__overlay-container .wp-block-navigation__submenu-container {
2975
+ right: auto;
2976
+ left: 0;
2977
+ }
2974
2978
  @media (min-width: 600px) {
2975
2979
  .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
2976
2980
  display: block;
@@ -3112,7 +3116,7 @@ html.has-modal-open {
3112
3116
  align-items: center;
3113
3117
  justify-content: center;
3114
3118
  gap: 0.5em;
3115
- padding: 0.5em;
3119
+ padding: 0;
3116
3120
  border: none;
3117
3121
  background: transparent;
3118
3122
  cursor: pointer;
@@ -3122,8 +3126,8 @@ html.has-modal-open {
3122
3126
  outline-offset: 2px;
3123
3127
  }
3124
3128
  .wp-block-navigation-overlay-close svg {
3125
- width: 1.5em;
3126
- height: 1.5em;
3129
+ width: 24px;
3130
+ height: 24px;
3127
3131
  fill: currentColor;
3128
3132
  display: block;
3129
3133
  flex-shrink: 0;
@@ -1,4 +1,6 @@
1
- .wp-block-tabs-menu .tabs__tab-label--placeholder {
2
- opacity: 0.5;
3
- font-style: italic;
1
+ .wp-block-tabs-menu > .block-editor-block-list__layout {
2
+ display: contents;
3
+ }
4
+ .wp-block-tabs-menu .block-editor-block-list__block:has(> .wp-block-tabs-menu-item) {
5
+ display: contents;
4
6
  }
@@ -1,4 +1,6 @@
1
- .wp-block-tabs-menu .tabs__tab-label--placeholder {
2
- opacity: 0.5;
3
- font-style: italic;
1
+ .wp-block-tabs-menu > .block-editor-block-list__layout {
2
+ display: contents;
3
+ }
4
+ .wp-block-tabs-menu .block-editor-block-list__block:has(> .wp-block-tabs-menu-item) {
5
+ display: contents;
4
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/block-library",
3
- "version": "9.41.1-next.v.202603102151.0+59e17f9ec",
3
+ "version": "9.42.0",
4
4
  "description": "Block library for the WordPress editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -95,42 +95,42 @@
95
95
  ],
96
96
  "dependencies": {
97
97
  "@arraypress/waveform-player": "1.2.1",
98
- "@wordpress/a11y": "^4.41.1-next.v.202603102151.0+59e17f9ec",
99
- "@wordpress/api-fetch": "^7.41.1-next.v.202603102151.0+59e17f9ec",
100
- "@wordpress/autop": "^4.41.1-next.v.202603102151.0+59e17f9ec",
101
- "@wordpress/base-styles": "^6.17.1-next.v.202603102151.0+59e17f9ec",
102
- "@wordpress/blob": "^4.41.1-next.v.202603102151.0+59e17f9ec",
103
- "@wordpress/block-editor": "^15.14.1-next.v.202603102151.0+59e17f9ec",
104
- "@wordpress/blocks": "^15.14.1-next.v.202603102151.0+59e17f9ec",
105
- "@wordpress/components": "^32.4.1-next.v.202603102151.0+59e17f9ec",
106
- "@wordpress/compose": "^7.41.1-next.v.202603102151.0+59e17f9ec",
107
- "@wordpress/core-data": "^7.41.2-next.v.202603102151.0+59e17f9ec",
108
- "@wordpress/data": "^10.41.1-next.v.202603102151.0+59e17f9ec",
109
- "@wordpress/date": "^5.41.1-next.v.202603102151.0+59e17f9ec",
110
- "@wordpress/deprecated": "^4.41.1-next.v.202603102151.0+59e17f9ec",
111
- "@wordpress/dom": "^4.41.1-next.v.202603102151.0+59e17f9ec",
112
- "@wordpress/element": "^6.41.1-next.v.202603102151.0+59e17f9ec",
113
- "@wordpress/escape-html": "^3.41.1-next.v.202603102151.0+59e17f9ec",
114
- "@wordpress/hooks": "^4.41.1-next.v.202603102151.0+59e17f9ec",
115
- "@wordpress/html-entities": "^4.41.1-next.v.202603102151.0+59e17f9ec",
116
- "@wordpress/i18n": "^6.14.1-next.v.202603102151.0+59e17f9ec",
117
- "@wordpress/icons": "^12.0.1-next.v.202603102151.0+59e17f9ec",
118
- "@wordpress/interactivity": "^6.41.2-next.v.202603102151.0+59e17f9ec",
119
- "@wordpress/interactivity-router": "^2.41.2-next.v.202603102151.0+59e17f9ec",
120
- "@wordpress/keyboard-shortcuts": "^5.41.1-next.v.202603102151.0+59e17f9ec",
121
- "@wordpress/keycodes": "^4.41.1-next.v.202603102151.0+59e17f9ec",
122
- "@wordpress/latex-to-mathml": "^1.9.1-next.v.202603102151.0+59e17f9ec",
123
- "@wordpress/notices": "^5.41.1-next.v.202603102151.0+59e17f9ec",
124
- "@wordpress/patterns": "^2.41.1-next.v.202603102151.0+59e17f9ec",
125
- "@wordpress/primitives": "^4.41.1-next.v.202603102151.0+59e17f9ec",
126
- "@wordpress/private-apis": "^1.41.1-next.v.202603102151.0+59e17f9ec",
127
- "@wordpress/reusable-blocks": "^5.41.1-next.v.202603102151.0+59e17f9ec",
128
- "@wordpress/rich-text": "^7.41.1-next.v.202603102151.0+59e17f9ec",
129
- "@wordpress/server-side-render": "^6.17.1-next.v.202603102151.0+59e17f9ec",
130
- "@wordpress/upload-media": "^0.26.1-next.v.202603102151.0+59e17f9ec",
131
- "@wordpress/url": "^4.41.1-next.v.202603102151.0+59e17f9ec",
132
- "@wordpress/viewport": "^6.41.1-next.v.202603102151.0+59e17f9ec",
133
- "@wordpress/wordcount": "^4.41.1-next.v.202603102151.0+59e17f9ec",
98
+ "@wordpress/a11y": "^4.42.0",
99
+ "@wordpress/api-fetch": "^7.42.0",
100
+ "@wordpress/autop": "^4.42.0",
101
+ "@wordpress/base-styles": "^6.18.0",
102
+ "@wordpress/blob": "^4.42.0",
103
+ "@wordpress/block-editor": "^15.15.0",
104
+ "@wordpress/blocks": "^15.15.0",
105
+ "@wordpress/components": "^32.4.0",
106
+ "@wordpress/compose": "^7.42.0",
107
+ "@wordpress/core-data": "^7.42.0",
108
+ "@wordpress/data": "^10.42.0",
109
+ "@wordpress/date": "^5.42.0",
110
+ "@wordpress/deprecated": "^4.42.0",
111
+ "@wordpress/dom": "^4.42.0",
112
+ "@wordpress/element": "^6.42.0",
113
+ "@wordpress/escape-html": "^3.42.0",
114
+ "@wordpress/hooks": "^4.42.0",
115
+ "@wordpress/html-entities": "^4.42.0",
116
+ "@wordpress/i18n": "^6.15.0",
117
+ "@wordpress/icons": "^12.0.0",
118
+ "@wordpress/interactivity": "^6.42.0",
119
+ "@wordpress/interactivity-router": "^2.42.0",
120
+ "@wordpress/keyboard-shortcuts": "^5.42.0",
121
+ "@wordpress/keycodes": "^4.42.0",
122
+ "@wordpress/latex-to-mathml": "^1.10.0",
123
+ "@wordpress/notices": "^5.42.0",
124
+ "@wordpress/patterns": "^2.42.0",
125
+ "@wordpress/primitives": "^4.42.0",
126
+ "@wordpress/private-apis": "^1.42.0",
127
+ "@wordpress/reusable-blocks": "^5.42.0",
128
+ "@wordpress/rich-text": "^7.42.0",
129
+ "@wordpress/server-side-render": "^6.18.0",
130
+ "@wordpress/upload-media": "^0.27.0",
131
+ "@wordpress/url": "^4.42.0",
132
+ "@wordpress/viewport": "^6.42.0",
133
+ "@wordpress/wordcount": "^4.42.0",
134
134
  "change-case": "^4.1.2",
135
135
  "clsx": "^2.1.1",
136
136
  "colord": "^2.7.0",
@@ -151,5 +151,5 @@
151
151
  "publishConfig": {
152
152
  "access": "public"
153
153
  },
154
- "gitHead": "86db21e727d89e8f0dbba9300d2f97fd22b08693"
154
+ "gitHead": "c20787b1778ae64c2db65643b1c236309d68e6ba"
155
155
  }
@@ -4,6 +4,7 @@
4
4
  import { BlockIcon, MediaPlaceholder } from '@wordpress/block-editor';
5
5
  import { __ } from '@wordpress/i18n';
6
6
  import { cover as icon } from '@wordpress/icons';
7
+ import { createBlobURL } from '@wordpress/blob';
7
8
 
8
9
  /**
9
10
  * Internal dependencies
@@ -18,6 +19,12 @@ export default function CoverPlaceholder( {
18
19
  style,
19
20
  toggleUseFeaturedImage,
20
21
  } ) {
22
+ const onFilesPreUpload = ( files ) => {
23
+ if ( files.length === 1 ) {
24
+ onSelectMedia( { url: createBlobURL( files[ 0 ] ) } );
25
+ }
26
+ };
27
+
21
28
  return (
22
29
  <MediaPlaceholder
23
30
  icon={ <BlockIcon icon={ icon } /> }
@@ -28,6 +35,7 @@ export default function CoverPlaceholder( {
28
35
  allowedTypes={ ALLOWED_MEDIA_TYPES }
29
36
  disableMediaButtons={ disableMediaButtons }
30
37
  onToggleFeaturedImage={ toggleUseFeaturedImage }
38
+ onFilesPreUpload={ onFilesPreUpload }
31
39
  onError={ onError }
32
40
  style={ style }
33
41
  >