@strapi/upload 5.26.0 → 5.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/dist/admin/ai/components/AIAssetCard.js +589 -0
  2. package/dist/admin/ai/components/AIAssetCard.js.map +1 -0
  3. package/dist/admin/ai/components/AIAssetCard.mjs +567 -0
  4. package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -0
  5. package/dist/admin/ai/components/AIUploadModal.js +363 -0
  6. package/dist/admin/ai/components/AIUploadModal.js.map +1 -0
  7. package/dist/admin/ai/components/AIUploadModal.mjs +341 -0
  8. package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -0
  9. package/dist/admin/components/AssetDialog/AssetDialog.js +1 -1
  10. package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -1
  11. package/dist/admin/components/AssetDialog/AssetDialog.mjs +1 -1
  12. package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +1 -1
  13. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +3 -3
  14. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
  15. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +4 -4
  16. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
  17. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +5 -5
  18. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  19. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +5 -5
  20. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  21. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js +2 -1
  22. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
  23. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs +2 -1
  24. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -1
  25. package/dist/admin/components/SelectTree/utils/flattenTree.js +11 -6
  26. package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -1
  27. package/dist/admin/components/SelectTree/utils/flattenTree.mjs +11 -6
  28. package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -1
  29. package/dist/admin/hooks/useAiAvailability.js +22 -0
  30. package/dist/admin/hooks/useAiAvailability.js.map +1 -0
  31. package/dist/admin/hooks/useAiAvailability.mjs +20 -0
  32. package/dist/admin/hooks/useAiAvailability.mjs.map +1 -0
  33. package/dist/admin/hooks/useBulkEdit.js +66 -0
  34. package/dist/admin/hooks/useBulkEdit.js.map +1 -0
  35. package/dist/admin/hooks/useBulkEdit.mjs +64 -0
  36. package/dist/admin/hooks/useBulkEdit.mjs.map +1 -0
  37. package/dist/admin/hooks/useSettings.js +22 -0
  38. package/dist/admin/hooks/useSettings.js.map +1 -0
  39. package/dist/admin/hooks/useSettings.mjs +20 -0
  40. package/dist/admin/hooks/useSettings.mjs.map +1 -0
  41. package/dist/admin/hooks/useUpload.js +25 -14
  42. package/dist/admin/hooks/useUpload.js.map +1 -1
  43. package/dist/admin/hooks/useUpload.mjs +25 -14
  44. package/dist/admin/hooks/useUpload.mjs.map +1 -1
  45. package/dist/admin/package.json.js +5 -5
  46. package/dist/admin/package.json.mjs +5 -5
  47. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +0 -1
  48. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
  49. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +0 -1
  50. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
  51. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js +19 -5
  52. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js.map +1 -1
  53. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs +19 -5
  54. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs.map +1 -1
  55. package/dist/admin/pages/SettingsPage/SettingsPage.js +222 -144
  56. package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
  57. package/dist/admin/pages/SettingsPage/SettingsPage.mjs +225 -147
  58. package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
  59. package/dist/admin/pages/SettingsPage/reducer.js +9 -10
  60. package/dist/admin/pages/SettingsPage/reducer.js.map +1 -1
  61. package/dist/admin/pages/SettingsPage/reducer.mjs +9 -10
  62. package/dist/admin/pages/SettingsPage/reducer.mjs.map +1 -1
  63. package/dist/admin/src/ai/components/AIAssetCard.d.ts +13 -0
  64. package/dist/admin/src/ai/components/AIUploadModal.d.ts +55 -0
  65. package/dist/admin/src/components/EditAssetDialog/EditAssetContent.d.ts +3 -1
  66. package/dist/admin/src/components/SelectTree/utils/flattenTree.d.ts +3 -1
  67. package/dist/admin/src/hooks/useAiAvailability.d.ts +4 -0
  68. package/dist/admin/src/hooks/useBulkEdit.d.ts +91 -0
  69. package/dist/admin/src/hooks/useSettings.d.ts +7 -0
  70. package/dist/admin/src/hooks/useUpload.d.ts +1 -1
  71. package/dist/admin/src/pages/SettingsPage/reducer.d.ts +3 -12
  72. package/dist/admin/translations/en.json.js +7 -1
  73. package/dist/admin/translations/en.json.js.map +1 -1
  74. package/dist/admin/translations/en.json.mjs +7 -1
  75. package/dist/admin/translations/en.json.mjs.map +1 -1
  76. package/dist/admin/utils/getFolderParents.js +2 -1
  77. package/dist/admin/utils/getFolderParents.js.map +1 -1
  78. package/dist/admin/utils/getFolderParents.mjs +2 -1
  79. package/dist/admin/utils/getFolderParents.mjs.map +1 -1
  80. package/dist/server/bootstrap.js +2 -1
  81. package/dist/server/bootstrap.js.map +1 -1
  82. package/dist/server/bootstrap.mjs +2 -1
  83. package/dist/server/bootstrap.mjs.map +1 -1
  84. package/dist/server/controllers/admin-upload.js +57 -2
  85. package/dist/server/controllers/admin-upload.js.map +1 -1
  86. package/dist/server/controllers/admin-upload.mjs +59 -4
  87. package/dist/server/controllers/admin-upload.mjs.map +1 -1
  88. package/dist/server/controllers/content-api.js +3 -1
  89. package/dist/server/controllers/content-api.js.map +1 -1
  90. package/dist/server/controllers/content-api.mjs +3 -1
  91. package/dist/server/controllers/content-api.mjs.map +1 -1
  92. package/dist/server/controllers/validation/admin/settings.js +2 -1
  93. package/dist/server/controllers/validation/admin/settings.js.map +1 -1
  94. package/dist/server/controllers/validation/admin/settings.mjs +2 -1
  95. package/dist/server/controllers/validation/admin/settings.mjs.map +1 -1
  96. package/dist/server/controllers/validation/admin/upload.js +8 -0
  97. package/dist/server/controllers/validation/admin/upload.js.map +1 -1
  98. package/dist/server/controllers/validation/admin/upload.mjs +8 -1
  99. package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
  100. package/dist/server/routes/admin.js +18 -0
  101. package/dist/server/routes/admin.js.map +1 -1
  102. package/dist/server/routes/admin.mjs +18 -0
  103. package/dist/server/routes/admin.mjs.map +1 -1
  104. package/dist/server/services/ai-metadata.js +97 -0
  105. package/dist/server/services/ai-metadata.js.map +1 -0
  106. package/dist/server/services/ai-metadata.mjs +95 -0
  107. package/dist/server/services/ai-metadata.mjs.map +1 -0
  108. package/dist/server/services/index.js +3 -1
  109. package/dist/server/services/index.js.map +1 -1
  110. package/dist/server/services/index.mjs +3 -1
  111. package/dist/server/services/index.mjs.map +1 -1
  112. package/dist/server/services/upload.js.map +1 -1
  113. package/dist/server/services/upload.mjs.map +1 -1
  114. package/dist/server/services/weekly-metrics.js +5 -1
  115. package/dist/server/services/weekly-metrics.js.map +1 -1
  116. package/dist/server/services/weekly-metrics.mjs +5 -1
  117. package/dist/server/services/weekly-metrics.mjs.map +1 -1
  118. package/dist/server/src/bootstrap.d.ts.map +1 -1
  119. package/dist/server/src/controllers/admin-upload.d.ts +1 -0
  120. package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
  121. package/dist/server/src/controllers/index.d.ts +1 -0
  122. package/dist/server/src/controllers/index.d.ts.map +1 -1
  123. package/dist/server/src/controllers/validation/admin/settings.d.ts +3 -0
  124. package/dist/server/src/controllers/validation/admin/settings.d.ts.map +1 -1
  125. package/dist/server/src/controllers/validation/admin/upload.d.ts +42 -0
  126. package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
  127. package/dist/server/src/index.d.ts +14 -1
  128. package/dist/server/src/index.d.ts.map +1 -1
  129. package/dist/server/src/routes/admin.d.ts.map +1 -1
  130. package/dist/server/src/services/ai-metadata.d.ts +13 -0
  131. package/dist/server/src/services/ai-metadata.d.ts.map +1 -0
  132. package/dist/server/src/services/index.d.ts +13 -1
  133. package/dist/server/src/services/index.d.ts.map +1 -1
  134. package/dist/server/src/services/upload.d.ts +2 -1
  135. package/dist/server/src/services/upload.d.ts.map +1 -1
  136. package/dist/server/src/services/weekly-metrics.d.ts +1 -0
  137. package/dist/server/src/services/weekly-metrics.d.ts.map +1 -1
  138. package/dist/server/src/types.d.ts +1 -0
  139. package/dist/server/src/types.d.ts.map +1 -1
  140. package/dist/server/src/utils/index.d.ts +2 -0
  141. package/dist/server/src/utils/index.d.ts.map +1 -1
  142. package/dist/server/utils/index.js.map +1 -1
  143. package/dist/server/utils/index.mjs.map +1 -1
  144. package/dist/shared/contracts/files.d.ts +22 -0
  145. package/dist/shared/contracts/settings.d.ts +2 -0
  146. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"AssetDialog.mjs","sources":["../../../../admin/src/components/AssetDialog/AssetDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page } from '@strapi/admin/strapi-admin';\nimport { Badge, Button, Divider, Flex, Loader, Modal, Tabs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useAssets } from '../../hooks/useAssets';\nimport { useFolders } from '../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useModalQueryParams } from '../../hooks/useModalQueryParams';\nimport { useSelectionState } from '../../hooks/useSelectionState';\nimport {\n containsAssetFilter,\n getTrad,\n getAllowedFiles,\n moveElement,\n AllowedFiles,\n} from '../../utils';\nimport { EditAssetContent, Asset as EditAsset } from '../EditAssetDialog/EditAssetContent';\nimport { EditFolderContent } from '../EditFolderDialog/EditFolderDialog';\n\nimport {\n BrowseStep,\n FolderWithType,\n FileWithType,\n Filter as BrowseFilter,\n} from './BrowseStep/BrowseStep';\nimport { DialogFooter } from './DialogFooter';\nimport { SelectedStep } from './SelectedStep/SelectedStep';\n\nimport type { File as Asset, FilterCondition, Query } from '../../../../shared/contracts/files';\nimport type { Folder, FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60vh + 8rem)`};\n`;\n\nexport interface FileRow extends Asset {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface AssetContentProps {\n allowedTypes?: AllowedTypes[];\n folderId?: number | null;\n onClose: () => void;\n onAddAsset: (arg?: { folderId: number | { id: number } | null | undefined }) => void;\n onAddFolder: ({ folderId }: { folderId: number | { id: number } | null | undefined }) => void;\n onChangeFolder: (folderId: number | null) => void;\n onValidate: (selectedAssets: Asset[]) => void;\n multiple?: boolean;\n trackedLocation?: string;\n initiallySelectedAssets?: Asset[];\n}\n\nexport const AssetContent = ({\n allowedTypes = [],\n folderId = null,\n onClose,\n onAddAsset,\n onAddFolder,\n onChangeFolder,\n onValidate,\n multiple = false,\n initiallySelectedAssets = [],\n trackedLocation,\n}: AssetContentProps) => {\n const [assetToEdit, setAssetToEdit] = React.useState<FileWithType | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined>(undefined);\n const { formatMessage } = useIntl();\n const {\n canRead,\n canCreate,\n isLoading: isLoadingPermissions,\n canUpdate,\n canCopyLink,\n canDownload,\n } = useMediaLibraryPermissions();\n\n const [\n { queryObject },\n {\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSort,\n onChangeSearch,\n onChangeFolder: onChangeFolderParam,\n },\n ] = useModalQueryParams({ folder: folderId });\n\n const {\n data: { pagination, results: assets } = {},\n isLoading: isLoadingAssets,\n error: errorAssets,\n } = useAssets({ skipWhen: !canRead, query: queryObject });\n\n const {\n data: folders,\n isLoading: isLoadingFolders,\n error: errorFolders,\n } = useFolders({\n enabled: canRead && !containsAssetFilter(queryObject!) && pagination?.page === 1,\n query: queryObject,\n });\n\n const [\n selectedAssets,\n { selectOne, selectOnly, setSelections, selectMultiple, deselectMultiple },\n ] = useSelectionState(['id'], initiallySelectedAssets);\n\n const handleSelectAllAssets = () => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (!multiple) {\n return undefined;\n }\n\n // selected files in current folder\n const alreadySelected = allowedAssets.filter(\n (asset) => selectedAssets.findIndex((selectedAsset) => selectedAsset.id === asset.id) !== -1\n );\n\n if (alreadySelected.length > 0) {\n deselectMultiple(alreadySelected);\n } else {\n selectMultiple(allowedAssets);\n }\n };\n\n const handleSelectAsset = (asset: Asset | FileRow | FolderRow) => {\n return multiple ? selectOne(asset as Asset) : selectOnly(asset as Asset);\n };\n\n const isLoading = isLoadingPermissions || isLoadingAssets || isLoadingFolders;\n const hasError = errorAssets || errorFolders;\n\n const [activeTab, setActiveTab] = React.useState(\n selectedAssets.length > 0 ? 'selected' : 'browse'\n );\n\n if (isLoading) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <LoadingBody justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (hasError) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Page.Error />\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (!canRead) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Page.NoPermissions />\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (assetToEdit) {\n return (\n <EditAssetContent\n onClose={() => setAssetToEdit(undefined)}\n asset={assetToEdit as EditAsset}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation={trackedLocation}\n />\n );\n }\n\n if (folderToEdit) {\n return (\n <EditFolderContent\n folder={folderToEdit as FolderDefinition}\n onClose={() => setFolderToEdit(undefined)}\n location=\"content-manager\"\n parentFolderId={queryObject?.folder as string | number | null | undefined}\n />\n );\n }\n\n const handleMoveItem = (hoverIndex: number, destIndex: number) => {\n const offset = destIndex - hoverIndex;\n const orderedAssetsClone = selectedAssets.slice();\n const nextAssets = moveElement<Asset>(orderedAssetsClone, hoverIndex, offset);\n setSelections(nextAssets);\n };\n\n const handleFolderChange = (folderId: number, folderPath?: string) => {\n onChangeFolder(folderId);\n if (onChangeFolderParam) {\n onChangeFolderParam(folderId, folderPath);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <TabsRoot variant=\"simple\" value={activeTab} onValueChange={setActiveTab}>\n <Flex paddingLeft={8} paddingRight={8} paddingTop={6} justifyContent=\"space-between\">\n <Tabs.List>\n <Tabs.Trigger value=\"browse\">\n {formatMessage({\n id: getTrad('modal.nav.browse'),\n defaultMessage: 'Browse',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"selected\">\n {formatMessage({\n id: getTrad('modal.header.select-files'),\n defaultMessage: 'Selected files',\n })}\n <Badge marginLeft={2}>{selectedAssets.length}</Badge>\n </Tabs.Trigger>\n </Tabs.List>\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => onAddFolder({ folderId: queryObject?.folder })}\n >\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header.add-folder'),\n defaultMessage: 'Add folder',\n })}\n </Button>\n <Button onClick={() => onAddAsset({ folderId: queryObject?.folder })}>\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header.button'),\n defaultMessage: 'Add more assets',\n })}\n </Button>\n </Flex>\n </Flex>\n <Divider />\n <Modal.Body>\n <Tabs.Content value=\"browse\">\n <BrowseStep\n allowedTypes={allowedTypes}\n assets={assets!}\n canCreate={canCreate}\n canRead={canRead}\n folders={folders as FolderWithType[]}\n onSelectAsset={handleSelectAsset}\n selectedAssets={selectedAssets}\n multiple={multiple}\n onSelectAllAsset={handleSelectAllAssets}\n onEditAsset={setAssetToEdit}\n onEditFolder={setFolderToEdit}\n pagination={pagination!}\n queryObject={queryObject!}\n onAddAsset={onAddAsset}\n onChangeFilters={(filters: FilterCondition<string>[] | BrowseFilter[]) =>\n onChangeFilters!(filters as FilterCondition<string>[])\n }\n onChangeFolder={handleFolderChange}\n onChangePage={onChangePage!}\n onChangePageSize={onChangePageSize!}\n onChangeSort={(sort: string | undefined) => onChangeSort!(sort as Query['sort'])}\n onChangeSearch={onChangeSearch!}\n />\n </Tabs.Content>\n <Tabs.Content value=\"selected\">\n <SelectedStep\n selectedAssets={selectedAssets}\n onSelectAsset={handleSelectAsset}\n onReorderAsset={handleMoveItem}\n />\n </Tabs.Content>\n </Modal.Body>\n </TabsRoot>\n <DialogFooter onClose={onClose} onValidate={() => onValidate(selectedAssets)} />\n </>\n );\n};\n\ninterface AssetDialogProps extends AssetContentProps {\n open?: boolean;\n}\n\nexport const AssetDialog = ({ open = false, onClose, ...restProps }: AssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <AssetContent onClose={onClose} {...restProps} />\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst TabsRoot = styled(Tabs.Root)`\n display: flex;\n flex-direction: column;\n overflow: hidden;\n`;\n"],"names":["LoadingBody","styled","Flex","AssetContent","allowedTypes","folderId","onClose","onAddAsset","onAddFolder","onChangeFolder","onValidate","multiple","initiallySelectedAssets","trackedLocation","assetToEdit","setAssetToEdit","React","useState","undefined","folderToEdit","setFolderToEdit","formatMessage","useIntl","canRead","canCreate","isLoading","isLoadingPermissions","canUpdate","canCopyLink","canDownload","useMediaLibraryPermissions","queryObject","onChangeFilters","onChangePage","onChangePageSize","onChangeSort","onChangeSearch","onChangeFolderParam","useModalQueryParams","folder","data","pagination","results","assets","isLoadingAssets","error","errorAssets","useAssets","skipWhen","query","folders","isLoadingFolders","errorFolders","useFolders","enabled","containsAssetFilter","page","selectedAssets","selectOne","selectOnly","setSelections","selectMultiple","deselectMultiple","useSelectionState","handleSelectAllAssets","allowedAssets","getAllowedFiles","alreadySelected","filter","asset","findIndex","selectedAsset","id","length","handleSelectAsset","hasError","activeTab","setActiveTab","_jsxs","_Fragment","_jsx","Modal","Header","Title","getTrad","defaultMessage","justifyContent","paddingTop","paddingBottom","Loader","DialogFooter","Page","Error","NoPermissions","EditAssetContent","EditFolderContent","location","parentFolderId","handleMoveItem","hoverIndex","destIndex","offset","orderedAssetsClone","slice","nextAssets","moveElement","handleFolderChange","folderPath","TabsRoot","variant","value","onValueChange","paddingLeft","paddingRight","Tabs","List","Trigger","Badge","marginLeft","gap","Button","onClick","Divider","Body","Content","BrowseStep","onSelectAsset","onSelectAllAsset","onEditAsset","onEditFolder","filters","sort","SelectedStep","onReorderAsset","AssetDialog","open","restProps","Root","onOpenChange"],"mappings":"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"}
1
+ {"version":3,"file":"AssetDialog.mjs","sources":["../../../../admin/src/components/AssetDialog/AssetDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page } from '@strapi/admin/strapi-admin';\nimport { Badge, Button, Divider, Flex, Loader, Modal, Tabs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useAssets } from '../../hooks/useAssets';\nimport { useFolders } from '../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useModalQueryParams } from '../../hooks/useModalQueryParams';\nimport { useSelectionState } from '../../hooks/useSelectionState';\nimport {\n containsAssetFilter,\n getTrad,\n getAllowedFiles,\n moveElement,\n AllowedFiles,\n} from '../../utils';\nimport { EditAssetContent, Asset as EditAsset } from '../EditAssetDialog/EditAssetContent';\nimport { EditFolderContent } from '../EditFolderDialog/EditFolderDialog';\n\nimport {\n BrowseStep,\n FolderWithType,\n FileWithType,\n Filter as BrowseFilter,\n} from './BrowseStep/BrowseStep';\nimport { DialogFooter } from './DialogFooter';\nimport { SelectedStep } from './SelectedStep/SelectedStep';\n\nimport type { File as Asset, FilterCondition, Query } from '../../../../shared/contracts/files';\nimport type { Folder, FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nexport interface FileRow extends Asset {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface AssetContentProps {\n allowedTypes?: AllowedTypes[];\n folderId?: number | null;\n onClose: () => void;\n onAddAsset: (arg?: { folderId: number | { id: number } | null | undefined }) => void;\n onAddFolder: ({ folderId }: { folderId: number | { id: number } | null | undefined }) => void;\n onChangeFolder: (folderId: number | null) => void;\n onValidate: (selectedAssets: Asset[]) => void;\n multiple?: boolean;\n trackedLocation?: string;\n initiallySelectedAssets?: Asset[];\n}\n\nexport const AssetContent = ({\n allowedTypes = [],\n folderId = null,\n onClose,\n onAddAsset,\n onAddFolder,\n onChangeFolder,\n onValidate,\n multiple = false,\n initiallySelectedAssets = [],\n trackedLocation,\n}: AssetContentProps) => {\n const [assetToEdit, setAssetToEdit] = React.useState<FileWithType | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined>(undefined);\n const { formatMessage } = useIntl();\n const {\n canRead,\n canCreate,\n isLoading: isLoadingPermissions,\n canUpdate,\n canCopyLink,\n canDownload,\n } = useMediaLibraryPermissions();\n\n const [\n { queryObject },\n {\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSort,\n onChangeSearch,\n onChangeFolder: onChangeFolderParam,\n },\n ] = useModalQueryParams({ folder: folderId });\n\n const {\n data: { pagination, results: assets } = {},\n isLoading: isLoadingAssets,\n error: errorAssets,\n } = useAssets({ skipWhen: !canRead, query: queryObject });\n\n const {\n data: folders,\n isLoading: isLoadingFolders,\n error: errorFolders,\n } = useFolders({\n enabled: canRead && !containsAssetFilter(queryObject!) && pagination?.page === 1,\n query: queryObject,\n });\n\n const [\n selectedAssets,\n { selectOne, selectOnly, setSelections, selectMultiple, deselectMultiple },\n ] = useSelectionState(['id'], initiallySelectedAssets);\n\n const handleSelectAllAssets = () => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (!multiple) {\n return undefined;\n }\n\n // selected files in current folder\n const alreadySelected = allowedAssets.filter(\n (asset) => selectedAssets.findIndex((selectedAsset) => selectedAsset.id === asset.id) !== -1\n );\n\n if (alreadySelected.length > 0) {\n deselectMultiple(alreadySelected);\n } else {\n selectMultiple(allowedAssets);\n }\n };\n\n const handleSelectAsset = (asset: Asset | FileRow | FolderRow) => {\n return multiple ? selectOne(asset as Asset) : selectOnly(asset as Asset);\n };\n\n const isLoading = isLoadingPermissions || isLoadingAssets || isLoadingFolders;\n const hasError = errorAssets || errorFolders;\n\n const [activeTab, setActiveTab] = React.useState(\n selectedAssets.length > 0 ? 'selected' : 'browse'\n );\n\n if (isLoading) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <LoadingBody justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (hasError) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Page.Error />\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (!canRead) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Page.NoPermissions />\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (assetToEdit) {\n return (\n <EditAssetContent\n onClose={() => setAssetToEdit(undefined)}\n asset={assetToEdit as EditAsset}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation={trackedLocation}\n />\n );\n }\n\n if (folderToEdit) {\n return (\n <EditFolderContent\n folder={folderToEdit as FolderDefinition}\n onClose={() => setFolderToEdit(undefined)}\n location=\"content-manager\"\n parentFolderId={queryObject?.folder as string | number | null | undefined}\n />\n );\n }\n\n const handleMoveItem = (hoverIndex: number, destIndex: number) => {\n const offset = destIndex - hoverIndex;\n const orderedAssetsClone = selectedAssets.slice();\n const nextAssets = moveElement<Asset>(orderedAssetsClone, hoverIndex, offset);\n setSelections(nextAssets);\n };\n\n const handleFolderChange = (folderId: number, folderPath?: string) => {\n onChangeFolder(folderId);\n if (onChangeFolderParam) {\n onChangeFolderParam(folderId, folderPath);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <TabsRoot variant=\"simple\" value={activeTab} onValueChange={setActiveTab}>\n <Flex paddingLeft={8} paddingRight={8} paddingTop={6} justifyContent=\"space-between\">\n <Tabs.List>\n <Tabs.Trigger value=\"browse\">\n {formatMessage({\n id: getTrad('modal.nav.browse'),\n defaultMessage: 'Browse',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"selected\">\n {formatMessage({\n id: getTrad('modal.header.select-files'),\n defaultMessage: 'Selected files',\n })}\n <Badge marginLeft={2}>{selectedAssets.length}</Badge>\n </Tabs.Trigger>\n </Tabs.List>\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => onAddFolder({ folderId: queryObject?.folder })}\n >\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header.add-folder'),\n defaultMessage: 'Add folder',\n })}\n </Button>\n <Button onClick={() => onAddAsset({ folderId: queryObject?.folder })}>\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header.button'),\n defaultMessage: 'Add more assets',\n })}\n </Button>\n </Flex>\n </Flex>\n <Divider />\n <Modal.Body>\n <Tabs.Content value=\"browse\">\n <BrowseStep\n allowedTypes={allowedTypes}\n assets={assets!}\n canCreate={canCreate}\n canRead={canRead}\n folders={folders as FolderWithType[]}\n onSelectAsset={handleSelectAsset}\n selectedAssets={selectedAssets}\n multiple={multiple}\n onSelectAllAsset={handleSelectAllAssets}\n onEditAsset={setAssetToEdit}\n onEditFolder={setFolderToEdit}\n pagination={pagination!}\n queryObject={queryObject!}\n onAddAsset={onAddAsset}\n onChangeFilters={(filters: FilterCondition<string>[] | BrowseFilter[]) =>\n onChangeFilters!(filters as FilterCondition<string>[])\n }\n onChangeFolder={handleFolderChange}\n onChangePage={onChangePage!}\n onChangePageSize={onChangePageSize!}\n onChangeSort={(sort: string | undefined) => onChangeSort!(sort as Query['sort'])}\n onChangeSearch={onChangeSearch!}\n />\n </Tabs.Content>\n <Tabs.Content value=\"selected\">\n <SelectedStep\n selectedAssets={selectedAssets}\n onSelectAsset={handleSelectAsset}\n onReorderAsset={handleMoveItem}\n />\n </Tabs.Content>\n </Modal.Body>\n </TabsRoot>\n <DialogFooter onClose={onClose} onValidate={() => onValidate(selectedAssets)} />\n </>\n );\n};\n\ninterface AssetDialogProps extends AssetContentProps {\n open?: boolean;\n}\n\nexport const AssetDialog = ({ open = false, onClose, ...restProps }: AssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <AssetContent onClose={onClose} {...restProps} />\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst TabsRoot = styled(Tabs.Root)`\n display: flex;\n flex-direction: column;\n overflow: hidden;\n`;\n"],"names":["LoadingBody","styled","Flex","AssetContent","allowedTypes","folderId","onClose","onAddAsset","onAddFolder","onChangeFolder","onValidate","multiple","initiallySelectedAssets","trackedLocation","assetToEdit","setAssetToEdit","React","useState","undefined","folderToEdit","setFolderToEdit","formatMessage","useIntl","canRead","canCreate","isLoading","isLoadingPermissions","canUpdate","canCopyLink","canDownload","useMediaLibraryPermissions","queryObject","onChangeFilters","onChangePage","onChangePageSize","onChangeSort","onChangeSearch","onChangeFolderParam","useModalQueryParams","folder","data","pagination","results","assets","isLoadingAssets","error","errorAssets","useAssets","skipWhen","query","folders","isLoadingFolders","errorFolders","useFolders","enabled","containsAssetFilter","page","selectedAssets","selectOne","selectOnly","setSelections","selectMultiple","deselectMultiple","useSelectionState","handleSelectAllAssets","allowedAssets","getAllowedFiles","alreadySelected","filter","asset","findIndex","selectedAsset","id","length","handleSelectAsset","hasError","activeTab","setActiveTab","_jsxs","_Fragment","_jsx","Modal","Header","Title","getTrad","defaultMessage","justifyContent","paddingTop","paddingBottom","Loader","DialogFooter","Page","Error","NoPermissions","EditAssetContent","EditFolderContent","location","parentFolderId","handleMoveItem","hoverIndex","destIndex","offset","orderedAssetsClone","slice","nextAssets","moveElement","handleFolderChange","folderPath","TabsRoot","variant","value","onValueChange","paddingLeft","paddingRight","Tabs","List","Trigger","Badge","marginLeft","gap","Button","onClick","Divider","Body","Content","BrowseStep","onSelectAsset","onSelectAllAsset","onEditAsset","onEditFolder","filters","sort","SelectedStep","onReorderAsset","AssetDialog","open","restProps","Root","onOpenChange"],"mappings":"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"}
@@ -40,6 +40,7 @@ const CrumbSimpleMenuAsync = ({ parentsToOmit = [], currentFolderId, onChangeFol
40
40
  enabled: shouldFetch
41
41
  });
42
42
  const { pathname } = reactRouterDom.useLocation();
43
+ const navigate = reactRouterDom.useNavigate();
43
44
  const [{ query }] = strapiAdmin.useQueryParams();
44
45
  const { formatMessage } = reactIntl.useIntl();
45
46
  const allAscendants = data && getFolderParents.getFolderParents(data, currentFolderId);
@@ -72,12 +73,11 @@ const CrumbSimpleMenuAsync = ({ parentsToOmit = [], currentFolderId, onChangeFol
72
73
  }, ascendant.id);
73
74
  }
74
75
  const url = getFolderURL.getFolderURL(pathname, query, {
75
- folder: typeof ascendant?.id === 'string' ? ascendant.id : undefined,
76
+ folder: String(ascendant.id),
76
77
  folderPath: ascendant?.path
77
78
  });
78
79
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
79
- isLink: true,
80
- href: url,
80
+ onClick: ()=>navigate(url),
81
81
  children: ascendant.label
82
82
  }, ascendant.id);
83
83
  })
@@ -1 +1 @@
1
- {"version":3,"file":"CrumbSimpleMenuAsync.js","sources":["../../../../admin/src/components/Breadcrumbs/CrumbSimpleMenuAsync.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { CrumbSimpleMenu, Loader, MenuItem } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getFolderParents, getFolderURL, getTrad } from '../../utils';\n\ninterface CrumbSimpleMenuAsyncProps {\n parentsToOmit?: number[];\n currentFolderId?: number;\n onChangeFolder?: (id: number, path?: string) => void;\n}\n\nexport const CrumbSimpleMenuAsync = ({\n parentsToOmit = [],\n currentFolderId,\n onChangeFolder,\n}: CrumbSimpleMenuAsyncProps) => {\n const [shouldFetch, setShouldFetch] = React.useState(false);\n const { data, isLoading } = useFolderStructure({ enabled: shouldFetch });\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const { formatMessage } = useIntl();\n\n const allAscendants = data && getFolderParents(data, currentFolderId!);\n const filteredAscendants =\n allAscendants &&\n allAscendants.filter(\n (ascendant) =>\n typeof ascendant.id === 'number' &&\n !parentsToOmit.includes(ascendant.id) &&\n ascendant.id !== null\n );\n\n return (\n <CrumbSimpleMenu\n onOpen={() => setShouldFetch(true)}\n onClose={() => setShouldFetch(false)}\n aria-label={formatMessage({\n id: getTrad('header.breadcrumbs.menu.label'),\n defaultMessage: 'Get more ascendants folders',\n })}\n label=\"...\"\n >\n {isLoading && (\n <MenuItem>\n <Loader small>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </MenuItem>\n )}\n {filteredAscendants &&\n filteredAscendants.map((ascendant) => {\n if (onChangeFolder) {\n return (\n <MenuItem\n tag=\"button\"\n type=\"button\"\n onClick={() => onChangeFolder(Number(ascendant.id), ascendant.path)}\n key={ascendant.id}\n >\n {ascendant.label}\n </MenuItem>\n );\n }\n\n const url = getFolderURL(pathname, query, {\n folder: typeof ascendant?.id === 'string' ? ascendant.id : undefined,\n folderPath: ascendant?.path,\n });\n\n return (\n <MenuItem isLink href={url} key={ascendant.id}>\n {ascendant.label}\n </MenuItem>\n );\n })}\n </CrumbSimpleMenu>\n );\n};\n"],"names":["CrumbSimpleMenuAsync","parentsToOmit","currentFolderId","onChangeFolder","shouldFetch","setShouldFetch","React","useState","data","isLoading","useFolderStructure","enabled","pathname","useLocation","query","useQueryParams","formatMessage","useIntl","allAscendants","getFolderParents","filteredAscendants","filter","ascendant","id","includes","_jsxs","CrumbSimpleMenu","onOpen","onClose","aria-label","getTrad","defaultMessage","label","_jsx","MenuItem","Loader","small","map","tag","type","onClick","Number","path","url","getFolderURL","folder","undefined","folderPath","isLink","href"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,MAAMA,oBAAuB,GAAA,CAAC,EACnCC,aAAAA,GAAgB,EAAE,EAClBC,eAAe,EACfC,cAAc,EACY,GAAA;AAC1B,IAAA,MAAM,CAACC,WAAaC,EAAAA,cAAAA,CAAe,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACrD,IAAA,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,GAAGC,qCAAmB,CAAA;QAAEC,OAASP,EAAAA;AAAY,KAAA,CAAA;IACtE,MAAM,EAAEQ,QAAQ,EAAE,GAAGC,0BAAAA,EAAAA;AACrB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;IACpB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,MAAMC,aAAAA,GAAgBV,IAAQW,IAAAA,iCAAAA,CAAiBX,IAAMN,EAAAA,eAAAA,CAAAA;IACrD,MAAMkB,kBAAAA,GACJF,iBACAA,aAAcG,CAAAA,MAAM,CAClB,CAACC,SAAAA,GACC,OAAOA,SAAUC,CAAAA,EAAE,KAAK,QACxB,IAAA,CAACtB,cAAcuB,QAAQ,CAACF,UAAUC,EAAE,CAAA,IACpCD,SAAUC,CAAAA,EAAE,KAAK,IAAA,CAAA;AAGvB,IAAA,qBACEE,eAACC,CAAAA,4BAAAA,EAAAA;AACCC,QAAAA,MAAAA,EAAQ,IAAMtB,cAAe,CAAA,IAAA,CAAA;AAC7BuB,QAAAA,OAAAA,EAAS,IAAMvB,cAAe,CAAA,KAAA,CAAA;AAC9BwB,QAAAA,YAAAA,EAAYb,aAAc,CAAA;AACxBO,YAAAA,EAAAA,EAAIO,eAAQ,CAAA,+BAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAM,EAAA,KAAA;;AAELvB,YAAAA,SAAAA,kBACCwB,cAACC,CAAAA,qBAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAD,cAACE,CAAAA,mBAAAA,EAAAA;oBAAOC,KAAK,EAAA,IAAA;8BACVpB,aAAc,CAAA;AACbO,wBAAAA,EAAAA,EAAIO,eAAQ,CAAA,mBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA;;;YAILX,kBACCA,IAAAA,kBAAAA,CAAmBiB,GAAG,CAAC,CAACf,SAAAA,GAAAA;AACtB,gBAAA,IAAInB,cAAgB,EAAA;AAClB,oBAAA,qBACE8B,cAACC,CAAAA,qBAAAA,EAAAA;wBACCI,GAAI,EAAA,QAAA;wBACJC,IAAK,EAAA,QAAA;AACLC,wBAAAA,OAAAA,EAAS,IAAMrC,cAAesC,CAAAA,MAAAA,CAAOnB,UAAUC,EAAE,CAAA,EAAGD,UAAUoB,IAAI,CAAA;AAGjEpB,wBAAAA,QAAAA,EAAAA,SAAAA,CAAUU;AAFNV,qBAAAA,EAAAA,SAAAA,CAAUC,EAAE,CAAA;AAKvB;gBAEA,MAAMoB,GAAAA,GAAMC,yBAAahC,CAAAA,QAAAA,EAAUE,KAAO,EAAA;AACxC+B,oBAAAA,MAAAA,EAAQ,OAAOvB,SAAWC,EAAAA,EAAAA,KAAO,QAAWD,GAAAA,SAAAA,CAAUC,EAAE,GAAGuB,SAAAA;AAC3DC,oBAAAA,UAAAA,EAAYzB,SAAWoB,EAAAA;AACzB,iBAAA,CAAA;AAEA,gBAAA,qBACET,cAACC,CAAAA,qBAAAA,EAAAA;oBAASc,MAAM,EAAA,IAAA;oBAACC,IAAMN,EAAAA,GAAAA;AACpBrB,oBAAAA,QAAAA,EAAAA,SAAAA,CAAUU;AADoBV,iBAAAA,EAAAA,SAAAA,CAAUC,EAAE,CAAA;AAIjD,aAAA;;;AAGR;;;;"}
1
+ {"version":3,"file":"CrumbSimpleMenuAsync.js","sources":["../../../../admin/src/components/Breadcrumbs/CrumbSimpleMenuAsync.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { CrumbSimpleMenu, Loader, MenuItem } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getFolderParents, getFolderURL, getTrad } from '../../utils';\n\ninterface CrumbSimpleMenuAsyncProps {\n parentsToOmit?: number[];\n currentFolderId?: number;\n onChangeFolder?: (id: number, path?: string) => void;\n}\n\nexport const CrumbSimpleMenuAsync = ({\n parentsToOmit = [],\n currentFolderId,\n onChangeFolder,\n}: CrumbSimpleMenuAsyncProps) => {\n const [shouldFetch, setShouldFetch] = React.useState(false);\n const { data, isLoading } = useFolderStructure({ enabled: shouldFetch });\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const [{ query }] = useQueryParams();\n const { formatMessage } = useIntl();\n\n const allAscendants = data && getFolderParents(data, currentFolderId!);\n const filteredAscendants =\n allAscendants &&\n allAscendants.filter(\n (ascendant) =>\n typeof ascendant.id === 'number' &&\n !parentsToOmit.includes(ascendant.id) &&\n ascendant.id !== null\n );\n\n return (\n <CrumbSimpleMenu\n onOpen={() => setShouldFetch(true)}\n onClose={() => setShouldFetch(false)}\n aria-label={formatMessage({\n id: getTrad('header.breadcrumbs.menu.label'),\n defaultMessage: 'Get more ascendants folders',\n })}\n label=\"...\"\n >\n {isLoading && (\n <MenuItem>\n <Loader small>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </MenuItem>\n )}\n {filteredAscendants &&\n filteredAscendants.map((ascendant) => {\n if (onChangeFolder) {\n return (\n <MenuItem\n tag=\"button\"\n type=\"button\"\n onClick={() => onChangeFolder(Number(ascendant.id), ascendant.path)}\n key={ascendant.id}\n >\n {ascendant.label}\n </MenuItem>\n );\n }\n\n const url = getFolderURL(pathname, query, {\n folder: String(ascendant.id),\n folderPath: ascendant?.path,\n });\n\n return (\n <MenuItem key={ascendant.id} onClick={() => navigate(url)}>\n {ascendant.label}\n </MenuItem>\n );\n })}\n </CrumbSimpleMenu>\n );\n};\n"],"names":["CrumbSimpleMenuAsync","parentsToOmit","currentFolderId","onChangeFolder","shouldFetch","setShouldFetch","React","useState","data","isLoading","useFolderStructure","enabled","pathname","useLocation","navigate","useNavigate","query","useQueryParams","formatMessage","useIntl","allAscendants","getFolderParents","filteredAscendants","filter","ascendant","id","includes","_jsxs","CrumbSimpleMenu","onOpen","onClose","aria-label","getTrad","defaultMessage","label","_jsx","MenuItem","Loader","small","map","tag","type","onClick","Number","path","url","getFolderURL","folder","String","folderPath"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBO,MAAMA,oBAAuB,GAAA,CAAC,EACnCC,aAAAA,GAAgB,EAAE,EAClBC,eAAe,EACfC,cAAc,EACY,GAAA;AAC1B,IAAA,MAAM,CAACC,WAAaC,EAAAA,cAAAA,CAAe,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACrD,IAAA,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,GAAGC,qCAAmB,CAAA;QAAEC,OAASP,EAAAA;AAAY,KAAA,CAAA;IACtE,MAAM,EAAEQ,QAAQ,EAAE,GAAGC,0BAAAA,EAAAA;AACrB,IAAA,MAAMC,QAAWC,GAAAA,0BAAAA,EAAAA;AACjB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;IACpB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,MAAMC,aAAAA,GAAgBZ,IAAQa,IAAAA,iCAAAA,CAAiBb,IAAMN,EAAAA,eAAAA,CAAAA;IACrD,MAAMoB,kBAAAA,GACJF,iBACAA,aAAcG,CAAAA,MAAM,CAClB,CAACC,SAAAA,GACC,OAAOA,SAAUC,CAAAA,EAAE,KAAK,QACxB,IAAA,CAACxB,cAAcyB,QAAQ,CAACF,UAAUC,EAAE,CAAA,IACpCD,SAAUC,CAAAA,EAAE,KAAK,IAAA,CAAA;AAGvB,IAAA,qBACEE,eAACC,CAAAA,4BAAAA,EAAAA;AACCC,QAAAA,MAAAA,EAAQ,IAAMxB,cAAe,CAAA,IAAA,CAAA;AAC7ByB,QAAAA,OAAAA,EAAS,IAAMzB,cAAe,CAAA,KAAA,CAAA;AAC9B0B,QAAAA,YAAAA,EAAYb,aAAc,CAAA;AACxBO,YAAAA,EAAAA,EAAIO,eAAQ,CAAA,+BAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAM,EAAA,KAAA;;AAELzB,YAAAA,SAAAA,kBACC0B,cAACC,CAAAA,qBAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAD,cAACE,CAAAA,mBAAAA,EAAAA;oBAAOC,KAAK,EAAA,IAAA;8BACVpB,aAAc,CAAA;AACbO,wBAAAA,EAAAA,EAAIO,eAAQ,CAAA,mBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA;;;YAILX,kBACCA,IAAAA,kBAAAA,CAAmBiB,GAAG,CAAC,CAACf,SAAAA,GAAAA;AACtB,gBAAA,IAAIrB,cAAgB,EAAA;AAClB,oBAAA,qBACEgC,cAACC,CAAAA,qBAAAA,EAAAA;wBACCI,GAAI,EAAA,QAAA;wBACJC,IAAK,EAAA,QAAA;AACLC,wBAAAA,OAAAA,EAAS,IAAMvC,cAAewC,CAAAA,MAAAA,CAAOnB,UAAUC,EAAE,CAAA,EAAGD,UAAUoB,IAAI,CAAA;AAGjEpB,wBAAAA,QAAAA,EAAAA,SAAAA,CAAUU;AAFNV,qBAAAA,EAAAA,SAAAA,CAAUC,EAAE,CAAA;AAKvB;gBAEA,MAAMoB,GAAAA,GAAMC,yBAAalC,CAAAA,QAAAA,EAAUI,KAAO,EAAA;oBACxC+B,MAAQC,EAAAA,MAAAA,CAAOxB,UAAUC,EAAE,CAAA;AAC3BwB,oBAAAA,UAAAA,EAAYzB,SAAWoB,EAAAA;AACzB,iBAAA,CAAA;AAEA,gBAAA,qBACET,cAACC,CAAAA,qBAAAA,EAAAA;AAA4BM,oBAAAA,OAAAA,EAAS,IAAM5B,QAAS+B,CAAAA,GAAAA,CAAAA;AAClDrB,oBAAAA,QAAAA,EAAAA,SAAAA,CAAUU;AADEV,iBAAAA,EAAAA,SAAAA,CAAUC,EAAE,CAAA;AAI/B,aAAA;;;AAGR;;;;"}
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { useQueryParams } from '@strapi/admin/strapi-admin';
4
4
  import { CrumbSimpleMenu, MenuItem, Loader } from '@strapi/design-system';
5
5
  import { useIntl } from 'react-intl';
6
- import { useLocation } from 'react-router-dom';
6
+ import { useLocation, useNavigate } from 'react-router-dom';
7
7
  import { useFolderStructure } from '../../hooks/useFolderStructure.mjs';
8
8
  import 'byte-size';
9
9
  import 'date-fns';
@@ -19,6 +19,7 @@ const CrumbSimpleMenuAsync = ({ parentsToOmit = [], currentFolderId, onChangeFol
19
19
  enabled: shouldFetch
20
20
  });
21
21
  const { pathname } = useLocation();
22
+ const navigate = useNavigate();
22
23
  const [{ query }] = useQueryParams();
23
24
  const { formatMessage } = useIntl();
24
25
  const allAscendants = data && getFolderParents(data, currentFolderId);
@@ -51,12 +52,11 @@ const CrumbSimpleMenuAsync = ({ parentsToOmit = [], currentFolderId, onChangeFol
51
52
  }, ascendant.id);
52
53
  }
53
54
  const url = getFolderURL(pathname, query, {
54
- folder: typeof ascendant?.id === 'string' ? ascendant.id : undefined,
55
+ folder: String(ascendant.id),
55
56
  folderPath: ascendant?.path
56
57
  });
57
58
  return /*#__PURE__*/ jsx(MenuItem, {
58
- isLink: true,
59
- href: url,
59
+ onClick: ()=>navigate(url),
60
60
  children: ascendant.label
61
61
  }, ascendant.id);
62
62
  })
@@ -1 +1 @@
1
- {"version":3,"file":"CrumbSimpleMenuAsync.mjs","sources":["../../../../admin/src/components/Breadcrumbs/CrumbSimpleMenuAsync.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { CrumbSimpleMenu, Loader, MenuItem } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getFolderParents, getFolderURL, getTrad } from '../../utils';\n\ninterface CrumbSimpleMenuAsyncProps {\n parentsToOmit?: number[];\n currentFolderId?: number;\n onChangeFolder?: (id: number, path?: string) => void;\n}\n\nexport const CrumbSimpleMenuAsync = ({\n parentsToOmit = [],\n currentFolderId,\n onChangeFolder,\n}: CrumbSimpleMenuAsyncProps) => {\n const [shouldFetch, setShouldFetch] = React.useState(false);\n const { data, isLoading } = useFolderStructure({ enabled: shouldFetch });\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const { formatMessage } = useIntl();\n\n const allAscendants = data && getFolderParents(data, currentFolderId!);\n const filteredAscendants =\n allAscendants &&\n allAscendants.filter(\n (ascendant) =>\n typeof ascendant.id === 'number' &&\n !parentsToOmit.includes(ascendant.id) &&\n ascendant.id !== null\n );\n\n return (\n <CrumbSimpleMenu\n onOpen={() => setShouldFetch(true)}\n onClose={() => setShouldFetch(false)}\n aria-label={formatMessage({\n id: getTrad('header.breadcrumbs.menu.label'),\n defaultMessage: 'Get more ascendants folders',\n })}\n label=\"...\"\n >\n {isLoading && (\n <MenuItem>\n <Loader small>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </MenuItem>\n )}\n {filteredAscendants &&\n filteredAscendants.map((ascendant) => {\n if (onChangeFolder) {\n return (\n <MenuItem\n tag=\"button\"\n type=\"button\"\n onClick={() => onChangeFolder(Number(ascendant.id), ascendant.path)}\n key={ascendant.id}\n >\n {ascendant.label}\n </MenuItem>\n );\n }\n\n const url = getFolderURL(pathname, query, {\n folder: typeof ascendant?.id === 'string' ? ascendant.id : undefined,\n folderPath: ascendant?.path,\n });\n\n return (\n <MenuItem isLink href={url} key={ascendant.id}>\n {ascendant.label}\n </MenuItem>\n );\n })}\n </CrumbSimpleMenu>\n );\n};\n"],"names":["CrumbSimpleMenuAsync","parentsToOmit","currentFolderId","onChangeFolder","shouldFetch","setShouldFetch","React","useState","data","isLoading","useFolderStructure","enabled","pathname","useLocation","query","useQueryParams","formatMessage","useIntl","allAscendants","getFolderParents","filteredAscendants","filter","ascendant","id","includes","_jsxs","CrumbSimpleMenu","onOpen","onClose","aria-label","getTrad","defaultMessage","label","_jsx","MenuItem","Loader","small","map","tag","type","onClick","Number","path","url","getFolderURL","folder","undefined","folderPath","isLink","href"],"mappings":";;;;;;;;;;;;;;;AAgBO,MAAMA,oBAAuB,GAAA,CAAC,EACnCC,aAAAA,GAAgB,EAAE,EAClBC,eAAe,EACfC,cAAc,EACY,GAAA;AAC1B,IAAA,MAAM,CAACC,WAAaC,EAAAA,cAAAA,CAAe,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACrD,IAAA,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,GAAGC,kBAAmB,CAAA;QAAEC,OAASP,EAAAA;AAAY,KAAA,CAAA;IACtE,MAAM,EAAEQ,QAAQ,EAAE,GAAGC,WAAAA,EAAAA;AACrB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;IACpB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,MAAMC,aAAAA,GAAgBV,IAAQW,IAAAA,gBAAAA,CAAiBX,IAAMN,EAAAA,eAAAA,CAAAA;IACrD,MAAMkB,kBAAAA,GACJF,iBACAA,aAAcG,CAAAA,MAAM,CAClB,CAACC,SAAAA,GACC,OAAOA,SAAUC,CAAAA,EAAE,KAAK,QACxB,IAAA,CAACtB,cAAcuB,QAAQ,CAACF,UAAUC,EAAE,CAAA,IACpCD,SAAUC,CAAAA,EAAE,KAAK,IAAA,CAAA;AAGvB,IAAA,qBACEE,IAACC,CAAAA,eAAAA,EAAAA;AACCC,QAAAA,MAAAA,EAAQ,IAAMtB,cAAe,CAAA,IAAA,CAAA;AAC7BuB,QAAAA,OAAAA,EAAS,IAAMvB,cAAe,CAAA,KAAA,CAAA;AAC9BwB,QAAAA,YAAAA,EAAYb,aAAc,CAAA;AACxBO,YAAAA,EAAAA,EAAIO,OAAQ,CAAA,+BAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAM,EAAA,KAAA;;AAELvB,YAAAA,SAAAA,kBACCwB,GAACC,CAAAA,QAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAD,GAACE,CAAAA,MAAAA,EAAAA;oBAAOC,KAAK,EAAA,IAAA;8BACVpB,aAAc,CAAA;AACbO,wBAAAA,EAAAA,EAAIO,OAAQ,CAAA,mBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA;;;YAILX,kBACCA,IAAAA,kBAAAA,CAAmBiB,GAAG,CAAC,CAACf,SAAAA,GAAAA;AACtB,gBAAA,IAAInB,cAAgB,EAAA;AAClB,oBAAA,qBACE8B,GAACC,CAAAA,QAAAA,EAAAA;wBACCI,GAAI,EAAA,QAAA;wBACJC,IAAK,EAAA,QAAA;AACLC,wBAAAA,OAAAA,EAAS,IAAMrC,cAAesC,CAAAA,MAAAA,CAAOnB,UAAUC,EAAE,CAAA,EAAGD,UAAUoB,IAAI,CAAA;AAGjEpB,wBAAAA,QAAAA,EAAAA,SAAAA,CAAUU;AAFNV,qBAAAA,EAAAA,SAAAA,CAAUC,EAAE,CAAA;AAKvB;gBAEA,MAAMoB,GAAAA,GAAMC,YAAahC,CAAAA,QAAAA,EAAUE,KAAO,EAAA;AACxC+B,oBAAAA,MAAAA,EAAQ,OAAOvB,SAAWC,EAAAA,EAAAA,KAAO,QAAWD,GAAAA,SAAAA,CAAUC,EAAE,GAAGuB,SAAAA;AAC3DC,oBAAAA,UAAAA,EAAYzB,SAAWoB,EAAAA;AACzB,iBAAA,CAAA;AAEA,gBAAA,qBACET,GAACC,CAAAA,QAAAA,EAAAA;oBAASc,MAAM,EAAA,IAAA;oBAACC,IAAMN,EAAAA,GAAAA;AACpBrB,oBAAAA,QAAAA,EAAAA,SAAAA,CAAUU;AADoBV,iBAAAA,EAAAA,SAAAA,CAAUC,EAAE,CAAA;AAIjD,aAAA;;;AAGR;;;;"}
1
+ {"version":3,"file":"CrumbSimpleMenuAsync.mjs","sources":["../../../../admin/src/components/Breadcrumbs/CrumbSimpleMenuAsync.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { CrumbSimpleMenu, Loader, MenuItem } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getFolderParents, getFolderURL, getTrad } from '../../utils';\n\ninterface CrumbSimpleMenuAsyncProps {\n parentsToOmit?: number[];\n currentFolderId?: number;\n onChangeFolder?: (id: number, path?: string) => void;\n}\n\nexport const CrumbSimpleMenuAsync = ({\n parentsToOmit = [],\n currentFolderId,\n onChangeFolder,\n}: CrumbSimpleMenuAsyncProps) => {\n const [shouldFetch, setShouldFetch] = React.useState(false);\n const { data, isLoading } = useFolderStructure({ enabled: shouldFetch });\n const { pathname } = useLocation();\n const navigate = useNavigate();\n const [{ query }] = useQueryParams();\n const { formatMessage } = useIntl();\n\n const allAscendants = data && getFolderParents(data, currentFolderId!);\n const filteredAscendants =\n allAscendants &&\n allAscendants.filter(\n (ascendant) =>\n typeof ascendant.id === 'number' &&\n !parentsToOmit.includes(ascendant.id) &&\n ascendant.id !== null\n );\n\n return (\n <CrumbSimpleMenu\n onOpen={() => setShouldFetch(true)}\n onClose={() => setShouldFetch(false)}\n aria-label={formatMessage({\n id: getTrad('header.breadcrumbs.menu.label'),\n defaultMessage: 'Get more ascendants folders',\n })}\n label=\"...\"\n >\n {isLoading && (\n <MenuItem>\n <Loader small>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </MenuItem>\n )}\n {filteredAscendants &&\n filteredAscendants.map((ascendant) => {\n if (onChangeFolder) {\n return (\n <MenuItem\n tag=\"button\"\n type=\"button\"\n onClick={() => onChangeFolder(Number(ascendant.id), ascendant.path)}\n key={ascendant.id}\n >\n {ascendant.label}\n </MenuItem>\n );\n }\n\n const url = getFolderURL(pathname, query, {\n folder: String(ascendant.id),\n folderPath: ascendant?.path,\n });\n\n return (\n <MenuItem key={ascendant.id} onClick={() => navigate(url)}>\n {ascendant.label}\n </MenuItem>\n );\n })}\n </CrumbSimpleMenu>\n );\n};\n"],"names":["CrumbSimpleMenuAsync","parentsToOmit","currentFolderId","onChangeFolder","shouldFetch","setShouldFetch","React","useState","data","isLoading","useFolderStructure","enabled","pathname","useLocation","navigate","useNavigate","query","useQueryParams","formatMessage","useIntl","allAscendants","getFolderParents","filteredAscendants","filter","ascendant","id","includes","_jsxs","CrumbSimpleMenu","onOpen","onClose","aria-label","getTrad","defaultMessage","label","_jsx","MenuItem","Loader","small","map","tag","type","onClick","Number","path","url","getFolderURL","folder","String","folderPath"],"mappings":";;;;;;;;;;;;;;;AAgBO,MAAMA,oBAAuB,GAAA,CAAC,EACnCC,aAAAA,GAAgB,EAAE,EAClBC,eAAe,EACfC,cAAc,EACY,GAAA;AAC1B,IAAA,MAAM,CAACC,WAAaC,EAAAA,cAAAA,CAAe,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACrD,IAAA,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAE,GAAGC,kBAAmB,CAAA;QAAEC,OAASP,EAAAA;AAAY,KAAA,CAAA;IACtE,MAAM,EAAEQ,QAAQ,EAAE,GAAGC,WAAAA,EAAAA;AACrB,IAAA,MAAMC,QAAWC,GAAAA,WAAAA,EAAAA;AACjB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;IACpB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,MAAMC,aAAAA,GAAgBZ,IAAQa,IAAAA,gBAAAA,CAAiBb,IAAMN,EAAAA,eAAAA,CAAAA;IACrD,MAAMoB,kBAAAA,GACJF,iBACAA,aAAcG,CAAAA,MAAM,CAClB,CAACC,SAAAA,GACC,OAAOA,SAAUC,CAAAA,EAAE,KAAK,QACxB,IAAA,CAACxB,cAAcyB,QAAQ,CAACF,UAAUC,EAAE,CAAA,IACpCD,SAAUC,CAAAA,EAAE,KAAK,IAAA,CAAA;AAGvB,IAAA,qBACEE,IAACC,CAAAA,eAAAA,EAAAA;AACCC,QAAAA,MAAAA,EAAQ,IAAMxB,cAAe,CAAA,IAAA,CAAA;AAC7ByB,QAAAA,OAAAA,EAAS,IAAMzB,cAAe,CAAA,KAAA,CAAA;AAC9B0B,QAAAA,YAAAA,EAAYb,aAAc,CAAA;AACxBO,YAAAA,EAAAA,EAAIO,OAAQ,CAAA,+BAAA,CAAA;YACZC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAM,EAAA,KAAA;;AAELzB,YAAAA,SAAAA,kBACC0B,GAACC,CAAAA,QAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAD,GAACE,CAAAA,MAAAA,EAAAA;oBAAOC,KAAK,EAAA,IAAA;8BACVpB,aAAc,CAAA;AACbO,wBAAAA,EAAAA,EAAIO,OAAQ,CAAA,mBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA;;;YAILX,kBACCA,IAAAA,kBAAAA,CAAmBiB,GAAG,CAAC,CAACf,SAAAA,GAAAA;AACtB,gBAAA,IAAIrB,cAAgB,EAAA;AAClB,oBAAA,qBACEgC,GAACC,CAAAA,QAAAA,EAAAA;wBACCI,GAAI,EAAA,QAAA;wBACJC,IAAK,EAAA,QAAA;AACLC,wBAAAA,OAAAA,EAAS,IAAMvC,cAAewC,CAAAA,MAAAA,CAAOnB,UAAUC,EAAE,CAAA,EAAGD,UAAUoB,IAAI,CAAA;AAGjEpB,wBAAAA,QAAAA,EAAAA,SAAAA,CAAUU;AAFNV,qBAAAA,EAAAA,SAAAA,CAAUC,EAAE,CAAA;AAKvB;gBAEA,MAAMoB,GAAAA,GAAMC,YAAalC,CAAAA,QAAAA,EAAUI,KAAO,EAAA;oBACxC+B,MAAQC,EAAAA,MAAAA,CAAOxB,UAAUC,EAAE,CAAA;AAC3BwB,oBAAAA,UAAAA,EAAYzB,SAAWoB,EAAAA;AACzB,iBAAA,CAAA;AAEA,gBAAA,qBACET,GAACC,CAAAA,QAAAA,EAAAA;AAA4BM,oBAAAA,OAAAA,EAAS,IAAM5B,QAAS+B,CAAAA,GAAAA,CAAAA;AAClDrB,oBAAAA,QAAAA,EAAAA,SAAAA,CAAUU;AADEV,iBAAAA,EAAAA,SAAAA,CAAUC,EAAE,CAAA;AAI/B,aAAA;;;AAGR;;;;"}
@@ -47,7 +47,7 @@ var yup__namespace = /*#__PURE__*/_interopNamespaceDefault(yup);
47
47
 
48
48
  const LoadingBody = styledComponents.styled(designSystem.Flex)`
49
49
  /* 80px are coming from the Tabs component that is not included in the ModalBody */
50
- min-height: ${()=>`calc(60vh + 8rem)`};
50
+ min-height: ${()=>`calc(60dvh + 8rem)`};
51
51
  `;
52
52
  const fileInfoSchema = yup__namespace.object({
53
53
  name: yup__namespace.string().required(),
@@ -55,7 +55,7 @@ const fileInfoSchema = yup__namespace.object({
55
55
  caption: yup__namespace.string(),
56
56
  folder: yup__namespace.number()
57
57
  });
58
- const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation })=>{
58
+ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation, omitFields = [], omitActions = [] })=>{
59
59
  const { formatMessage, formatDate } = reactIntl.useIntl();
60
60
  const { trackUsage } = strapiAdmin.useTracking();
61
61
  const submitButtonRef = React__namespace.useRef(null);
@@ -254,7 +254,7 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
254
254
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {})
255
255
  ]
256
256
  }),
257
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
257
+ !omitFields?.includes('alternativeText') && /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
258
258
  name: "alternativeText",
259
259
  hint: formatMessage({
260
260
  id: getTrad.getTrad('form.input.description.file-alt'),
@@ -277,7 +277,7 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
277
277
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {})
278
278
  ]
279
279
  }),
280
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
280
+ !omitFields?.includes('caption') && /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
281
281
  name: "caption",
282
282
  error: errors.caption,
283
283
  children: [
@@ -359,7 +359,7 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
359
359
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
360
360
  gap: 2,
361
361
  children: [
362
- /*#__PURE__*/ jsxRuntime.jsx(ReplaceMediaButton.ReplaceMediaButton, {
362
+ !omitActions?.includes('replace') && /*#__PURE__*/ jsxRuntime.jsx(ReplaceMediaButton.ReplaceMediaButton, {
363
363
  onSelectMedia: setReplacementFile,
364
364
  acceptedMime: asset?.mime ?? '',
365
365
  disabled: formDisabled,
@@ -1 +1 @@
1
- {"version":3,"file":"EditAssetContent.js","sources":["../../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type { File as FileDefinition, RawFile } from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60vh + 8rem)`};\n`;\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const formDisabled = !canUpdate || isCropping;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Error />\n </Field.Root>\n\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage: 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n />\n </Field.Root>\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","fileInfoSchema","yup","object","name","string","required","alternativeText","caption","folder","number","EditAssetContent","onClose","asset","canUpdate","canCopyLink","canDownload","trackedLocation","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","value","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","undefined","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAMA,WAAAA,GAAcC,uBAAOC,CAAAA,iBAAAA,CAAK;;AAElB,cAAA,EAAE,IAAM,CAAC,iBAAiB,CAAC,CAAC;AAC1C,CAAC;AAED,MAAMC,cAAAA,GAAiBC,cAAIC,CAAAA,MAAM,CAAC;IAChCC,IAAMF,EAAAA,cAAAA,CAAIG,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAC3BC,IAAAA,eAAAA,EAAiBL,eAAIG,MAAM,EAAA;AAC3BG,IAAAA,OAAAA,EAASN,eAAIG,MAAM,EAAA;AACnBI,IAAAA,MAAAA,EAAQP,eAAIQ,MAAM;AACpB,CAAA,CAAA;MA2BaC,gBAAmB,GAAA,CAAC,EAC/BC,OAAO,EACPC,KAAK,EACLC,SAAAA,GAAY,KAAK,EACjBC,cAAc,KAAK,EACnBC,cAAc,KAAK,EACnBC,eAAe,EACO,GAAA;AACtB,IAAA,MAAM,EAAEC,aAAa,EAAEC,UAAU,EAAE,GAAGC,iBAAAA,EAAAA;IACtC,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;IACvB,MAAMC,eAAAA,GAAkBC,gBAAMC,CAAAA,MAAM,CAAoB,IAAA,CAAA;AACxD,IAAA,MAAM,CAACC,UAAYC,EAAAA,aAAAA,CAAc,GAAGH,gBAAAA,CAAMI,QAAQ,CAAC,KAAA,CAAA;AACnD,IAAA,MAAM,CAACC,eAAAA,EAAiBC,kBAAmB,CAAA,GAAGN,iBAAMI,QAAQ,EAAA;AAC5D,IAAA,MAAM,EAAEG,SAAS,EAAEC,SAAS,EAAE,GAAGC,yBAAAA,EAAAA;IAEjC,MAAM,EAAEC,MAAMC,eAAe,EAAEH,WAAWI,wBAAwB,EAAE,GAAGC,qCAAmB,CAAA;QACxFC,OAAS,EAAA;AACX,KAAA,CAAA;AAEA,IAAA,MAAMC,eAAe,OAAOC,MAAAA,GAAAA;AAC1B,QAAA,MAAMC,SAAY,GAAA;AAAE,YAAA,GAAG5B,KAAK;AAAE,YAAA,GAAG2B,MAAM;YAAE/B,MAAQ+B,EAAAA,MAAAA,CAAOE,MAAM,EAAEC;AAAM,SAAA;AAEtE,QAAA,IAAI9B,OAAO+B,OAAS,EAAA;YAClBhC,OAAQ6B,CAAAA,SAAAA,CAAAA;SACH,MAAA;YACL,MAAMI,WAAAA,GAAe,MAAMd,SAAAA,CAAUU,SAAWZ,EAAAA,eAAAA,CAAAA;AAEhD,YAAA,MAAMiB,YAAYjC,KAAOkC,EAAAA,IAAAA,EAAMC,KAAM,CAAA,GAAA,CAAI,CAAC,CAAE,CAAA;;;YAG5C,MAAMC,iBAAAA,GAAoBpC,OAAOJ,MAAQyC,EAAAA,EAAAA,GACrCrC,MAAMJ,MAAM,CAACyC,EAAE,KAAKV,MAAAA,CAAOE,MAAM,EAAEC,KAAAA,GACnC9B,OAAOJ,MAAW,KAAA,IAAA,IAAQ,CAAC,CAAC+B,MAAAA,CAAOE,MAAM,EAAEC,KAAAA;AAE/CtB,YAAAA,UAAAA,CAAW,6BAA+B,EAAA;gBACxC8B,QAAUlC,EAAAA,eAAAA;gBACVmC,IAAMN,EAAAA,SAAAA;gBACNO,cAAgBJ,EAAAA;AAClB,aAAA,CAAA;YAEArC,OAAQiC,CAAAA,WAAAA,CAAAA;AACV;AACF,KAAA;AAEA,IAAA,MAAMS,mBAAsB,GAAA,IAAA;QAC1B3B,aAAc,CAAA,IAAA,CAAA;AAChB,KAAA;AAEA,IAAA,MAAM4B,oBAAuB,GAAA,IAAA;QAC3B5B,aAAc,CAAA,KAAA,CAAA;AAChB,KAAA;AAEA,IAAA,MAAM6B,oBAAuB,GAAA,IAAA;QAC3B7B,aAAc,CAAA,KAAA,CAAA;AACdf,QAAAA,OAAAA,EAAAA;AACF,KAAA;IAEA,MAAM6C,YAAAA,GAAe,CAAC3C,SAAaY,IAAAA,UAAAA;AAEnC,IAAA,MAAMgC,kBAAqB,GAAA,IAAA;;AAEzB,QAAA,MAAMC,OAAUC,GAAAA,MAAAA,CAAOD,OAAO,CAC5BzC,aAAc,CAAA;YACZgC,EAAI,EAAA,iCAAA;YACJW,cAAgB,EAAA;AAClB,SAAA,CAAA,CAAA;AAGF,QAAA,IAAIF,OAAS,EAAA;AACX/C,YAAAA,OAAAA,EAAAA;AACF;AACF,KAAA;IAEA,MAAMkD,cAAAA,GAAiBjD,OAAOJ,MAAQyC,EAAAA,EAAAA;IACtC,MAAMa,eAAAA,GAAkB,CAAC3B,wBAA4B,IAAA;AACnDhC,QAAAA,IAAAA,EAAMS,KAAOT,EAAAA,IAAAA;AACbG,QAAAA,eAAAA,EAAiBM,OAAON,eAAmByD,IAAAA,SAAAA;AAC3CxD,QAAAA,OAAAA,EAASK,OAAOL,OAAWwD,IAAAA,SAAAA;QAC3BtB,MAAQ,EAAA;AACNC,YAAAA,KAAAA,EAAOmB,cAAkBE,IAAAA,SAAAA;YACzBC,KACEC,EAAAA,qDAAAA,CAA2B/B,iBAAkB2B,cAAkBG,CAAAA,EAAAA,KAAAA,IAC/D9B,eAAgB,CAAC,CAAA,CAAE,CAAC8B;AACxB;AACF,KAAA;AAEA,IAAA,MAAME,cAAc,CAAC3B,MAAAA,GAAAA;QACnB,IAAI,CAAC4B,OAAQL,CAAAA,eAAAA,EAAiBvB,MAAS,CAAA,EAAA;AACrCkB,YAAAA,kBAAAA,EAAAA;SACK,MAAA;AACL9C,YAAAA,OAAAA,EAAAA;AACF;AACF,KAAA;AAEA,IAAA,IAAIwB,wBAA0B,EAAA;QAC5B,qBACEiC,eAAA,CAAAC,mBAAA,EAAA;;8BACEC,cAACC,CAAAA,yBAAAA,EAAAA,EAAAA,CAAAA;8BACDD,cAACzE,CAAAA,WAAAA,EAAAA;oBAAY2E,SAAU,EAAA,MAAA;oBAAOC,cAAe,EAAA,QAAA;oBAASC,UAAY,EAAA,CAAA;oBAAGC,aAAe,EAAA,CAAA;AAClF,oBAAA,QAAA,gBAAAL,cAACM,CAAAA,mBAAAA,EAAAA;kCACE3D,aAAc,CAAA;AACbgC,4BAAAA,EAAAA,EAAI4B,eAAQ,CAAA,mBAAA,CAAA;4BACZjB,cAAgB,EAAA;AAClB,yBAAA;;;AAGJ,8BAAAU,cAAA,CAACQ,mBAAMC,MAAM,EAAA;AACX,oBAAA,QAAA,gBAAAT,cAACU,CAAAA,mBAAAA,EAAAA;AAAOC,wBAAAA,OAAAA,EAAS,IAAMf,WAAAA,EAAAA;wBAAegB,OAAQ,EAAA,UAAA;kCAC3CjE,aAAc,CAAA;4BAAEgC,EAAI,EAAA,QAAA;4BAAUW,cAAgB,EAAA;AAAS,yBAAA;;;;;AAKlE;AAEA,IAAA,qBACEU,cAACa,CAAAA,aAAAA,EAAAA;QACCC,gBAAkBpF,EAAAA,cAAAA;QAClBqF,gBAAkB,EAAA,KAAA;QAClBC,QAAUhD,EAAAA,YAAAA;QACViD,aAAezB,EAAAA,eAAAA;kBAEd,CAAC,EAAEvB,MAAM,EAAEiD,MAAM,EAAEC,YAAY,EAAEC,aAAa,EAAE,iBAC/CtB,eAAA,CAAAC,mBAAA,EAAA;;kCACEC,cAACC,CAAAA,yBAAAA,EAAAA,EAAAA,CAAAA;AACD,kCAAAD,cAAA,CAACQ,mBAAMa,IAAI,EAAA;gDACTvB,eAAA,CAACwB,kBAAKC,IAAI,EAAA;4BAACC,GAAK,EAAA,CAAA;;AACd,8CAAAxB,cAAA,CAACsB,kBAAKG,IAAI,EAAA;oCAACC,EAAI,EAAA,EAAA;oCAAIC,GAAK,EAAA,CAAA;oCAAGC,SAAU,EAAA,QAAA;oCAASC,UAAW,EAAA,SAAA;AACvD,oCAAA,QAAA,gBAAA7B,cAAC8B,CAAAA,qBAAAA,EAAAA;wCACCxF,KAAOA,EAAAA,KAAAA;wCACPC,SAAWA,EAAAA,SAAAA;wCACXC,WAAaA,EAAAA,WAAAA;wCACbC,WAAaA,EAAAA,WAAAA;wCACbsF,QAAU1F,EAAAA,OAAAA;wCACV2F,YAAc/C,EAAAA,oBAAAA;wCACdgD,WAAalD,EAAAA,mBAAAA;wCACbmD,YAAclD,EAAAA,oBAAAA;wCACd1B,eAAiBA,EAAAA,eAAAA;wCACjBZ,eAAiBA,EAAAA;;;AAGrB,8CAAAsD,cAAA,CAACsB,kBAAKG,IAAI,EAAA;oCAACC,EAAI,EAAA,EAAA;oCAAIC,GAAK,EAAA,CAAA;oCAAGC,SAAU,EAAA,QAAA;oCAASC,UAAW,EAAA,SAAA;AACvD,oCAAA,QAAA,gBAAA/B,eAACqC,CAAAA,WAAAA,EAAAA;wCAAKC,UAAU,EAAA,IAAA;;0DACdtC,eAACrE,CAAAA,iBAAAA,EAAAA;gDAAKmG,SAAU,EAAA,QAAA;gDAASC,UAAW,EAAA,SAAA;gDAAUL,GAAK,EAAA,CAAA;;kEACjDxB,cAACqC,CAAAA,uBAAAA,EAAAA;wDACCC,MAAQ,EAAA;AACN,4DAAA;AACE5C,gEAAAA,KAAAA,EAAO/C,aAAc,CAAA;AACnBgC,oEAAAA,EAAAA,EAAI4B,eAAQ,CAAA,yBAAA,CAAA;oEACZjB,cAAgB,EAAA;AAClB,iEAAA,CAAA;AACAlB,gEAAAA,KAAAA,EAAOmE,uBAAYjG,CAAAA,KAAAA,EAAOkG,IAAOlG,GAAAA,KAAAA,CAAMkG,IAAI,GAAG,CAAA;AAChD,6DAAA;AAEA,4DAAA;AACE9C,gEAAAA,KAAAA,EAAO/C,aAAc,CAAA;AACnBgC,oEAAAA,EAAAA,EAAI4B,eAAQ,CAAA,+BAAA,CAAA;oEACZjB,cAAgB,EAAA;AAClB,iEAAA,CAAA;AACAlB,gEAAAA,KAAAA,EACE9B,OAAOmG,MAAUnG,IAAAA,KAAAA,CAAMoG,KAAK,GAAG,CAAC,EAAEpG,KAAAA,CAAMoG,KAAK,CAAC,CAAC,EAAEpG,KAAAA,CAAMmG,MAAM,CAAC,CAAC,GAAG;AACtE,6DAAA;AAEA,4DAAA;AACE/C,gEAAAA,KAAAA,EAAO/C,aAAc,CAAA;AACnBgC,oEAAAA,EAAAA,EAAI4B,eAAQ,CAAA,yBAAA,CAAA;oEACZjB,cAAgB,EAAA;AAClB,iEAAA,CAAA;AACAlB,gEAAAA,KAAAA,EAAOxB,WAAW,IAAI+F,IAAAA,CAAKrG,OAAOsG,SAAYtG,GAAAA,KAAAA,CAAMsG,SAAS,GAAG,EAAA,CAAA;AAClE,6DAAA;AAEA,4DAAA;AACElD,gEAAAA,KAAAA,EAAO/C,aAAc,CAAA;AACnBgC,oEAAAA,EAAAA,EAAI4B,eAAQ,CAAA,8BAAA,CAAA;oEACZjB,cAAgB,EAAA;AAClB,iEAAA,CAAA;AACAlB,gEAAAA,KAAAA,EAAOyE,kCAAiBvG,KAAOwG,EAAAA,GAAAA;AACjC,6DAAA;AAEA,4DAAA;AACEpD,gEAAAA,KAAAA,EAAO/C,aAAc,CAAA;AACnBgC,oEAAAA,EAAAA,EAAI4B,eAAQ,CAAA,uBAAA,CAAA;oEACZjB,cAAgB,EAAA;AAClB,iEAAA,CAAA;AACAlB,gEAAAA,KAAAA,EAAO9B,KAAOqC,EAAAA,EAAAA,GAAKrC,KAAMqC,CAAAA,EAAE,GAAG;AAChC;AACD;;AAEH,kEAAAmB,eAAA,CAACiD,mBAAMxB,IAAI,EAAA;wDAAC1F,IAAK,EAAA,MAAA;AAAOmH,wDAAAA,KAAAA,EAAO9B,OAAOrF,IAAI;;AACxC,0EAAAmE,cAAA,CAAC+C,mBAAME,KAAK,EAAA;0EACTtG,aAAc,CAAA;AACbgC,oEAAAA,EAAAA,EAAI4B,eAAQ,CAAA,4BAAA,CAAA;oEACZjB,cAAgB,EAAA;AAClB,iEAAA;;0EAEFU,cAACkD,CAAAA,sBAAAA,EAAAA;AACC9E,gEAAAA,KAAAA,EAAOH,OAAOpC,IAAI;gEAClBsH,QAAUhC,EAAAA,YAAAA;gEACViC,QAAUlE,EAAAA;;AAEZ,0EAAAc,cAAA,CAAC+C,mBAAMM,KAAK,EAAA,EAAA;;;AAGd,kEAAAvD,eAAA,CAACiD,mBAAMxB,IAAI,EAAA;wDACT1F,IAAK,EAAA,iBAAA;AACLyH,wDAAAA,IAAAA,EAAM3G,aAAc,CAAA;AAClBgC,4DAAAA,EAAAA,EAAI4B,eAAQ,CAAA,iCAAA,CAAA;4DACZjB,cAAgB,EAAA;AAClB,yDAAA,CAAA;AACA0D,wDAAAA,KAAAA,EAAO9B,OAAOlF,eAAe;;AAE7B,0EAAAgE,cAAA,CAAC+C,mBAAME,KAAK,EAAA;0EACTtG,aAAc,CAAA;AACbgC,oEAAAA,EAAAA,EAAI4B,eAAQ,CAAA,2BAAA,CAAA;oEACZjB,cAAgB,EAAA;AAClB,iEAAA;;0EAEFU,cAACkD,CAAAA,sBAAAA,EAAAA;AACC9E,gEAAAA,KAAAA,EAAOH,OAAOjC,eAAe;gEAC7BmH,QAAUhC,EAAAA,YAAAA;gEACViC,QAAUlE,EAAAA;;AAEZ,0EAAAc,cAAA,CAAC+C,mBAAMQ,IAAI,EAAA,EAAA,CAAA;AACX,0EAAAvD,cAAA,CAAC+C,mBAAMM,KAAK,EAAA,EAAA;;;AAGd,kEAAAvD,eAAA,CAACiD,mBAAMxB,IAAI,EAAA;wDAAC1F,IAAK,EAAA,SAAA;AAAUmH,wDAAAA,KAAAA,EAAO9B,OAAOjF,OAAO;;AAC9C,0EAAA+D,cAAA,CAAC+C,mBAAME,KAAK,EAAA;0EACTtG,aAAc,CAAA;AACbgC,oEAAAA,EAAAA,EAAI4B,eAAQ,CAAA,+BAAA,CAAA;oEACZjB,cAAgB,EAAA;AAClB,iEAAA;;0EAEFU,cAACkD,CAAAA,sBAAAA,EAAAA;AACC9E,gEAAAA,KAAAA,EAAOH,OAAOhC,OAAO;gEACrBkH,QAAUhC,EAAAA,YAAAA;gEACViC,QAAUlE,EAAAA;;;;kEAIdc,cAACvE,CAAAA,iBAAAA,EAAAA;wDAAKmG,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,SAAA;wDAAUL,GAAK,EAAA,CAAA;gFACjD1B,eAAA,CAACiD,mBAAMxB,IAAI,EAAA;4DAAC1F,IAAK,EAAA,QAAA;4DAAS8C,EAAG,EAAA,cAAA;;AAC3B,8EAAAqB,cAAA,CAAC+C,mBAAME,KAAK,EAAA;8EACTtG,aAAc,CAAA;AACbgC,wEAAAA,EAAAA,EAAI4B,eAAQ,CAAA,gCAAA,CAAA;wEACZjB,cAAgB,EAAA;AAClB,qEAAA;;8EAGFU,cAACwD,CAAAA,qBAAAA,EAAAA;oEACC3H,IAAK,EAAA,QAAA;AACL4H,oEAAAA,YAAAA,EAAcxF,OAAOE,MAAM;oEAC3BuF,OAAS9F,EAAAA,eAAAA;AACTuF,oEAAAA,QAAAA,EAAU,CAAC/E,KAAAA,GAAAA;AACTgD,wEAAAA,aAAAA,CAAc,QAAUhD,EAAAA,KAAAA,CAAAA;AAC1B,qEAAA;oEACAuF,gBAAkBC,EAAAA,QAAAA,CAASC,aAAa,CAAC,MAAA,CAAA;oEACzCC,OAAQ,EAAA,cAAA;oEACRC,UAAY7E,EAAAA,YAAAA;AACZ8D,oEAAAA,KAAAA,EAAO9B,MAAQ/C,EAAAA,MAAAA;oEACf6F,gBAAiB,EAAA;;;;;;;0DAMzBhE,cAACiE,CAAAA,2BAAAA,EAAAA;AACC,gDAAA,QAAA,gBAAAjE,cAACkE,CAAAA,QAAAA,EAAAA;oDACCrF,IAAK,EAAA,QAAA;AACLsF,oDAAAA,QAAAA,EAAU,CAAC,CAAA;oDACXC,GAAKpH,EAAAA,eAAAA;oDACLoG,QAAUlE,EAAAA,YAAAA;8DAETvC,aAAc,CAAA;wDAAEgC,EAAI,EAAA,QAAA;wDAAUW,cAAgB,EAAA;AAAS,qDAAA;;;;;;;;;AAOpE,kCAAAQ,eAAA,CAACU,mBAAMC,MAAM,EAAA;;0CACXT,cAACU,CAAAA,mBAAAA,EAAAA;AAAOC,gCAAAA,OAAAA,EAAS,IAAMf,WAAY,CAAA;AAAE,wCAAA,GAAG3B;AAAO,qCAAA,CAAA;gCAAI2C,OAAQ,EAAA,UAAA;0CACxDjE,aAAc,CAAA;oCAAEgC,EAAI,EAAA,eAAA;oCAAiBW,cAAgB,EAAA;AAAS,iCAAA;;0CAEjEQ,eAACrE,CAAAA,iBAAAA,EAAAA;gCAAK+F,GAAK,EAAA,CAAA;;kDACTxB,cAACqE,CAAAA,qCAAAA,EAAAA;wCACCC,aAAe/G,EAAAA,kBAAAA;AACfgH,wCAAAA,YAAAA,EAAcjI,OAAOkC,IAAQ,IAAA,EAAA;wCAC7B4E,QAAUlE,EAAAA,YAAAA;wCACVxC,eAAiBA,EAAAA;;kDAGnBsD,cAACU,CAAAA,mBAAAA,EAAAA;wCACCC,OAAS,EAAA,IAAM3D,eAAgBwH,CAAAA,OAAO,EAAEC,KAAAA,EAAAA;wCACxCC,OAASjH,EAAAA,SAAAA;wCACT2F,QAAUlE,EAAAA,YAAAA;kDAETvC,aAAc,CAAA;4CAAEgC,EAAI,EAAA,eAAA;4CAAiBW,cAAgB,EAAA;AAAS,yCAAA;;;;;;;;;AAQ/E;MAYaqF,eAAkB,GAAA,CAAC,EAC9BC,IAAI,EACJvI,OAAO,EACPE,SAAAA,GAAY,KAAK,EACjBC,cAAc,KAAK,EACnBC,cAAc,KAAK,EACnB,GAAGoI,SACkB,EAAA,GAAA;IACrB,qBACE7E,cAAA,CAACQ,mBAAMe,IAAI,EAAA;QAACqD,IAAMA,EAAAA,IAAAA;QAAME,YAAczI,EAAAA,OAAAA;gCACpC2D,cAAA,CAACQ,mBAAMuE,OAAO,EAAA;AACZ,YAAA,QAAA,gBAAA/E,cAAC5D,CAAAA,gBAAAA,EAAAA;gBACCC,OAASA,EAAAA,OAAAA;gBACTE,SAAWA,EAAAA,SAAAA;gBACXC,WAAaA,EAAAA,WAAAA;gBACbC,WAAaA,EAAAA,WAAAA;AACZ,gBAAA,GAAGoI;;;;AAKd;;;;;"}
1
+ {"version":3,"file":"EditAssetContent.js","sources":["../../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type { File as FileDefinition, RawFile } from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const formDisabled = !canUpdate || isCropping;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","fileInfoSchema","yup","object","name","string","required","alternativeText","caption","folder","number","EditAssetContent","onClose","asset","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","value","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","undefined","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
@@ -25,7 +25,7 @@ import { ReplaceMediaButton } from './ReplaceMediaButton.mjs';
25
25
 
26
26
  const LoadingBody = styled(Flex)`
27
27
  /* 80px are coming from the Tabs component that is not included in the ModalBody */
28
- min-height: ${()=>`calc(60vh + 8rem)`};
28
+ min-height: ${()=>`calc(60dvh + 8rem)`};
29
29
  `;
30
30
  const fileInfoSchema = yup.object({
31
31
  name: yup.string().required(),
@@ -33,7 +33,7 @@ const fileInfoSchema = yup.object({
33
33
  caption: yup.string(),
34
34
  folder: yup.number()
35
35
  });
36
- const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation })=>{
36
+ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation, omitFields = [], omitActions = [] })=>{
37
37
  const { formatMessage, formatDate } = useIntl();
38
38
  const { trackUsage } = useTracking();
39
39
  const submitButtonRef = React.useRef(null);
@@ -232,7 +232,7 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
232
232
  /*#__PURE__*/ jsx(Field.Error, {})
233
233
  ]
234
234
  }),
235
- /*#__PURE__*/ jsxs(Field.Root, {
235
+ !omitFields?.includes('alternativeText') && /*#__PURE__*/ jsxs(Field.Root, {
236
236
  name: "alternativeText",
237
237
  hint: formatMessage({
238
238
  id: getTrad('form.input.description.file-alt'),
@@ -255,7 +255,7 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
255
255
  /*#__PURE__*/ jsx(Field.Error, {})
256
256
  ]
257
257
  }),
258
- /*#__PURE__*/ jsxs(Field.Root, {
258
+ !omitFields?.includes('caption') && /*#__PURE__*/ jsxs(Field.Root, {
259
259
  name: "caption",
260
260
  error: errors.caption,
261
261
  children: [
@@ -337,7 +337,7 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
337
337
  /*#__PURE__*/ jsxs(Flex, {
338
338
  gap: 2,
339
339
  children: [
340
- /*#__PURE__*/ jsx(ReplaceMediaButton, {
340
+ !omitActions?.includes('replace') && /*#__PURE__*/ jsx(ReplaceMediaButton, {
341
341
  onSelectMedia: setReplacementFile,
342
342
  acceptedMime: asset?.mime ?? '',
343
343
  disabled: formDisabled,
@@ -1 +1 @@
1
- {"version":3,"file":"EditAssetContent.mjs","sources":["../../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type { File as FileDefinition, RawFile } from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60vh + 8rem)`};\n`;\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const formDisabled = !canUpdate || isCropping;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Error />\n </Field.Root>\n\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage: 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n />\n </Field.Root>\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","fileInfoSchema","yup","object","name","string","required","alternativeText","caption","folder","number","EditAssetContent","onClose","asset","canUpdate","canCopyLink","canDownload","trackedLocation","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","value","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","undefined","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
1
+ {"version":3,"file":"EditAssetContent.mjs","sources":["../../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type { File as FileDefinition, RawFile } from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const formDisabled = !canUpdate || isCropping;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","fileInfoSchema","yup","object","name","string","required","alternativeText","caption","folder","number","EditAssetContent","onClose","asset","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","value","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","undefined","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}