@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.
- package/CHANGELOG.md +0 -2
- package/LICENSE.md +1 -1
- package/build/components/{index.js → index.cjs} +3 -3
- package/build/components/{index.js.map → index.cjs.map} +1 -1
- package/build/components/media-upload/{index.js → index.cjs} +1 -1
- package/build/components/media-upload-modal/{index.js → index.cjs} +13 -8
- package/build/components/media-upload-modal/index.cjs.map +7 -0
- package/build/{index.js → index.cjs} +9 -9
- package/build/{index.js.map → index.cjs.map} +1 -1
- package/build/{lock-unlock.js → lock-unlock.cjs} +1 -1
- package/build/{private-apis.js → private-apis.cjs} +4 -4
- package/build/utils/{flatten-form-data.js → flatten-form-data.cjs} +1 -1
- package/build/utils/{get-mime-types-array.js → get-mime-types-array.cjs} +1 -1
- package/build/utils/{sideload-media.js → sideload-media.cjs} +3 -3
- package/build/utils/{sideload-to-server.js → sideload-to-server.cjs} +3 -3
- package/build/utils/{transform-attachment.js → transform-attachment.cjs} +1 -1
- package/build/utils/{types.js → types.cjs} +1 -1
- package/build/utils/{upload-error.js → upload-error.cjs} +1 -1
- package/build/utils/{upload-media.js → upload-media.cjs} +6 -6
- package/build/utils/{upload-to-server.js → upload-to-server.cjs} +3 -3
- package/build/utils/{validate-file-size.js → validate-file-size.cjs} +2 -2
- package/build/utils/{validate-mime-type-for-user.js → validate-mime-type-for-user.cjs} +3 -3
- package/build/utils/{validate-mime-type.js → validate-mime-type.cjs} +2 -2
- package/build-module/components/index.mjs +6 -0
- package/build-module/components/{index.js.map → index.mjs.map} +1 -1
- package/build-module/components/media-upload/{index.js → index.mjs} +1 -1
- package/build-module/components/media-upload-modal/{index.js → index.mjs} +13 -8
- package/build-module/components/media-upload-modal/index.mjs.map +7 -0
- package/build-module/index.mjs +17 -0
- package/build-module/{lock-unlock.js → lock-unlock.mjs} +1 -1
- package/build-module/{private-apis.js → private-apis.mjs} +4 -4
- package/build-module/utils/{flatten-form-data.js → flatten-form-data.mjs} +1 -1
- package/build-module/utils/{get-mime-types-array.js → get-mime-types-array.mjs} +1 -1
- package/build-module/utils/{sideload-media.js → sideload-media.mjs} +3 -3
- package/build-module/utils/{sideload-to-server.js → sideload-to-server.mjs} +3 -3
- package/build-module/utils/{transform-attachment.js → transform-attachment.mjs} +1 -1
- package/build-module/utils/types.mjs +1 -0
- package/build-module/utils/{upload-error.js → upload-error.mjs} +1 -1
- package/build-module/utils/{upload-media.js → upload-media.mjs} +6 -6
- package/build-module/utils/{upload-to-server.js → upload-to-server.mjs} +3 -3
- package/build-module/utils/{validate-file-size.js → validate-file-size.mjs} +2 -2
- package/build-module/utils/{validate-mime-type-for-user.js → validate-mime-type-for-user.mjs} +3 -3
- package/build-module/utils/{validate-mime-type.js → validate-mime-type.mjs} +2 -2
- package/build-style/style-rtl.css +64 -0
- package/build-style/style.css +64 -0
- package/build-types/components/index.d.ts +1 -1
- package/build-types/components/index.d.ts.map +1 -1
- package/build-types/components/media-upload-modal/index.d.ts.map +1 -1
- package/package.json +25 -17
- package/src/components/media-upload-modal/index.tsx +11 -6
- package/src/components/media-upload-modal/style.scss +23 -0
- package/src/style.scss +1 -0
- package/build/components/media-upload-modal/index.js.map +0 -7
- package/build-module/components/index.js +0 -6
- package/build-module/components/media-upload-modal/index.js.map +0 -7
- package/build-module/index.js +0 -17
- package/build-module/utils/types.js +0 -1
- package/tsconfig.json +0 -21
- package/tsconfig.tsbuildinfo +0 -1
- /package/build/components/media-upload/{index.js.map → index.cjs.map} +0 -0
- /package/build/{lock-unlock.js.map → lock-unlock.cjs.map} +0 -0
- /package/build/{private-apis.js.map → private-apis.cjs.map} +0 -0
- /package/build/utils/{flatten-form-data.js.map → flatten-form-data.cjs.map} +0 -0
- /package/build/utils/{get-mime-types-array.js.map → get-mime-types-array.cjs.map} +0 -0
- /package/build/utils/{sideload-media.js.map → sideload-media.cjs.map} +0 -0
- /package/build/utils/{sideload-to-server.js.map → sideload-to-server.cjs.map} +0 -0
- /package/build/utils/{transform-attachment.js.map → transform-attachment.cjs.map} +0 -0
- /package/build/utils/{types.js.map → types.cjs.map} +0 -0
- /package/build/utils/{upload-error.js.map → upload-error.cjs.map} +0 -0
- /package/build/utils/{upload-media.js.map → upload-media.cjs.map} +0 -0
- /package/build/utils/{upload-to-server.js.map → upload-to-server.cjs.map} +0 -0
- /package/build/utils/{validate-file-size.js.map → validate-file-size.cjs.map} +0 -0
- /package/build/utils/{validate-mime-type-for-user.js.map → validate-mime-type-for-user.cjs.map} +0 -0
- /package/build/utils/{validate-mime-type.js.map → validate-mime-type.cjs.map} +0 -0
- /package/build-module/components/media-upload/{index.js.map → index.mjs.map} +0 -0
- /package/build-module/{index.js.map → index.mjs.map} +0 -0
- /package/build-module/{lock-unlock.js.map → lock-unlock.mjs.map} +0 -0
- /package/build-module/{private-apis.js.map → private-apis.mjs.map} +0 -0
- /package/build-module/utils/{flatten-form-data.js.map → flatten-form-data.mjs.map} +0 -0
- /package/build-module/utils/{get-mime-types-array.js.map → get-mime-types-array.mjs.map} +0 -0
- /package/build-module/utils/{sideload-media.js.map → sideload-media.mjs.map} +0 -0
- /package/build-module/utils/{sideload-to-server.js.map → sideload-to-server.mjs.map} +0 -0
- /package/build-module/utils/{transform-attachment.js.map → transform-attachment.mjs.map} +0 -0
- /package/build-module/utils/{types.js.map → types.mjs.map} +0 -0
- /package/build-module/utils/{upload-error.js.map → upload-error.mjs.map} +0 -0
- /package/build-module/utils/{upload-media.js.map → upload-media.mjs.map} +0 -0
- /package/build-module/utils/{upload-to-server.js.map → upload-to-server.mjs.map} +0 -0
- /package/build-module/utils/{validate-file-size.js.map → validate-file-size.mjs.map} +0 -0
- /package/build-module/utils/{validate-mime-type-for-user.js.map → validate-mime-type-for-user.mjs.map} +0 -0
- /package/build-module/utils/{validate-mime-type.js.map → validate-mime-type.mjs.map} +0 -0
- /package/src/components/{index.js → index.ts} +0 -0
package/CHANGELOG.md
CHANGED
package/LICENSE.md
CHANGED
|
@@ -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.
|
|
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.
|
|
41
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/index.
|
|
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": []
|
|
@@ -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
|
|
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.
|
|
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.
|
|
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,
|
|
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
|
}
|
|
@@ -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.
|
|
38
|
+
//# sourceMappingURL=private-apis.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.
|
|
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.
|
|
62
|
+
//# sourceMappingURL=sideload-to-server.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.
|
|
19
|
+
//# sourceMappingURL=types.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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
54
|
+
//# sourceMappingURL=validate-mime-type.cjs.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
|
|
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.
|
|
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": ";AAGA,SAAS,UAAU,aAAa,eAAe;AAC/C,SAAS,UAAU;AACnB;AAAA,EACC,eAAe;AAAA,EACf,SAAS;AAAA,OACH;AACP,SAAS,qBAAqB;AAC9B,SAAS,OAAO,UAAU,gBAAgB,cAAc;AACxD,SAAS,UAAU,kBAAkB;AACrC,SAAS,uBAAuB;AAEhC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAMP,SAAS,2BAA2B;AACpC,SAAS,mBAAmB;AAC5B,SAAS,cAAc;AA4TrB,SAcI,KAdJ;AA1TF,IAAM,EAAE,gCAAgC,IAAI,OAAQ,mBAAoB;AAGxE,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAmGrB,SAAS,iBAAkB;AAAA,EACjC,eAAe,CAAE,OAAQ;AAAA,EACzB,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,QAAQ,GAAI,cAAe;AAAA,EAC3B;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,EACT,cAAc,GAAI,cAAe;AAClC,GAA2B;AAC1B,QAAM,CAAE,WAAW,YAAa,IAAI,SAAsB,MAAM;AAC/D,QAAK,CAAE,OAAQ;AACd,aAAO,CAAC;AAAA,IACT;AACA,WAAO,MAAM,QAAS,KAAM,IACzB,MAAM,IAAK,MAAO,IAClB,CAAE,OAAQ,KAAM,CAAE;AAAA,EACtB,CAAE;AAGF,QAAM,CAAE,MAAM,OAAQ,IAAI,SAAkB,OAAQ;AAAA,IACnD,MAAM;AAAA,IACN,QAAQ,CAAC;AAAA,IACT,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,SAAS,CAAC;AAAA,EACX,EAAI;AAGJ,QAAM,YAAY,QAAS,MAAM;AAChC,UAAM,UAAiC,CAAC;AAExC,SAAK,SAAS,QAAS,CAAE,WAAY;AAEpC,UAAK,OAAO,UAAU,cAAe;AACpC,gBAAQ,aAAa,OAAO;AAAA,MAC7B;AAEA,UAAK,OAAO,UAAU,UAAW;AAChC,gBAAQ,SAAS,OAAO;AAAA,MACzB;AAEA,UAAK,OAAO,UAAU,QAAS;AAC9B,gBAAQ,QAAQ,OAAO,OAAO;AAC9B,gBAAQ,SAAS,OAAO,OAAO;AAAA,MAChC;AAEA,UAAK,OAAO,UAAU,aAAc;AACnC,gBAAQ,YAAY,OAAO;AAAA,MAC5B;AAAA,IACD,CAAE;AAGF,QAAK,CAAE,QAAQ,YAAa;AAC3B,cAAQ,aAAa,aAAa,SAAU,GAAI,IAC7C,SACA;AAAA,IACJ;AAEA,WAAO;AAAA,MACN,UAAU,KAAK,WAAW;AAAA,MAC1B,MAAM,KAAK,QAAQ;AAAA,MACnB,QAAQ;AAAA,MACR,OAAO,KAAK,MAAM;AAAA,MAClB,SAAS,KAAK,MAAM;AAAA,MACpB,QAAQ,KAAK;AAAA,MACb,GAAG;AAAA,IACJ;AAAA,EACD,GAAG,CAAE,MAAM,YAAa,CAAE;AAG1B,QAAM;AAAA,IACL,SAAS;AAAA,IACT,aAAa;AAAA,IACb;AAAA,IACA;AAAA,EACD,IAAI,gCAAiC,YAAY,cAAc,SAAU;AAEzE,QAAM,SAAoC;AAAA,IACzC,MAAM;AAAA;AAAA;AAAA,MAGL;AAAA,QACC,GAAK;AAAA,QACL,cAAc;AAAA;AAAA,MACf;AAAA,MACA;AAAA,QACC,IAAI;AAAA,QACJ,MAAM;AAAA,QACN,OAAO,GAAI,OAAQ;AAAA,QACnB,UAAU,CAAE,EAAE,KAAK,MAAiC;AACnD,gBAAM,aAAa,KAAK,MAAM,OAAO,KAAK,MAAM;AAChD,iBAAO,cAAc,GAAI,YAAa;AAAA,QACvC;AAAA,MACD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAAA,IACA,CAAC;AAAA,EACF;AAEA,QAAM,UAA4C;AAAA,IACjD,MAAM;AAAA,MACL;AAAA,QACC,IAAI;AAAA,QACJ,OAAO,WAAW,GAAI,QAAS,IAAI,GAAI,QAAS;AAAA,QAChD,WAAW;AAAA,QACX,cAAc;AAAA,QACd,MAAM,WAAW;AAChB,cAAK,UAAU,WAAW,GAAI;AAC7B;AAAA,UACD;AAEA,gBAAM,qBAAqB;AAAA,YAC1B,SAAS;AAAA,YACT,UAAU;AAAA,UACX;AAEA,gBAAM,gBAAgB,MAAM;AAAA,YAC3B;AAAA,UACD,EAAE;AAAA,YACD;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAGA,gBAAM,oBAAqB,iBAAiB,CAAC,GAC3C,IAAK,mBAAoB,EACzB,OAAQ,OAAQ;AAElB,gBAAM,gBAAgB,WACnB,mBACA,mBAAoB,CAAE;AAEzB,mBAAU,aAAc;AAAA,QACzB;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAE,UAAU,UAAU,SAAU;AAAA,EACjC;AAEA,QAAM,mBAAmB,YAAa,MAAM;AAC3C,cAAU;AAAA,EACX,GAAG,CAAE,OAAQ,CAAE;AAGf,QAAM,eAAe,YAAY;AAEjC,QAAM,mBAAmB;AAAA,IACxB,CAAE,UAAkD;AACnD,YAAM,QAAQ,MAAM,OAAO;AAC3B,UAAK,SAAS,MAAM,SAAS,GAAI;AAChC,cAAM,aAAa,MAAM,KAAM,KAAM;AACrC,qBAAc;AAAA,UACb;AAAA,UACA,WAAW;AAAA,QACZ,CAAE;AAAA,MACH;AAAA,IACD;AAAA,IACA,CAAE,cAAc,YAAa;AAAA,EAC9B;AAEA,QAAM,iBAAiB;AAAA,IACtB,OAAQ;AAAA,MACP;AAAA,MACA;AAAA,IACD;AAAA,IACA,CAAE,YAAY,UAAW;AAAA,EAC1B;AAEA,QAAM,iBAAiB;AAAA,IACtB,OAAQ;AAAA,MACP,CAAE,kBAAmB,GAAG;AAAA,QACvB,QAAQ,CAAC;AAAA,QACT,WAAW;AAAA,MACZ;AAAA,MACA,CAAE,mBAAoB,GAAG;AAAA,QACxB,QAAQ,CAAE,YAAY,YAAY,kBAAmB;AAAA,QACrD,WAAW;AAAA,MACZ;AAAA,IACD;AAAA,IACA,CAAC;AAAA,EACF;AAGA,QAAM,cAAc,QAAS,MAAM;AAClC,QAAK,aAAa,SAAU,GAAI,GAAI;AACnC,aAAO;AAAA,IACR;AACA,WAAO,aAAa,KAAM,GAAI;AAAA,EAC/B,GAAG,CAAE,YAAa,CAAE;AAEpB,MAAK,CAAE,QAAS;AACf,WAAO;AAAA,EACR;AAEA,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,gBAAiB;AAAA,MACjB;AAAA,MACA,WAAY;AAAA,MACZ,kBAAiB;AAAA,MACjB,MAAK;AAAA,MACL,eACC;AAAA,QAAC;AAAA;AAAA,UACA,QAAS;AAAA,UACT,UAAQ;AAAA,UACR,UAAW;AAAA,UACX,uBAAqB;AAAA,UACrB,QAAS,CAAE,EAAE,eAAe,MAC3B;AAAA,YAAC;AAAA;AAAA,cACA,SAAU;AAAA,cACV,MAAO;AAAA,cACP,uBAAqB;AAAA,cAEnB,aAAI,cAAe;AAAA;AAAA,UACtB;AAAA;AAAA,MAEF;AAAA,MAGD;AAAA;AAAA,UAAC;AAAA;AAAA,YACA,aAAc,CAAE,UAAW;AAC1B,kBAAI,gBAAgB;AAEpB,kBAAK,gBAAgB,CAAE,aAAa,SAAU,GAAI,GAAI;AACrD,gCAAgB,MAAM;AAAA,kBAAQ,CAAE,SAC/B,aAAa,KAAM,CAAE,gBAAiB;AAErC,2BACC,KAAK,SAAS,eACd,KAAK,KAAK;AAAA,sBACT,YAAY,QAAS,KAAK,EAAG;AAAA,oBAC9B;AAAA,kBAEF,CAAE;AAAA,gBACH;AAAA,cACD;AACA,kBAAK,cAAc,SAAS,GAAI;AAC/B,6BAAc;AAAA,kBACb;AAAA,kBACA,WAAW;AAAA,gBACZ,CAAE;AAAA,cACH;AAAA,YACD;AAAA,YACA,OAAQ,GAAI,sBAAuB;AAAA;AAAA,QACpC;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACA,MAAO,gBAAgB,CAAC;AAAA,YACxB;AAAA,YACA;AAAA,YACA,cAAe;AAAA,YACf;AAAA,YACA;AAAA,YACA,mBAAoB;AAAA,YACpB;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAY,CAAE,SAA0B,OAAQ,KAAK,EAAG;AAAA,YACxD;AAAA,YACA;AAAA,YACA,eAAgB,GAAI,aAAc;AAAA;AAAA,QACnC;AAAA;AAAA;AAAA,EACD;AAEF;AAEA,IAAO,6BAAQ;",
|
|
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
|
|
@@ -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.
|
|
13
|
+
//# sourceMappingURL=private-apis.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.
|
|
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.
|
|
27
|
+
//# sourceMappingURL=sideload-to-server.mjs.map
|