{"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 {\n  Badge,\n  Button,\n  Divider,\n  Flex,\n  Loader,\n  Modal,\n  ScrollArea,\n  Tabs,\n} 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        <ScrollArea>\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        </ScrollArea>\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","ScrollArea","Body","Content","BrowseStep","onSelectAsset","onSelectAllAsset","onEditAsset","onEditFolder","filters","sort","SelectedStep","onReorderAsset","AssetDialog","open","restProps","Root","onOpenChange"],"mappings":"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"}