@strapi/upload 5.10.1 → 5.10.2

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 (19) hide show
  1. package/dist/admin/chunks/{App-CNK_Kv03.mjs → App-CMTq4gKS.mjs} +3 -3
  2. package/dist/admin/chunks/{App-CNK_Kv03.mjs.map → App-CMTq4gKS.mjs.map} +1 -1
  3. package/dist/admin/chunks/{App-DnxXkEtZ.js → App-reXK4u3H.js} +3 -3
  4. package/dist/admin/chunks/{App-DnxXkEtZ.js.map → App-reXK4u3H.js.map} +1 -1
  5. package/dist/admin/chunks/{ConfigureTheView-BFXInHXz.js → ConfigureTheView-D3Fnih4J.js} +2 -2
  6. package/dist/admin/chunks/{ConfigureTheView-BFXInHXz.js.map → ConfigureTheView-D3Fnih4J.js.map} +1 -1
  7. package/dist/admin/chunks/{ConfigureTheView-DTYyp_1T.mjs → ConfigureTheView-D4UZJXZx.mjs} +2 -2
  8. package/dist/admin/chunks/{ConfigureTheView-DTYyp_1T.mjs.map → ConfigureTheView-D4UZJXZx.mjs.map} +1 -1
  9. package/dist/admin/chunks/{SettingsPage-DA56QDU9.mjs → SettingsPage-B5LRvKK8.mjs} +2 -2
  10. package/dist/admin/chunks/{SettingsPage-DA56QDU9.mjs.map → SettingsPage-B5LRvKK8.mjs.map} +1 -1
  11. package/dist/admin/chunks/{SettingsPage-B_vUS1w1.js → SettingsPage-DCzPXTyN.js} +2 -2
  12. package/dist/admin/chunks/{SettingsPage-B_vUS1w1.js.map → SettingsPage-DCzPXTyN.js.map} +1 -1
  13. package/dist/admin/chunks/{index-Db2l2DRT.js → index-CA81ILUU.js} +8 -8
  14. package/dist/admin/chunks/{index-Db2l2DRT.js.map → index-CA81ILUU.js.map} +1 -1
  15. package/dist/admin/chunks/{index-CDwNb6XT.mjs → index-OqeI_4qD.mjs} +8 -8
  16. package/dist/admin/chunks/{index-CDwNb6XT.mjs.map → index-OqeI_4qD.mjs.map} +1 -1
  17. package/dist/admin/index.js +1 -1
  18. package/dist/admin/index.mjs +1 -1
  19. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"App-DnxXkEtZ.js","sources":["../../../admin/src/utils/getBreadcrumbDataML.ts","../../../admin/src/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.tsx","../../../admin/src/pages/App/MediaLibrary/components/BulkDeleteButton.tsx","../../../admin/src/hooks/useBulkMove.ts","../../../admin/src/components/BulkMoveDialog/BulkMoveDialog.tsx","../../../admin/src/pages/App/MediaLibrary/components/BulkMoveButton.tsx","../../../admin/src/pages/App/MediaLibrary/components/BulkActions.tsx","../../../admin/src/pages/App/MediaLibrary/components/EmptyOrNoPermissions.tsx","../../../admin/src/pages/App/MediaLibrary/components/Filters.tsx","../../../admin/src/pages/App/MediaLibrary/components/Header.tsx","../../../admin/src/pages/App/MediaLibrary/MediaLibrary.tsx","../../../admin/src/pages/App/App.tsx"],"sourcesContent":["import { getFolderURL } from './getFolderURL';\nimport { getTrad } from './getTrad';\n\nimport type { Query } from '../../../shared/contracts/files';\nimport type { Folder } from '../../../shared/contracts/folders';\nimport type { MessageDescriptor } from 'react-intl';\n\ninterface GetBreadcrumbDataMLProps {\n folder: Folder;\n options: {\n pathname: string;\n query?: Query;\n };\n}\n\ninterface GetBreadcrumbDataMLReturn {\n id: number | null;\n label: string | MessageDescriptor;\n href?: string;\n}\n\ntype BreadcrumbData = GetBreadcrumbDataMLReturn | [];\n\nexport const getBreadcrumbDataML = (\n folder: GetBreadcrumbDataMLProps['folder'] | null,\n { pathname, query }: GetBreadcrumbDataMLProps['options']\n) => {\n const data: BreadcrumbData[] = [\n {\n id: null,\n label: { id: getTrad('plugin.name'), defaultMessage: 'Media Library' },\n href: folder ? getFolderURL(pathname, query || {}) : undefined,\n },\n ];\n\n if (folder?.parent && typeof folder?.parent !== 'number' && folder?.parent?.parent) {\n data.push([]);\n }\n\n if (folder?.parent && typeof folder.parent !== 'number') {\n data.push({\n id: folder.parent.id,\n label: folder.parent.name,\n href: getFolderURL(pathname, query || {}, {\n folder: folder.parent.id?.toString(),\n folderPath: folder.parent.path,\n }),\n });\n }\n\n if (folder) {\n data.push({\n id: folder.id,\n label: folder.name,\n });\n }\n\n return data;\n};\n","import { Checkbox, Box, CheckboxProps } from '@strapi/design-system';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nexport const FolderCardCheckbox = (props: CheckboxProps) => {\n const { id } = useFolderCard();\n\n return (\n <Box position=\"relative\" zIndex={2}>\n <Checkbox aria-labelledby={`${id}-title`} {...props} />\n </Box>\n );\n};\n","import { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Button, Dialog } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useBulkRemove } from '../../../../hooks/useBulkRemove';\n\nimport type { FolderDefinition } from '../../../../../../shared/contracts/folders';\nimport type { FileWithType } from '../../../../hooks/useBulkRemove';\n\nexport interface BulkDeleteButtonProps {\n selected: Array<FileWithType | FolderDefinition>;\n onSuccess: () => void;\n}\n\nexport const BulkDeleteButton = ({ selected, onSuccess }: BulkDeleteButtonProps) => {\n const { formatMessage } = useIntl();\n const { remove } = useBulkRemove();\n\n const handleConfirmRemove = async () => {\n await remove(selected);\n onSuccess();\n };\n\n return (\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"danger-light\" size=\"S\" startIcon={<Trash />}>\n {formatMessage({ id: 'global.delete', defaultMessage: 'Delete' })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmRemove} />\n </Dialog.Root>\n );\n};\n","import { useNotification, useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { File, BulkMoveFiles } from '../../../shared/contracts/files';\nimport { Folder, BulkMoveFolders } from '../../../shared/contracts/folders';\nimport { pluginId } from '../pluginId';\nimport { getTrad } from '../utils';\n\nexport interface FolderWithType extends Folder {\n type: string;\n}\n\nexport interface FileWithType extends File {\n type: string;\n}\n\ninterface BulkMoveParams {\n destinationFolderId: number | string;\n filesAndFolders: Array<FolderWithType | FileWithType>;\n}\n\n// Define the shape of the accumulator object\ntype Payload = {\n fileIds?: number[];\n folderIds?: number[];\n};\n\nexport const useBulkMove = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const queryClient = useQueryClient();\n const { post } = useFetchClient();\n\n const bulkMoveQuery = ({ destinationFolderId, filesAndFolders }: BulkMoveParams) => {\n const payload = filesAndFolders.reduce<Payload>((acc, selected) => {\n const { id, type } = selected;\n const key = type === 'asset' ? 'fileIds' : 'folderIds';\n\n if (!acc[key]) {\n acc[key] = [];\n }\n\n acc[key]!.push(id);\n\n return acc;\n }, {});\n\n return post('/upload/actions/bulk-move', { ...payload, destinationFolderId });\n };\n\n const mutation = useMutation<\n BulkMoveFolders.Response | BulkMoveFiles.Response,\n BulkMoveFolders.Response['error'] | BulkMoveFiles.Response['error'],\n BulkMoveParams\n >(bulkMoveQuery, {\n onSuccess(res) {\n const {\n data: { data },\n } = res;\n\n if (data?.files?.length > 0) {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n }\n\n // folders need to be re-fetched in any case, because assets might have been\n // moved into a sub-folder and therefore the count needs to be updated\n queryClient.refetchQueries([pluginId, 'folders'], { active: true });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('modal.move.success-label'),\n defaultMessage: 'Elements have been moved successfully.',\n }),\n });\n },\n });\n\n const move = (\n destinationFolderId: number | string,\n filesAndFolders: Array<FolderWithType | FileWithType>\n ) => mutation.mutateAsync({ destinationFolderId, filesAndFolders });\n\n return { ...mutation, move };\n};\n","import { Button, Flex, Grid, Field, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\n\nimport { File } from '../../../../shared/contracts/files';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad, normalizeAPIError } from '../../utils';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { OptionSelectTree } from '../SelectTree/SelectTree';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\ntype InitialFormData = {\n destination:\n | {\n value: string | number;\n label: string;\n }\n | string;\n};\n\ninterface FolderWithType extends Folder {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveDialogProps {\n onClose: () => void;\n selected?: Array<FolderWithType | FileWithType>;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkMoveDialog = ({ onClose, selected = [], currentFolder }: BulkMoveDialogProps) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (\n values: InitialFormData,\n { setErrors }: { setErrors: (errors: FormikErrors<InitialFormData>) => void }\n ) => {\n try {\n if (typeof values.destination !== 'string') {\n const destinationValue = values.destination.value;\n await move(destinationValue, selected);\n onClose();\n }\n } catch (error) {\n const normalizedError = normalizeAPIError(error as FetchError)!;\n\n if (normalizedError && 'errors' in normalizedError) {\n const formikErrors = normalizedError.errors?.reduce<Record<string, string>>(\n (acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n }\n };\n\n if (isLoading) {\n return (\n <Modal.Content>\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </Modal.Content>\n );\n }\n\n const initialFormData: InitialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <Modal.Content>\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-destination\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure as OptionSelectTree[]}\n onChange={(value: Record<string, string | number>) => {\n setFieldValue('destination', value);\n }}\n defaultValue={\n typeof values.destination !== 'string' ? values.destination : undefined\n }\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography variant=\"pi\" tag=\"p\" textColor=\"danger600\">\n {errors.destination}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'modal.folder.move.submit', defaultMessage: 'Move' })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal.Content>\n );\n};\n","import * as React from 'react';\n\nimport { Button, Modal } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { BulkMoveDialog } from '../../../../components/BulkMoveDialog/BulkMoveDialog';\n\nimport type { File } from '../../../../../../shared/contracts/files';\nimport type { Folder as FolderDefinition } from '../../../../../../shared/contracts/folders';\n\ninterface FolderWithType extends FolderDefinition {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveButtonProps {\n onSuccess: () => void;\n currentFolder?: FolderWithType;\n selected?: Array<FolderWithType | FileWithType>;\n}\n\nexport const BulkMoveButton = ({\n selected = [],\n onSuccess,\n currentFolder,\n}: BulkMoveButtonProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const handleConfirmMove = () => {\n setShowConfirmDialog(false);\n onSuccess();\n };\n\n return (\n <Modal.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Modal.Trigger>\n <Button variant=\"secondary\" size=\"S\" startIcon={<Folder />}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Trigger>\n <BulkMoveDialog\n currentFolder={currentFolder}\n onClose={handleConfirmMove}\n selected={selected}\n />\n </Modal.Root>\n );\n};\n","import { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../../utils';\n\nimport { BulkDeleteButton } from './BulkDeleteButton';\nimport { BulkMoveButton } from './BulkMoveButton';\n\nimport type { File } from '../../../../../../shared/contracts/files';\nimport type {\n FolderDefinition,\n Folder as FolderInitial,\n} from '../../../../../../shared/contracts/folders';\n\ninterface FolderWithType extends FolderInitial {\n type: string;\n}\n\nexport interface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkActionsProps {\n selected: Array<FileWithType | FolderDefinition> | Array<FolderWithType | FileWithType>;\n onSuccess: () => void;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkActions = ({ selected = [], onSuccess, currentFolder }: BulkActionsProps) => {\n const { formatMessage } = useIntl();\n const numberAssets = selected?.reduce(function (_this, val) {\n return val?.type === 'folder' && 'files' in val && val?.files && 'count' in val.files\n ? _this + val?.files?.count\n : _this + 1;\n }, 0);\n\n return (\n <Flex gap={2} paddingBottom={5}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: getTrad('list.assets.selected'),\n defaultMessage:\n '{numberFolders, plural, one {1 folder} other {# folders}} - {numberAssets, plural, one {1 asset} other {# assets}} selected',\n },\n {\n numberFolders: selected?.filter(({ type }) => type === 'folder').length,\n numberAssets,\n }\n )}\n </Typography>\n\n <BulkDeleteButton\n selected={selected as Array<FileWithType | FolderDefinition>}\n onSuccess={onSuccess}\n />\n <BulkMoveButton\n currentFolder={currentFolder}\n selected={selected as Array<FolderWithType | FileWithType>}\n onSuccess={onSuccess}\n />\n </Flex>\n );\n};\n","import { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../../components/EmptyAssets/EmptyAssets';\nimport { getTrad } from '../../../../utils';\n\nexport interface EmptyOrNoPermissionsProps {\n canCreate: boolean;\n canRead: boolean;\n isFiltering: boolean;\n onActionClick: () => void;\n}\n\nconst getContentIntlMessage = ({\n isFiltering,\n canCreate,\n canRead,\n}: Omit<EmptyOrNoPermissionsProps, 'onActionClick'>) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({\n canCreate,\n isFiltering,\n canRead,\n onActionClick,\n}: EmptyOrNoPermissionsProps) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n","import * as React from 'react';\n\nimport { useTracking, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterList } from '../../../../components/FilterList/FilterList';\nimport { FilterPopover } from '../../../../components/FilterPopover/FilterPopover';\nimport { displayedFilters } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\nimport type { FilterListProps } from '../../../../components/FilterList/FilterList';\nimport type { FilterPopoverProps } from '../../../../components/FilterPopover/FilterPopover';\n\nexport const Filters = () => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const filters = query?.filters?.$and || [];\n\n const handleRemoveFilter: FilterListProps['onRemoveFilter'] = (nextFilters) => {\n setQuery({ filters: { $and: nextFilters }, page: 1 } as Query);\n };\n\n const handleSubmit: FilterPopoverProps['onSubmit'] = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery({ filters: { $and: filters }, page: 1 } as Query);\n };\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={setOpen as FilterPopoverProps['onToggle']}\n />\n <FilterList\n appliedFilters={filters as FilterListProps['appliedFilters']}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </Popover.Root>\n );\n};\n","import { useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, NavLink } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../../components/Breadcrumbs/Breadcrumbs';\nimport { getTrad } from '../../../../utils';\n\nimport type { Folder } from '../../../../../../shared/contracts/folders';\nimport type { CrumbDefinition } from '../../../../components/Breadcrumbs/Breadcrumbs';\n\ninterface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {\n children: {\n count: number;\n };\n files: {\n count: number;\n };\n parent?: FolderDefinition;\n}\n\nexport interface HeaderProps {\n breadcrumbs?: Array<CrumbDefinition> | null;\n canCreate: boolean;\n folder?: FolderDefinition | null;\n onToggleEditFolderDialog: ({ created }?: { created?: boolean }) => void;\n onToggleUploadAssetDialog: () => void;\n}\n\nexport const Header = ({\n breadcrumbs = null,\n canCreate,\n folder = null,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}: HeaderProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...query,\n folder:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.id\n ? folder.parent.id\n : undefined,\n folderPath:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.path\n ? folder.parent.path\n : undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n typeof breadcrumbs !== 'boolean' &&\n folder && (\n <Breadcrumbs\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2}>\n <Button startIcon={<Plus />} variant=\"secondary\" onClick={onToggleEditFolderDialog}>\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n Page,\n SearchInput,\n Pagination,\n useTracking,\n useQueryParams,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n Checkbox,\n Box,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { Cog, GridFour as GridIcon, List, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink, useNavigate, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { AssetGridList } from '../../../components/AssetGridList/AssetGridList';\nimport { EditAssetDialog } from '../../../components/EditAssetDialog/EditAssetContent';\nimport { EditFolderDialog } from '../../../components/EditFolderDialog/EditFolderDialog';\nimport { FolderCard } from '../../../components/FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../../components/FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../../components/FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderCardCheckbox } from '../../../components/FolderCard/FolderCardCheckbox/FolderCardCheckbox';\nimport { FolderGridList } from '../../../components/FolderGridList/FolderGridList';\nimport { SortPicker } from '../../../components/SortPicker/SortPicker';\nimport { TableList } from '../../../components/TableList/TableList';\nimport { UploadAssetDialog } from '../../../components/UploadAssetDialog/UploadAssetDialog';\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useAssets } from '../../../hooks/useAssets';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { useFolders } from '../../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport { useSelectionState } from '../../../hooks/useSelectionState';\nimport { containsAssetFilter, getBreadcrumbDataML, getFolderURL, getTrad } from '../../../utils';\n\nimport { BulkActions } from './components/BulkActions';\nimport { EmptyOrNoPermissions } from './components/EmptyOrNoPermissions';\nimport { Filters } from './components/Filters';\nimport { Header } from './components/Header';\n\nimport type { BulkActionsProps } from './components/BulkActions';\nimport type { HeaderProps } from './components/Header';\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FolderDefinition } from '../../../../../shared/contracts/folders';\nimport type { AssetGridListProps } from '../../../components/AssetGridList/AssetGridList';\nimport type { Asset } from '../../../components/EditAssetDialog/EditAssetContent';\nimport type { FolderRow, FileRow, TableListProps } from '../../../components/TableList/TableList';\n\nconst BoxWithHeight = styled(Box)`\n height: 3.2rem;\n display: flex;\n align-items: center;\n`;\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\nexport const MediaLibrary = () => {\n const navigate = useNavigate();\n const {\n canRead,\n canCreate,\n canUpdate,\n canCopyLink,\n canDownload,\n canConfigureView,\n isLoading: permissionsLoading,\n } = useMediaLibraryPermissions();\n const currentFolderToEditRef = React.useRef<HTMLDivElement>();\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const isFiltering = Boolean(query._q || query.filters);\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const {\n data: assetsData,\n isLoading: assetsLoading,\n error: assetsError,\n } = useAssets({\n skipWhen: !canRead,\n query,\n });\n\n const {\n data: foldersData,\n isLoading: foldersLoading,\n error: foldersError,\n } = useFolders({\n enabled: canRead && assetsData?.pagination?.page === 1 && !containsAssetFilter(query),\n query,\n });\n\n const {\n data: currentFolder,\n isLoading: isCurrentFolderLoading,\n error: currentFolderError,\n } = useFolder(query?.folder as number | null | undefined, {\n enabled: canRead && !!query?.folder,\n });\n\n // Folder was not found: redirect to the media library root\n if (currentFolderError?.name === 'NotFoundError') {\n navigate(pathname);\n }\n\n const folders =\n foldersData?.map((folder) => ({\n ...folder,\n type: 'folder',\n folderURL: getFolderURL(pathname, query, {\n folder: folder.id.toString(),\n folderPath: folder.path,\n }),\n isSelectable: canUpdate,\n })) ?? [];\n const folderCount = folders?.length || 0;\n const assets =\n assetsData?.results?.map((asset) => ({ ...asset, type: 'asset', isSelectable: canUpdate })) ||\n [];\n const assetCount = assets?.length ?? 0;\n const totalAssetCount = assetsData?.pagination?.total;\n\n const isLoading = isCurrentFolderLoading || foldersLoading || permissionsLoading || assetsLoading;\n const [showUploadAssetDialog, setShowUploadAssetDialog] = React.useState(false);\n const [showEditFolderDialog, setShowEditFolderDialog] = React.useState(false);\n const [assetToEdit, setAssetToEdit] = React.useState<Asset | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined | null>(undefined);\n const [selected, { selectOne, selectAll }] = useSelectionState<FolderRow | FileRow>(\n ['type', 'id'],\n []\n );\n const indeterminateBulkSelect =\n selected?.length > 0 && selected?.length !== assetCount + folderCount;\n const toggleUploadAssetDialog = () => setShowUploadAssetDialog((prev) => !prev);\n const toggleEditFolderDialog = ({ created = false } = {}) => {\n // folders are only displayed on the first page, therefore\n // we have to navigate the user to that page, in case a folder\n // was created successfully in order for them to see it\n if (created && query?.page !== '1') {\n setQuery({\n ...query,\n page: 1,\n });\n }\n\n setShowEditFolderDialog((prev) => !prev);\n };\n\n const handleBulkSelect = (\n checked: boolean | 'indeterminate',\n elements?: FolderRow[] | FileRow[]\n ) => {\n if (checked) {\n trackUsage('didSelectAllMediaLibraryElements');\n }\n\n selectAll(elements as (FolderRow | FileRow)[]);\n };\n\n const handleChangeSort = (value: Query['sort'] | string) => {\n trackUsage('didSortMediaLibraryElements', {\n location: 'upload',\n sort: value,\n });\n setQuery({ sort: value as Query['sort'] });\n };\n\n const handleEditFolder = (folder: FolderRow) => {\n setFolderToEdit(folder);\n setShowEditFolderDialog(true);\n };\n\n const handleEditFolderClose = (payload?: { created?: boolean | undefined }) => {\n setFolderToEdit(null);\n toggleEditFolderDialog(payload);\n\n if (currentFolderToEditRef.current) {\n currentFolderToEditRef.current.focus();\n }\n };\n\n const handleAssetDeleted = (numberOfAssets: number) => {\n if (\n numberOfAssets === assetCount &&\n assetsData?.pagination?.page === assetsData?.pagination?.pageCount &&\n assetsData?.pagination?.page &&\n assetsData.pagination.page > 1\n ) {\n setQuery({\n ...query,\n page: assetsData.pagination.page - 1,\n });\n }\n };\n\n const handleBulkActionSuccess = () => {\n selectAll();\n\n handleAssetDeleted(selected.length);\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (assetsError || foldersError) {\n return <Page.Error />;\n }\n\n return (\n <Layouts.Root>\n <Page.Main>\n <Header\n breadcrumbs={\n !isCurrentFolderLoading\n ? (getBreadcrumbDataML(currentFolder!, {\n pathname,\n query,\n }) as HeaderProps['breadcrumbs'])\n : null\n }\n canCreate={canCreate}\n onToggleEditFolderDialog={toggleEditFolderDialog}\n onToggleUploadAssetDialog={toggleUploadAssetDialog}\n folder={currentFolder as HeaderProps['folder']}\n />\n <Layouts.Action\n startActions={\n <>\n {canUpdate && isGridView && (assetCount > 0 || folderCount > 0) && (\n <BoxWithHeight\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n checked={\n indeterminateBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n onCheckedChange={(e) =>\n handleBulkSelect(e, [...assets, ...folders] as FolderRow[] | FileRow[])\n }\n />\n </BoxWithHeight>\n )}\n {canRead && isGridView && (\n <SortPicker value={query?.sort} onChangeSort={handleChangeSort} />\n )}\n {canRead && <Filters />}\n </>\n }\n endActions={\n <>\n {canConfigureView ? (\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n tag={ReactRouterLink}\n to={{\n pathname: `${pathname}/configuration`,\n search: stringify(query, { encode: false }),\n }}\n label={formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n })}\n >\n <Cog />\n </IconButton>\n </ActionContainer>\n ) : null}\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: getTrad('view-switch.list'),\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: getTrad('view-switch.grid'),\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchInput\n label={formatMessage({\n id: getTrad('search.label'),\n defaultMessage: 'Search for an asset',\n })}\n trackedEvent=\"didSearchMediaLibraryElements\"\n trackedEventDetails={{ location: 'upload' }}\n />\n </>\n }\n />\n\n <Layouts.Content>\n {selected.length > 0 && (\n <BulkActions\n currentFolder={currentFolder as BulkActionsProps['currentFolder']}\n selected={selected as BulkActionsProps['selected']}\n onSuccess={handleBulkActionSuccess}\n />\n )}\n\n {folderCount === 0 && assetCount === 0 && (\n <EmptyOrNoPermissions\n canCreate={canCreate}\n canRead={canRead}\n isFiltering={isFiltering}\n onActionClick={toggleUploadAssetDialog}\n />\n )}\n\n {/* TODO: fix AssetListTable should handle no assets views (loading) */}\n {canRead && !isGridView && (assetCount > 0 || folderCount > 0) && (\n <TableList\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={indeterminateBulkSelect}\n onChangeSort={handleChangeSort}\n onChangeFolder={(folderID, folderPath) =>\n navigate(getFolderURL(pathname, query, { folder: folderID.toString(), folderPath }))\n }\n onEditAsset={setAssetToEdit as TableListProps['onEditAsset']}\n onEditFolder={handleEditFolder}\n onSelectOne={selectOne}\n onSelectAll={handleBulkSelect as TableListProps['onSelectAll']}\n rows={[...folders, ...assets] as TableListProps['rows']}\n selected={selected as TableListProps['selected']}\n shouldDisableBulkSelect={!canUpdate}\n sortQuery={query?.sort ?? ''}\n />\n )}\n\n {canRead && isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n // Folders title should only appear if:\n // user is filtering and there are assets to display, to divide both type of elements\n // user is not filtering\n (((isFiltering && assetCount > 0) || !isFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n const selectedFolders = selected.filter(({ type }) => type === 'folder');\n const isSelected = !!selectedFolders.find(\n (currentFolder) => currentFolder.id === folder.id\n );\n\n const url = getFolderURL(pathname, query, {\n folder: folder?.id.toString(),\n folderPath: folder?.path,\n });\n\n return (\n <Grid.Item\n col={3}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ref={\n folderToEdit && folder.id === folderToEdit.id\n ? currentFolderToEditRef\n : undefined\n }\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n to={url}\n startAction={\n folder.isSelectable ? (\n <FolderCardCheckbox\n data-testid={`folder-checkbox-${folder.id}`}\n checked={isSelected}\n onCheckedChange={() => selectOne(folder)}\n />\n ) : null\n }\n cardActions={\n <IconButton\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => handleEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction to={url}>\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n textColor=\"neutral800\"\n ellipsis\n >\n {folder.name}\n <VisuallyHidden>:</VisuallyHidden>\n </TypographyMaxWidth>\n\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, =0 {# folder} one {# folder} other {# folders}}, {filesCount, plural, =0 {# asset} one {# asset} other {# assets}}',\n },\n {\n folderCount: (folder as FolderDefinition).children?.count,\n filesCount: (folder as FolderDefinition).files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6} paddingBottom={4}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <AssetGridList\n assets={assets}\n onEditAsset={setAssetToEdit as AssetGridListProps['onEditAsset']}\n onSelectAsset={selectOne}\n selectedAssets={\n selected.filter(\n ({ type }) => type === 'asset'\n ) as AssetGridListProps['selectedAssets']\n }\n title={\n // Assets title should only appear if:\n // - user is not filtering\n // - user is filtering and there are folders to display, to separate them\n // - user is on page 1 since folders won't appear on any other page than the first one (no need to visually separate them)\n ((!isFiltering || (isFiltering && folderCount > 0)) &&\n assetsData?.pagination?.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: totalAssetCount }\n )) ||\n ''\n }\n />\n )}\n </>\n )}\n <Pagination.Root {...assetsData?.pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n </Page.Main>\n {showUploadAssetDialog && (\n <UploadAssetDialog\n open={showUploadAssetDialog}\n onClose={toggleUploadAssetDialog}\n trackedLocation=\"upload\"\n folderId={query?.folder as string | number | null | undefined}\n />\n )}\n {showEditFolderDialog && (\n <EditFolderDialog\n open={showEditFolderDialog}\n onClose={() => handleEditFolderClose()}\n folder={folderToEdit as FolderDefinition}\n parentFolderId={query?.folder as string | number | null | undefined}\n location=\"upload\"\n />\n )}\n {assetToEdit && (\n <EditAssetDialog\n onClose={(editedAsset) => {\n // The asset has been deleted\n if (editedAsset === null) {\n handleAssetDeleted(1);\n }\n\n setAssetToEdit(undefined);\n }}\n open={!!assetToEdit}\n asset={assetToEdit}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation=\"upload\"\n />\n )}\n </Layouts.Root>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { useConfig } from '../../hooks/useConfig';\nimport { getTrad } from '../../utils';\n\nimport { MediaLibrary } from './MediaLibrary/MediaLibrary';\n\nimport type { Configuration } from '../../../../shared/contracts/configuration';\n\nconst ConfigureTheView = React.lazy(async () =>\n import('./ConfigureTheView/ConfigureTheView').then((mod) => ({ default: mod.ConfigureTheView }))\n);\n\nexport const Upload = () => {\n const {\n config: { isLoading, isError, data: config },\n } = useConfig() as { config: { isLoading: boolean; isError: boolean; data: Configuration } };\n\n const [{ rawQuery }, setQuery] = useQueryParams();\n const { formatMessage } = useIntl();\n const title = formatMessage({ id: getTrad('plugin.name'), defaultMessage: 'Media Library' });\n\n React.useEffect(() => {\n if (isLoading || isError || rawQuery) {\n return;\n }\n setQuery({\n sort: config.sort,\n page: 1,\n pageSize: config.pageSize,\n });\n }, [isLoading, isError, config, rawQuery, setQuery]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>{title}</Page.Title>\n {rawQuery ? (\n <React.Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route index element={<MediaLibrary />} />\n <Route\n path=\"configuration\"\n element={<ConfigureTheView config={config as Configuration} />}\n />\n </Routes>\n </React.Suspense>\n ) : null}\n </Page.Main>\n );\n};\n"],"names":["getBreadcrumbDataML","folder","pathname","query","data","id","label","getTrad","defaultMessage","href","getFolderURL","undefined","parent","push","name","toString","folderPath","path","FolderCardCheckbox","props","useFolderCard","_jsx","Box","position","zIndex","Checkbox","aria-labelledby","BulkDeleteButton","selected","onSuccess","formatMessage","useIntl","remove","useBulkRemove","handleConfirmRemove","_jsxs","Dialog","Root","Trigger","Button","variant","size","startIcon","Trash","ConfirmDialog","onConfirm","useBulkMove","toggleNotification","useNotification","queryClient","useQueryClient","post","useFetchClient","bulkMoveQuery","destinationFolderId","filesAndFolders","payload","reduce","acc","type","key","mutation","useMutation","res","files","length","refetchQueries","pluginId","active","message","move","mutateAsync","BulkMoveDialog","onClose","currentFolder","folderStructure","isLoading","useFolderStructure","handleSubmit","values","setErrors","destination","destinationValue","value","error","normalizedError","normalizeAPIError","formikErrors","errors","isEmpty","Modal","Content","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","initialFormData","Formik","validateOnChange","onSubmit","initialValues","setFieldValue","Form","noValidate","Header","Title","Grid","gap","Item","xs","col","direction","alignItems","Field","Label","SelectTree","options","onChange","defaultValue","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","tag","textColor","Footer","Close","loading","BulkMoveButton","showConfirmDialog","setShowConfirmDialog","React","useState","handleConfirmMove","open","onOpenChange","Folder","BulkActions","numberAssets","_this","val","count","numberFolders","filter","getContentIntlMessage","isFiltering","canCreate","canRead","EmptyOrNoPermissions","onActionClick","content","EmptyAssets","icon","EmptyPermissions","action","Plus","onClick","Filters","setOpen","trackUsage","useTracking","setQuery","useQueryParams","filters","$and","handleRemoveFilter","nextFilters","page","location","Object","keys","Popover","Filter","FilterPopover","displayedFilters","onToggle","FilterList","appliedFilters","filtersSchema","onRemoveFilter","breadcrumbs","onToggleEditFolderDialog","onToggleUploadAssetDialog","useLocation","backQuery","Layouts","title","subtitle","Breadcrumbs","currentFolderId","navigationAction","Link","NavLink","ArrowLeft","to","stringify","encode","primaryAction","BoxWithHeight","styled","TypographyMaxWidth","ActionContainer","theme","colors","neutral500","MediaLibrary","navigate","useNavigate","canUpdate","canCopyLink","canDownload","canConfigureView","permissionsLoading","useMediaLibraryPermissions","currentFolderToEditRef","useRef","Boolean","_q","view","setView","usePersistentState","localStorageKeys","viewOptions","GRID","isGridView","assetsData","assetsLoading","assetsError","useAssets","skipWhen","foldersData","foldersLoading","foldersError","useFolders","enabled","pagination","containsAssetFilter","isCurrentFolderLoading","currentFolderError","useFolder","folders","map","folderURL","isSelectable","folderCount","assets","results","asset","assetCount","totalAssetCount","total","showUploadAssetDialog","setShowUploadAssetDialog","showEditFolderDialog","setShowEditFolderDialog","assetToEdit","setAssetToEdit","folderToEdit","setFolderToEdit","selectOne","selectAll","useSelectionState","indeterminateBulkSelect","toggleUploadAssetDialog","prev","toggleEditFolderDialog","created","handleBulkSelect","checked","elements","handleChangeSort","sort","handleEditFolder","handleEditFolderClose","current","focus","handleAssetDeleted","numberOfAssets","pageCount","handleBulkActionSuccess","Page","Loading","Error","Main","Action","startActions","_Fragment","paddingLeft","paddingRight","background","hasRadius","borderColor","aria-label","onCheckedChange","e","SortPicker","onChangeSort","endActions","IconButton","ReactRouterLink","search","Cog","LIST","List","GridIcon","SearchInput","trackedEvent","trackedEventDetails","TableList","indeterminate","onChangeFolder","folderID","onEditAsset","onEditFolder","onSelectOne","onSelectAll","rows","shouldDisableBulkSelect","sortQuery","FolderGridList","selectedFolders","isSelected","find","url","FolderCard","ref","ariaLabel","startAction","data-testid","cardActions","Pencil","FolderCardBody","FolderCardBodyAction","maxWidth","fontWeight","ellipsis","VisuallyHidden","children","filesCount","Divider","AssetGridList","onSelectAsset","selectedAssets","Pagination","PageSize","Links","UploadAssetDialog","trackedLocation","folderId","EditFolderDialog","parentFolderId","EditAssetDialog","editedAsset","ConfigureTheView","lazy","then","mod","default","Upload","config","isError","useConfig","rawQuery","useEffect","pageSize","Suspense","fallback","Routes","Route","index","element"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,MAAMA,sBAAsB,CACjCC,MAAAA,EACA,EAAEC,QAAQ,EAAEC,KAAK,EAAuC,GAAA;AAExD,IAAA,MAAMC,IAAyB,GAAA;AAC7B,QAAA;YACEC,EAAI,EAAA,IAAA;YACJC,KAAO,EAAA;AAAED,gBAAAA,EAAAA,EAAIE,aAAQ,CAAA,aAAA,CAAA;gBAAgBC,cAAgB,EAAA;AAAgB,aAAA;AACrEC,YAAAA,IAAAA,EAAMR,MAASS,GAAAA,kBAAAA,CAAaR,QAAUC,EAAAA,KAAAA,IAAS,EAAMQ,CAAAA,GAAAA;AACvD;AACD,KAAA;IAED,IAAIV,MAAAA,EAAQW,UAAU,OAAOX,MAAAA,EAAQW,WAAW,QAAYX,IAAAA,MAAAA,EAAQW,QAAQA,MAAQ,EAAA;QAClFR,IAAKS,CAAAA,IAAI,CAAC,EAAE,CAAA;AACd;AAEA,IAAA,IAAIZ,QAAQW,MAAU,IAAA,OAAOX,MAAOW,CAAAA,MAAM,KAAK,QAAU,EAAA;AACvDR,QAAAA,IAAAA,CAAKS,IAAI,CAAC;YACRR,EAAIJ,EAAAA,MAAAA,CAAOW,MAAM,CAACP,EAAE;YACpBC,KAAOL,EAAAA,MAAAA,CAAOW,MAAM,CAACE,IAAI;AACzBL,YAAAA,IAAAA,EAAMC,kBAAaR,CAAAA,QAAAA,EAAUC,KAAS,IAAA,EAAI,EAAA;AACxCF,gBAAAA,MAAAA,EAAQA,MAAOW,CAAAA,MAAM,CAACP,EAAE,EAAEU,QAAAA,EAAAA;gBAC1BC,UAAYf,EAAAA,MAAAA,CAAOW,MAAM,CAACK;AAC5B,aAAA;AACF,SAAA,CAAA;AACF;AAEA,IAAA,IAAIhB,MAAQ,EAAA;AACVG,QAAAA,IAAAA,CAAKS,IAAI,CAAC;AACRR,YAAAA,EAAAA,EAAIJ,OAAOI,EAAE;AACbC,YAAAA,KAAAA,EAAOL,OAAOa;AAChB,SAAA,CAAA;AACF;IAEA,OAAOV,IAAAA;AACT,CAAE;;ACtDK,MAAMc,qBAAqB,CAACC,KAAAA,GAAAA;IACjC,MAAM,EAAEd,EAAE,EAAE,GAAGe,mBAAAA,EAAAA;AAEf,IAAA,qBACEC,cAACC,CAAAA,gBAAAA,EAAAA;QAAIC,QAAS,EAAA,UAAA;QAAWC,MAAQ,EAAA,CAAA;AAC/B,QAAA,QAAA,gBAAAH,cAACI,CAAAA,qBAAAA,EAAAA;AAASC,YAAAA,iBAAAA,EAAiB,CAAC,EAAErB,EAAG,CAAA,MAAM,CAAC;AAAG,YAAA,GAAGc;;;AAGpD,CAAE;;ACGK,MAAMQ,gBAAmB,GAAA,CAAC,EAAEC,QAAQ,EAAEC,SAAS,EAAyB,GAAA;IAC7E,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,MAAM,EAAE,GAAGC,mBAAAA,EAAAA;AAEnB,IAAA,MAAMC,mBAAsB,GAAA,UAAA;AAC1B,QAAA,MAAMF,MAAOJ,CAAAA,QAAAA,CAAAA;AACbC,QAAAA,SAAAA,EAAAA;AACF,KAAA;IAEA,qBACEM,eAAA,CAACC,oBAAOC,IAAI,EAAA;;AACV,0BAAAhB,cAAA,CAACe,oBAAOE,OAAO,EAAA;AACb,gBAAA,QAAA,gBAAAjB,cAACkB,CAAAA,mBAAAA,EAAAA;oBAAOC,OAAQ,EAAA,cAAA;oBAAeC,IAAK,EAAA,GAAA;AAAIC,oBAAAA,SAAAA,gBAAWrB,cAACsB,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;8BACjDb,aAAc,CAAA;wBAAEzB,EAAI,EAAA,eAAA;wBAAiBG,cAAgB,EAAA;AAAS,qBAAA;;;0BAGnEa,cAACuB,CAAAA,yBAAAA,EAAAA;gBAAcC,SAAWX,EAAAA;;;;AAGhC,CAAE;;ACNK,MAAMY,WAAc,GAAA,IAAA;IACzB,MAAM,EAAEhB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEgB,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAMC,WAAcC,GAAAA,yBAAAA,EAAAA;IACpB,MAAM,EAAEC,IAAI,EAAE,GAAGC,0BAAAA,EAAAA;AAEjB,IAAA,MAAMC,gBAAgB,CAAC,EAAEC,mBAAmB,EAAEC,eAAe,EAAkB,GAAA;AAC7E,QAAA,MAAMC,OAAUD,GAAAA,eAAAA,CAAgBE,MAAM,CAAU,CAACC,GAAK9B,EAAAA,QAAAA,GAAAA;AACpD,YAAA,MAAM,EAAEvB,EAAE,EAAEsD,IAAI,EAAE,GAAG/B,QAAAA;YACrB,MAAMgC,GAAAA,GAAMD,IAAS,KAAA,OAAA,GAAU,SAAY,GAAA,WAAA;AAE3C,YAAA,IAAI,CAACD,GAAG,CAACE,GAAAA,CAAI,EAAE;gBACbF,GAAG,CAACE,GAAI,CAAA,GAAG,EAAE;AACf;AAEAF,YAAAA,GAAG,CAACE,GAAAA,CAAI,CAAE/C,IAAI,CAACR,EAAAA,CAAAA;YAEf,OAAOqD,GAAAA;AACT,SAAA,EAAG,EAAC,CAAA;AAEJ,QAAA,OAAOP,KAAK,2BAA6B,EAAA;AAAE,YAAA,GAAGK,OAAO;AAAEF,YAAAA;AAAoB,SAAA,CAAA;AAC7E,KAAA;IAEA,MAAMO,QAAAA,GAAWC,uBAIfT,aAAe,EAAA;AACfxB,QAAAA,SAAAA,CAAAA,CAAUkC,GAAG,EAAA;AACX,YAAA,MAAM,EACJ3D,IAAM,EAAA,EAAEA,IAAI,EAAE,EACf,GAAG2D,GAAAA;YAEJ,IAAI3D,IAAAA,EAAM4D,KAAOC,EAAAA,MAAAA,GAAS,CAAG,EAAA;AAC3BhB,gBAAAA,WAAAA,CAAYiB,cAAc,CAAC;AAACC,oBAAAA,cAAAA;AAAU,oBAAA;iBAAS,EAAE;oBAAEC,MAAQ,EAAA;AAAK,iBAAA,CAAA;AAChEnB,gBAAAA,WAAAA,CAAYiB,cAAc,CAAC;AAACC,oBAAAA,cAAAA;AAAU,oBAAA;iBAAc,EAAE;oBAAEC,MAAQ,EAAA;AAAK,iBAAA,CAAA;AACvE;;;AAIAnB,YAAAA,WAAAA,CAAYiB,cAAc,CAAC;AAACC,gBAAAA,cAAAA;AAAU,gBAAA;aAAU,EAAE;gBAAEC,MAAQ,EAAA;AAAK,aAAA,CAAA;YAEjErB,kBAAmB,CAAA;gBACjBY,IAAM,EAAA,SAAA;AACNU,gBAAAA,OAAAA,EAASvC,aAAc,CAAA;AACrBzB,oBAAAA,EAAAA,EAAIE,aAAQ,CAAA,0BAAA,CAAA;oBACZC,cAAgB,EAAA;AAClB,iBAAA;AACF,aAAA,CAAA;AACF;AACF,KAAA,CAAA;AAEA,IAAA,MAAM8D,OAAO,CACXhB,mBAAAA,EACAC,eACGM,GAAAA,QAAAA,CAASU,WAAW,CAAC;AAAEjB,YAAAA,mBAAAA;AAAqBC,YAAAA;AAAgB,SAAA,CAAA;IAEjE,OAAO;AAAE,QAAA,GAAGM,QAAQ;AAAES,QAAAA;AAAK,KAAA;AAC7B,CAAE;;AChDK,MAAME,cAAiB,GAAA,CAAC,EAAEC,OAAO,EAAE7C,QAAW,GAAA,EAAE,EAAE8C,aAAa,EAAuB,GAAA;IAC3F,MAAM,EAAE5C,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAE3B,IAAMuE,EAAAA,eAAe,EAAEC,SAAS,EAAE,GAAGC,wBAAAA,EAAAA;IAC7C,MAAM,EAAEP,IAAI,EAAE,GAAGxB,WAAAA,EAAAA;AAEjB,IAAA,IAAI,CAAC6B,eAAiB,EAAA;QACpB,OAAO,IAAA;AACT;AAEA,IAAA,MAAMG,YAAe,GAAA,OACnBC,MACA,EAAA,EAAEC,SAAS,EAAkE,GAAA;QAE7E,IAAI;AACF,YAAA,IAAI,OAAOD,MAAAA,CAAOE,WAAW,KAAK,QAAU,EAAA;AAC1C,gBAAA,MAAMC,gBAAmBH,GAAAA,MAAAA,CAAOE,WAAW,CAACE,KAAK;AACjD,gBAAA,MAAMb,KAAKY,gBAAkBtD,EAAAA,QAAAA,CAAAA;AAC7B6C,gBAAAA,OAAAA,EAAAA;AACF;AACF,SAAA,CAAE,OAAOW,KAAO,EAAA;AACd,YAAA,MAAMC,kBAAkBC,uBAAkBF,CAAAA,KAAAA,CAAAA;YAE1C,IAAIC,eAAAA,IAAmB,YAAYA,eAAiB,EAAA;AAClD,gBAAA,MAAME,eAAeF,eAAgBG,CAAAA,MAAM,EAAE/B,MAAAA,CAC3C,CAACC,GAAK0B,EAAAA,KAAAA,GAAAA;oBACJ1B,GAAG,CAAC0B,MAAML,MAAM,EAAE9D,MAAMgD,MAAU,IAAA,aAAA,CAAc,GAAGmB,KAAAA,CAAM5E,cAAc;oBAEvE,OAAOkD,GAAAA;AACT,iBAAA,EACA,EAAC,CAAA;gBAGH,IAAI,CAAC+B,QAAQF,YAAe,CAAA,EAAA;oBAC1BP,SAAUO,CAAAA,YAAAA,CAAAA;AACZ;AACF;AACF;AACF,KAAA;AAEA,IAAA,IAAIX,SAAW,EAAA;QACb,qBACEvD,cAAA,CAACqE,mBAAMC,OAAO,EAAA;oCACZtE,cAAA,CAACqE,mBAAME,IAAI,EAAA;AACT,gBAAA,QAAA,gBAAAvE,cAACwE,CAAAA,iBAAAA,EAAAA;oBAAKC,cAAe,EAAA,QAAA;oBAASC,UAAY,EAAA,CAAA;oBAAGC,aAAe,EAAA,CAAA;AAC1D,oBAAA,QAAA,gBAAA3E,cAAC4E,CAAAA,mBAAAA,EAAAA;kCACEnE,aAAc,CAAA;AACbzB,4BAAAA,EAAAA,EAAIE,aAAQ,CAAA,mBAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA;;;;;AAMZ;AAEA,IAAA,MAAM0F,eAAmC,GAAA;QACvCjB,WAAa,EAAA;AACXE,YAAAA,KAAAA,EAAOT,eAAerE,EAAM,IAAA,EAAA;AAC5BC,YAAAA,KAAAA,EAAOoE,eAAe5D,IAAQ6D,IAAAA,eAAe,CAAC,CAAA,CAAE,CAACrE;AACnD;AACF,KAAA;IAEA,qBACEe,cAAA,CAACqE,mBAAMC,OAAO,EAAA;AACZ,QAAA,QAAA,gBAAAtE,cAAC8E,CAAAA,aAAAA,EAAAA;YAAOC,gBAAkB,EAAA,KAAA;YAAOC,QAAUvB,EAAAA,YAAAA;YAAcwB,aAAeJ,EAAAA,eAAAA;sBACrE,CAAC,EAAEnB,MAAM,EAAES,MAAM,EAAEe,aAAa,EAAE,iBACjCpE,eAACqE,CAAAA,WAAAA,EAAAA;oBAAKC,UAAU,EAAA,IAAA;;AACd,sCAAApF,cAAA,CAACqE,mBAAMgB,MAAM,EAAA;oDACXrF,cAAA,CAACqE,mBAAMiB,KAAK,EAAA;0CACT7E,aAAc,CAAA;AACbzB,oCAAAA,EAAAA,EAAIE,aAAQ,CAAA,yBAAA,CAAA;oCACZC,cAAgB,EAAA;AAClB,iCAAA;;;AAIJ,sCAAAa,cAAA,CAACqE,mBAAME,IAAI,EAAA;oDACTvE,cAAA,CAACuF,kBAAKvE,IAAI,EAAA;gCAACwE,GAAK,EAAA,CAAA;wDACdxF,cAAA,CAACuF,kBAAKE,IAAI,EAAA;oCAACC,EAAI,EAAA,EAAA;oCAAIC,GAAK,EAAA,EAAA;oCAAIC,SAAU,EAAA,QAAA;oCAASC,UAAW,EAAA,SAAA;4DACxD/E,eAAA,CAACgF,mBAAM9E,IAAI,EAAA;wCAAChC,EAAG,EAAA,oBAAA;;AACb,0DAAAgB,cAAA,CAAC8F,mBAAMC,KAAK,EAAA;0DACTtF,aAAc,CAAA;AACbzB,oDAAAA,EAAAA,EAAIE,aAAQ,CAAA,kCAAA,CAAA;oDACZC,cAAgB,EAAA;AAClB,iDAAA;;0DAGFa,cAACgG,CAAAA,gBAAAA,EAAAA;gDACCC,OAAS3C,EAAAA,eAAAA;AACT4C,gDAAAA,QAAAA,EAAU,CAACpC,KAAAA,GAAAA;AACToB,oDAAAA,aAAAA,CAAc,aAAepB,EAAAA,KAAAA,CAAAA;AAC/B,iDAAA;AACAqC,gDAAAA,YAAAA,EACE,OAAOzC,MAAOE,CAAAA,WAAW,KAAK,QAAWF,GAAAA,MAAAA,CAAOE,WAAW,GAAGtE,SAAAA;gDAEhEG,IAAK,EAAA,aAAA;gDACL2G,gBAAkBC,EAAAA,QAAAA,CAASC,aAAa,CAAC,MAAA,CAAA;gDACzCC,OAAQ,EAAA,oBAAA;AACRxC,gDAAAA,KAAAA,EAAOI,MAAQP,EAAAA,WAAAA;gDACf4C,gBAAiB,EAAA;;4CAGlBrC,MAAOP,CAAAA,WAAW,kBACjB5D,cAACyG,CAAAA,uBAAAA,EAAAA;gDAAWtF,OAAQ,EAAA,IAAA;gDAAKuF,GAAI,EAAA,GAAA;gDAAIC,SAAU,EAAA,WAAA;AACxCxC,gDAAAA,QAAAA,EAAAA,MAAAA,CAAOP;;;;;;;AAQpB,sCAAA9C,eAAA,CAACuD,mBAAMuC,MAAM,EAAA;;AACX,8CAAA5G,cAAA,CAACqE,mBAAMwC,KAAK,EAAA;AACV,oCAAA,QAAA,gBAAA7G,cAACkB,CAAAA,mBAAAA,EAAAA;wCAAOC,OAAQ,EAAA,UAAA;wCAAW1B,IAAK,EAAA,QAAA;kDAC7BgB,aAAc,CAAA;4CAAEzB,EAAI,EAAA,QAAA;4CAAUG,cAAgB,EAAA;AAAS,yCAAA;;;8CAG5Da,cAACkB,CAAAA,mBAAAA,EAAAA;oCAAOoB,IAAK,EAAA,QAAA;oCAASwE,OAASvD,EAAAA,SAAAA;8CAC5B9C,aAAc,CAAA;wCAAEzB,EAAI,EAAA,0BAAA;wCAA4BG,cAAgB,EAAA;AAAO,qCAAA;;;;;;;;AAQxF,CAAE;;AC7IK,MAAM4H,cAAiB,GAAA,CAAC,EAC7BxG,QAAAA,GAAW,EAAE,EACbC,SAAS,EACT6C,aAAa,EACO,GAAA;IACpB,MAAM,EAAE5C,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACsG,iBAAmBC,EAAAA,oBAAAA,CAAqB,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAEjE,IAAA,MAAMC,iBAAoB,GAAA,IAAA;QACxBH,oBAAqB,CAAA,KAAA,CAAA;AACrBzG,QAAAA,SAAAA,EAAAA;AACF,KAAA;IAEA,qBACEM,eAAA,CAACuD,mBAAMrD,IAAI,EAAA;QAACqG,IAAML,EAAAA,iBAAAA;QAAmBM,YAAcL,EAAAA,oBAAAA;;AACjD,0BAAAjH,cAAA,CAACqE,mBAAMpD,OAAO,EAAA;AACZ,gBAAA,QAAA,gBAAAjB,cAACkB,CAAAA,mBAAAA,EAAAA;oBAAOC,OAAQ,EAAA,WAAA;oBAAYC,IAAK,EAAA,GAAA;AAAIC,oBAAAA,SAAAA,gBAAWrB,cAACuH,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;8BAC9C9G,aAAc,CAAA;wBAAEzB,EAAI,EAAA,aAAA;wBAAeG,cAAgB,EAAA;AAAO,qBAAA;;;0BAG/Da,cAACmD,CAAAA,cAAAA,EAAAA;gBACCE,aAAeA,EAAAA,aAAAA;gBACfD,OAASgE,EAAAA,iBAAAA;gBACT7G,QAAUA,EAAAA;;;;AAIlB,CAAE;;ACxBK,MAAMiH,WAAc,GAAA,CAAC,EAAEjH,QAAAA,GAAW,EAAE,EAAEC,SAAS,EAAE6C,aAAa,EAAoB,GAAA;IACvF,MAAM,EAAE5C,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM+G,eAAelH,QAAU6B,EAAAA,MAAAA,CAAO,SAAUsF,KAAK,EAAEC,GAAG,EAAA;AACxD,QAAA,OAAOA,GAAKrF,EAAAA,IAAAA,KAAS,QAAY,IAAA,OAAA,IAAWqF,OAAOA,GAAKhF,EAAAA,KAAAA,IAAS,OAAWgF,IAAAA,GAAAA,CAAIhF,KAAK,GACjF+E,KAAAA,GAAQC,GAAKhF,EAAAA,KAAAA,EAAOiF,QACpBF,KAAQ,GAAA,CAAA;KACX,EAAA,CAAA,CAAA;AAEH,IAAA,qBACE5G,eAAC0D,CAAAA,iBAAAA,EAAAA;QAAKgB,GAAK,EAAA,CAAA;QAAGb,aAAe,EAAA,CAAA;;0BAC3B3E,cAACyG,CAAAA,uBAAAA,EAAAA;gBAAWtF,OAAQ,EAAA,SAAA;gBAAUwF,SAAU,EAAA,YAAA;0BACrClG,aACC,CAAA;AACEzB,oBAAAA,EAAAA,EAAIE,aAAQ,CAAA,sBAAA,CAAA;oBACZC,cACE,EAAA;iBAEJ,EAAA;oBACE0I,aAAetH,EAAAA,QAAAA,EAAUuH,OAAO,CAAC,EAAExF,IAAI,EAAE,GAAKA,SAAS,QAAUM,CAAAA,CAAAA,MAAAA;AACjE6E,oBAAAA;AACF,iBAAA;;0BAIJzH,cAACM,CAAAA,gBAAAA,EAAAA;gBACCC,QAAUA,EAAAA,QAAAA;gBACVC,SAAWA,EAAAA;;0BAEbR,cAAC+G,CAAAA,cAAAA,EAAAA;gBACC1D,aAAeA,EAAAA,aAAAA;gBACf9C,QAAUA,EAAAA,QAAAA;gBACVC,SAAWA,EAAAA;;;;AAInB,CAAE;;AChDF,MAAMuH,qBAAAA,GAAwB,CAAC,EAC7BC,WAAW,EACXC,SAAS,EACTC,OAAO,EAC0C,GAAA;AACjD,IAAA,IAAIF,WAAa,EAAA;QACf,OAAO;YACLhJ,EAAI,EAAA,oCAAA;YACJG,cAAgB,EAAA;AAClB,SAAA;AACF;AAEA,IAAA,IAAI+I,OAAS,EAAA;AACX,QAAA,IAAID,SAAW,EAAA;YACb,OAAO;gBACLjJ,EAAI,EAAA,0BAAA;gBACJG,cAAgB,EAAA;AAClB,aAAA;AACF;QAEA,OAAO;YACLH,EAAI,EAAA,mBAAA;YACJG,cAAgB,EAAA;AAClB,SAAA;AACF;IAEA,OAAO;QACLH,EAAI,EAAA,+BAAA;QACJG,cAAgB,EAAA;AAClB,KAAA;AACF,CAAA;AAEO,MAAMgJ,oBAAuB,GAAA,CAAC,EACnCF,SAAS,EACTD,WAAW,EACXE,OAAO,EACPE,aAAa,EACa,GAAA;IAC1B,MAAM,EAAE3H,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM2H,UAAUN,qBAAsB,CAAA;AAAEC,QAAAA,WAAAA;AAAaC,QAAAA,SAAAA;AAAWC,QAAAA;AAAQ,KAAA,CAAA;AAExE,IAAA,qBACElI,cAACsI,CAAAA,iBAAAA,EAAAA;QACCC,IAAM,EAAA,CAACL,UAAUM,wBAAmBlJ,GAAAA,SAAAA;QACpCmJ,MACER,EAAAA,SAAAA,IACA,CAACD,WAAAA,kBACChI,cAACkB,CAAAA,mBAAAA,EAAAA;YAAOC,OAAQ,EAAA,WAAA;AAAYE,YAAAA,SAAAA,gBAAWrB,cAAC0I,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;YAASC,OAASP,EAAAA,aAAAA;sBACvD3H,aAAc,CAAA;AACbzB,gBAAAA,EAAAA,EAAIE,aAAQ,CAAA,2BAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA;;AAINkJ,QAAAA,OAAAA,EAAS5H,aAAc,CAAA;AACrB,YAAA,GAAG4H,OAAO;YACVrJ,EAAIE,EAAAA,aAAAA,CAAQmJ,QAAQrJ,EAAE;AACxB,SAAA;;AAGN,CAAE;;AC7DK,MAAM4J,OAAU,GAAA,IAAA;AACrB,IAAA,MAAM,CAACvB,IAAMwB,EAAAA,OAAAA,CAAQ,GAAG3B,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACvC,MAAM,EAAE1G,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEoI,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;AACvB,IAAA,MAAM,CAAC,EAAEjK,KAAK,EAAE,EAAEkK,SAAS,GAAGC,0BAAAA,EAAAA;AAC9B,IAAA,MAAMC,OAAUpK,GAAAA,KAAAA,EAAOoK,OAASC,EAAAA,IAAAA,IAAQ,EAAE;AAE1C,IAAA,MAAMC,qBAAwD,CAACC,WAAAA,GAAAA;QAC7DL,QAAS,CAAA;YAAEE,OAAS,EAAA;gBAAEC,IAAME,EAAAA;AAAY,aAAA;YAAGC,IAAM,EAAA;AAAE,SAAA,CAAA;AACrD,KAAA;AAEA,IAAA,MAAM7F,eAA+C,CAACyF,OAAAA,GAAAA;AACpDJ,QAAAA,UAAAA,CAAW,+BAAiC,EAAA;YAC1CS,QAAU,EAAA,iBAAA;YACVzB,MAAQ0B,EAAAA,MAAAA,CAAOC,IAAI,CAACP,OAAO,CAACA,OAAQtG,CAAAA,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAE;AACrD,SAAA,CAAA;QACAoG,QAAS,CAAA;YAAEE,OAAS,EAAA;gBAAEC,IAAMD,EAAAA;AAAQ,aAAA;YAAGI,IAAM,EAAA;AAAE,SAAA,CAAA;AACjD,KAAA;IAEA,qBACExI,eAAA,CAAC4I,qBAAQ1I,IAAI,EAAA;QAACqG,IAAMA,EAAAA,IAAAA;QAAMC,YAAcuB,EAAAA,OAAAA;;AACtC,0BAAA7I,cAAA,CAAC0J,qBAAQzI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAjB,cAACkB,CAAAA,mBAAAA,EAAAA;oBAAOC,OAAQ,EAAA,UAAA;AAAWE,oBAAAA,SAAAA,gBAAWrB,cAAC2J,CAAAA,YAAAA,EAAAA,EAAAA,CAAAA;oBAAWvI,IAAK,EAAA,GAAA;8BACpDX,aAAc,CAAA;wBAAEzB,EAAI,EAAA,mBAAA;wBAAqBG,cAAgB,EAAA;AAAU,qBAAA;;;0BAGxEa,cAAC4J,CAAAA,mBAAAA,EAAAA;gBACCC,gBAAkBA,EAAAA,sBAAAA;gBAClBX,OAASA,EAAAA,OAAAA;gBACTlE,QAAUvB,EAAAA,YAAAA;gBACVqG,QAAUjB,EAAAA;;0BAEZ7I,cAAC+J,CAAAA,gBAAAA,EAAAA;gBACCC,cAAgBd,EAAAA,OAAAA;gBAChBe,aAAeJ,EAAAA,sBAAAA;gBACfK,cAAgBd,EAAAA;;;;AAIxB,CAAE;;ACvBK,MAAM/D,MAAAA,GAAS,CAAC,EACrB8E,cAAc,IAAI,EAClBlC,SAAS,EACTrJ,SAAS,IAAI,EACbwL,wBAAwB,EACxBC,yBAAyB,EACb,GAAA;IACZ,MAAM,EAAE5J,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAE7B,QAAQ,EAAE,GAAGyL,0BAAAA,EAAAA;AACrB,IAAA,MAAM,CAAC,EAAExL,KAAK,EAAE,CAAC,GAAGmK,0BAAAA,EAAAA;AACpB,IAAA,MAAMsB,SAAY,GAAA;AAChB,QAAA,GAAGzL,KAAK;AACRF,QAAAA,MAAAA,EACEA,QAAQW,MAAU,IAAA,OAAOX,MAAOW,CAAAA,MAAM,KAAK,QAAYX,IAAAA,MAAAA,CAAOW,MAAM,CAACP,EAAE,GACnEJ,MAAAA,CAAOW,MAAM,CAACP,EAAE,GAChBM,SAAAA;AACNK,QAAAA,UAAAA,EACEf,QAAQW,MAAU,IAAA,OAAOX,MAAOW,CAAAA,MAAM,KAAK,QAAYX,IAAAA,MAAAA,CAAOW,MAAM,CAACK,IAAI,GACrEhB,MAAAA,CAAOW,MAAM,CAACK,IAAI,GAClBN;AACR,KAAA;IAEA,qBACEU,cAAA,CAACwK,oBAAQnF,MAAM,EAAA;AACboF,QAAAA,KAAAA,EAAOhK,aAAc,CAAA;AACnBzB,YAAAA,EAAAA,EAAIE,aAAQ,CAAA,aAAA,CAAA;YACZC,cAAgB,EAAA,CAAC,aAAa;AAChC,SAAA,CAAA;AACAuL,QAAAA,QAAAA,EACEP,WACA,IAAA,OAAOA,WAAgB,KAAA,SAAA,IACvBvL,wBACEoB,cAAC2K,CAAAA,iBAAAA,EAAAA;AACC1L,YAAAA,KAAAA,EAAOwB,aAAc,CAAA;AACnBzB,gBAAAA,EAAAA,EAAIE,aAAQ,CAAA,8BAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAgL,WAAaA,EAAAA,WAAAA;AACbS,YAAAA,eAAAA,EAAiBhM,MAAQI,EAAAA;;AAI/B6L,QAAAA,gBAAAA,EACEjM,wBACEoB,cAAC8K,CAAAA,iBAAAA,EAAAA;YACCpE,GAAKqE,EAAAA,sBAAAA;AACL1J,YAAAA,SAAAA,gBAAWrB,cAACgL,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA;AACZC,YAAAA,EAAAA,EAAI,CAAC,EAAEpM,QAAAA,CAAS,CAAC,EAAEqM,aAAUX,SAAW,EAAA;gBAAEY,MAAQ,EAAA;AAAM,aAAA,CAAA,CAAG,CAAC;sBAE3D1K,aAAc,CAAA;AACbzB,gBAAAA,EAAAA,EAAIE,aAAQ,CAAA,gCAAA,CAAA;gBACZC,cAAgB,EAAA;AAClB,aAAA;;AAINiM,QAAAA,aAAAA,EACEnD,2BACEnH,eAAC0D,CAAAA,iBAAAA,EAAAA;YAAKgB,GAAK,EAAA,CAAA;;8BACTxF,cAACkB,CAAAA,mBAAAA,EAAAA;AAAOG,oBAAAA,SAAAA,gBAAWrB,cAAC0I,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;oBAASvH,OAAQ,EAAA,WAAA;oBAAYwH,OAASyB,EAAAA,wBAAAA;8BACvD3J,aAAc,CAAA;AACbzB,wBAAAA,EAAAA,EAAIE,aAAQ,CAAA,2BAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA;;8BAGFa,cAACkB,CAAAA,mBAAAA,EAAAA;AAAOG,oBAAAA,SAAAA,gBAAWrB,cAAC0I,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;oBAASC,OAAS0B,EAAAA,yBAAAA;8BACnC5J,aAAc,CAAA;AACbzB,wBAAAA,EAAAA,EAAIE,aAAQ,CAAA,2BAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA;;;;;AAOd,CAAE;;AC5GF;AA4DA,MAAMkM,aAAAA,GAAgBC,uBAAOrL,CAAAA,gBAAAA,CAAI;;;;AAIjC,CAAC;AAED,MAAMsL,kBAAAA,GAAqBD,uBAAO7E,CAAAA,uBAAAA,CAAW;;AAE7C,CAAC;AAED,MAAM+E,eAAAA,GAAkBF,uBAAOrL,CAAAA,gBAAAA,CAAI;;;YAGvB,EAAE,CAAC,EAAEwL,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;AAGrD,CAAC;AAEM,MAAMC,YAAe,GAAA,IAAA;AAC1B,IAAA,MAAMC,QAAWC,GAAAA,0BAAAA,EAAAA;AACjB,IAAA,MAAM,EACJ5D,OAAO,EACPD,SAAS,EACT8D,SAAS,EACTC,WAAW,EACXC,WAAW,EACXC,gBAAgB,EAChB3I,SAAW4I,EAAAA,kBAAkB,EAC9B,GAAGC,gCAAAA,EAAAA;IACJ,MAAMC,sBAAAA,GAAyBnF,iBAAMoF,MAAM,EAAA;IAC3C,MAAM,EAAE7L,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAE7B,QAAQ,EAAE,GAAGyL,0BAAAA,EAAAA;IACrB,MAAM,EAAExB,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;AACvB,IAAA,MAAM,CAAC,EAAEjK,KAAK,EAAE,EAAEkK,SAAS,GAAGC,0BAAAA,EAAAA;AAC9B,IAAA,MAAMjB,cAAcuE,OAAQzN,CAAAA,KAAAA,CAAM0N,EAAE,IAAI1N,MAAMoK,OAAO,CAAA;IACrD,MAAM,CAACuD,MAAMC,OAAQ,CAAA,GAAGC,yBAAmBC,sBAAiBH,CAAAA,IAAI,EAAEI,iBAAAA,CAAYC,IAAI,CAAA;IAClF,MAAMC,UAAAA,GAAaN,IAASI,KAAAA,iBAAAA,CAAYC,IAAI;IAE5C,MAAM,EACJ/N,IAAMiO,EAAAA,UAAU,EAChBzJ,SAAAA,EAAW0J,aAAa,EACxBlJ,KAAOmJ,EAAAA,WAAW,EACnB,GAAGC,eAAU,CAAA;AACZC,QAAAA,QAAAA,EAAU,CAAClF,OAAAA;AACXpJ,QAAAA;AACF,KAAA,CAAA;IAEA,MAAM,EACJC,IAAMsO,EAAAA,WAAW,EACjB9J,SAAAA,EAAW+J,cAAc,EACzBvJ,KAAOwJ,EAAAA,YAAY,EACpB,GAAGC,gBAAW,CAAA;AACbC,QAAAA,OAAAA,EAASvF,WAAW8E,UAAYU,EAAAA,UAAAA,EAAYpE,IAAS,KAAA,CAAA,IAAK,CAACqE,yBAAoB7O,CAAAA,KAAAA,CAAAA;AAC/EA,QAAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAM,EACJC,IAAAA,EAAMsE,aAAa,EACnBE,SAAWqK,EAAAA,sBAAsB,EACjC7J,KAAAA,EAAO8J,kBAAkB,EAC1B,GAAGC,eAAAA,CAAUhP,OAAOF,MAAqC,EAAA;QACxD6O,OAASvF,EAAAA,OAAAA,IAAW,CAAC,CAACpJ,KAAOF,EAAAA;AAC/B,KAAA,CAAA;;IAGA,IAAIiP,kBAAAA,EAAoBpO,SAAS,eAAiB,EAAA;QAChDoM,QAAShN,CAAAA,QAAAA,CAAAA;AACX;AAEA,IAAA,MAAMkP,OACJV,GAAAA,WAAAA,EAAaW,GAAI,CAAA,CAACpP,UAAY;AAC5B,YAAA,GAAGA,MAAM;YACT0D,IAAM,EAAA,QAAA;YACN2L,SAAW5O,EAAAA,kBAAAA,CAAaR,UAAUC,KAAO,EAAA;gBACvCF,MAAQA,EAAAA,MAAAA,CAAOI,EAAE,CAACU,QAAQ,EAAA;AAC1BC,gBAAAA,UAAAA,EAAYf,OAAOgB;AACrB,aAAA,CAAA;YACAsO,YAAcnC,EAAAA;AAChB,SAAA,MAAO,EAAE;IACX,MAAMoC,WAAAA,GAAcJ,SAASnL,MAAU,IAAA,CAAA;AACvC,IAAA,MAAMwL,SACJpB,UAAYqB,EAAAA,OAAAA,EAASL,GAAI,CAAA,CAACM,SAAW;AAAE,YAAA,GAAGA,KAAK;YAAEhM,IAAM,EAAA,OAAA;YAAS4L,YAAcnC,EAAAA;AAAU,SAAA,MACxF,EAAE;IACJ,MAAMwC,UAAAA,GAAaH,QAAQxL,MAAU,IAAA,CAAA;IACrC,MAAM4L,eAAAA,GAAkBxB,YAAYU,UAAYe,EAAAA,KAAAA;IAEhD,MAAMlL,SAAAA,GAAYqK,sBAA0BN,IAAAA,cAAAA,IAAkBnB,kBAAsBc,IAAAA,aAAAA;AACpF,IAAA,MAAM,CAACyB,qBAAuBC,EAAAA,wBAAAA,CAAyB,GAAGzH,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACzE,IAAA,MAAM,CAACyH,oBAAsBC,EAAAA,uBAAAA,CAAwB,GAAG3H,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACvE,IAAA,MAAM,CAAC2H,WAAaC,EAAAA,cAAAA,CAAe,GAAG7H,gBAAAA,CAAMC,QAAQ,CAAoB7H,SAAAA,CAAAA;AACxE,IAAA,MAAM,CAAC0P,YAAcC,EAAAA,eAAAA,CAAgB,GAAG/H,gBAAAA,CAAMC,QAAQ,CAA+B7H,SAAAA,CAAAA;IACrF,MAAM,CAACiB,UAAU,EAAE2O,SAAS,EAAEC,SAAS,EAAE,CAAC,GAAGC,uBAC3C,CAAA;AAAC,QAAA,MAAA;AAAQ,QAAA;AAAK,KAAA,EACd,EAAE,CAAA;AAEJ,IAAA,MAAMC,0BACJ9O,QAAUqC,EAAAA,MAAAA,GAAS,CAAKrC,IAAAA,QAAAA,EAAUqC,WAAW2L,UAAaJ,GAAAA,WAAAA;AAC5D,IAAA,MAAMmB,uBAA0B,GAAA,IAAMX,wBAAyB,CAAA,CAACY,OAAS,CAACA,IAAAA,CAAAA;IAC1E,MAAMC,sBAAAA,GAAyB,CAAC,EAAEC,OAAAA,GAAU,KAAK,EAAE,GAAG,EAAE,GAAA;;;;QAItD,IAAIA,OAAAA,IAAW3Q,KAAOwK,EAAAA,IAAAA,KAAS,GAAK,EAAA;YAClCN,QAAS,CAAA;AACP,gBAAA,GAAGlK,KAAK;gBACRwK,IAAM,EAAA;AACR,aAAA,CAAA;AACF;QAEAuF,uBAAwB,CAAA,CAACU,OAAS,CAACA,IAAAA,CAAAA;AACrC,KAAA;IAEA,MAAMG,gBAAAA,GAAmB,CACvBC,OACAC,EAAAA,QAAAA,GAAAA;AAEA,QAAA,IAAID,OAAS,EAAA;YACX7G,UAAW,CAAA,kCAAA,CAAA;AACb;QAEAqG,SAAUS,CAAAA,QAAAA,CAAAA;AACZ,KAAA;AAEA,IAAA,MAAMC,mBAAmB,CAAC/L,KAAAA,GAAAA;AACxBgF,QAAAA,UAAAA,CAAW,6BAA+B,EAAA;YACxCS,QAAU,EAAA,QAAA;YACVuG,IAAMhM,EAAAA;AACR,SAAA,CAAA;QACAkF,QAAS,CAAA;YAAE8G,IAAMhM,EAAAA;AAAuB,SAAA,CAAA;AAC1C,KAAA;AAEA,IAAA,MAAMiM,mBAAmB,CAACnR,MAAAA,GAAAA;QACxBqQ,eAAgBrQ,CAAAA,MAAAA,CAAAA;QAChBiQ,uBAAwB,CAAA,IAAA,CAAA;AAC1B,KAAA;AAEA,IAAA,MAAMmB,wBAAwB,CAAC7N,OAAAA,GAAAA;QAC7B8M,eAAgB,CAAA,IAAA,CAAA;QAChBO,sBAAuBrN,CAAAA,OAAAA,CAAAA;QAEvB,IAAIkK,sBAAAA,CAAuB4D,OAAO,EAAE;YAClC5D,sBAAuB4D,CAAAA,OAAO,CAACC,KAAK,EAAA;AACtC;AACF,KAAA;AAEA,IAAA,MAAMC,qBAAqB,CAACC,cAAAA,GAAAA;AAC1B,QAAA,IACEA,mBAAmB7B,UACnBvB,IAAAA,UAAAA,EAAYU,UAAYpE,EAAAA,IAAAA,KAAS0D,YAAYU,UAAY2C,EAAAA,SAAAA,IACzDrD,UAAYU,EAAAA,UAAAA,EAAYpE,QACxB0D,UAAWU,CAAAA,UAAU,CAACpE,IAAI,GAAG,CAC7B,EAAA;YACAN,QAAS,CAAA;AACP,gBAAA,GAAGlK,KAAK;AACRwK,gBAAAA,IAAAA,EAAM0D,UAAWU,CAAAA,UAAU,CAACpE,IAAI,GAAG;AACrC,aAAA,CAAA;AACF;AACF,KAAA;AAEA,IAAA,MAAMgH,uBAA0B,GAAA,IAAA;AAC9BnB,QAAAA,SAAAA,EAAAA;AAEAgB,QAAAA,kBAAAA,CAAmB5P,SAASqC,MAAM,CAAA;AACpC,KAAA;AAEA,IAAA,IAAIW,SAAW,EAAA;QACb,qBAAOvD,cAAA,CAACuQ,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;AAEA,IAAA,IAAItD,eAAeK,YAAc,EAAA;QAC/B,qBAAOvN,cAAA,CAACuQ,iBAAKE,KAAK,EAAA,EAAA,CAAA;AACpB;IAEA,qBACE3P,eAAA,CAAC0J,oBAAQxJ,IAAI,EAAA;;AACX,0BAAAF,eAAA,CAACyP,iBAAKG,IAAI,EAAA;;kCACR1Q,cAACqF,CAAAA,MAAAA,EAAAA;wBACC8E,WACE,EAAA,CAACyD,sBACIjP,GAAAA,mBAAAA,CAAoB0E,aAAgB,EAAA;AACnCxE,4BAAAA,QAAAA;AACAC,4BAAAA;yBAEF,CAAA,GAAA,IAAA;wBAENmJ,SAAWA,EAAAA,SAAAA;wBACXmC,wBAA0BoF,EAAAA,sBAAAA;wBAC1BnF,yBAA2BiF,EAAAA,uBAAAA;wBAC3B1Q,MAAQyE,EAAAA;;AAEV,kCAAArD,cAAA,CAACwK,oBAAQmG,MAAM,EAAA;wBACbC,YACE,gBAAA9P,eAAA,CAAA+P,mBAAA,EAAA;;AACG9E,gCAAAA,SAAAA,IAAagB,eAAewB,UAAAA,GAAa,KAAKJ,WAAc,GAAA,CAAA,mBAC3DnO,cAACqL,CAAAA,aAAAA,EAAAA;oCACCyF,WAAa,EAAA,CAAA;oCACbC,YAAc,EAAA,CAAA;oCACdC,UAAW,EAAA,UAAA;oCACXC,SAAS,EAAA,IAAA;oCACTC,WAAY,EAAA,YAAA;AAEZ,oCAAA,QAAA,gBAAAlR,cAACI,CAAAA,qBAAAA,EAAAA;AACC+Q,wCAAAA,YAAAA,EAAY1Q,aAAc,CAAA;AACxBzB,4CAAAA,EAAAA,EAAIE,aAAQ,CAAA,mBAAA,CAAA;4CACZC,cAAgB,EAAA;AAClB,yCAAA,CAAA;AACAwQ,wCAAAA,OAAAA,EACEN,uBACI,GAAA,eAAA,GACA,CAACd,UAAa,GAAA,CAAA,IAAKJ,WAAc,GAAA,CAAA,KACjC5N,QAAAA,CAASqC,MAAM,KAAK2L,UAAaJ,GAAAA,WAAAA;wCAEvCiD,eAAiB,EAAA,CAACC,CAChB3B,GAAAA,gBAAAA,CAAiB2B,CAAG,EAAA;AAAIjD,gDAAAA,GAAAA,MAAAA;AAAWL,gDAAAA,GAAAA;AAAQ,6CAAA;;;AAKlD7F,gCAAAA,OAAAA,IAAW6E,4BACV/M,cAACsR,CAAAA,gBAAAA,EAAAA;AAAWxN,oCAAAA,KAAAA,EAAOhF,KAAOgR,EAAAA,IAAAA;oCAAMyB,YAAc1B,EAAAA;;AAE/C3H,gCAAAA,OAAAA,kBAAWlI,cAAC4I,CAAAA,OAAAA,EAAAA,EAAAA;;;wBAGjB4I,UACE,gBAAA1Q,eAAA,CAAA+P,mBAAA,EAAA;;AACG3E,gCAAAA,gBAAAA,iBACClM,cAACwL,CAAAA,eAAAA,EAAAA;oCAAgB9G,UAAY,EAAA,CAAA;oCAAGC,aAAe,EAAA,CAAA;AAC7C,oCAAA,QAAA,gBAAA3E,cAACyR,CAAAA,uBAAAA,EAAAA;wCACC/K,GAAKgL,EAAAA,mBAAAA;wCACLzG,EAAI,EAAA;AACFpM,4CAAAA,QAAAA,EAAU,CAAC,EAAEA,QAAS,CAAA,cAAc,CAAC;AACrC8S,4CAAAA,MAAAA,EAAQzG,aAAUpM,KAAO,EAAA;gDAAEqM,MAAQ,EAAA;AAAM,6CAAA;AAC3C,yCAAA;AACAlM,wCAAAA,KAAAA,EAAOwB,aAAc,CAAA;4CACnBzB,EAAI,EAAA,0BAAA;4CACJG,cAAgB,EAAA;AAClB,yCAAA,CAAA;AAEA,wCAAA,QAAA,gBAAAa,cAAC4R,CAAAA,SAAAA,EAAAA,EAAAA;;AAGH,iCAAA,CAAA,GAAA,IAAA;8CACJ5R,cAACwL,CAAAA,eAAAA,EAAAA;oCAAgB9G,UAAY,EAAA,CAAA;oCAAGC,aAAe,EAAA,CAAA;AAC7C,oCAAA,QAAA,gBAAA3E,cAACyR,CAAAA,uBAAAA,EAAAA;AACCxS,wCAAAA,KAAAA,EACE8N,aACItM,aAAc,CAAA;AACZzB,4CAAAA,EAAAA,EAAIE,aAAQ,CAAA,kBAAA,CAAA;4CACZC,cAAgB,EAAA;AAClB,yCAAA,CAAA,GACAsB,aAAc,CAAA;AACZzB,4CAAAA,EAAAA,EAAIE,aAAQ,CAAA,kBAAA,CAAA;4CACZC,cAAgB,EAAA;AAClB,yCAAA,CAAA;AAENwJ,wCAAAA,OAAAA,EAAS,IAAM+D,OAAQK,CAAAA,UAAAA,GAAaF,kBAAYgF,IAAI,GAAGhF,kBAAYC,IAAI,CAAA;kDAEtEC,UAAa,iBAAA/M,cAAA,CAAC8R,gCAAU9R,cAAC+R,CAAAA,cAAAA,EAAAA,EAAAA;;;8CAG9B/R,cAACgS,CAAAA,uBAAAA,EAAAA;AACC/S,oCAAAA,KAAAA,EAAOwB,aAAc,CAAA;AACnBzB,wCAAAA,EAAAA,EAAIE,aAAQ,CAAA,cAAA,CAAA;wCACZC,cAAgB,EAAA;AAClB,qCAAA,CAAA;oCACA8S,YAAa,EAAA,+BAAA;oCACbC,mBAAqB,EAAA;wCAAE3I,QAAU,EAAA;AAAS;;;;;AAMlD,kCAAAzI,eAAA,CAAC0J,oBAAQlG,OAAO,EAAA;;4BACb/D,QAASqC,CAAAA,MAAM,GAAG,CAAA,kBACjB5C,cAACwH,CAAAA,WAAAA,EAAAA;gCACCnE,aAAeA,EAAAA,aAAAA;gCACf9C,QAAUA,EAAAA,QAAAA;gCACVC,SAAW8P,EAAAA;;4BAIdnC,WAAgB,KAAA,CAAA,IAAKI,UAAe,KAAA,CAAA,kBACnCvO,cAACmI,CAAAA,oBAAAA,EAAAA;gCACCF,SAAWA,EAAAA,SAAAA;gCACXC,OAASA,EAAAA,OAAAA;gCACTF,WAAaA,EAAAA,WAAAA;gCACbI,aAAekH,EAAAA;;4BAKlBpH,OAAW,IAAA,CAAC6E,eAAewB,UAAAA,GAAa,KAAKJ,WAAc,GAAA,CAAA,mBAC1DnO,cAACmS,CAAAA,eAAAA,EAAAA;gCACC5D,UAAYA,EAAAA,UAAAA;gCACZJ,WAAaA,EAAAA,WAAAA;gCACbiE,aAAe/C,EAAAA,uBAAAA;gCACfkC,YAAc1B,EAAAA,gBAAAA;AACdwC,gCAAAA,cAAAA,EAAgB,CAACC,QAAU3S,EAAAA,UAAAA,GACzBkM,QAASxM,CAAAA,kBAAAA,CAAaR,UAAUC,KAAO,EAAA;AAAEF,wCAAAA,MAAAA,EAAQ0T,SAAS5S,QAAQ,EAAA;AAAIC,wCAAAA;AAAW,qCAAA,CAAA,CAAA;gCAEnF4S,WAAaxD,EAAAA,cAAAA;gCACbyD,YAAczC,EAAAA,gBAAAA;gCACd0C,WAAavD,EAAAA,SAAAA;gCACbwD,WAAahD,EAAAA,gBAAAA;gCACbiD,IAAM,EAAA;AAAI5E,oCAAAA,GAAAA,OAAAA;AAAYK,oCAAAA,GAAAA;AAAO,iCAAA;gCAC7B7N,QAAUA,EAAAA,QAAAA;AACVqS,gCAAAA,uBAAAA,EAAyB,CAAC7G,SAAAA;AAC1B8G,gCAAAA,SAAAA,EAAW/T,OAAOgR,IAAQ,IAAA;;AAI7B5H,4BAAAA,OAAAA,IAAW6E,UACV,kBAAAjM,eAAA,CAAA+P,mBAAA,EAAA;;AACG1C,oCAAAA,WAAAA,GAAc,mBACbnO,cAAC8S,CAAAA,oBAAAA,EAAAA;wCACCrI,KAIE,EAAE,CAAA,WAACzC,IAAeuG,aAAa,CAAM,IAAA,CAACvG,WAAU,KAC9CvH,aACE,CAAA;AACEzB,4CAAAA,EAAAA,EAAIE,aAAQ,CAAA,oBAAA,CAAA;4CACZC,cAAgB,EAAA;yCAElB,EAAA;4CAAEyI,KAAOuG,EAAAA;yCAEb,CAAA,IAAA,EAAA;kDAGDJ,OAAQC,CAAAA,GAAG,CAAC,CAACpP,MAAAA,GAAAA;4CACZ,MAAMmU,eAAAA,GAAkBxS,SAASuH,MAAM,CAAC,CAAC,EAAExF,IAAI,EAAE,GAAKA,IAAS,KAAA,QAAA,CAAA;AAC/D,4CAAA,MAAM0Q,UAAa,GAAA,CAAC,CAACD,eAAAA,CAAgBE,IAAI,CACvC,CAAC5P,aAAAA,GAAkBA,aAAcrE,CAAAA,EAAE,KAAKJ,MAAAA,CAAOI,EAAE,CAAA;4CAGnD,MAAMkU,GAAAA,GAAM7T,kBAAaR,CAAAA,QAAAA,EAAUC,KAAO,EAAA;AACxCF,gDAAAA,MAAAA,EAAQA,QAAQI,EAAGU,CAAAA,QAAAA,EAAAA;AACnBC,gDAAAA,UAAAA,EAAYf,MAAQgB,EAAAA;AACtB,6CAAA,CAAA;4CAEA,qBACEI,cAAA,CAACuF,kBAAKE,IAAI,EAAA;gDACRE,GAAK,EAAA,CAAA;gDAELC,SAAU,EAAA,QAAA;gDACVC,UAAW,EAAA,SAAA;AAEX,gDAAA,QAAA,gBAAA7F,cAACmT,CAAAA,gBAAAA,EAAAA;AACCC,oDAAAA,GAAAA,EACEpE,gBAAgBpQ,MAAOI,CAAAA,EAAE,KAAKgQ,YAAahQ,CAAAA,EAAE,GACzCqN,sBACA/M,GAAAA,SAAAA;AAEN+T,oDAAAA,SAAAA,EAAWzU,OAAOa,IAAI;AACtBT,oDAAAA,EAAAA,EAAI,CAAC,OAAO,EAAEJ,MAAOI,CAAAA,EAAE,CAAC,CAAC;oDACzBiM,EAAIiI,EAAAA,GAAAA;oDACJI,WACE1U,EAAAA,MAAAA,CAAOsP,YAAY,iBACjBlO,cAACH,CAAAA,kBAAAA,EAAAA;AACC0T,wDAAAA,aAAAA,EAAa,CAAC,gBAAgB,EAAE3U,MAAOI,CAAAA,EAAE,CAAC,CAAC;wDAC3C2Q,OAASqD,EAAAA,UAAAA;AACT5B,wDAAAA,eAAAA,EAAiB,IAAMlC,SAAUtQ,CAAAA,MAAAA;AAEjC,qDAAA,CAAA,GAAA,IAAA;AAEN4U,oDAAAA,WAAAA,gBACExT,cAACyR,CAAAA,uBAAAA,EAAAA;AACCxS,wDAAAA,KAAAA,EAAOwB,aAAc,CAAA;AACnBzB,4DAAAA,EAAAA,EAAIE,aAAQ,CAAA,kBAAA,CAAA;4DACZC,cAAgB,EAAA;AAClB,yDAAA,CAAA;AACAwJ,wDAAAA,OAAAA,EAAS,IAAMoH,gBAAiBnR,CAAAA,MAAAA,CAAAA;AAEhC,wDAAA,QAAA,gBAAAoB,cAACyT,CAAAA,YAAAA,EAAAA,EAAAA;;AAIL,oDAAA,QAAA,gBAAAzT,cAAC0T,CAAAA,oBAAAA,EAAAA;AACC,wDAAA,QAAA,gBAAA1T,cAAC2T,CAAAA,0BAAAA,EAAAA;4DAAqB1I,EAAIiI,EAAAA,GAAAA;AACxB,4DAAA,QAAA,gBAAApS,eAAC0D,CAAAA,iBAAAA,EAAAA;gEAAKkC,GAAI,EAAA,IAAA;gEAAKd,SAAU,EAAA,QAAA;gEAASC,UAAW,EAAA,OAAA;gEAAQ+N,QAAS,EAAA,MAAA;;kFAC5D9S,eAACyK,CAAAA,kBAAAA,EAAAA;wEACCsI,UAAW,EAAA,UAAA;wEACXlN,SAAU,EAAA,YAAA;wEACVmN,QAAQ,EAAA,IAAA;;AAEPlV,4EAAAA,MAAAA,CAAOa,IAAI;0FACZO,cAAC+T,CAAAA,2BAAAA,EAAAA;AAAe,gFAAA,QAAA,EAAA;;;;kFAGlB/T,cAACuL,CAAAA,kBAAAA,EAAAA;wEACC7E,GAAI,EAAA,MAAA;wEACJC,SAAU,EAAA,YAAA;wEACVxF,OAAQ,EAAA,IAAA;wEACR2S,QAAQ,EAAA,IAAA;kFAEPrT,aACC,CAAA;AACEzB,4EAAAA,EAAAA,EAAIE,aAAQ,CAAA,sBAAA,CAAA;4EACZC,cACE,EAAA;yEAEJ,EAAA;4EACEgP,WAAa,EAACvP,MAA4BoV,CAAAA,QAAQ,EAAEpM,KAAAA;4EACpDqM,UAAY,EAACrV,MAA4B+D,CAAAA,KAAK,EAAEiF;AAClD,yEAAA;;;;;;;AA7DP,6CAAA,EAAA,CAAC,OAAO,EAAEhJ,MAAOI,CAAAA,EAAE,CAAC,CAAC,CAAA;AAsEhC,yCAAA;;oCAIHuP,UAAa,GAAA,CAAA,IAAKJ,WAAc,GAAA,CAAA,kBAC/BnO,cAACC,CAAAA,gBAAAA,EAAAA;wCAAIyE,UAAY,EAAA,CAAA;wCAAGC,aAAe,EAAA,CAAA;AACjC,wCAAA,QAAA,gBAAA3E,cAACkU,CAAAA,oBAAAA,EAAAA,EAAAA;;AAIJ3F,oCAAAA,UAAAA,GAAa,mBACZvO,cAACmU,CAAAA,mBAAAA,EAAAA;wCACC/F,MAAQA,EAAAA,MAAAA;wCACRmE,WAAaxD,EAAAA,cAAAA;wCACbqF,aAAelF,EAAAA,SAAAA;wCACfmF,cACE9T,EAAAA,QAAAA,CAASuH,MAAM,CACb,CAAC,EAAExF,IAAI,EAAE,GAAKA,IAAS,KAAA,OAAA,CAAA;AAG3BmI,wCAAAA,KAAAA,EAKE,CAAE,CAACzC,WAAAA,IAAgBA,WAAemG,IAAAA,WAAAA,GAAc,CAAC,KAC/CnB,UAAYU,EAAAA,UAAAA,EAAYpE,IAAS,KAAA,CAAA,IACjC7I,aACE,CAAA;AACEzB,4CAAAA,EAAAA,EAAIE,aAAQ,CAAA,mBAAA,CAAA;4CACZC,cAAgB,EAAA;yCAElB,EAAA;4CAAEyI,KAAO4G,EAAAA;yCAEb,CAAA,IAAA;;;;AAMV,0CAAA1N,eAAA,CAACwT,uBAAWtT,IAAI,EAAA;AAAE,gCAAA,GAAGgM,YAAYU,UAAU;;AACzC,kDAAA1N,cAAA,CAACsU,uBAAWC,QAAQ,EAAA,EAAA,CAAA;AACpB,kDAAAvU,cAAA,CAACsU,uBAAWE,KAAK,EAAA,EAAA;;;;;;;AAItB9F,YAAAA,qBAAAA,kBACC1O,cAACyU,CAAAA,uBAAAA,EAAAA;gBACCpN,IAAMqH,EAAAA,qBAAAA;gBACNtL,OAASkM,EAAAA,uBAAAA;gBACToF,eAAgB,EAAA,QAAA;AAChBC,gBAAAA,QAAAA,EAAU7V,KAAOF,EAAAA;;AAGpBgQ,YAAAA,oBAAAA,kBACC5O,cAAC4U,CAAAA,sBAAAA,EAAAA;gBACCvN,IAAMuH,EAAAA,oBAAAA;AACNxL,gBAAAA,OAAAA,EAAS,IAAM4M,qBAAAA,EAAAA;gBACfpR,MAAQoQ,EAAAA,YAAAA;AACR6F,gBAAAA,cAAAA,EAAgB/V,KAAOF,EAAAA,MAAAA;gBACvB2K,QAAS,EAAA;;AAGZuF,YAAAA,WAAAA,kBACC9O,cAAC8U,CAAAA,qBAAAA,EAAAA;AACC1R,gBAAAA,OAAAA,EAAS,CAAC2R,WAAAA,GAAAA;;AAER,oBAAA,IAAIA,gBAAgB,IAAM,EAAA;wBACxB5E,kBAAmB,CAAA,CAAA,CAAA;AACrB;oBAEApB,cAAezP,CAAAA,SAAAA,CAAAA;AACjB,iBAAA;AACA+H,gBAAAA,IAAAA,EAAM,CAAC,CAACyH,WAAAA;gBACRR,KAAOQ,EAAAA,WAAAA;gBACP/C,SAAWA,EAAAA,SAAAA;gBACXC,WAAaA,EAAAA,WAAAA;gBACbC,WAAaA,EAAAA,WAAAA;gBACbyI,eAAgB,EAAA;;;;AAK1B,CAAE;;AC9iBF;AAcA,MAAMM,gBAAmB9N,iBAAAA,gBAAAA,CAAM+N,IAAI,CAAC,UAClC,oDAAO,gCAAA,KAAA,CAAuCC,IAAI,CAAC,CAACC,GAAAA,IAAS;AAAEC,YAAAA,OAAAA,EAASD,IAAIH;SAAiB,CAAA,CAAA,CAAA;MAGlFK,MAAS,GAAA,IAAA;IACpB,MAAM,EACJC,MAAQ,EAAA,EAAE/R,SAAS,EAAEgS,OAAO,EAAExW,IAAMuW,EAAAA,MAAM,EAAE,EAC7C,GAAGE,eAAAA,EAAAA;AAEJ,IAAA,MAAM,CAAC,EAAEC,QAAQ,EAAE,EAAEzM,SAAS,GAAGC,0BAAAA,EAAAA;IACjC,MAAM,EAAExI,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM+J,QAAQhK,aAAc,CAAA;AAAEzB,QAAAA,EAAAA,EAAIE,aAAQ,CAAA,aAAA,CAAA;QAAgBC,cAAgB,EAAA;AAAgB,KAAA,CAAA;AAE1F+H,IAAAA,gBAAAA,CAAMwO,SAAS,CAAC,IAAA;QACd,IAAInS,SAAAA,IAAagS,WAAWE,QAAU,EAAA;AACpC,YAAA;AACF;QACAzM,QAAS,CAAA;AACP8G,YAAAA,IAAAA,EAAMwF,OAAOxF,IAAI;YACjBxG,IAAM,EAAA,CAAA;AACNqM,YAAAA,QAAAA,EAAUL,OAAOK;AACnB,SAAA,CAAA;KACC,EAAA;AAACpS,QAAAA,SAAAA;AAAWgS,QAAAA,OAAAA;AAASD,QAAAA,MAAAA;AAAQG,QAAAA,QAAAA;AAAUzM,QAAAA;AAAS,KAAA,CAAA;AAEnD,IAAA,IAAIzF,SAAW,EAAA;QACb,qBAAOvD,cAAA,CAACuQ,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,qBACE1P,eAAA,CAACyP,iBAAKG,IAAI,EAAA;;AACR,0BAAA1Q,cAAA,CAACuQ,iBAAKjL,KAAK,EAAA;AAAEmF,gBAAAA,QAAAA,EAAAA;;YACZgL,QACC,iBAAAzV,cAAA,CAACkH,iBAAM0O,QAAQ,EAAA;gBAACC,QAAU,gBAAA7V,cAAA,CAACuQ,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACrC,gBAAA,QAAA,gBAAA1P,eAACgV,CAAAA,qBAAAA,EAAAA;;sCACC9V,cAAC+V,CAAAA,oBAAAA,EAAAA;4BAAMC,KAAK,EAAA,IAAA;AAACC,4BAAAA,OAAAA,gBAASjW,cAAC4L,CAAAA,YAAAA,EAAAA,EAAAA;;sCACvB5L,cAAC+V,CAAAA,oBAAAA,EAAAA;4BACCnW,IAAK,EAAA,eAAA;AACLqW,4BAAAA,OAAAA,gBAASjW,cAACgV,CAAAA,gBAAAA,EAAAA;gCAAiBM,MAAQA,EAAAA;;;;;AAIvC,aAAA,CAAA,GAAA;;;AAGV;;;;"}
1
+ {"version":3,"file":"App-reXK4u3H.js","sources":["../../../admin/src/utils/getBreadcrumbDataML.ts","../../../admin/src/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.tsx","../../../admin/src/pages/App/MediaLibrary/components/BulkDeleteButton.tsx","../../../admin/src/hooks/useBulkMove.ts","../../../admin/src/components/BulkMoveDialog/BulkMoveDialog.tsx","../../../admin/src/pages/App/MediaLibrary/components/BulkMoveButton.tsx","../../../admin/src/pages/App/MediaLibrary/components/BulkActions.tsx","../../../admin/src/pages/App/MediaLibrary/components/EmptyOrNoPermissions.tsx","../../../admin/src/pages/App/MediaLibrary/components/Filters.tsx","../../../admin/src/pages/App/MediaLibrary/components/Header.tsx","../../../admin/src/pages/App/MediaLibrary/MediaLibrary.tsx","../../../admin/src/pages/App/App.tsx"],"sourcesContent":["import { getFolderURL } from './getFolderURL';\nimport { getTrad } from './getTrad';\n\nimport type { Query } from '../../../shared/contracts/files';\nimport type { Folder } from '../../../shared/contracts/folders';\nimport type { MessageDescriptor } from 'react-intl';\n\ninterface GetBreadcrumbDataMLProps {\n folder: Folder;\n options: {\n pathname: string;\n query?: Query;\n };\n}\n\ninterface GetBreadcrumbDataMLReturn {\n id: number | null;\n label: string | MessageDescriptor;\n href?: string;\n}\n\ntype BreadcrumbData = GetBreadcrumbDataMLReturn | [];\n\nexport const getBreadcrumbDataML = (\n folder: GetBreadcrumbDataMLProps['folder'] | null,\n { pathname, query }: GetBreadcrumbDataMLProps['options']\n) => {\n const data: BreadcrumbData[] = [\n {\n id: null,\n label: { id: getTrad('plugin.name'), defaultMessage: 'Media Library' },\n href: folder ? getFolderURL(pathname, query || {}) : undefined,\n },\n ];\n\n if (folder?.parent && typeof folder?.parent !== 'number' && folder?.parent?.parent) {\n data.push([]);\n }\n\n if (folder?.parent && typeof folder.parent !== 'number') {\n data.push({\n id: folder.parent.id,\n label: folder.parent.name,\n href: getFolderURL(pathname, query || {}, {\n folder: folder.parent.id?.toString(),\n folderPath: folder.parent.path,\n }),\n });\n }\n\n if (folder) {\n data.push({\n id: folder.id,\n label: folder.name,\n });\n }\n\n return data;\n};\n","import { Checkbox, Box, CheckboxProps } from '@strapi/design-system';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nexport const FolderCardCheckbox = (props: CheckboxProps) => {\n const { id } = useFolderCard();\n\n return (\n <Box position=\"relative\" zIndex={2}>\n <Checkbox aria-labelledby={`${id}-title`} {...props} />\n </Box>\n );\n};\n","import { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Button, Dialog } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useBulkRemove } from '../../../../hooks/useBulkRemove';\n\nimport type { FolderDefinition } from '../../../../../../shared/contracts/folders';\nimport type { FileWithType } from '../../../../hooks/useBulkRemove';\n\nexport interface BulkDeleteButtonProps {\n selected: Array<FileWithType | FolderDefinition>;\n onSuccess: () => void;\n}\n\nexport const BulkDeleteButton = ({ selected, onSuccess }: BulkDeleteButtonProps) => {\n const { formatMessage } = useIntl();\n const { remove } = useBulkRemove();\n\n const handleConfirmRemove = async () => {\n await remove(selected);\n onSuccess();\n };\n\n return (\n <Dialog.Root>\n <Dialog.Trigger>\n <Button variant=\"danger-light\" size=\"S\" startIcon={<Trash />}>\n {formatMessage({ id: 'global.delete', defaultMessage: 'Delete' })}\n </Button>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmRemove} />\n </Dialog.Root>\n );\n};\n","import { useNotification, useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { File, BulkMoveFiles } from '../../../shared/contracts/files';\nimport { Folder, BulkMoveFolders } from '../../../shared/contracts/folders';\nimport { pluginId } from '../pluginId';\nimport { getTrad } from '../utils';\n\nexport interface FolderWithType extends Folder {\n type: string;\n}\n\nexport interface FileWithType extends File {\n type: string;\n}\n\ninterface BulkMoveParams {\n destinationFolderId: number | string;\n filesAndFolders: Array<FolderWithType | FileWithType>;\n}\n\n// Define the shape of the accumulator object\ntype Payload = {\n fileIds?: number[];\n folderIds?: number[];\n};\n\nexport const useBulkMove = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const queryClient = useQueryClient();\n const { post } = useFetchClient();\n\n const bulkMoveQuery = ({ destinationFolderId, filesAndFolders }: BulkMoveParams) => {\n const payload = filesAndFolders.reduce<Payload>((acc, selected) => {\n const { id, type } = selected;\n const key = type === 'asset' ? 'fileIds' : 'folderIds';\n\n if (!acc[key]) {\n acc[key] = [];\n }\n\n acc[key]!.push(id);\n\n return acc;\n }, {});\n\n return post('/upload/actions/bulk-move', { ...payload, destinationFolderId });\n };\n\n const mutation = useMutation<\n BulkMoveFolders.Response | BulkMoveFiles.Response,\n BulkMoveFolders.Response['error'] | BulkMoveFiles.Response['error'],\n BulkMoveParams\n >(bulkMoveQuery, {\n onSuccess(res) {\n const {\n data: { data },\n } = res;\n\n if (data?.files?.length > 0) {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n }\n\n // folders need to be re-fetched in any case, because assets might have been\n // moved into a sub-folder and therefore the count needs to be updated\n queryClient.refetchQueries([pluginId, 'folders'], { active: true });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('modal.move.success-label'),\n defaultMessage: 'Elements have been moved successfully.',\n }),\n });\n },\n });\n\n const move = (\n destinationFolderId: number | string,\n filesAndFolders: Array<FolderWithType | FileWithType>\n ) => mutation.mutateAsync({ destinationFolderId, filesAndFolders });\n\n return { ...mutation, move };\n};\n","import { Button, Flex, Grid, Field, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\n\nimport { File } from '../../../../shared/contracts/files';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad, normalizeAPIError } from '../../utils';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { OptionSelectTree } from '../SelectTree/SelectTree';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\ntype InitialFormData = {\n destination:\n | {\n value: string | number;\n label: string;\n }\n | string;\n};\n\ninterface FolderWithType extends Folder {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveDialogProps {\n onClose: () => void;\n selected?: Array<FolderWithType | FileWithType>;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkMoveDialog = ({ onClose, selected = [], currentFolder }: BulkMoveDialogProps) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (\n values: InitialFormData,\n { setErrors }: { setErrors: (errors: FormikErrors<InitialFormData>) => void }\n ) => {\n try {\n if (typeof values.destination !== 'string') {\n const destinationValue = values.destination.value;\n await move(destinationValue, selected);\n onClose();\n }\n } catch (error) {\n const normalizedError = normalizeAPIError(error as FetchError)!;\n\n if (normalizedError && 'errors' in normalizedError) {\n const formikErrors = normalizedError.errors?.reduce<Record<string, string>>(\n (acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n }\n };\n\n if (isLoading) {\n return (\n <Modal.Content>\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </Modal.Content>\n );\n }\n\n const initialFormData: InitialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <Modal.Content>\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-destination\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure as OptionSelectTree[]}\n onChange={(value: Record<string, string | number>) => {\n setFieldValue('destination', value);\n }}\n defaultValue={\n typeof values.destination !== 'string' ? values.destination : undefined\n }\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography variant=\"pi\" tag=\"p\" textColor=\"danger600\">\n {errors.destination}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'modal.folder.move.submit', defaultMessage: 'Move' })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal.Content>\n );\n};\n","import * as React from 'react';\n\nimport { Button, Modal } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { BulkMoveDialog } from '../../../../components/BulkMoveDialog/BulkMoveDialog';\n\nimport type { File } from '../../../../../../shared/contracts/files';\nimport type { Folder as FolderDefinition } from '../../../../../../shared/contracts/folders';\n\ninterface FolderWithType extends FolderDefinition {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveButtonProps {\n onSuccess: () => void;\n currentFolder?: FolderWithType;\n selected?: Array<FolderWithType | FileWithType>;\n}\n\nexport const BulkMoveButton = ({\n selected = [],\n onSuccess,\n currentFolder,\n}: BulkMoveButtonProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const handleConfirmMove = () => {\n setShowConfirmDialog(false);\n onSuccess();\n };\n\n return (\n <Modal.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Modal.Trigger>\n <Button variant=\"secondary\" size=\"S\" startIcon={<Folder />}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Trigger>\n <BulkMoveDialog\n currentFolder={currentFolder}\n onClose={handleConfirmMove}\n selected={selected}\n />\n </Modal.Root>\n );\n};\n","import { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../../utils';\n\nimport { BulkDeleteButton } from './BulkDeleteButton';\nimport { BulkMoveButton } from './BulkMoveButton';\n\nimport type { File } from '../../../../../../shared/contracts/files';\nimport type {\n FolderDefinition,\n Folder as FolderInitial,\n} from '../../../../../../shared/contracts/folders';\n\ninterface FolderWithType extends FolderInitial {\n type: string;\n}\n\nexport interface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkActionsProps {\n selected: Array<FileWithType | FolderDefinition> | Array<FolderWithType | FileWithType>;\n onSuccess: () => void;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkActions = ({ selected = [], onSuccess, currentFolder }: BulkActionsProps) => {\n const { formatMessage } = useIntl();\n const numberAssets = selected?.reduce(function (_this, val) {\n return val?.type === 'folder' && 'files' in val && val?.files && 'count' in val.files\n ? _this + val?.files?.count\n : _this + 1;\n }, 0);\n\n return (\n <Flex gap={2} paddingBottom={5}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: getTrad('list.assets.selected'),\n defaultMessage:\n '{numberFolders, plural, one {1 folder} other {# folders}} - {numberAssets, plural, one {1 asset} other {# assets}} selected',\n },\n {\n numberFolders: selected?.filter(({ type }) => type === 'folder').length,\n numberAssets,\n }\n )}\n </Typography>\n\n <BulkDeleteButton\n selected={selected as Array<FileWithType | FolderDefinition>}\n onSuccess={onSuccess}\n />\n <BulkMoveButton\n currentFolder={currentFolder}\n selected={selected as Array<FolderWithType | FileWithType>}\n onSuccess={onSuccess}\n />\n </Flex>\n );\n};\n","import { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../../components/EmptyAssets/EmptyAssets';\nimport { getTrad } from '../../../../utils';\n\nexport interface EmptyOrNoPermissionsProps {\n canCreate: boolean;\n canRead: boolean;\n isFiltering: boolean;\n onActionClick: () => void;\n}\n\nconst getContentIntlMessage = ({\n isFiltering,\n canCreate,\n canRead,\n}: Omit<EmptyOrNoPermissionsProps, 'onActionClick'>) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({\n canCreate,\n isFiltering,\n canRead,\n onActionClick,\n}: EmptyOrNoPermissionsProps) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n","import * as React from 'react';\n\nimport { useTracking, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterList } from '../../../../components/FilterList/FilterList';\nimport { FilterPopover } from '../../../../components/FilterPopover/FilterPopover';\nimport { displayedFilters } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\nimport type { FilterListProps } from '../../../../components/FilterList/FilterList';\nimport type { FilterPopoverProps } from '../../../../components/FilterPopover/FilterPopover';\n\nexport const Filters = () => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const filters = query?.filters?.$and || [];\n\n const handleRemoveFilter: FilterListProps['onRemoveFilter'] = (nextFilters) => {\n setQuery({ filters: { $and: nextFilters }, page: 1 } as Query);\n };\n\n const handleSubmit: FilterPopoverProps['onSubmit'] = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery({ filters: { $and: filters }, page: 1 } as Query);\n };\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={setOpen as FilterPopoverProps['onToggle']}\n />\n <FilterList\n appliedFilters={filters as FilterListProps['appliedFilters']}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </Popover.Root>\n );\n};\n","import { useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, NavLink } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../../components/Breadcrumbs/Breadcrumbs';\nimport { getTrad } from '../../../../utils';\n\nimport type { Folder } from '../../../../../../shared/contracts/folders';\nimport type { CrumbDefinition } from '../../../../components/Breadcrumbs/Breadcrumbs';\n\ninterface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {\n children: {\n count: number;\n };\n files: {\n count: number;\n };\n parent?: FolderDefinition;\n}\n\nexport interface HeaderProps {\n breadcrumbs?: Array<CrumbDefinition> | null;\n canCreate: boolean;\n folder?: FolderDefinition | null;\n onToggleEditFolderDialog: ({ created }?: { created?: boolean }) => void;\n onToggleUploadAssetDialog: () => void;\n}\n\nexport const Header = ({\n breadcrumbs = null,\n canCreate,\n folder = null,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}: HeaderProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...query,\n folder:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.id\n ? folder.parent.id\n : undefined,\n folderPath:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.path\n ? folder.parent.path\n : undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n typeof breadcrumbs !== 'boolean' &&\n folder && (\n <Breadcrumbs\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2}>\n <Button startIcon={<Plus />} variant=\"secondary\" onClick={onToggleEditFolderDialog}>\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n Page,\n SearchInput,\n Pagination,\n useTracking,\n useQueryParams,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n Checkbox,\n Box,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { Cog, GridFour as GridIcon, List, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink, useNavigate, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { AssetGridList } from '../../../components/AssetGridList/AssetGridList';\nimport { EditAssetDialog } from '../../../components/EditAssetDialog/EditAssetContent';\nimport { EditFolderDialog } from '../../../components/EditFolderDialog/EditFolderDialog';\nimport { FolderCard } from '../../../components/FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../../components/FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../../components/FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderCardCheckbox } from '../../../components/FolderCard/FolderCardCheckbox/FolderCardCheckbox';\nimport { FolderGridList } from '../../../components/FolderGridList/FolderGridList';\nimport { SortPicker } from '../../../components/SortPicker/SortPicker';\nimport { TableList } from '../../../components/TableList/TableList';\nimport { UploadAssetDialog } from '../../../components/UploadAssetDialog/UploadAssetDialog';\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useAssets } from '../../../hooks/useAssets';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { useFolders } from '../../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport { useSelectionState } from '../../../hooks/useSelectionState';\nimport { containsAssetFilter, getBreadcrumbDataML, getFolderURL, getTrad } from '../../../utils';\n\nimport { BulkActions } from './components/BulkActions';\nimport { EmptyOrNoPermissions } from './components/EmptyOrNoPermissions';\nimport { Filters } from './components/Filters';\nimport { Header } from './components/Header';\n\nimport type { BulkActionsProps } from './components/BulkActions';\nimport type { HeaderProps } from './components/Header';\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FolderDefinition } from '../../../../../shared/contracts/folders';\nimport type { AssetGridListProps } from '../../../components/AssetGridList/AssetGridList';\nimport type { Asset } from '../../../components/EditAssetDialog/EditAssetContent';\nimport type { FolderRow, FileRow, TableListProps } from '../../../components/TableList/TableList';\n\nconst BoxWithHeight = styled(Box)`\n height: 3.2rem;\n display: flex;\n align-items: center;\n`;\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\nexport const MediaLibrary = () => {\n const navigate = useNavigate();\n const {\n canRead,\n canCreate,\n canUpdate,\n canCopyLink,\n canDownload,\n canConfigureView,\n isLoading: permissionsLoading,\n } = useMediaLibraryPermissions();\n const currentFolderToEditRef = React.useRef<HTMLDivElement>();\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const isFiltering = Boolean(query._q || query.filters);\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const {\n data: assetsData,\n isLoading: assetsLoading,\n error: assetsError,\n } = useAssets({\n skipWhen: !canRead,\n query,\n });\n\n const {\n data: foldersData,\n isLoading: foldersLoading,\n error: foldersError,\n } = useFolders({\n enabled: canRead && assetsData?.pagination?.page === 1 && !containsAssetFilter(query),\n query,\n });\n\n const {\n data: currentFolder,\n isLoading: isCurrentFolderLoading,\n error: currentFolderError,\n } = useFolder(query?.folder as number | null | undefined, {\n enabled: canRead && !!query?.folder,\n });\n\n // Folder was not found: redirect to the media library root\n if (currentFolderError?.name === 'NotFoundError') {\n navigate(pathname);\n }\n\n const folders =\n foldersData?.map((folder) => ({\n ...folder,\n type: 'folder',\n folderURL: getFolderURL(pathname, query, {\n folder: folder.id.toString(),\n folderPath: folder.path,\n }),\n isSelectable: canUpdate,\n })) ?? [];\n const folderCount = folders?.length || 0;\n const assets =\n assetsData?.results?.map((asset) => ({ ...asset, type: 'asset', isSelectable: canUpdate })) ||\n [];\n const assetCount = assets?.length ?? 0;\n const totalAssetCount = assetsData?.pagination?.total;\n\n const isLoading = isCurrentFolderLoading || foldersLoading || permissionsLoading || assetsLoading;\n const [showUploadAssetDialog, setShowUploadAssetDialog] = React.useState(false);\n const [showEditFolderDialog, setShowEditFolderDialog] = React.useState(false);\n const [assetToEdit, setAssetToEdit] = React.useState<Asset | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined | null>(undefined);\n const [selected, { selectOne, selectAll }] = useSelectionState<FolderRow | FileRow>(\n ['type', 'id'],\n []\n );\n const indeterminateBulkSelect =\n selected?.length > 0 && selected?.length !== assetCount + folderCount;\n const toggleUploadAssetDialog = () => setShowUploadAssetDialog((prev) => !prev);\n const toggleEditFolderDialog = ({ created = false } = {}) => {\n // folders are only displayed on the first page, therefore\n // we have to navigate the user to that page, in case a folder\n // was created successfully in order for them to see it\n if (created && query?.page !== '1') {\n setQuery({\n ...query,\n page: 1,\n });\n }\n\n setShowEditFolderDialog((prev) => !prev);\n };\n\n const handleBulkSelect = (\n checked: boolean | 'indeterminate',\n elements?: FolderRow[] | FileRow[]\n ) => {\n if (checked) {\n trackUsage('didSelectAllMediaLibraryElements');\n }\n\n selectAll(elements as (FolderRow | FileRow)[]);\n };\n\n const handleChangeSort = (value: Query['sort'] | string) => {\n trackUsage('didSortMediaLibraryElements', {\n location: 'upload',\n sort: value,\n });\n setQuery({ sort: value as Query['sort'] });\n };\n\n const handleEditFolder = (folder: FolderRow) => {\n setFolderToEdit(folder);\n setShowEditFolderDialog(true);\n };\n\n const handleEditFolderClose = (payload?: { created?: boolean | undefined }) => {\n setFolderToEdit(null);\n toggleEditFolderDialog(payload);\n\n if (currentFolderToEditRef.current) {\n currentFolderToEditRef.current.focus();\n }\n };\n\n const handleAssetDeleted = (numberOfAssets: number) => {\n if (\n numberOfAssets === assetCount &&\n assetsData?.pagination?.page === assetsData?.pagination?.pageCount &&\n assetsData?.pagination?.page &&\n assetsData.pagination.page > 1\n ) {\n setQuery({\n ...query,\n page: assetsData.pagination.page - 1,\n });\n }\n };\n\n const handleBulkActionSuccess = () => {\n selectAll();\n\n handleAssetDeleted(selected.length);\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (assetsError || foldersError) {\n return <Page.Error />;\n }\n\n return (\n <Layouts.Root>\n <Page.Main>\n <Header\n breadcrumbs={\n !isCurrentFolderLoading\n ? (getBreadcrumbDataML(currentFolder!, {\n pathname,\n query,\n }) as HeaderProps['breadcrumbs'])\n : null\n }\n canCreate={canCreate}\n onToggleEditFolderDialog={toggleEditFolderDialog}\n onToggleUploadAssetDialog={toggleUploadAssetDialog}\n folder={currentFolder as HeaderProps['folder']}\n />\n <Layouts.Action\n startActions={\n <>\n {canUpdate && isGridView && (assetCount > 0 || folderCount > 0) && (\n <BoxWithHeight\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n checked={\n indeterminateBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n onCheckedChange={(e) =>\n handleBulkSelect(e, [...assets, ...folders] as FolderRow[] | FileRow[])\n }\n />\n </BoxWithHeight>\n )}\n {canRead && isGridView && (\n <SortPicker value={query?.sort} onChangeSort={handleChangeSort} />\n )}\n {canRead && <Filters />}\n </>\n }\n endActions={\n <>\n {canConfigureView ? (\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n tag={ReactRouterLink}\n to={{\n pathname: `${pathname}/configuration`,\n search: stringify(query, { encode: false }),\n }}\n label={formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n })}\n >\n <Cog />\n </IconButton>\n </ActionContainer>\n ) : null}\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: getTrad('view-switch.list'),\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: getTrad('view-switch.grid'),\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchInput\n label={formatMessage({\n id: getTrad('search.label'),\n defaultMessage: 'Search for an asset',\n })}\n trackedEvent=\"didSearchMediaLibraryElements\"\n trackedEventDetails={{ location: 'upload' }}\n />\n </>\n }\n />\n\n <Layouts.Content>\n {selected.length > 0 && (\n <BulkActions\n currentFolder={currentFolder as BulkActionsProps['currentFolder']}\n selected={selected as BulkActionsProps['selected']}\n onSuccess={handleBulkActionSuccess}\n />\n )}\n\n {folderCount === 0 && assetCount === 0 && (\n <EmptyOrNoPermissions\n canCreate={canCreate}\n canRead={canRead}\n isFiltering={isFiltering}\n onActionClick={toggleUploadAssetDialog}\n />\n )}\n\n {/* TODO: fix AssetListTable should handle no assets views (loading) */}\n {canRead && !isGridView && (assetCount > 0 || folderCount > 0) && (\n <TableList\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={indeterminateBulkSelect}\n onChangeSort={handleChangeSort}\n onChangeFolder={(folderID, folderPath) =>\n navigate(getFolderURL(pathname, query, { folder: folderID.toString(), folderPath }))\n }\n onEditAsset={setAssetToEdit as TableListProps['onEditAsset']}\n onEditFolder={handleEditFolder}\n onSelectOne={selectOne}\n onSelectAll={handleBulkSelect as TableListProps['onSelectAll']}\n rows={[...folders, ...assets] as TableListProps['rows']}\n selected={selected as TableListProps['selected']}\n shouldDisableBulkSelect={!canUpdate}\n sortQuery={query?.sort ?? ''}\n />\n )}\n\n {canRead && isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n // Folders title should only appear if:\n // user is filtering and there are assets to display, to divide both type of elements\n // user is not filtering\n (((isFiltering && assetCount > 0) || !isFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n const selectedFolders = selected.filter(({ type }) => type === 'folder');\n const isSelected = !!selectedFolders.find(\n (currentFolder) => currentFolder.id === folder.id\n );\n\n const url = getFolderURL(pathname, query, {\n folder: folder?.id.toString(),\n folderPath: folder?.path,\n });\n\n return (\n <Grid.Item\n col={3}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ref={\n folderToEdit && folder.id === folderToEdit.id\n ? currentFolderToEditRef\n : undefined\n }\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n to={url}\n startAction={\n folder.isSelectable ? (\n <FolderCardCheckbox\n data-testid={`folder-checkbox-${folder.id}`}\n checked={isSelected}\n onCheckedChange={() => selectOne(folder)}\n />\n ) : null\n }\n cardActions={\n <IconButton\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => handleEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction to={url}>\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n textColor=\"neutral800\"\n ellipsis\n >\n {folder.name}\n <VisuallyHidden>:</VisuallyHidden>\n </TypographyMaxWidth>\n\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, =0 {# folder} one {# folder} other {# folders}}, {filesCount, plural, =0 {# asset} one {# asset} other {# assets}}',\n },\n {\n folderCount: (folder as FolderDefinition).children?.count,\n filesCount: (folder as FolderDefinition).files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6} paddingBottom={4}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <AssetGridList\n assets={assets}\n onEditAsset={setAssetToEdit as AssetGridListProps['onEditAsset']}\n onSelectAsset={selectOne}\n selectedAssets={\n selected.filter(\n ({ type }) => type === 'asset'\n ) as AssetGridListProps['selectedAssets']\n }\n title={\n // Assets title should only appear if:\n // - user is not filtering\n // - user is filtering and there are folders to display, to separate them\n // - user is on page 1 since folders won't appear on any other page than the first one (no need to visually separate them)\n ((!isFiltering || (isFiltering && folderCount > 0)) &&\n assetsData?.pagination?.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: totalAssetCount }\n )) ||\n ''\n }\n />\n )}\n </>\n )}\n <Pagination.Root {...assetsData?.pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n </Page.Main>\n {showUploadAssetDialog && (\n <UploadAssetDialog\n open={showUploadAssetDialog}\n onClose={toggleUploadAssetDialog}\n trackedLocation=\"upload\"\n folderId={query?.folder as string | number | null | undefined}\n />\n )}\n {showEditFolderDialog && (\n <EditFolderDialog\n open={showEditFolderDialog}\n onClose={() => handleEditFolderClose()}\n folder={folderToEdit as FolderDefinition}\n parentFolderId={query?.folder as string | number | null | undefined}\n location=\"upload\"\n />\n )}\n {assetToEdit && (\n <EditAssetDialog\n onClose={(editedAsset) => {\n // The asset has been deleted\n if (editedAsset === null) {\n handleAssetDeleted(1);\n }\n\n setAssetToEdit(undefined);\n }}\n open={!!assetToEdit}\n asset={assetToEdit}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation=\"upload\"\n />\n )}\n </Layouts.Root>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { useConfig } from '../../hooks/useConfig';\nimport { getTrad } from '../../utils';\n\nimport { MediaLibrary } from './MediaLibrary/MediaLibrary';\n\nimport type { Configuration } from '../../../../shared/contracts/configuration';\n\nconst ConfigureTheView = React.lazy(async () =>\n import('./ConfigureTheView/ConfigureTheView').then((mod) => ({ default: mod.ConfigureTheView }))\n);\n\nexport const Upload = () => {\n const {\n config: { isLoading, isError, data: config },\n } = useConfig() as { config: { isLoading: boolean; isError: boolean; data: Configuration } };\n\n const [{ rawQuery }, setQuery] = useQueryParams();\n const { formatMessage } = useIntl();\n const title = formatMessage({ id: getTrad('plugin.name'), defaultMessage: 'Media Library' });\n\n React.useEffect(() => {\n if (isLoading || isError || rawQuery) {\n return;\n }\n setQuery({\n sort: config.sort,\n page: 1,\n pageSize: config.pageSize,\n });\n }, [isLoading, isError, config, rawQuery, setQuery]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>{title}</Page.Title>\n {rawQuery ? (\n <React.Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route index element={<MediaLibrary />} />\n <Route\n path=\"configuration\"\n element={<ConfigureTheView config={config as Configuration} />}\n />\n </Routes>\n </React.Suspense>\n ) : null}\n </Page.Main>\n );\n};\n"],"names":["getBreadcrumbDataML","folder","pathname","query","data","id","label","getTrad","defaultMessage","href","getFolderURL","undefined","parent","push","name","toString","folderPath","path","FolderCardCheckbox","props","useFolderCard","_jsx","Box","position","zIndex","Checkbox","aria-labelledby","BulkDeleteButton","selected","onSuccess","formatMessage","useIntl","remove","useBulkRemove","handleConfirmRemove","_jsxs","Dialog","Root","Trigger","Button","variant","size","startIcon","Trash","ConfirmDialog","onConfirm","useBulkMove","toggleNotification","useNotification","queryClient","useQueryClient","post","useFetchClient","bulkMoveQuery","destinationFolderId","filesAndFolders","payload","reduce","acc","type","key","mutation","useMutation","res","files","length","refetchQueries","pluginId","active","message","move","mutateAsync","BulkMoveDialog","onClose","currentFolder","folderStructure","isLoading","useFolderStructure","handleSubmit","values","setErrors","destination","destinationValue","value","error","normalizedError","normalizeAPIError","formikErrors","errors","isEmpty","Modal","Content","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","initialFormData","Formik","validateOnChange","onSubmit","initialValues","setFieldValue","Form","noValidate","Header","Title","Grid","gap","Item","xs","col","direction","alignItems","Field","Label","SelectTree","options","onChange","defaultValue","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","tag","textColor","Footer","Close","loading","BulkMoveButton","showConfirmDialog","setShowConfirmDialog","React","useState","handleConfirmMove","open","onOpenChange","Folder","BulkActions","numberAssets","_this","val","count","numberFolders","filter","getContentIntlMessage","isFiltering","canCreate","canRead","EmptyOrNoPermissions","onActionClick","content","EmptyAssets","icon","EmptyPermissions","action","Plus","onClick","Filters","setOpen","trackUsage","useTracking","setQuery","useQueryParams","filters","$and","handleRemoveFilter","nextFilters","page","location","Object","keys","Popover","Filter","FilterPopover","displayedFilters","onToggle","FilterList","appliedFilters","filtersSchema","onRemoveFilter","breadcrumbs","onToggleEditFolderDialog","onToggleUploadAssetDialog","useLocation","backQuery","Layouts","title","subtitle","Breadcrumbs","currentFolderId","navigationAction","Link","NavLink","ArrowLeft","to","stringify","encode","primaryAction","BoxWithHeight","styled","TypographyMaxWidth","ActionContainer","theme","colors","neutral500","MediaLibrary","navigate","useNavigate","canUpdate","canCopyLink","canDownload","canConfigureView","permissionsLoading","useMediaLibraryPermissions","currentFolderToEditRef","useRef","Boolean","_q","view","setView","usePersistentState","localStorageKeys","viewOptions","GRID","isGridView","assetsData","assetsLoading","assetsError","useAssets","skipWhen","foldersData","foldersLoading","foldersError","useFolders","enabled","pagination","containsAssetFilter","isCurrentFolderLoading","currentFolderError","useFolder","folders","map","folderURL","isSelectable","folderCount","assets","results","asset","assetCount","totalAssetCount","total","showUploadAssetDialog","setShowUploadAssetDialog","showEditFolderDialog","setShowEditFolderDialog","assetToEdit","setAssetToEdit","folderToEdit","setFolderToEdit","selectOne","selectAll","useSelectionState","indeterminateBulkSelect","toggleUploadAssetDialog","prev","toggleEditFolderDialog","created","handleBulkSelect","checked","elements","handleChangeSort","sort","handleEditFolder","handleEditFolderClose","current","focus","handleAssetDeleted","numberOfAssets","pageCount","handleBulkActionSuccess","Page","Loading","Error","Main","Action","startActions","_Fragment","paddingLeft","paddingRight","background","hasRadius","borderColor","aria-label","onCheckedChange","e","SortPicker","onChangeSort","endActions","IconButton","ReactRouterLink","search","Cog","LIST","List","GridIcon","SearchInput","trackedEvent","trackedEventDetails","TableList","indeterminate","onChangeFolder","folderID","onEditAsset","onEditFolder","onSelectOne","onSelectAll","rows","shouldDisableBulkSelect","sortQuery","FolderGridList","selectedFolders","isSelected","find","url","FolderCard","ref","ariaLabel","startAction","data-testid","cardActions","Pencil","FolderCardBody","FolderCardBodyAction","maxWidth","fontWeight","ellipsis","VisuallyHidden","children","filesCount","Divider","AssetGridList","onSelectAsset","selectedAssets","Pagination","PageSize","Links","UploadAssetDialog","trackedLocation","folderId","EditFolderDialog","parentFolderId","EditAssetDialog","editedAsset","ConfigureTheView","lazy","then","mod","default","Upload","config","isError","useConfig","rawQuery","useEffect","pageSize","Suspense","fallback","Routes","Route","index","element"],"mappings":"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"}
@@ -8,7 +8,7 @@ var icons = require('@strapi/icons');
8
8
  var isEqual = require('lodash/isEqual');
9
9
  var reactIntl = require('react-intl');
10
10
  var reactRouterDom = require('react-router-dom');
11
- var index = require('./index-Db2l2DRT.js');
11
+ var index = require('./index-CA81ILUU.js');
12
12
  require('byte-size');
13
13
  require('date-fns');
14
14
  require('qs');
@@ -294,4 +294,4 @@ const ConfigureTheView = ({ config })=>{
294
294
  };
295
295
 
296
296
  exports.ConfigureTheView = ConfigureTheView;
297
- //# sourceMappingURL=ConfigureTheView-BFXInHXz.js.map
297
+ //# sourceMappingURL=ConfigureTheView-D3Fnih4J.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConfigureTheView-BFXInHXz.js","sources":["../../../admin/src/pages/App/ConfigureTheView/components/Settings.tsx","../../../admin/src/pages/App/ConfigureTheView/state/actionTypes.ts","../../../admin/src/pages/App/ConfigureTheView/state/actions.ts","../../../admin/src/pages/App/ConfigureTheView/state/init.ts","../../../admin/src/pages/App/ConfigureTheView/state/reducer.ts","../../../admin/src/pages/App/ConfigureTheView/ConfigureTheView.tsx"],"sourcesContent":["import { Box, Grid, SingleSelectOption, SingleSelect, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { pageSizes, sortOptions } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport type { Configuration } from '../../../../../../shared/contracts/configuration';\n\ninterface SettingsProps {\n sort: string;\n pageSize: string | number;\n onChange: ({\n target: { name, value },\n }: {\n target: { name: keyof Configuration; value: string | number };\n }) => void;\n}\n\nconst Settings = ({ sort = '', pageSize = 10, onChange }: SettingsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Grid.Root gap={4}>\n <Grid.Item s={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('config.entries.note'),\n defaultMessage: 'Number of assets displayed by default in the Media Library',\n })}\n name=\"pageSize\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('config.entries.title'),\n defaultMessage: 'Entries per page',\n })}\n </Field.Label>\n <SingleSelect\n onChange={(value) => onChange({ target: { name: 'pageSize', value } })}\n value={pageSize}\n >\n {pageSizes.map((pageSize) => (\n <SingleSelectOption key={pageSize} value={pageSize}>\n {pageSize}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item s={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('config.note'),\n defaultMessage: 'Note: You can override this value in the media library.',\n })}\n name=\"sort\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('config.sort.title'),\n defaultMessage: 'Default sort order',\n })}\n </Field.Label>\n <SingleSelect\n onChange={(value) => onChange({ target: { name: 'sort', value } })}\n value={sort}\n test-sort={sort}\n data-testid=\"sort-select\"\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption\n data-testid={`sort-option-${filter.value}`}\n key={filter.key}\n value={filter.value}\n >\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Box>\n );\n};\n\nexport { Settings };\n","import { pluginId } from '../../../../pluginId';\n\nexport const ON_CHANGE = `${pluginId}/ON_CHANGE`;\nexport const SET_LOADED = `${pluginId}/SET_LOADED`;\n","import { ON_CHANGE, SET_LOADED } from './actionTypes';\n\nimport type { InitialState } from './init';\n\nexport const onChange = ({\n name,\n value,\n}: {\n name: keyof NonNullable<InitialState['initialData']>;\n value: number | string;\n}) => ({\n type: ON_CHANGE,\n keys: name,\n value,\n});\n\nexport const setLoaded = () => ({\n type: SET_LOADED,\n});\n","import type { Configuration } from '../../../../../../shared/contracts/configuration';\n\nexport type InitialState = {\n initialData: Partial<Configuration>;\n modifiedData: Partial<Configuration>;\n};\n\nconst initialState: InitialState = {\n initialData: {},\n modifiedData: {},\n};\n\nconst init = (configData: InitialState['initialData']): InitialState => {\n return {\n ...initialState,\n initialData: configData,\n modifiedData: configData,\n };\n};\nexport { init, initialState };\n","import { produce } from 'immer'; // current\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nimport { ON_CHANGE, SET_LOADED } from './actionTypes';\nimport { init, initialState } from './init';\n\nimport type { InitialState } from './init';\n\nexport interface ActionOnChange {\n type: string;\n keys?: string;\n value: string | number;\n}\n\nexport interface ActionSetLoaded {\n type: string;\n}\n\ninterface ActionInitialValue {\n type: string;\n}\n\nexport type Action = ActionSetLoaded | ActionOnChange | ActionInitialValue;\n\nexport const reducer = (\n state: InitialState = initialState,\n action: Action = {\n type: '',\n }\n) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case ON_CHANGE: {\n if ('keys' in action && 'value' in action && action.keys) {\n set(draftState, ['modifiedData', ...action.keys.split('.')], action.value);\n }\n break;\n }\n case SET_LOADED: {\n // This action re-initialises the state using the current modifiedData.\n const reInitialise = init(get(draftState, ['modifiedData'], {}));\n draftState.initialData = reInitialise.initialData;\n draftState.modifiedData = reInitialise.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n ConfirmDialog,\n useTracking,\n useNotification,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Dialog, Link } from '@strapi/design-system';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useConfig } from '../../../hooks/useConfig';\nimport { pluginId } from '../../../pluginId';\nimport { getTrad } from '../../../utils';\n\nimport { Settings } from './components/Settings';\nimport { onChange, setLoaded } from './state/actions';\nimport { init, initialState } from './state/init';\nimport { reducer } from './state/reducer';\n\nimport type { InitialState } from './state/init';\nimport type { Action } from './state/reducer';\nimport type { Configuration } from '../../../../../shared/contracts/configuration';\n\ninterface ConfigureTheViewProps {\n config: Configuration;\n}\n\nexport const ConfigureTheView = ({ config }: ConfigureTheViewProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { mutateConfig } = useConfig();\n const { isLoading: isSubmittingForm } = mutateConfig;\n\n const [showWarningSubmit, setWarningSubmit] = React.useState(false);\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n const [reducerState, dispatch] = React.useReducer(\n reducer,\n initialState,\n (): InitialState => init(config)\n );\n const typedDispatch: React.Dispatch<Action> = dispatch;\n const { initialData, modifiedData } = reducerState;\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n toggleWarningSubmit();\n };\n\n const handleConfirm = async () => {\n trackUsage('willEditMediaLibraryConfig');\n await mutateConfig.mutateAsync(modifiedData as Configuration);\n setWarningSubmit(false);\n typedDispatch(setLoaded());\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.form.success.fields',\n defaultMessage: 'Changes saved',\n }),\n });\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof Configuration; value: string | number };\n }) => {\n typedDispatch(onChange({ name, value }));\n };\n\n return (\n <Layouts.Root>\n <Page.Main aria-busy={isSubmittingForm}>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n navigationAction={\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`/plugins/${pluginId}`}\n id=\"go-back\"\n >\n {formatMessage({ id: getTrad('config.back'), defaultMessage: 'Back' })}\n </Link>\n }\n primaryAction={\n <Button\n size=\"S\"\n startIcon={<Check />}\n disabled={isEqual(modifiedData, initialData)}\n type=\"submit\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('config.subtitle'),\n defaultMessage: 'Define the view settings of the media library.',\n })}\n title={formatMessage({\n id: getTrad('config.title'),\n defaultMessage: 'Configure the view - Media Library',\n })}\n />\n <Layouts.Content>\n <Settings\n data-testid=\"settings\"\n pageSize={modifiedData.pageSize || ''}\n sort={modifiedData.sort || ''}\n onChange={handleChange}\n />\n </Layouts.Content>\n x\n <Dialog.Root open={showWarningSubmit} onOpenChange={toggleWarningSubmit}>\n <ConfirmDialog onConfirm={handleConfirm} variant=\"default\">\n {formatMessage({\n id: getTrad('config.popUpWarning.warning.updateAllSettings'),\n defaultMessage: 'This will modify all your settings',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n"],"names":["Settings","sort","pageSize","onChange","formatMessage","useIntl","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","_jsxs","Grid","Root","gap","Item","s","col","direction","alignItems","Field","hint","id","getTrad","defaultMessage","name","Label","SingleSelect","value","target","pageSizes","map","SingleSelectOption","Hint","test-sort","data-testid","sortOptions","filter","key","ON_CHANGE","pluginId","SET_LOADED","type","keys","setLoaded","initialState","initialData","modifiedData","init","configData","reducer","state","action","produce","draftState","set","split","reInitialise","get","ConfigureTheView","config","trackUsage","useTracking","toggleNotification","useNotification","mutateConfig","useConfig","isLoading","isSubmittingForm","showWarningSubmit","setWarningSubmit","React","useState","toggleWarningSubmit","prevState","reducerState","dispatch","useReducer","typedDispatch","handleSubmit","e","preventDefault","handleConfirm","mutateAsync","message","handleChange","Layouts","Page","Main","aria-busy","form","onSubmit","Header","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","primaryAction","Button","size","Check","disabled","isEqual","subtitle","title","Content","Dialog","open","onOpenChange","ConfirmDialog","onConfirm","variant"],"mappings":"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"}
1
+ {"version":3,"file":"ConfigureTheView-D3Fnih4J.js","sources":["../../../admin/src/pages/App/ConfigureTheView/components/Settings.tsx","../../../admin/src/pages/App/ConfigureTheView/state/actionTypes.ts","../../../admin/src/pages/App/ConfigureTheView/state/actions.ts","../../../admin/src/pages/App/ConfigureTheView/state/init.ts","../../../admin/src/pages/App/ConfigureTheView/state/reducer.ts","../../../admin/src/pages/App/ConfigureTheView/ConfigureTheView.tsx"],"sourcesContent":["import { Box, Grid, SingleSelectOption, SingleSelect, Field } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { pageSizes, sortOptions } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport type { Configuration } from '../../../../../../shared/contracts/configuration';\n\ninterface SettingsProps {\n sort: string;\n pageSize: string | number;\n onChange: ({\n target: { name, value },\n }: {\n target: { name: keyof Configuration; value: string | number };\n }) => void;\n}\n\nconst Settings = ({ sort = '', pageSize = 10, onChange }: SettingsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Grid.Root gap={4}>\n <Grid.Item s={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('config.entries.note'),\n defaultMessage: 'Number of assets displayed by default in the Media Library',\n })}\n name=\"pageSize\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('config.entries.title'),\n defaultMessage: 'Entries per page',\n })}\n </Field.Label>\n <SingleSelect\n onChange={(value) => onChange({ target: { name: 'pageSize', value } })}\n value={pageSize}\n >\n {pageSizes.map((pageSize) => (\n <SingleSelectOption key={pageSize} value={pageSize}>\n {pageSize}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item s={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('config.note'),\n defaultMessage: 'Note: You can override this value in the media library.',\n })}\n name=\"sort\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('config.sort.title'),\n defaultMessage: 'Default sort order',\n })}\n </Field.Label>\n <SingleSelect\n onChange={(value) => onChange({ target: { name: 'sort', value } })}\n value={sort}\n test-sort={sort}\n data-testid=\"sort-select\"\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption\n data-testid={`sort-option-${filter.value}`}\n key={filter.key}\n value={filter.value}\n >\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Box>\n );\n};\n\nexport { Settings };\n","import { pluginId } from '../../../../pluginId';\n\nexport const ON_CHANGE = `${pluginId}/ON_CHANGE`;\nexport const SET_LOADED = `${pluginId}/SET_LOADED`;\n","import { ON_CHANGE, SET_LOADED } from './actionTypes';\n\nimport type { InitialState } from './init';\n\nexport const onChange = ({\n name,\n value,\n}: {\n name: keyof NonNullable<InitialState['initialData']>;\n value: number | string;\n}) => ({\n type: ON_CHANGE,\n keys: name,\n value,\n});\n\nexport const setLoaded = () => ({\n type: SET_LOADED,\n});\n","import type { Configuration } from '../../../../../../shared/contracts/configuration';\n\nexport type InitialState = {\n initialData: Partial<Configuration>;\n modifiedData: Partial<Configuration>;\n};\n\nconst initialState: InitialState = {\n initialData: {},\n modifiedData: {},\n};\n\nconst init = (configData: InitialState['initialData']): InitialState => {\n return {\n ...initialState,\n initialData: configData,\n modifiedData: configData,\n };\n};\nexport { init, initialState };\n","import { produce } from 'immer'; // current\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nimport { ON_CHANGE, SET_LOADED } from './actionTypes';\nimport { init, initialState } from './init';\n\nimport type { InitialState } from './init';\n\nexport interface ActionOnChange {\n type: string;\n keys?: string;\n value: string | number;\n}\n\nexport interface ActionSetLoaded {\n type: string;\n}\n\ninterface ActionInitialValue {\n type: string;\n}\n\nexport type Action = ActionSetLoaded | ActionOnChange | ActionInitialValue;\n\nexport const reducer = (\n state: InitialState = initialState,\n action: Action = {\n type: '',\n }\n) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case ON_CHANGE: {\n if ('keys' in action && 'value' in action && action.keys) {\n set(draftState, ['modifiedData', ...action.keys.split('.')], action.value);\n }\n break;\n }\n case SET_LOADED: {\n // This action re-initialises the state using the current modifiedData.\n const reInitialise = init(get(draftState, ['modifiedData'], {}));\n draftState.initialData = reInitialise.initialData;\n draftState.modifiedData = reInitialise.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n ConfirmDialog,\n useTracking,\n useNotification,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Dialog, Link } from '@strapi/design-system';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useConfig } from '../../../hooks/useConfig';\nimport { pluginId } from '../../../pluginId';\nimport { getTrad } from '../../../utils';\n\nimport { Settings } from './components/Settings';\nimport { onChange, setLoaded } from './state/actions';\nimport { init, initialState } from './state/init';\nimport { reducer } from './state/reducer';\n\nimport type { InitialState } from './state/init';\nimport type { Action } from './state/reducer';\nimport type { Configuration } from '../../../../../shared/contracts/configuration';\n\ninterface ConfigureTheViewProps {\n config: Configuration;\n}\n\nexport const ConfigureTheView = ({ config }: ConfigureTheViewProps) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { mutateConfig } = useConfig();\n const { isLoading: isSubmittingForm } = mutateConfig;\n\n const [showWarningSubmit, setWarningSubmit] = React.useState(false);\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n const [reducerState, dispatch] = React.useReducer(\n reducer,\n initialState,\n (): InitialState => init(config)\n );\n const typedDispatch: React.Dispatch<Action> = dispatch;\n const { initialData, modifiedData } = reducerState;\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n toggleWarningSubmit();\n };\n\n const handleConfirm = async () => {\n trackUsage('willEditMediaLibraryConfig');\n await mutateConfig.mutateAsync(modifiedData as Configuration);\n setWarningSubmit(false);\n typedDispatch(setLoaded());\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.form.success.fields',\n defaultMessage: 'Changes saved',\n }),\n });\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof Configuration; value: string | number };\n }) => {\n typedDispatch(onChange({ name, value }));\n };\n\n return (\n <Layouts.Root>\n <Page.Main aria-busy={isSubmittingForm}>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n navigationAction={\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`/plugins/${pluginId}`}\n id=\"go-back\"\n >\n {formatMessage({ id: getTrad('config.back'), defaultMessage: 'Back' })}\n </Link>\n }\n primaryAction={\n <Button\n size=\"S\"\n startIcon={<Check />}\n disabled={isEqual(modifiedData, initialData)}\n type=\"submit\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('config.subtitle'),\n defaultMessage: 'Define the view settings of the media library.',\n })}\n title={formatMessage({\n id: getTrad('config.title'),\n defaultMessage: 'Configure the view - Media Library',\n })}\n />\n <Layouts.Content>\n <Settings\n data-testid=\"settings\"\n pageSize={modifiedData.pageSize || ''}\n sort={modifiedData.sort || ''}\n onChange={handleChange}\n />\n </Layouts.Content>\n x\n <Dialog.Root open={showWarningSubmit} onOpenChange={toggleWarningSubmit}>\n <ConfirmDialog onConfirm={handleConfirm} variant=\"default\">\n {formatMessage({\n id: getTrad('config.popUpWarning.warning.updateAllSettings'),\n defaultMessage: 'This will modify all your settings',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n"],"names":["Settings","sort","pageSize","onChange","formatMessage","useIntl","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","_jsxs","Grid","Root","gap","Item","s","col","direction","alignItems","Field","hint","id","getTrad","defaultMessage","name","Label","SingleSelect","value","target","pageSizes","map","SingleSelectOption","Hint","test-sort","data-testid","sortOptions","filter","key","ON_CHANGE","pluginId","SET_LOADED","type","keys","setLoaded","initialState","initialData","modifiedData","init","configData","reducer","state","action","produce","draftState","set","split","reInitialise","get","ConfigureTheView","config","trackUsage","useTracking","toggleNotification","useNotification","mutateConfig","useConfig","isLoading","isSubmittingForm","showWarningSubmit","setWarningSubmit","React","useState","toggleWarningSubmit","prevState","reducerState","dispatch","useReducer","typedDispatch","handleSubmit","e","preventDefault","handleConfirm","mutateAsync","message","handleChange","Layouts","Page","Main","aria-busy","form","onSubmit","Header","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","primaryAction","Button","size","Check","disabled","isEqual","subtitle","title","Content","Dialog","open","onOpenChange","ConfirmDialog","onConfirm","variant"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,QAAAA,GAAW,CAAC,EAAEC,IAAO,GAAA,EAAE,EAAEC,QAAW,GAAA,EAAE,EAAEC,QAAQ,EAAiB,GAAA;IACrE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAACC,CAAAA,gBAAAA,EAAAA;QACCC,UAAW,EAAA,UAAA;QACXC,SAAS,EAAA,IAAA;QACTC,MAAO,EAAA,aAAA;QACPC,UAAY,EAAA,CAAA;QACZC,aAAe,EAAA,CAAA;QACfC,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;gCAEdC,eAAA,CAACC,kBAAKC,IAAI,EAAA;YAACC,GAAK,EAAA,CAAA;;AACd,8BAAAZ,cAAA,CAACU,kBAAKG,IAAI,EAAA;oBAACC,CAAG,EAAA,EAAA;oBAAIC,GAAK,EAAA,CAAA;oBAAGC,SAAU,EAAA,QAAA;oBAASC,UAAW,EAAA,SAAA;4CACtDR,eAAA,CAACS,mBAAMP,IAAI,EAAA;AACTQ,wBAAAA,IAAAA,EAAMrB,aAAc,CAAA;AAClBsB,4BAAAA,EAAAA,EAAIC,aAAQ,CAAA,qBAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAC,IAAK,EAAA,UAAA;;AAEL,0CAAAvB,cAAA,CAACkB,mBAAMM,KAAK,EAAA;0CACT1B,aAAc,CAAA;AACbsB,oCAAAA,EAAAA,EAAIC,aAAQ,CAAA,sBAAA,CAAA;oCACZC,cAAgB,EAAA;AAClB,iCAAA;;0CAEFtB,cAACyB,CAAAA,yBAAAA,EAAAA;gCACC5B,QAAU,EAAA,CAAC6B,QAAU7B,QAAS,CAAA;wCAAE8B,MAAQ,EAAA;4CAAEJ,IAAM,EAAA,UAAA;AAAYG,4CAAAA;AAAM;AAAE,qCAAA,CAAA;gCACpEA,KAAO9B,EAAAA,QAAAA;AAENgC,gCAAAA,QAAAA,EAAAA,eAAAA,CAAUC,GAAG,CAAC,CAACjC,QAAAA,iBACdI,cAAC8B,CAAAA,+BAAAA,EAAAA;wCAAkCJ,KAAO9B,EAAAA,QAAAA;AACvCA,wCAAAA,QAAAA,EAAAA;AADsBA,qCAAAA,EAAAA,QAAAA,CAAAA;;AAK7B,0CAAAI,cAAA,CAACkB,mBAAMa,IAAI,EAAA,EAAA;;;;AAGf,8BAAA/B,cAAA,CAACU,kBAAKG,IAAI,EAAA;oBAACC,CAAG,EAAA,EAAA;oBAAIC,GAAK,EAAA,CAAA;oBAAGC,SAAU,EAAA,QAAA;oBAASC,UAAW,EAAA,SAAA;4CACtDR,eAAA,CAACS,mBAAMP,IAAI,EAAA;AACTQ,wBAAAA,IAAAA,EAAMrB,aAAc,CAAA;AAClBsB,4BAAAA,EAAAA,EAAIC,aAAQ,CAAA,aAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAC,IAAK,EAAA,MAAA;;AAEL,0CAAAvB,cAAA,CAACkB,mBAAMM,KAAK,EAAA;0CACT1B,aAAc,CAAA;AACbsB,oCAAAA,EAAAA,EAAIC,aAAQ,CAAA,mBAAA,CAAA;oCACZC,cAAgB,EAAA;AAClB,iCAAA;;0CAEFtB,cAACyB,CAAAA,yBAAAA,EAAAA;gCACC5B,QAAU,EAAA,CAAC6B,QAAU7B,QAAS,CAAA;wCAAE8B,MAAQ,EAAA;4CAAEJ,IAAM,EAAA,MAAA;AAAQG,4CAAAA;AAAM;AAAE,qCAAA,CAAA;gCAChEA,KAAO/B,EAAAA,IAAAA;gCACPqC,WAAWrC,EAAAA,IAAAA;gCACXsC,aAAY,EAAA,aAAA;AAEXC,gCAAAA,QAAAA,EAAAA,iBAAAA,CAAYL,GAAG,CAAC,CAACM,MAAAA,iBAChBnC,cAAC8B,CAAAA,+BAAAA,EAAAA;AACCG,wCAAAA,aAAAA,EAAa,CAAC,YAAY,EAAEE,MAAOT,CAAAA,KAAK,CAAC,CAAC;AAE1CA,wCAAAA,KAAAA,EAAOS,OAAOT,KAAK;kDAElB5B,aAAc,CAAA;4CAAEsB,EAAIC,EAAAA,aAAAA,CAAQc,OAAOC,GAAG,CAAA;AAAGd,4CAAAA,cAAAA,EAAgB,CAAC,EAAEa,MAAOT,CAAAA,KAAK,CAAC;AAAE,yCAAA;AAHvES,qCAAAA,EAAAA,MAAAA,CAAOC,GAAG,CAAA;;AAOrB,0CAAApC,cAAA,CAACkB,mBAAMa,IAAI,EAAA,EAAA;;;;;;;AAMvB,CAAA;;AC7FO,MAAMM,SAAY,GAAA,CAAC,EAAEC,cAAS,CAAA,UAAU,CAAC;AACzC,MAAMC,UAAa,GAAA,CAAC,EAAED,cAAS,CAAA,WAAW,CAAC;;ACC3C,MAAMzC,WAAW,CAAC,EACvB0B,IAAI,EACJG,KAAK,EAIN,IAAM;QACLc,IAAMH,EAAAA,SAAAA;QACNI,IAAMlB,EAAAA,IAAAA;AACNG,QAAAA;AACF,KAAA,CAAG;AAEI,MAAMgB,SAAY,GAAA,KAAO;QAC9BF,IAAMD,EAAAA;AACR,KAAA,CAAG;;ACXH,MAAMI,YAA6B,GAAA;AACjCC,IAAAA,WAAAA,EAAa,EAAC;AACdC,IAAAA,YAAAA,EAAc;AAChB,CAAA;AAEA,MAAMC,OAAO,CAACC,UAAAA,GAAAA;IACZ,OAAO;AACL,QAAA,GAAGJ,YAAY;QACfC,WAAaG,EAAAA,UAAAA;QACbF,YAAcE,EAAAA;AAChB,KAAA;AACF,CAAA;;ACOO,MAAMC,OAAU,GAAA,CACrBC,KAAsBN,GAAAA,YAAY,EAClCO,MAAiB,GAAA;IACfV,IAAM,EAAA;AACR,CAAC;AAGDW,IAAAA,aAAAA,CAAQF,OAAO,CAACG,UAAAA,GAAAA;AACd,QAAA,OAAQF,OAAOV,IAAI;YACjB,KAAKH,SAAAA;AAAW,gBAAA;AACd,oBAAA,IAAI,UAAUa,MAAU,IAAA,OAAA,IAAWA,MAAUA,IAAAA,MAAAA,CAAOT,IAAI,EAAE;AACxDY,wBAAAA,GAAAA,CAAID,UAAY,EAAA;AAAC,4BAAA,cAAA;+BAAmBF,MAAOT,CAAAA,IAAI,CAACa,KAAK,CAAC,GAAA;AAAK,yBAAA,EAAEJ,OAAOxB,KAAK,CAAA;AAC3E;AACA,oBAAA;AACF;YACA,KAAKa,UAAAA;AAAY,gBAAA;;oBAEf,MAAMgB,YAAAA,GAAeT,IAAKU,CAAAA,GAAAA,CAAIJ,UAAY,EAAA;AAAC,wBAAA;AAAe,qBAAA,EAAE,EAAC,CAAA,CAAA;oBAC7DA,UAAWR,CAAAA,WAAW,GAAGW,YAAAA,CAAaX,WAAW;oBACjDQ,UAAWP,CAAAA,YAAY,GAAGU,YAAAA,CAAaV,YAAY;AACnD,oBAAA;AACF;AACA,YAAA;gBACE,OAAOO,UAAAA;AACX;KACC,CAAA;;AClDL;AAiCaK,MAAAA,gBAAAA,GAAmB,CAAC,EAAEC,MAAM,EAAyB,GAAA;IAChE,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;IACvB,MAAM,EAAE9D,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAE8D,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;IAC/B,MAAM,EAAEC,YAAY,EAAE,GAAGC,eAAAA,EAAAA;AACzB,IAAA,MAAM,EAAEC,SAAAA,EAAWC,gBAAgB,EAAE,GAAGH,YAAAA;AAExC,IAAA,MAAM,CAACI,iBAAmBC,EAAAA,gBAAAA,CAAiB,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAC7D,IAAA,MAAMC,mBAAsB,GAAA,IAAMH,gBAAiB,CAAA,CAACI,YAAc,CAACA,SAAAA,CAAAA;IAEnE,MAAM,CAACC,YAAcC,EAAAA,QAAAA,CAAS,GAAGL,gBAAAA,CAAMM,UAAU,CAC/C3B,OAAAA,EACAL,YACA,EAAA,IAAoBG,IAAKY,CAAAA,MAAAA,CAAAA,CAAAA;AAE3B,IAAA,MAAMkB,aAAwCF,GAAAA,QAAAA;AAC9C,IAAA,MAAM,EAAE9B,WAAW,EAAEC,YAAY,EAAE,GAAG4B,YAAAA;AAEtC,IAAA,MAAMI,eAAe,CAACC,CAAAA,GAAAA;AACpBA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBR,QAAAA,mBAAAA,EAAAA;AACF,KAAA;AAEA,IAAA,MAAMS,aAAgB,GAAA,UAAA;QACpBrB,UAAW,CAAA,4BAAA,CAAA;QACX,MAAMI,YAAAA,CAAakB,WAAW,CAACpC,YAAAA,CAAAA;QAC/BuB,gBAAiB,CAAA,KAAA,CAAA;QACjBQ,aAAclC,CAAAA,SAAAA,EAAAA,CAAAA;QACdmB,kBAAmB,CAAA;YACjBrB,IAAM,EAAA,SAAA;AACN0C,YAAAA,OAAAA,EAASpF,aAAc,CAAA;gBACrBsB,EAAI,EAAA,kCAAA;gBACJE,cAAgB,EAAA;AAClB,aAAA;AACF,SAAA,CAAA;AACF,KAAA;IAEA,MAAM6D,YAAAA,GAAe,CAAC,EACpBxD,MAAAA,EAAQ,EAAEJ,IAAI,EAAEG,KAAK,EAAE,EAGxB,GAAA;AACCkD,QAAAA,aAAAA,CAAc/E,QAAS,CAAA;AAAE0B,YAAAA,IAAAA;AAAMG,YAAAA;AAAM,SAAA,CAAA,CAAA;AACvC,KAAA;IAEA,qBACE1B,cAAA,CAACoF,oBAAQzE,IAAI,EAAA;gCACXX,cAAA,CAACqF,iBAAKC,IAAI,EAAA;YAACC,WAAWrB,EAAAA,gBAAAA;AACpB,YAAA,QAAA,gBAAAzD,eAAC+E,CAAAA,MAAAA,EAAAA;gBAAKC,QAAUZ,EAAAA,YAAAA;;AACd,kCAAA7E,cAAA,CAACoF,oBAAQM,MAAM,EAAA;AACbC,wBAAAA,gBAAAA,gBACE3F,cAAC4F,CAAAA,iBAAAA,EAAAA;4BACCC,GAAKC,EAAAA,sBAAAA;AACLC,4BAAAA,SAAAA,gBAAW/F,cAACgG,CAAAA,eAAAA,EAAAA,EAAAA,CAAAA;AACZC,4BAAAA,EAAAA,EAAI,CAAC,SAAS,EAAE3D,cAAAA,CAAS,CAAC;4BAC1BlB,EAAG,EAAA,SAAA;sCAEFtB,aAAc,CAAA;AAAEsB,gCAAAA,EAAAA,EAAIC,aAAQ,CAAA,aAAA,CAAA;gCAAgBC,cAAgB,EAAA;AAAO,6BAAA;;AAGxE4E,wBAAAA,aAAAA,gBACElG,cAACmG,CAAAA,mBAAAA,EAAAA;4BACCC,IAAK,EAAA,GAAA;AACLL,4BAAAA,SAAAA,gBAAW/F,cAACqG,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;AACZC,4BAAAA,QAAAA,EAAUC,QAAQ1D,YAAcD,EAAAA,WAAAA,CAAAA;4BAChCJ,IAAK,EAAA,QAAA;sCAEJ1C,aAAc,CAAA;gCAAEsB,EAAI,EAAA,aAAA;gCAAeE,cAAgB,EAAA;AAAO,6BAAA;;AAG/DkF,wBAAAA,QAAAA,EAAU1G,aAAc,CAAA;AACtBsB,4BAAAA,EAAAA,EAAIC,aAAQ,CAAA,iBAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAmF,wBAAAA,KAAAA,EAAO3G,aAAc,CAAA;AACnBsB,4BAAAA,EAAAA,EAAIC,aAAQ,CAAA,cAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA;;AAEF,kCAAAtB,cAAA,CAACoF,oBAAQsB,OAAO,EAAA;AACd,wBAAA,QAAA,gBAAA1G,cAACN,CAAAA,QAAAA,EAAAA;4BACCuC,aAAY,EAAA,UAAA;4BACZrC,QAAUiD,EAAAA,YAAAA,CAAajD,QAAQ,IAAI,EAAA;4BACnCD,IAAMkD,EAAAA,YAAAA,CAAalD,IAAI,IAAI,EAAA;4BAC3BE,QAAUsF,EAAAA;;;AAEI,oBAAA,GAAA;AAElB,kCAAAnF,cAAA,CAAC2G,oBAAOhG,IAAI,EAAA;wBAACiG,IAAMzC,EAAAA,iBAAAA;wBAAmB0C,YAActC,EAAAA,mBAAAA;AAClD,wBAAA,QAAA,gBAAAvE,cAAC8G,CAAAA,yBAAAA,EAAAA;4BAAcC,SAAW/B,EAAAA,aAAAA;4BAAegC,OAAQ,EAAA,SAAA;sCAC9ClH,aAAc,CAAA;AACbsB,gCAAAA,EAAAA,EAAIC,aAAQ,CAAA,+CAAA,CAAA;gCACZC,cAAgB,EAAA;AAClB,6BAAA;;;;;;;AAOd;;;;"}
@@ -6,7 +6,7 @@ import { ArrowLeft, Check } from '@strapi/icons';
6
6
  import isEqual from 'lodash/isEqual';
7
7
  import { useIntl } from 'react-intl';
8
8
  import { NavLink } from 'react-router-dom';
9
- import { g as getTrad, C as pageSizes, D as sortOptions, p as pluginId, z as useConfig } from './index-CDwNb6XT.mjs';
9
+ import { g as getTrad, C as pageSizes, D as sortOptions, p as pluginId, z as useConfig } from './index-OqeI_4qD.mjs';
10
10
  import 'byte-size';
11
11
  import 'date-fns';
12
12
  import 'qs';
@@ -273,4 +273,4 @@ const ConfigureTheView = ({ config })=>{
273
273
  };
274
274
 
275
275
  export { ConfigureTheView };
276
- //# sourceMappingURL=ConfigureTheView-DTYyp_1T.mjs.map
276
+ //# sourceMappingURL=ConfigureTheView-D4UZJXZx.mjs.map