@wordpress/media-utils 5.37.0 → 5.37.1-next.79a2f3cdd.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 (91) hide show
  1. package/CHANGELOG.md +0 -2
  2. package/LICENSE.md +1 -1
  3. package/build/components/{index.js → index.cjs} +3 -3
  4. package/build/components/{index.js.map → index.cjs.map} +1 -1
  5. package/build/components/media-upload/{index.js → index.cjs} +1 -1
  6. package/build/components/media-upload-modal/{index.js → index.cjs} +13 -8
  7. package/build/components/media-upload-modal/index.cjs.map +7 -0
  8. package/build/{index.js → index.cjs} +9 -9
  9. package/build/{index.js.map → index.cjs.map} +1 -1
  10. package/build/{lock-unlock.js → lock-unlock.cjs} +1 -1
  11. package/build/{private-apis.js → private-apis.cjs} +4 -4
  12. package/build/utils/{flatten-form-data.js → flatten-form-data.cjs} +1 -1
  13. package/build/utils/{get-mime-types-array.js → get-mime-types-array.cjs} +1 -1
  14. package/build/utils/{sideload-media.js → sideload-media.cjs} +3 -3
  15. package/build/utils/{sideload-to-server.js → sideload-to-server.cjs} +3 -3
  16. package/build/utils/{transform-attachment.js → transform-attachment.cjs} +1 -1
  17. package/build/utils/{types.js → types.cjs} +1 -1
  18. package/build/utils/{upload-error.js → upload-error.cjs} +1 -1
  19. package/build/utils/{upload-media.js → upload-media.cjs} +6 -6
  20. package/build/utils/{upload-to-server.js → upload-to-server.cjs} +3 -3
  21. package/build/utils/{validate-file-size.js → validate-file-size.cjs} +2 -2
  22. package/build/utils/{validate-mime-type-for-user.js → validate-mime-type-for-user.cjs} +3 -3
  23. package/build/utils/{validate-mime-type.js → validate-mime-type.cjs} +2 -2
  24. package/build-module/components/index.mjs +6 -0
  25. package/build-module/components/{index.js.map → index.mjs.map} +1 -1
  26. package/build-module/components/media-upload/{index.js → index.mjs} +1 -1
  27. package/build-module/components/media-upload-modal/{index.js → index.mjs} +13 -8
  28. package/build-module/components/media-upload-modal/index.mjs.map +7 -0
  29. package/build-module/index.mjs +17 -0
  30. package/build-module/{lock-unlock.js → lock-unlock.mjs} +1 -1
  31. package/build-module/{private-apis.js → private-apis.mjs} +4 -4
  32. package/build-module/utils/{flatten-form-data.js → flatten-form-data.mjs} +1 -1
  33. package/build-module/utils/{get-mime-types-array.js → get-mime-types-array.mjs} +1 -1
  34. package/build-module/utils/{sideload-media.js → sideload-media.mjs} +3 -3
  35. package/build-module/utils/{sideload-to-server.js → sideload-to-server.mjs} +3 -3
  36. package/build-module/utils/{transform-attachment.js → transform-attachment.mjs} +1 -1
  37. package/build-module/utils/types.mjs +1 -0
  38. package/build-module/utils/{upload-error.js → upload-error.mjs} +1 -1
  39. package/build-module/utils/{upload-media.js → upload-media.mjs} +6 -6
  40. package/build-module/utils/{upload-to-server.js → upload-to-server.mjs} +3 -3
  41. package/build-module/utils/{validate-file-size.js → validate-file-size.mjs} +2 -2
  42. package/build-module/utils/{validate-mime-type-for-user.js → validate-mime-type-for-user.mjs} +3 -3
  43. package/build-module/utils/{validate-mime-type.js → validate-mime-type.mjs} +2 -2
  44. package/build-style/style-rtl.css +64 -0
  45. package/build-style/style.css +64 -0
  46. package/build-types/components/index.d.ts +1 -1
  47. package/build-types/components/index.d.ts.map +1 -1
  48. package/build-types/components/media-upload-modal/index.d.ts.map +1 -1
  49. package/package.json +25 -17
  50. package/src/components/media-upload-modal/index.tsx +11 -6
  51. package/src/components/media-upload-modal/style.scss +23 -0
  52. package/src/style.scss +1 -0
  53. package/build/components/media-upload-modal/index.js.map +0 -7
  54. package/build-module/components/index.js +0 -6
  55. package/build-module/components/media-upload-modal/index.js.map +0 -7
  56. package/build-module/index.js +0 -17
  57. package/build-module/utils/types.js +0 -1
  58. package/tsconfig.json +0 -21
  59. package/tsconfig.tsbuildinfo +0 -1
  60. /package/build/components/media-upload/{index.js.map → index.cjs.map} +0 -0
  61. /package/build/{lock-unlock.js.map → lock-unlock.cjs.map} +0 -0
  62. /package/build/{private-apis.js.map → private-apis.cjs.map} +0 -0
  63. /package/build/utils/{flatten-form-data.js.map → flatten-form-data.cjs.map} +0 -0
  64. /package/build/utils/{get-mime-types-array.js.map → get-mime-types-array.cjs.map} +0 -0
  65. /package/build/utils/{sideload-media.js.map → sideload-media.cjs.map} +0 -0
  66. /package/build/utils/{sideload-to-server.js.map → sideload-to-server.cjs.map} +0 -0
  67. /package/build/utils/{transform-attachment.js.map → transform-attachment.cjs.map} +0 -0
  68. /package/build/utils/{types.js.map → types.cjs.map} +0 -0
  69. /package/build/utils/{upload-error.js.map → upload-error.cjs.map} +0 -0
  70. /package/build/utils/{upload-media.js.map → upload-media.cjs.map} +0 -0
  71. /package/build/utils/{upload-to-server.js.map → upload-to-server.cjs.map} +0 -0
  72. /package/build/utils/{validate-file-size.js.map → validate-file-size.cjs.map} +0 -0
  73. /package/build/utils/{validate-mime-type-for-user.js.map → validate-mime-type-for-user.cjs.map} +0 -0
  74. /package/build/utils/{validate-mime-type.js.map → validate-mime-type.cjs.map} +0 -0
  75. /package/build-module/components/media-upload/{index.js.map → index.mjs.map} +0 -0
  76. /package/build-module/{index.js.map → index.mjs.map} +0 -0
  77. /package/build-module/{lock-unlock.js.map → lock-unlock.mjs.map} +0 -0
  78. /package/build-module/{private-apis.js.map → private-apis.mjs.map} +0 -0
  79. /package/build-module/utils/{flatten-form-data.js.map → flatten-form-data.mjs.map} +0 -0
  80. /package/build-module/utils/{get-mime-types-array.js.map → get-mime-types-array.mjs.map} +0 -0
  81. /package/build-module/utils/{sideload-media.js.map → sideload-media.mjs.map} +0 -0
  82. /package/build-module/utils/{sideload-to-server.js.map → sideload-to-server.mjs.map} +0 -0
  83. /package/build-module/utils/{transform-attachment.js.map → transform-attachment.mjs.map} +0 -0
  84. /package/build-module/utils/{types.js.map → types.mjs.map} +0 -0
  85. /package/build-module/utils/{upload-error.js.map → upload-error.mjs.map} +0 -0
  86. /package/build-module/utils/{upload-media.js.map → upload-media.mjs.map} +0 -0
  87. /package/build-module/utils/{upload-to-server.js.map → upload-to-server.mjs.map} +0 -0
  88. /package/build-module/utils/{validate-file-size.js.map → validate-file-size.mjs.map} +0 -0
  89. /package/build-module/utils/{validate-mime-type-for-user.js.map → validate-mime-type-for-user.mjs.map} +0 -0
  90. /package/build-module/utils/{validate-mime-type.js.map → validate-mime-type.mjs.map} +0 -0
  91. /package/src/components/{index.js → index.ts} +0 -0
package/CHANGELOG.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
- ## 5.37.0 (2025-12-23)
6
-
7
5
  ## 5.36.0 (2025-11-26)
8
6
 
9
7
  ## 5.35.0 (2025-11-12)
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Gutenberg
2
2
 
3
- Copyright 2016-2025 by the contributors
3
+ Copyright 2016-2026 by the contributors
4
4
 
5
5
  **License for Contributions (on and after April 15, 2021)**
6
6
 
@@ -27,15 +27,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
29
 
30
- // packages/media-utils/src/components/index.js
30
+ // packages/media-utils/src/components/index.ts
31
31
  var components_exports = {};
32
32
  __export(components_exports, {
33
33
  MediaUpload: () => import_media_upload.default
34
34
  });
35
35
  module.exports = __toCommonJS(components_exports);
36
- var import_media_upload = __toESM(require("./media-upload"));
36
+ var import_media_upload = __toESM(require("./media-upload/index.cjs"));
37
37
  // Annotate the CommonJS export names for ESM import in node:
38
38
  0 && (module.exports = {
39
39
  MediaUpload
40
40
  });
41
- //# sourceMappingURL=index.js.map
41
+ //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/components/index.js"],
3
+ "sources": ["../../src/components/index.ts"],
4
4
  "sourcesContent": ["export { default as MediaUpload } from './media-upload';\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAuC;",
6
6
  "names": []
@@ -435,4 +435,4 @@ var MediaUpload = class extends import_element.Component {
435
435
  }
436
436
  };
437
437
  var media_upload_default = MediaUpload;
438
- //# sourceMappingURL=index.js.map
438
+ //# sourceMappingURL=index.cjs.map
@@ -32,9 +32,9 @@ var import_components = require("@wordpress/components");
32
32
  var import_icons = require("@wordpress/icons");
33
33
  var import_dataviews = require("@wordpress/dataviews");
34
34
  var import_media_fields = require("@wordpress/media-fields");
35
- var import_transform_attachment = require("../../utils/transform-attachment");
36
- var import_upload_media = require("../../utils/upload-media");
37
- var import_lock_unlock = require("../../lock-unlock");
35
+ var import_transform_attachment = require("../../utils/transform-attachment.cjs");
36
+ var import_upload_media = require("../../utils/upload-media.cjs");
37
+ var import_lock_unlock = require("../../lock-unlock.cjs");
38
38
  var import_jsx_runtime = require("react/jsx-runtime");
39
39
  var { useEntityRecordsWithPermissions } = (0, import_lock_unlock.unlock)(import_core_data.privateApis);
40
40
  var LAYOUT_PICKER_GRID = "pickerGrid";
@@ -108,6 +108,13 @@ function MediaUploadModal({
108
108
  } = useEntityRecordsWithPermissions("postType", "attachment", queryArgs);
109
109
  const fields = (0, import_element.useMemo)(
110
110
  () => [
111
+ // Media field definitions from @wordpress/media-fields
112
+ // Cast is safe because RestAttachment has the same properties as Attachment
113
+ {
114
+ ...import_media_fields.mediaThumbnailField,
115
+ enableHiding: false
116
+ // Within the modal, the thumbnail should always be shown.
117
+ },
111
118
  {
112
119
  id: "title",
113
120
  type: "text",
@@ -117,9 +124,6 @@ function MediaUploadModal({
117
124
  return titleValue || (0, import_i18n.__)("(no title)");
118
125
  }
119
126
  },
120
- // Media field definitions from @wordpress/media-fields
121
- // Cast is safe because RestAttachment has the same properties as Attachment
122
- import_media_fields.mediaThumbnailField,
123
127
  import_media_fields.altTextField,
124
128
  import_media_fields.captionField,
125
129
  import_media_fields.descriptionField,
@@ -152,7 +156,7 @@ function MediaUploadModal({
152
156
  "attachment",
153
157
  selectedPostsQuery
154
158
  );
155
- const transformedPosts = selectedPosts?.map(import_transform_attachment.transformAttachment);
159
+ const transformedPosts = (selectedPosts ?? []).map(import_transform_attachment.transformAttachment).filter(Boolean);
156
160
  const selectedItems = multiple ? transformedPosts : transformedPosts?.[0];
157
161
  onSelect(selectedItems);
158
162
  }
@@ -213,6 +217,7 @@ function MediaUploadModal({
213
217
  onRequestClose: handleModalClose,
214
218
  isDismissible,
215
219
  className: modalClass,
220
+ overlayClassName: "media-upload-modal",
216
221
  size: "fill",
217
222
  headerActions: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
218
223
  import_components.FormFileUpload,
@@ -285,4 +290,4 @@ var media_upload_modal_default = MediaUploadModal;
285
290
  0 && (module.exports = {
286
291
  MediaUploadModal
287
292
  });
288
- //# sourceMappingURL=index.js.map
293
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/media-upload-modal/index.tsx"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useState, useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tprivateApis as coreDataPrivateApis,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { resolveSelect } from '@wordpress/data';\nimport { Modal, DropZone, FormFileUpload, Button } from '@wordpress/components';\nimport { upload as uploadIcon } from '@wordpress/icons';\nimport { DataViewsPicker } from '@wordpress/dataviews';\nimport type { View, Field, ActionButton } from '@wordpress/dataviews';\nimport {\n\taltTextField,\n\tcaptionField,\n\tdescriptionField,\n\tfilenameField,\n\tfilesizeField,\n\tmediaDimensionsField,\n\tmediaThumbnailField,\n\tmimeTypeField,\n} from '@wordpress/media-fields';\n\n/**\n * Internal dependencies\n */\nimport type { Attachment, RestAttachment } from '../../utils/types';\nimport { transformAttachment } from '../../utils/transform-attachment';\nimport { uploadMedia } from '../../utils/upload-media';\nimport { unlock } from '../../lock-unlock';\n\nconst { useEntityRecordsWithPermissions } = unlock( coreDataPrivateApis );\n\n// Layout constants - matching the picker layout types\nconst LAYOUT_PICKER_GRID = 'pickerGrid';\nconst LAYOUT_PICKER_TABLE = 'pickerTable';\n\ninterface MediaUploadModalProps {\n\t/**\n\t * Array of allowed media types.\n\t * @default ['image']\n\t */\n\tallowedTypes?: string[];\n\n\t/**\n\t * Whether multiple files can be selected.\n\t * @default false\n\t */\n\tmultiple?: boolean;\n\n\t/**\n\t * The currently selected media item(s).\n\t * Can be a single ID number or array of IDs for multiple selection.\n\t */\n\tvalue?: number | number[];\n\n\t/**\n\t * Function called when media is selected.\n\t * Receives single attachment object or array of attachments.\n\t */\n\tonSelect: ( media: Attachment | Attachment[] ) => void;\n\n\t/**\n\t * Function called when the modal is closed without selection.\n\t */\n\tonClose?: () => void;\n\n\t/**\n\t * Function to handle media uploads.\n\t * If not provided, drag and drop will be disabled.\n\t */\n\tonUpload?: ( args: {\n\t\tallowedTypes?: string[];\n\t\tfilesList: File[];\n\t\tonFileChange?: ( attachments: Partial< Attachment >[] ) => void;\n\t\tonError?: ( error: Error ) => void;\n\t\tmultiple?: boolean;\n\t} ) => void;\n\n\t/**\n\t * Title for the modal.\n\t * @default 'Select Media'\n\t */\n\ttitle?: string;\n\n\t/**\n\t * Whether the modal is open.\n\t */\n\tisOpen: boolean;\n\n\t/**\n\t * Whether the modal can be closed by clicking outside or pressing escape.\n\t * @default true\n\t */\n\tisDismissible?: boolean;\n\n\t/**\n\t * Additional CSS class for the modal.\n\t */\n\tmodalClass?: string;\n\n\t/**\n\t * Whether to show a search input.\n\t * @default true\n\t */\n\tsearch?: boolean;\n\n\t/**\n\t * Label for the search input.\n\t */\n\tsearchLabel?: string;\n}\n\n/**\n * MediaUploadModal component that uses Modal and DataViewsPicker for media selection.\n *\n * This is a modern functional component alternative to the legacy MediaUpload class component.\n * It provides a cleaner API and better integration with the WordPress block editor.\n *\n * @param props Component props\n * @param props.allowedTypes Array of allowed media types\n * @param props.multiple Whether multiple files can be selected\n * @param props.value Currently selected media item(s)\n * @param props.onSelect Function called when media is selected\n * @param props.onClose Function called when modal is closed\n * @param props.onUpload Function to handle media uploads\n * @param props.title Title for the modal\n * @param props.isOpen Whether the modal is open\n * @param props.isDismissible Whether modal can be dismissed\n * @param props.modalClass Additional CSS class for modal\n * @param props.search Whether to show search input\n * @param props.searchLabel Label for search input\n * @return JSX element or null\n */\nexport function MediaUploadModal( {\n\tallowedTypes = [ 'image' ],\n\tmultiple = false,\n\tvalue,\n\tonSelect,\n\tonClose,\n\tonUpload,\n\ttitle = __( 'Select Media' ),\n\tisOpen,\n\tisDismissible = true,\n\tmodalClass,\n\tsearch = true,\n\tsearchLabel = __( 'Search media' ),\n}: MediaUploadModalProps ) {\n\tconst [ selection, setSelection ] = useState< string[] >( () => {\n\t\tif ( ! value ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn Array.isArray( value )\n\t\t\t? value.map( String )\n\t\t\t: [ String( value ) ];\n\t} );\n\n\t// DataViews configuration - allow view updates\n\tconst [ view, setView ] = useState< View >( () => ( {\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tfields: [],\n\t\tshowTitle: false,\n\t\ttitleField: 'title',\n\t\tmediaField: 'media_thumbnail',\n\t\tsearch: '',\n\t\tpage: 1,\n\t\tperPage: 20,\n\t\tfilters: [],\n\t} ) );\n\n\t// Build query args based on view properties, similar to PostList\n\tconst queryArgs = useMemo( () => {\n\t\tconst filters: Record< string, any > = {};\n\n\t\tview.filters?.forEach( ( filter ) => {\n\t\t\t// Handle media type filters\n\t\t\tif ( filter.field === 'media_type' ) {\n\t\t\t\tfilters.media_type = filter.value;\n\t\t\t}\n\t\t\t// Handle author filters\n\t\t\tif ( filter.field === 'author' ) {\n\t\t\t\tfilters.author = filter.value;\n\t\t\t}\n\t\t\t// Handle date filters\n\t\t\tif ( filter.field === 'date' ) {\n\t\t\t\tfilters.after = filter.value?.after;\n\t\t\t\tfilters.before = filter.value?.before;\n\t\t\t}\n\t\t\t// Handle mime type filters\n\t\t\tif ( filter.field === 'mime_type' ) {\n\t\t\t\tfilters.mime_type = filter.value;\n\t\t\t}\n\t\t} );\n\n\t\t// Base media type on allowedTypes if no filter is set\n\t\tif ( ! filters.media_type ) {\n\t\t\tfilters.media_type = allowedTypes.includes( '*' )\n\t\t\t\t? undefined\n\t\t\t\t: allowedTypes;\n\t\t}\n\n\t\treturn {\n\t\t\tper_page: view.perPage || 20,\n\t\t\tpage: view.page || 1,\n\t\t\tstatus: 'inherit',\n\t\t\torder: view.sort?.direction,\n\t\t\torderby: view.sort?.field,\n\t\t\tsearch: view.search,\n\t\t\t...filters,\n\t\t};\n\t}, [ view, allowedTypes ] );\n\n\t// Fetch all media attachments using WordPress core data with permissions\n\tconst {\n\t\trecords: mediaRecords,\n\t\tisResolving: isLoading,\n\t\ttotalItems,\n\t\ttotalPages,\n\t} = useEntityRecordsWithPermissions( 'postType', 'attachment', queryArgs );\n\n\tconst fields: Field< RestAttachment >[] = useMemo(\n\t\t() => [\n\t\t\t// Media field definitions from @wordpress/media-fields\n\t\t\t// Cast is safe because RestAttachment has the same properties as Attachment\n\t\t\t{\n\t\t\t\t...( mediaThumbnailField as Field< RestAttachment > ),\n\t\t\t\tenableHiding: false, // Within the modal, the thumbnail should always be shown.\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'title',\n\t\t\t\ttype: 'text' as const,\n\t\t\t\tlabel: __( 'Title' ),\n\t\t\t\tgetValue: ( { item }: { item: RestAttachment } ) => {\n\t\t\t\t\tconst titleValue = item.title.raw || item.title.rendered;\n\t\t\t\t\treturn titleValue || __( '(no title)' );\n\t\t\t\t},\n\t\t\t},\n\t\t\taltTextField as Field< RestAttachment >,\n\t\t\tcaptionField as Field< RestAttachment >,\n\t\t\tdescriptionField as Field< RestAttachment >,\n\t\t\tfilenameField as Field< RestAttachment >,\n\t\t\tfilesizeField as Field< RestAttachment >,\n\t\t\tmediaDimensionsField as Field< RestAttachment >,\n\t\t\tmimeTypeField as Field< RestAttachment >,\n\t\t],\n\t\t[]\n\t);\n\n\tconst actions: ActionButton< RestAttachment >[] = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: 'select',\n\t\t\t\tlabel: multiple ? __( 'Select' ) : __( 'Select' ),\n\t\t\t\tisPrimary: true,\n\t\t\t\tsupportsBulk: multiple,\n\t\t\t\tasync callback() {\n\t\t\t\t\tif ( selection.length === 0 ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst selectedPostsQuery = {\n\t\t\t\t\t\tinclude: selection,\n\t\t\t\t\t\tper_page: -1,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst selectedPosts = await resolveSelect(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords< RestAttachment >(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t'attachment',\n\t\t\t\t\t\tselectedPostsQuery\n\t\t\t\t\t);\n\n\t\t\t\t\t// Transform the selected posts to the expected Attachment format\n\t\t\t\t\tconst transformedPosts = ( selectedPosts ?? [] )\n\t\t\t\t\t\t.map( transformAttachment )\n\t\t\t\t\t\t.filter( Boolean );\n\n\t\t\t\t\tconst selectedItems = multiple\n\t\t\t\t\t\t? transformedPosts\n\t\t\t\t\t\t: transformedPosts?.[ 0 ];\n\n\t\t\t\t\tonSelect( selectedItems );\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\t[ multiple, onSelect, selection ]\n\t);\n\n\tconst handleModalClose = useCallback( () => {\n\t\tonClose?.();\n\t}, [ onClose ] );\n\n\t// Use onUpload if provided, otherwise fall back to uploadMedia\n\tconst handleUpload = onUpload || uploadMedia;\n\n\tconst handleFileSelect = useCallback(\n\t\t( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst files = event.target.files;\n\t\t\tif ( files && files.length > 0 ) {\n\t\t\t\tconst filesArray = Array.from( files );\n\t\t\t\thandleUpload( {\n\t\t\t\t\tallowedTypes,\n\t\t\t\t\tfilesList: filesArray,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ allowedTypes, handleUpload ]\n\t);\n\n\tconst paginationInfo = useMemo(\n\t\t() => ( {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t} ),\n\t\t[ totalItems, totalPages ]\n\t);\n\n\tconst defaultLayouts = useMemo(\n\t\t() => ( {\n\t\t\t[ LAYOUT_PICKER_GRID ]: {\n\t\t\t\tfields: [],\n\t\t\t\tshowTitle: false,\n\t\t\t},\n\t\t\t[ LAYOUT_PICKER_TABLE ]: {\n\t\t\t\tfields: [ 'filename', 'filesize', 'media_dimensions' ],\n\t\t\t\tshowTitle: true,\n\t\t\t},\n\t\t} ),\n\t\t[]\n\t);\n\n\t// Build accept attribute from allowedTypes\n\tconst acceptTypes = useMemo( () => {\n\t\tif ( allowedTypes.includes( '*' ) ) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn allowedTypes.join( ',' );\n\t}, [ allowedTypes ] );\n\n\tif ( ! isOpen ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ title }\n\t\t\tonRequestClose={ handleModalClose }\n\t\t\tisDismissible={ isDismissible }\n\t\t\tclassName={ modalClass }\n\t\t\toverlayClassName=\"media-upload-modal\"\n\t\t\tsize=\"fill\"\n\t\t\theaderActions={\n\t\t\t\t<FormFileUpload\n\t\t\t\t\taccept={ acceptTypes }\n\t\t\t\t\tmultiple\n\t\t\t\t\tonChange={ handleFileSelect }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trender={ ( { openFileDialog } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\ticon={ uploadIcon }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload media' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ ( files ) => {\n\t\t\t\t\tlet filteredFiles = files;\n\t\t\t\t\t// Filter files by allowed types if specified\n\t\t\t\t\tif ( allowedTypes && ! allowedTypes.includes( '*' ) ) {\n\t\t\t\t\t\tfilteredFiles = files.filter( ( file ) =>\n\t\t\t\t\t\t\tallowedTypes.some( ( allowedType ) => {\n\t\t\t\t\t\t\t\t// Check if the file type matches the allowed MIME type\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\tfile.type === allowedType ||\n\t\t\t\t\t\t\t\t\tfile.type.startsWith(\n\t\t\t\t\t\t\t\t\t\tallowedType.replace( '*', '' )\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\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\tif ( filteredFiles.length > 0 ) {\n\t\t\t\t\t\thandleUpload( {\n\t\t\t\t\t\t\tallowedTypes,\n\t\t\t\t\t\t\tfilesList: filteredFiles,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t\tlabel={ __( 'Drop files to upload' ) }\n\t\t\t/>\n\t\t\t<DataViewsPicker\n\t\t\t\tdata={ mediaRecords || [] }\n\t\t\t\tfields={ fields }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ setView }\n\t\t\t\tactions={ actions }\n\t\t\t\tselection={ selection }\n\t\t\t\tonChangeSelection={ setSelection }\n\t\t\t\tisLoading={ isLoading }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t\tgetItemId={ ( item: RestAttachment ) => String( item.id ) }\n\t\t\t\tsearch={ search }\n\t\t\t\tsearchLabel={ searchLabel }\n\t\t\t\titemListLabel={ __( 'Media items' ) }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n\nexport default MediaUploadModal;\n"],
5
+ "mappings": "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",
6
+ "names": ["coreDataPrivateApis", "coreStore", "uploadIcon"]
7
+ }
@@ -29,13 +29,13 @@ __export(index_exports, {
29
29
  validateMimeTypeForUser: () => import_validate_mime_type_for_user.validateMimeTypeForUser
30
30
  });
31
31
  module.exports = __toCommonJS(index_exports);
32
- __reExport(index_exports, require("./components"), module.exports);
33
- var import_upload_media = require("./utils/upload-media");
34
- var import_transform_attachment = require("./utils/transform-attachment");
35
- var import_validate_file_size = require("./utils/validate-file-size");
36
- var import_validate_mime_type = require("./utils/validate-mime-type");
37
- var import_validate_mime_type_for_user = require("./utils/validate-mime-type-for-user");
38
- var import_private_apis = require("./private-apis");
32
+ __reExport(index_exports, require("./components/index.cjs"), module.exports);
33
+ var import_upload_media = require("./utils/upload-media.cjs");
34
+ var import_transform_attachment = require("./utils/transform-attachment.cjs");
35
+ var import_validate_file_size = require("./utils/validate-file-size.cjs");
36
+ var import_validate_mime_type = require("./utils/validate-mime-type.cjs");
37
+ var import_validate_mime_type_for_user = require("./utils/validate-mime-type-for-user.cjs");
38
+ var import_private_apis = require("./private-apis.cjs");
39
39
  // Annotate the CommonJS export names for ESM import in node:
40
40
  0 && (module.exports = {
41
41
  privateApis,
@@ -44,6 +44,6 @@ var import_private_apis = require("./private-apis");
44
44
  validateFileSize,
45
45
  validateMimeType,
46
46
  validateMimeTypeForUser,
47
- ...require("./components")
47
+ ...require("./components/index.cjs")
48
48
  });
49
- //# sourceMappingURL=index.js.map
49
+ //# sourceMappingURL=index.cjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/index.ts"],
4
4
  "sourcesContent": ["export * from './components';\n\nexport { uploadMedia } from './utils/upload-media';\nexport { transformAttachment } from './utils/transform-attachment';\nexport { validateFileSize } from './utils/validate-file-size';\nexport { validateMimeType } from './utils/validate-mime-type';\nexport { validateMimeTypeForUser } from './utils/validate-mime-type-for-user';\n\nexport type { Attachment, RestAttachment } from './utils/types';\n\nexport { privateApis } from './private-apis';\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAc,yBAAd;AAEA,0BAA4B;AAC5B,kCAAoC;AACpC,gCAAiC;AACjC,gCAAiC;AACjC,yCAAwC;AAIxC,0BAA4B;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAAc,mCAAd;AAEA,0BAA4B;AAC5B,kCAAoC;AACpC,gCAAiC;AACjC,gCAAiC;AACjC,yCAAwC;AAIxC,0BAA4B;",
6
6
  "names": []
7
7
  }
@@ -34,4 +34,4 @@ var { lock, unlock } = (0, import_private_apis.__dangerousOptInToUnstableAPIsOnl
34
34
  lock,
35
35
  unlock
36
36
  });
37
- //# sourceMappingURL=lock-unlock.js.map
37
+ //# sourceMappingURL=lock-unlock.cjs.map
@@ -23,9 +23,9 @@ __export(private_apis_exports, {
23
23
  privateApis: () => privateApis
24
24
  });
25
25
  module.exports = __toCommonJS(private_apis_exports);
26
- var import_sideload_media = require("./utils/sideload-media");
27
- var import_media_upload_modal = require("./components/media-upload-modal");
28
- var import_lock_unlock = require("./lock-unlock");
26
+ var import_sideload_media = require("./utils/sideload-media.cjs");
27
+ var import_media_upload_modal = require("./components/media-upload-modal/index.cjs");
28
+ var import_lock_unlock = require("./lock-unlock.cjs");
29
29
  var privateApis = {};
30
30
  (0, import_lock_unlock.lock)(privateApis, {
31
31
  sideloadMedia: import_sideload_media.sideloadMedia,
@@ -35,4 +35,4 @@ var privateApis = {};
35
35
  0 && (module.exports = {
36
36
  privateApis
37
37
  });
38
- //# sourceMappingURL=private-apis.js.map
38
+ //# sourceMappingURL=private-apis.cjs.map
@@ -39,4 +39,4 @@ function flattenFormData(formData, key, data) {
39
39
  0 && (module.exports = {
40
40
  flattenFormData
41
41
  });
42
- //# sourceMappingURL=flatten-form-data.js.map
42
+ //# sourceMappingURL=flatten-form-data.cjs.map
@@ -44,4 +44,4 @@ function getMimeTypesArray(wpMimeTypesObject) {
44
44
  0 && (module.exports = {
45
45
  getMimeTypesArray
46
46
  });
47
- //# sourceMappingURL=get-mime-types-array.js.map
47
+ //# sourceMappingURL=get-mime-types-array.cjs.map
@@ -24,8 +24,8 @@ __export(sideload_media_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(sideload_media_exports);
26
26
  var import_i18n = require("@wordpress/i18n");
27
- var import_sideload_to_server = require("./sideload-to-server");
28
- var import_upload_error = require("./upload-error");
27
+ var import_sideload_to_server = require("./sideload-to-server.cjs");
28
+ var import_upload_error = require("./upload-error.cjs");
29
29
  var noop = () => {
30
30
  };
31
31
  async function sideloadMedia({
@@ -69,4 +69,4 @@ async function sideloadMedia({
69
69
  0 && (module.exports = {
70
70
  sideloadMedia
71
71
  });
72
- //# sourceMappingURL=sideload-media.js.map
72
+ //# sourceMappingURL=sideload-media.cjs.map
@@ -34,8 +34,8 @@ __export(sideload_to_server_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(sideload_to_server_exports);
36
36
  var import_api_fetch = __toESM(require("@wordpress/api-fetch"));
37
- var import_flatten_form_data = require("./flatten-form-data");
38
- var import_transform_attachment = require("./transform-attachment");
37
+ var import_flatten_form_data = require("./flatten-form-data.cjs");
38
+ var import_transform_attachment = require("./transform-attachment.cjs");
39
39
  async function sideloadToServer(file, attachmentId, additionalData = {}, signal) {
40
40
  const data = new FormData();
41
41
  data.append("file", file, file.name || file.type.replace("/", "."));
@@ -59,4 +59,4 @@ async function sideloadToServer(file, attachmentId, additionalData = {}, signal)
59
59
  0 && (module.exports = {
60
60
  sideloadToServer
61
61
  });
62
- //# sourceMappingURL=sideload-to-server.js.map
62
+ //# sourceMappingURL=sideload-to-server.cjs.map
@@ -38,4 +38,4 @@ function transformAttachment(attachment) {
38
38
  0 && (module.exports = {
39
39
  transformAttachment
40
40
  });
41
- //# sourceMappingURL=transform-attachment.js.map
41
+ //# sourceMappingURL=transform-attachment.cjs.map
@@ -16,4 +16,4 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
16
16
  // packages/media-utils/src/utils/types.ts
17
17
  var types_exports = {};
18
18
  module.exports = __toCommonJS(types_exports);
19
- //# sourceMappingURL=types.js.map
19
+ //# sourceMappingURL=types.cjs.map
@@ -37,4 +37,4 @@ var UploadError = class extends Error {
37
37
  0 && (module.exports = {
38
38
  UploadError
39
39
  });
40
- //# sourceMappingURL=upload-error.js.map
40
+ //# sourceMappingURL=upload-error.cjs.map
@@ -25,11 +25,11 @@ __export(upload_media_exports, {
25
25
  module.exports = __toCommonJS(upload_media_exports);
26
26
  var import_i18n = require("@wordpress/i18n");
27
27
  var import_blob = require("@wordpress/blob");
28
- var import_upload_to_server = require("./upload-to-server");
29
- var import_validate_mime_type = require("./validate-mime-type");
30
- var import_validate_mime_type_for_user = require("./validate-mime-type-for-user");
31
- var import_validate_file_size = require("./validate-file-size");
32
- var import_upload_error = require("./upload-error");
28
+ var import_upload_to_server = require("./upload-to-server.cjs");
29
+ var import_validate_mime_type = require("./validate-mime-type.cjs");
30
+ var import_validate_mime_type_for_user = require("./validate-mime-type-for-user.cjs");
31
+ var import_validate_file_size = require("./validate-file-size.cjs");
32
+ var import_upload_error = require("./upload-error.cjs");
33
33
  function uploadMedia({
34
34
  wpAllowedMimeTypes,
35
35
  allowedTypes,
@@ -118,4 +118,4 @@ function uploadMedia({
118
118
  0 && (module.exports = {
119
119
  uploadMedia
120
120
  });
121
- //# sourceMappingURL=upload-media.js.map
121
+ //# sourceMappingURL=upload-media.cjs.map
@@ -34,8 +34,8 @@ __export(upload_to_server_exports, {
34
34
  });
35
35
  module.exports = __toCommonJS(upload_to_server_exports);
36
36
  var import_api_fetch = __toESM(require("@wordpress/api-fetch"));
37
- var import_flatten_form_data = require("./flatten-form-data");
38
- var import_transform_attachment = require("./transform-attachment");
37
+ var import_flatten_form_data = require("./flatten-form-data.cjs");
38
+ var import_transform_attachment = require("./transform-attachment.cjs");
39
39
  async function uploadToServer(file, additionalData = {}, signal) {
40
40
  const data = new FormData();
41
41
  data.append("file", file, file.name || file.type.replace("/", "."));
@@ -60,4 +60,4 @@ async function uploadToServer(file, additionalData = {}, signal) {
60
60
  0 && (module.exports = {
61
61
  uploadToServer
62
62
  });
63
- //# sourceMappingURL=upload-to-server.js.map
63
+ //# sourceMappingURL=upload-to-server.cjs.map
@@ -24,7 +24,7 @@ __export(validate_file_size_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(validate_file_size_exports);
26
26
  var import_i18n = require("@wordpress/i18n");
27
- var import_upload_error = require("./upload-error");
27
+ var import_upload_error = require("./upload-error.cjs");
28
28
  function validateFileSize(file, maxUploadFileSize) {
29
29
  if (file.size <= 0) {
30
30
  throw new import_upload_error.UploadError({
@@ -55,4 +55,4 @@ function validateFileSize(file, maxUploadFileSize) {
55
55
  0 && (module.exports = {
56
56
  validateFileSize
57
57
  });
58
- //# sourceMappingURL=validate-file-size.js.map
58
+ //# sourceMappingURL=validate-file-size.cjs.map
@@ -24,8 +24,8 @@ __export(validate_mime_type_for_user_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(validate_mime_type_for_user_exports);
26
26
  var import_i18n = require("@wordpress/i18n");
27
- var import_upload_error = require("./upload-error");
28
- var import_get_mime_types_array = require("./get-mime-types-array");
27
+ var import_upload_error = require("./upload-error.cjs");
28
+ var import_get_mime_types_array = require("./get-mime-types-array.cjs");
29
29
  function validateMimeTypeForUser(file, wpAllowedMimeTypes) {
30
30
  const allowedMimeTypesForUser = (0, import_get_mime_types_array.getMimeTypesArray)(wpAllowedMimeTypes);
31
31
  if (!allowedMimeTypesForUser) {
@@ -52,4 +52,4 @@ function validateMimeTypeForUser(file, wpAllowedMimeTypes) {
52
52
  0 && (module.exports = {
53
53
  validateMimeTypeForUser
54
54
  });
55
- //# sourceMappingURL=validate-mime-type-for-user.js.map
55
+ //# sourceMappingURL=validate-mime-type-for-user.cjs.map
@@ -24,7 +24,7 @@ __export(validate_mime_type_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(validate_mime_type_exports);
26
26
  var import_i18n = require("@wordpress/i18n");
27
- var import_upload_error = require("./upload-error");
27
+ var import_upload_error = require("./upload-error.cjs");
28
28
  function validateMimeType(file, allowedTypes) {
29
29
  if (!allowedTypes) {
30
30
  return;
@@ -51,4 +51,4 @@ function validateMimeType(file, allowedTypes) {
51
51
  0 && (module.exports = {
52
52
  validateMimeType
53
53
  });
54
- //# sourceMappingURL=validate-mime-type.js.map
54
+ //# sourceMappingURL=validate-mime-type.cjs.map
@@ -0,0 +1,6 @@
1
+ // packages/media-utils/src/components/index.ts
2
+ import { default as default2 } from "./media-upload/index.mjs";
3
+ export {
4
+ default2 as MediaUpload
5
+ };
6
+ //# sourceMappingURL=index.mjs.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/components/index.js"],
3
+ "sources": ["../../src/components/index.ts"],
4
4
  "sourcesContent": ["export { default as MediaUpload } from './media-upload';\n"],
5
5
  "mappings": ";AAAA,SAAoB,WAAXA,gBAA8B;",
6
6
  "names": ["default"]
@@ -414,4 +414,4 @@ var media_upload_default = MediaUpload;
414
414
  export {
415
415
  media_upload_default as default
416
416
  };
417
- //# sourceMappingURL=index.js.map
417
+ //# sourceMappingURL=index.mjs.map
@@ -19,9 +19,9 @@ import {
19
19
  mediaThumbnailField,
20
20
  mimeTypeField
21
21
  } from "@wordpress/media-fields";
22
- import { transformAttachment } from "../../utils/transform-attachment";
23
- import { uploadMedia } from "../../utils/upload-media";
24
- import { unlock } from "../../lock-unlock";
22
+ import { transformAttachment } from "../../utils/transform-attachment.mjs";
23
+ import { uploadMedia } from "../../utils/upload-media.mjs";
24
+ import { unlock } from "../../lock-unlock.mjs";
25
25
  import { jsx, jsxs } from "react/jsx-runtime";
26
26
  var { useEntityRecordsWithPermissions } = unlock(coreDataPrivateApis);
27
27
  var LAYOUT_PICKER_GRID = "pickerGrid";
@@ -95,6 +95,13 @@ function MediaUploadModal({
95
95
  } = useEntityRecordsWithPermissions("postType", "attachment", queryArgs);
96
96
  const fields = useMemo(
97
97
  () => [
98
+ // Media field definitions from @wordpress/media-fields
99
+ // Cast is safe because RestAttachment has the same properties as Attachment
100
+ {
101
+ ...mediaThumbnailField,
102
+ enableHiding: false
103
+ // Within the modal, the thumbnail should always be shown.
104
+ },
98
105
  {
99
106
  id: "title",
100
107
  type: "text",
@@ -104,9 +111,6 @@ function MediaUploadModal({
104
111
  return titleValue || __("(no title)");
105
112
  }
106
113
  },
107
- // Media field definitions from @wordpress/media-fields
108
- // Cast is safe because RestAttachment has the same properties as Attachment
109
- mediaThumbnailField,
110
114
  altTextField,
111
115
  captionField,
112
116
  descriptionField,
@@ -139,7 +143,7 @@ function MediaUploadModal({
139
143
  "attachment",
140
144
  selectedPostsQuery
141
145
  );
142
- const transformedPosts = selectedPosts?.map(transformAttachment);
146
+ const transformedPosts = (selectedPosts ?? []).map(transformAttachment).filter(Boolean);
143
147
  const selectedItems = multiple ? transformedPosts : transformedPosts?.[0];
144
148
  onSelect(selectedItems);
145
149
  }
@@ -200,6 +204,7 @@ function MediaUploadModal({
200
204
  onRequestClose: handleModalClose,
201
205
  isDismissible,
202
206
  className: modalClass,
207
+ overlayClassName: "media-upload-modal",
203
208
  size: "fill",
204
209
  headerActions: /* @__PURE__ */ jsx(
205
210
  FormFileUpload,
@@ -272,4 +277,4 @@ export {
272
277
  MediaUploadModal,
273
278
  media_upload_modal_default as default
274
279
  };
275
- //# sourceMappingURL=index.js.map
280
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/media-upload-modal/index.tsx"],
4
+ "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useState, useCallback, useMemo } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tprivateApis as coreDataPrivateApis,\n\tstore as coreStore,\n} from '@wordpress/core-data';\nimport { resolveSelect } from '@wordpress/data';\nimport { Modal, DropZone, FormFileUpload, Button } from '@wordpress/components';\nimport { upload as uploadIcon } from '@wordpress/icons';\nimport { DataViewsPicker } from '@wordpress/dataviews';\nimport type { View, Field, ActionButton } from '@wordpress/dataviews';\nimport {\n\taltTextField,\n\tcaptionField,\n\tdescriptionField,\n\tfilenameField,\n\tfilesizeField,\n\tmediaDimensionsField,\n\tmediaThumbnailField,\n\tmimeTypeField,\n} from '@wordpress/media-fields';\n\n/**\n * Internal dependencies\n */\nimport type { Attachment, RestAttachment } from '../../utils/types';\nimport { transformAttachment } from '../../utils/transform-attachment';\nimport { uploadMedia } from '../../utils/upload-media';\nimport { unlock } from '../../lock-unlock';\n\nconst { useEntityRecordsWithPermissions } = unlock( coreDataPrivateApis );\n\n// Layout constants - matching the picker layout types\nconst LAYOUT_PICKER_GRID = 'pickerGrid';\nconst LAYOUT_PICKER_TABLE = 'pickerTable';\n\ninterface MediaUploadModalProps {\n\t/**\n\t * Array of allowed media types.\n\t * @default ['image']\n\t */\n\tallowedTypes?: string[];\n\n\t/**\n\t * Whether multiple files can be selected.\n\t * @default false\n\t */\n\tmultiple?: boolean;\n\n\t/**\n\t * The currently selected media item(s).\n\t * Can be a single ID number or array of IDs for multiple selection.\n\t */\n\tvalue?: number | number[];\n\n\t/**\n\t * Function called when media is selected.\n\t * Receives single attachment object or array of attachments.\n\t */\n\tonSelect: ( media: Attachment | Attachment[] ) => void;\n\n\t/**\n\t * Function called when the modal is closed without selection.\n\t */\n\tonClose?: () => void;\n\n\t/**\n\t * Function to handle media uploads.\n\t * If not provided, drag and drop will be disabled.\n\t */\n\tonUpload?: ( args: {\n\t\tallowedTypes?: string[];\n\t\tfilesList: File[];\n\t\tonFileChange?: ( attachments: Partial< Attachment >[] ) => void;\n\t\tonError?: ( error: Error ) => void;\n\t\tmultiple?: boolean;\n\t} ) => void;\n\n\t/**\n\t * Title for the modal.\n\t * @default 'Select Media'\n\t */\n\ttitle?: string;\n\n\t/**\n\t * Whether the modal is open.\n\t */\n\tisOpen: boolean;\n\n\t/**\n\t * Whether the modal can be closed by clicking outside or pressing escape.\n\t * @default true\n\t */\n\tisDismissible?: boolean;\n\n\t/**\n\t * Additional CSS class for the modal.\n\t */\n\tmodalClass?: string;\n\n\t/**\n\t * Whether to show a search input.\n\t * @default true\n\t */\n\tsearch?: boolean;\n\n\t/**\n\t * Label for the search input.\n\t */\n\tsearchLabel?: string;\n}\n\n/**\n * MediaUploadModal component that uses Modal and DataViewsPicker for media selection.\n *\n * This is a modern functional component alternative to the legacy MediaUpload class component.\n * It provides a cleaner API and better integration with the WordPress block editor.\n *\n * @param props Component props\n * @param props.allowedTypes Array of allowed media types\n * @param props.multiple Whether multiple files can be selected\n * @param props.value Currently selected media item(s)\n * @param props.onSelect Function called when media is selected\n * @param props.onClose Function called when modal is closed\n * @param props.onUpload Function to handle media uploads\n * @param props.title Title for the modal\n * @param props.isOpen Whether the modal is open\n * @param props.isDismissible Whether modal can be dismissed\n * @param props.modalClass Additional CSS class for modal\n * @param props.search Whether to show search input\n * @param props.searchLabel Label for search input\n * @return JSX element or null\n */\nexport function MediaUploadModal( {\n\tallowedTypes = [ 'image' ],\n\tmultiple = false,\n\tvalue,\n\tonSelect,\n\tonClose,\n\tonUpload,\n\ttitle = __( 'Select Media' ),\n\tisOpen,\n\tisDismissible = true,\n\tmodalClass,\n\tsearch = true,\n\tsearchLabel = __( 'Search media' ),\n}: MediaUploadModalProps ) {\n\tconst [ selection, setSelection ] = useState< string[] >( () => {\n\t\tif ( ! value ) {\n\t\t\treturn [];\n\t\t}\n\t\treturn Array.isArray( value )\n\t\t\t? value.map( String )\n\t\t\t: [ String( value ) ];\n\t} );\n\n\t// DataViews configuration - allow view updates\n\tconst [ view, setView ] = useState< View >( () => ( {\n\t\ttype: LAYOUT_PICKER_GRID,\n\t\tfields: [],\n\t\tshowTitle: false,\n\t\ttitleField: 'title',\n\t\tmediaField: 'media_thumbnail',\n\t\tsearch: '',\n\t\tpage: 1,\n\t\tperPage: 20,\n\t\tfilters: [],\n\t} ) );\n\n\t// Build query args based on view properties, similar to PostList\n\tconst queryArgs = useMemo( () => {\n\t\tconst filters: Record< string, any > = {};\n\n\t\tview.filters?.forEach( ( filter ) => {\n\t\t\t// Handle media type filters\n\t\t\tif ( filter.field === 'media_type' ) {\n\t\t\t\tfilters.media_type = filter.value;\n\t\t\t}\n\t\t\t// Handle author filters\n\t\t\tif ( filter.field === 'author' ) {\n\t\t\t\tfilters.author = filter.value;\n\t\t\t}\n\t\t\t// Handle date filters\n\t\t\tif ( filter.field === 'date' ) {\n\t\t\t\tfilters.after = filter.value?.after;\n\t\t\t\tfilters.before = filter.value?.before;\n\t\t\t}\n\t\t\t// Handle mime type filters\n\t\t\tif ( filter.field === 'mime_type' ) {\n\t\t\t\tfilters.mime_type = filter.value;\n\t\t\t}\n\t\t} );\n\n\t\t// Base media type on allowedTypes if no filter is set\n\t\tif ( ! filters.media_type ) {\n\t\t\tfilters.media_type = allowedTypes.includes( '*' )\n\t\t\t\t? undefined\n\t\t\t\t: allowedTypes;\n\t\t}\n\n\t\treturn {\n\t\t\tper_page: view.perPage || 20,\n\t\t\tpage: view.page || 1,\n\t\t\tstatus: 'inherit',\n\t\t\torder: view.sort?.direction,\n\t\t\torderby: view.sort?.field,\n\t\t\tsearch: view.search,\n\t\t\t...filters,\n\t\t};\n\t}, [ view, allowedTypes ] );\n\n\t// Fetch all media attachments using WordPress core data with permissions\n\tconst {\n\t\trecords: mediaRecords,\n\t\tisResolving: isLoading,\n\t\ttotalItems,\n\t\ttotalPages,\n\t} = useEntityRecordsWithPermissions( 'postType', 'attachment', queryArgs );\n\n\tconst fields: Field< RestAttachment >[] = useMemo(\n\t\t() => [\n\t\t\t// Media field definitions from @wordpress/media-fields\n\t\t\t// Cast is safe because RestAttachment has the same properties as Attachment\n\t\t\t{\n\t\t\t\t...( mediaThumbnailField as Field< RestAttachment > ),\n\t\t\t\tenableHiding: false, // Within the modal, the thumbnail should always be shown.\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'title',\n\t\t\t\ttype: 'text' as const,\n\t\t\t\tlabel: __( 'Title' ),\n\t\t\t\tgetValue: ( { item }: { item: RestAttachment } ) => {\n\t\t\t\t\tconst titleValue = item.title.raw || item.title.rendered;\n\t\t\t\t\treturn titleValue || __( '(no title)' );\n\t\t\t\t},\n\t\t\t},\n\t\t\taltTextField as Field< RestAttachment >,\n\t\t\tcaptionField as Field< RestAttachment >,\n\t\t\tdescriptionField as Field< RestAttachment >,\n\t\t\tfilenameField as Field< RestAttachment >,\n\t\t\tfilesizeField as Field< RestAttachment >,\n\t\t\tmediaDimensionsField as Field< RestAttachment >,\n\t\t\tmimeTypeField as Field< RestAttachment >,\n\t\t],\n\t\t[]\n\t);\n\n\tconst actions: ActionButton< RestAttachment >[] = useMemo(\n\t\t() => [\n\t\t\t{\n\t\t\t\tid: 'select',\n\t\t\t\tlabel: multiple ? __( 'Select' ) : __( 'Select' ),\n\t\t\t\tisPrimary: true,\n\t\t\t\tsupportsBulk: multiple,\n\t\t\t\tasync callback() {\n\t\t\t\t\tif ( selection.length === 0 ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst selectedPostsQuery = {\n\t\t\t\t\t\tinclude: selection,\n\t\t\t\t\t\tper_page: -1,\n\t\t\t\t\t};\n\n\t\t\t\t\tconst selectedPosts = await resolveSelect(\n\t\t\t\t\t\tcoreStore\n\t\t\t\t\t).getEntityRecords< RestAttachment >(\n\t\t\t\t\t\t'postType',\n\t\t\t\t\t\t'attachment',\n\t\t\t\t\t\tselectedPostsQuery\n\t\t\t\t\t);\n\n\t\t\t\t\t// Transform the selected posts to the expected Attachment format\n\t\t\t\t\tconst transformedPosts = ( selectedPosts ?? [] )\n\t\t\t\t\t\t.map( transformAttachment )\n\t\t\t\t\t\t.filter( Boolean );\n\n\t\t\t\t\tconst selectedItems = multiple\n\t\t\t\t\t\t? transformedPosts\n\t\t\t\t\t\t: transformedPosts?.[ 0 ];\n\n\t\t\t\t\tonSelect( selectedItems );\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\t[ multiple, onSelect, selection ]\n\t);\n\n\tconst handleModalClose = useCallback( () => {\n\t\tonClose?.();\n\t}, [ onClose ] );\n\n\t// Use onUpload if provided, otherwise fall back to uploadMedia\n\tconst handleUpload = onUpload || uploadMedia;\n\n\tconst handleFileSelect = useCallback(\n\t\t( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\t\tconst files = event.target.files;\n\t\t\tif ( files && files.length > 0 ) {\n\t\t\t\tconst filesArray = Array.from( files );\n\t\t\t\thandleUpload( {\n\t\t\t\t\tallowedTypes,\n\t\t\t\t\tfilesList: filesArray,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ allowedTypes, handleUpload ]\n\t);\n\n\tconst paginationInfo = useMemo(\n\t\t() => ( {\n\t\t\ttotalItems,\n\t\t\ttotalPages,\n\t\t} ),\n\t\t[ totalItems, totalPages ]\n\t);\n\n\tconst defaultLayouts = useMemo(\n\t\t() => ( {\n\t\t\t[ LAYOUT_PICKER_GRID ]: {\n\t\t\t\tfields: [],\n\t\t\t\tshowTitle: false,\n\t\t\t},\n\t\t\t[ LAYOUT_PICKER_TABLE ]: {\n\t\t\t\tfields: [ 'filename', 'filesize', 'media_dimensions' ],\n\t\t\t\tshowTitle: true,\n\t\t\t},\n\t\t} ),\n\t\t[]\n\t);\n\n\t// Build accept attribute from allowedTypes\n\tconst acceptTypes = useMemo( () => {\n\t\tif ( allowedTypes.includes( '*' ) ) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn allowedTypes.join( ',' );\n\t}, [ allowedTypes ] );\n\n\tif ( ! isOpen ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Modal\n\t\t\ttitle={ title }\n\t\t\tonRequestClose={ handleModalClose }\n\t\t\tisDismissible={ isDismissible }\n\t\t\tclassName={ modalClass }\n\t\t\toverlayClassName=\"media-upload-modal\"\n\t\t\tsize=\"fill\"\n\t\t\theaderActions={\n\t\t\t\t<FormFileUpload\n\t\t\t\t\taccept={ acceptTypes }\n\t\t\t\t\tmultiple\n\t\t\t\t\tonChange={ handleFileSelect }\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\trender={ ( { openFileDialog } ) => (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tonClick={ openFileDialog }\n\t\t\t\t\t\t\ticon={ uploadIcon }\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload media' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t}\n\t\t>\n\t\t\t<DropZone\n\t\t\t\tonFilesDrop={ ( files ) => {\n\t\t\t\t\tlet filteredFiles = files;\n\t\t\t\t\t// Filter files by allowed types if specified\n\t\t\t\t\tif ( allowedTypes && ! allowedTypes.includes( '*' ) ) {\n\t\t\t\t\t\tfilteredFiles = files.filter( ( file ) =>\n\t\t\t\t\t\t\tallowedTypes.some( ( allowedType ) => {\n\t\t\t\t\t\t\t\t// Check if the file type matches the allowed MIME type\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\tfile.type === allowedType ||\n\t\t\t\t\t\t\t\t\tfile.type.startsWith(\n\t\t\t\t\t\t\t\t\t\tallowedType.replace( '*', '' )\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t);\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\tif ( filteredFiles.length > 0 ) {\n\t\t\t\t\t\thandleUpload( {\n\t\t\t\t\t\t\tallowedTypes,\n\t\t\t\t\t\t\tfilesList: filteredFiles,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t} }\n\t\t\t\tlabel={ __( 'Drop files to upload' ) }\n\t\t\t/>\n\t\t\t<DataViewsPicker\n\t\t\t\tdata={ mediaRecords || [] }\n\t\t\t\tfields={ fields }\n\t\t\t\tview={ view }\n\t\t\t\tonChangeView={ setView }\n\t\t\t\tactions={ actions }\n\t\t\t\tselection={ selection }\n\t\t\t\tonChangeSelection={ setSelection }\n\t\t\t\tisLoading={ isLoading }\n\t\t\t\tpaginationInfo={ paginationInfo }\n\t\t\t\tdefaultLayouts={ defaultLayouts }\n\t\t\t\tgetItemId={ ( item: RestAttachment ) => String( item.id ) }\n\t\t\t\tsearch={ search }\n\t\t\t\tsearchLabel={ searchLabel }\n\t\t\t\titemListLabel={ __( 'Media items' ) }\n\t\t\t/>\n\t\t</Modal>\n\t);\n}\n\nexport default MediaUploadModal;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,17 @@
1
+ // packages/media-utils/src/index.ts
2
+ export * from "./components/index.mjs";
3
+ import { uploadMedia } from "./utils/upload-media.mjs";
4
+ import { transformAttachment } from "./utils/transform-attachment.mjs";
5
+ import { validateFileSize } from "./utils/validate-file-size.mjs";
6
+ import { validateMimeType } from "./utils/validate-mime-type.mjs";
7
+ import { validateMimeTypeForUser } from "./utils/validate-mime-type-for-user.mjs";
8
+ import { privateApis } from "./private-apis.mjs";
9
+ export {
10
+ privateApis,
11
+ transformAttachment,
12
+ uploadMedia,
13
+ validateFileSize,
14
+ validateMimeType,
15
+ validateMimeTypeForUser
16
+ };
17
+ //# sourceMappingURL=index.mjs.map
@@ -8,4 +8,4 @@ export {
8
8
  lock,
9
9
  unlock
10
10
  };
11
- //# sourceMappingURL=lock-unlock.js.map
11
+ //# sourceMappingURL=lock-unlock.mjs.map
@@ -1,7 +1,7 @@
1
1
  // packages/media-utils/src/private-apis.ts
2
- import { sideloadMedia } from "./utils/sideload-media";
3
- import { MediaUploadModal } from "./components/media-upload-modal";
4
- import { lock } from "./lock-unlock";
2
+ import { sideloadMedia } from "./utils/sideload-media.mjs";
3
+ import { MediaUploadModal } from "./components/media-upload-modal/index.mjs";
4
+ import { lock } from "./lock-unlock.mjs";
5
5
  var privateApis = {};
6
6
  lock(privateApis, {
7
7
  sideloadMedia,
@@ -10,4 +10,4 @@ lock(privateApis, {
10
10
  export {
11
11
  privateApis
12
12
  };
13
- //# sourceMappingURL=private-apis.js.map
13
+ //# sourceMappingURL=private-apis.mjs.map
@@ -14,4 +14,4 @@ function flattenFormData(formData, key, data) {
14
14
  export {
15
15
  flattenFormData
16
16
  };
17
- //# sourceMappingURL=flatten-form-data.js.map
17
+ //# sourceMappingURL=flatten-form-data.mjs.map
@@ -19,4 +19,4 @@ function getMimeTypesArray(wpMimeTypesObject) {
19
19
  export {
20
20
  getMimeTypesArray
21
21
  };
22
- //# sourceMappingURL=get-mime-types-array.js.map
22
+ //# sourceMappingURL=get-mime-types-array.mjs.map
@@ -1,7 +1,7 @@
1
1
  // packages/media-utils/src/utils/sideload-media.ts
2
2
  import { __, sprintf } from "@wordpress/i18n";
3
- import { sideloadToServer } from "./sideload-to-server";
4
- import { UploadError } from "./upload-error";
3
+ import { sideloadToServer } from "./sideload-to-server.mjs";
4
+ import { UploadError } from "./upload-error.mjs";
5
5
  var noop = () => {
6
6
  };
7
7
  async function sideloadMedia({
@@ -44,4 +44,4 @@ async function sideloadMedia({
44
44
  export {
45
45
  sideloadMedia
46
46
  };
47
- //# sourceMappingURL=sideload-media.js.map
47
+ //# sourceMappingURL=sideload-media.mjs.map
@@ -1,7 +1,7 @@
1
1
  // packages/media-utils/src/utils/sideload-to-server.ts
2
2
  import apiFetch from "@wordpress/api-fetch";
3
- import { flattenFormData } from "./flatten-form-data";
4
- import { transformAttachment } from "./transform-attachment";
3
+ import { flattenFormData } from "./flatten-form-data.mjs";
4
+ import { transformAttachment } from "./transform-attachment.mjs";
5
5
  async function sideloadToServer(file, attachmentId, additionalData = {}, signal) {
6
6
  const data = new FormData();
7
7
  data.append("file", file, file.name || file.type.replace("/", "."));
@@ -24,4 +24,4 @@ async function sideloadToServer(file, attachmentId, additionalData = {}, signal)
24
24
  export {
25
25
  sideloadToServer
26
26
  };
27
- //# sourceMappingURL=sideload-to-server.js.map
27
+ //# sourceMappingURL=sideload-to-server.mjs.map
@@ -13,4 +13,4 @@ function transformAttachment(attachment) {
13
13
  export {
14
14
  transformAttachment
15
15
  };
16
- //# sourceMappingURL=transform-attachment.js.map
16
+ //# sourceMappingURL=transform-attachment.mjs.map