@strapi/upload 5.27.0 → 5.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/ai/components/AIUploadModal.js +8 -0
- package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.mjs +9 -1
- package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +3 -3
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +4 -4
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js +2 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs +2 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.js +11 -6
- package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.mjs +11 -6
- package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -1
- package/dist/admin/package.json.js +5 -5
- package/dist/admin/package.json.mjs +5 -5
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +0 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +0 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js +8 -1
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs +8 -1
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js +9 -4
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs +9 -4
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/src/components/SelectTree/utils/flattenTree.d.ts +3 -1
- package/dist/admin/utils/getFolderParents.js +2 -1
- package/dist/admin/utils/getFolderParents.js.map +1 -1
- package/dist/admin/utils/getFolderParents.mjs +2 -1
- package/dist/admin/utils/getFolderParents.mjs.map +1 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/controllers/admin-upload.js +11 -1
- package/dist/server/controllers/admin-upload.js.map +1 -1
- package/dist/server/controllers/admin-upload.mjs +11 -1
- package/dist/server/controllers/admin-upload.mjs.map +1 -1
- package/dist/server/services/weekly-metrics.js +5 -1
- package/dist/server/services/weekly-metrics.js.map +1 -1
- package/dist/server/services/weekly-metrics.mjs +5 -1
- package/dist/server/services/weekly-metrics.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +1 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/weekly-metrics.d.ts +1 -0
- package/dist/server/src/services/weekly-metrics.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaLibrary.mjs","sources":["../../../../../admin/src/pages/App/MediaLibrary/MediaLibrary.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n Page,\n SearchInput,\n Pagination,\n useTracking,\n useQueryParams,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n Checkbox,\n Box,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { Cog, GridFour as GridIcon, List, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink, useNavigate, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { AIUploadModal } from '../../../ai/components/AIUploadModal';\nimport { AssetGridList } from '../../../components/AssetGridList/AssetGridList';\nimport { EditAssetDialog } from '../../../components/EditAssetDialog/EditAssetContent';\nimport { EditFolderDialog } from '../../../components/EditFolderDialog/EditFolderDialog';\nimport { FolderCard } from '../../../components/FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../../components/FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../../components/FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderCardCheckbox } from '../../../components/FolderCard/FolderCardCheckbox/FolderCardCheckbox';\nimport { FolderGridList } from '../../../components/FolderGridList/FolderGridList';\nimport { SortPicker } from '../../../components/SortPicker/SortPicker';\nimport { TableList } from '../../../components/TableList/TableList';\nimport { UploadAssetDialog } from '../../../components/UploadAssetDialog/UploadAssetDialog';\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useAIAvailability } from '../../../hooks/useAiAvailability';\nimport { useAssets } from '../../../hooks/useAssets';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { useFolders } from '../../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport { useSelectionState } from '../../../hooks/useSelectionState';\nimport { containsAssetFilter, getBreadcrumbDataML, getFolderURL, getTrad } from '../../../utils';\n\nimport { BulkActions } from './components/BulkActions';\nimport { EmptyOrNoPermissions } from './components/EmptyOrNoPermissions';\nimport { Filters } from './components/Filters';\nimport { Header } from './components/Header';\n\nimport type { BulkActionsProps } from './components/BulkActions';\nimport type { HeaderProps } from './components/Header';\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FolderDefinition } from '../../../../../shared/contracts/folders';\nimport type { AssetGridListProps } from '../../../components/AssetGridList/AssetGridList';\nimport type { Asset } from '../../../components/EditAssetDialog/EditAssetContent';\nimport type { FolderRow, FileRow, TableListProps } from '../../../components/TableList/TableList';\n\nconst BoxWithHeight = styled(Box)`\n height: 3.2rem;\n display: flex;\n align-items: center;\n`;\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\nexport const MediaLibrary = () => {\n const navigate = useNavigate();\n const {\n canRead,\n canCreate,\n canUpdate,\n canCopyLink,\n canDownload,\n canConfigureView,\n isLoading: permissionsLoading,\n } = useMediaLibraryPermissions();\n const { isEnabled: isAiEnabled, status: aiAvailabilityStatus } = useAIAvailability();\n const currentFolderToEditRef = React.useRef<HTMLDivElement>();\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const isFiltering = Boolean(query._q || query.filters);\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const {\n data: assetsData,\n isLoading: assetsLoading,\n error: assetsError,\n } = useAssets({\n skipWhen: !canRead,\n query,\n });\n\n const {\n data: foldersData,\n isLoading: foldersLoading,\n error: foldersError,\n } = useFolders({\n enabled: canRead && assetsData?.pagination?.page === 1 && !containsAssetFilter(query),\n query,\n });\n\n const {\n data: currentFolder,\n isLoading: isCurrentFolderLoading,\n error: currentFolderError,\n } = useFolder(query?.folder as number | null | undefined, {\n enabled: canRead && !!query?.folder,\n });\n\n // Folder was not found: redirect to the media library root\n if (currentFolderError?.name === 'NotFoundError') {\n navigate(pathname);\n }\n\n const folders =\n foldersData?.map((folder) => ({\n ...folder,\n type: 'folder',\n folderURL: getFolderURL(pathname, query, {\n folder: folder.id.toString(),\n folderPath: folder.path,\n }),\n isSelectable: canUpdate,\n })) ?? [];\n const folderCount = folders?.length || 0;\n const assets =\n assetsData?.results?.map((asset) => ({ ...asset, type: 'asset', isSelectable: canUpdate })) ||\n [];\n const assetCount = assets?.length ?? 0;\n const totalAssetCount = assetsData?.pagination?.total;\n\n const isLoading =\n isCurrentFolderLoading ||\n foldersLoading ||\n permissionsLoading ||\n assetsLoading ||\n aiAvailabilityStatus === 'loading';\n const [showUploadAssetDialog, setShowUploadAssetDialog] = React.useState(false);\n const [showEditFolderDialog, setShowEditFolderDialog] = React.useState(false);\n const [assetToEdit, setAssetToEdit] = React.useState<Asset | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined | null>(undefined);\n const [selected, { selectOne, selectAll }] = useSelectionState<FolderRow | FileRow>(\n ['type', 'id'],\n []\n );\n const indeterminateBulkSelect =\n selected?.length > 0 && selected?.length !== assetCount + folderCount;\n const toggleUploadAssetDialog = () => setShowUploadAssetDialog((prev) => !prev);\n const toggleEditFolderDialog = ({ created = false } = {}) => {\n // folders are only displayed on the first page, therefore\n // we have to navigate the user to that page, in case a folder\n // was created successfully in order for them to see it\n if (created && query?.page !== '1') {\n setQuery({\n ...query,\n page: 1,\n });\n }\n\n setShowEditFolderDialog((prev) => !prev);\n };\n\n const handleBulkSelect = (\n checked: boolean | 'indeterminate',\n elements?: FolderRow[] | FileRow[]\n ) => {\n if (checked) {\n trackUsage('didSelectAllMediaLibraryElements');\n }\n\n selectAll(elements as (FolderRow | FileRow)[]);\n };\n\n const handleChangeSort = (value: Query['sort'] | string) => {\n trackUsage('didSortMediaLibraryElements', {\n location: 'upload',\n sort: value,\n });\n setQuery({ sort: value as Query['sort'] });\n };\n\n const handleEditFolder = (folder: FolderRow) => {\n setFolderToEdit(folder);\n setShowEditFolderDialog(true);\n };\n\n const handleEditFolderClose = (payload?: { created?: boolean | undefined }) => {\n setFolderToEdit(null);\n toggleEditFolderDialog(payload);\n\n if (currentFolderToEditRef.current) {\n currentFolderToEditRef.current.focus();\n }\n };\n\n const handleAssetDeleted = (numberOfAssets: number) => {\n if (\n numberOfAssets === assetCount &&\n assetsData?.pagination?.page === assetsData?.pagination?.pageCount &&\n assetsData?.pagination?.page &&\n assetsData.pagination.page > 1\n ) {\n setQuery({\n ...query,\n page: assetsData.pagination.page - 1,\n });\n }\n };\n\n const handleBulkActionSuccess = () => {\n selectAll();\n\n handleAssetDeleted(selected.length);\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (assetsError || foldersError || aiAvailabilityStatus === 'error') {\n return <Page.Error />;\n }\n\n return (\n <Layouts.Root>\n <Page.Main>\n <Header\n breadcrumbs={\n !isCurrentFolderLoading\n ? (getBreadcrumbDataML(currentFolder!, {\n pathname,\n query,\n }) as HeaderProps['breadcrumbs'])\n : null\n }\n canCreate={canCreate}\n onToggleEditFolderDialog={toggleEditFolderDialog}\n onToggleUploadAssetDialog={toggleUploadAssetDialog}\n folder={currentFolder as HeaderProps['folder']}\n />\n <Layouts.Action\n startActions={\n <>\n {canUpdate && isGridView && (assetCount > 0 || folderCount > 0) && (\n <BoxWithHeight\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n checked={\n indeterminateBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n onCheckedChange={(e) =>\n handleBulkSelect(e, [...assets, ...folders] as FolderRow[] | FileRow[])\n }\n />\n </BoxWithHeight>\n )}\n {canRead && isGridView && (\n <SortPicker value={query?.sort} onChangeSort={handleChangeSort} />\n )}\n {canRead && <Filters />}\n </>\n }\n endActions={\n <>\n {canConfigureView ? (\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n tag={ReactRouterLink}\n to={{\n pathname: `${pathname}/configuration`,\n search: stringify(query, { encode: false }),\n }}\n label={formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n })}\n >\n <Cog />\n </IconButton>\n </ActionContainer>\n ) : null}\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: getTrad('view-switch.list'),\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: getTrad('view-switch.grid'),\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchInput\n label={formatMessage({\n id: getTrad('search.label'),\n defaultMessage: 'Search for an asset',\n })}\n trackedEvent=\"didSearchMediaLibraryElements\"\n trackedEventDetails={{ location: 'upload' }}\n />\n </>\n }\n />\n\n <Layouts.Content>\n {selected.length > 0 && (\n <BulkActions\n currentFolder={currentFolder as BulkActionsProps['currentFolder']}\n selected={selected as BulkActionsProps['selected']}\n onSuccess={handleBulkActionSuccess}\n />\n )}\n\n {folderCount === 0 && assetCount === 0 && (\n <EmptyOrNoPermissions\n canCreate={canCreate}\n canRead={canRead}\n isFiltering={isFiltering}\n onActionClick={toggleUploadAssetDialog}\n />\n )}\n\n {/* TODO: fix AssetListTable should handle no assets views (loading) */}\n {canRead && !isGridView && (assetCount > 0 || folderCount > 0) && (\n <TableList\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={indeterminateBulkSelect}\n onChangeSort={handleChangeSort}\n onChangeFolder={(folderID, folderPath) =>\n navigate(getFolderURL(pathname, query, { folder: folderID.toString(), folderPath }))\n }\n onEditAsset={setAssetToEdit as TableListProps['onEditAsset']}\n onEditFolder={handleEditFolder}\n onSelectOne={selectOne}\n onSelectAll={handleBulkSelect as TableListProps['onSelectAll']}\n rows={[...folders, ...assets] as TableListProps['rows']}\n selected={selected as TableListProps['selected']}\n shouldDisableBulkSelect={!canUpdate}\n sortQuery={query?.sort ?? ''}\n />\n )}\n\n {canRead && isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n // Folders title should only appear if:\n // user is filtering and there are assets to display, to divide both type of elements\n // user is not filtering\n (((isFiltering && assetCount > 0) || !isFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n const selectedFolders = selected.filter(({ type }) => type === 'folder');\n const isSelected = !!selectedFolders.find(\n (currentFolder) => currentFolder.id === folder.id\n );\n\n const url = getFolderURL(pathname, query, {\n folder: folder?.id.toString(),\n folderPath: folder?.path,\n });\n\n return (\n <Grid.Item\n col={3}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ref={\n folderToEdit && folder.id === folderToEdit.id\n ? currentFolderToEditRef\n : undefined\n }\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n to={url}\n startAction={\n folder.isSelectable ? (\n <FolderCardCheckbox\n data-testid={`folder-checkbox-${folder.id}`}\n checked={isSelected}\n onCheckedChange={() => selectOne(folder)}\n />\n ) : null\n }\n cardActions={\n <IconButton\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => handleEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction to={url}>\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n textColor=\"neutral800\"\n ellipsis\n >\n {folder.name}\n <VisuallyHidden>:</VisuallyHidden>\n </TypographyMaxWidth>\n\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, =0 {# folder} one {# folder} other {# folders}}, {filesCount, plural, =0 {# asset} one {# asset} other {# assets}}',\n },\n {\n folderCount: (folder as FolderDefinition).children?.count,\n filesCount: (folder as FolderDefinition).files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6} paddingBottom={4}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <AssetGridList\n assets={assets}\n onEditAsset={setAssetToEdit as AssetGridListProps['onEditAsset']}\n onSelectAsset={selectOne}\n selectedAssets={\n selected.filter(\n ({ type }) => type === 'asset'\n ) as AssetGridListProps['selectedAssets']\n }\n title={\n // Assets title should only appear if:\n // - user is not filtering\n // - user is filtering and there are folders to display, to separate them\n // - user is on page 1 since folders won't appear on any other page than the first one (no need to visually separate them)\n ((!isFiltering || (isFiltering && folderCount > 0)) &&\n assetsData?.pagination?.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: totalAssetCount }\n )) ||\n ''\n }\n />\n )}\n </>\n )}\n <Pagination.Root {...assetsData?.pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n </Page.Main>\n {showUploadAssetDialog &&\n (isAiEnabled ? (\n <AIUploadModal\n open={showUploadAssetDialog}\n onClose={toggleUploadAssetDialog}\n folderId={query?.folder ? Number(query.folder) : null}\n />\n ) : (\n <UploadAssetDialog\n open={showUploadAssetDialog}\n onClose={toggleUploadAssetDialog}\n trackedLocation=\"upload\"\n folderId={query?.folder as string | number | null | undefined}\n />\n ))}\n {showEditFolderDialog && (\n <EditFolderDialog\n open={showEditFolderDialog}\n onClose={() => handleEditFolderClose()}\n folder={folderToEdit as FolderDefinition}\n parentFolderId={query?.folder as string | number | null | undefined}\n location=\"upload\"\n />\n )}\n {assetToEdit && (\n <EditAssetDialog\n onClose={(editedAsset) => {\n // The asset has been deleted\n if (editedAsset === null) {\n handleAssetDeleted(1);\n }\n\n setAssetToEdit(undefined);\n }}\n open={!!assetToEdit}\n asset={assetToEdit}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation=\"upload\"\n />\n )}\n </Layouts.Root>\n );\n};\n"],"names":["BoxWithHeight","styled","Box","TypographyMaxWidth","Typography","ActionContainer","theme","colors","neutral500","MediaLibrary","navigate","useNavigate","canRead","canCreate","canUpdate","canCopyLink","canDownload","canConfigureView","isLoading","permissionsLoading","useMediaLibraryPermissions","isEnabled","isAiEnabled","status","aiAvailabilityStatus","useAIAvailability","currentFolderToEditRef","React","useRef","formatMessage","useIntl","pathname","useLocation","trackUsage","useTracking","query","setQuery","useQueryParams","isFiltering","Boolean","_q","filters","view","setView","usePersistentState","localStorageKeys","viewOptions","GRID","isGridView","data","assetsData","assetsLoading","error","assetsError","useAssets","skipWhen","foldersData","foldersLoading","foldersError","useFolders","enabled","pagination","page","containsAssetFilter","currentFolder","isCurrentFolderLoading","currentFolderError","useFolder","folder","name","folders","map","type","folderURL","getFolderURL","id","toString","folderPath","path","isSelectable","folderCount","length","assets","results","asset","assetCount","totalAssetCount","total","showUploadAssetDialog","setShowUploadAssetDialog","useState","showEditFolderDialog","setShowEditFolderDialog","assetToEdit","setAssetToEdit","undefined","folderToEdit","setFolderToEdit","selected","selectOne","selectAll","useSelectionState","indeterminateBulkSelect","toggleUploadAssetDialog","prev","toggleEditFolderDialog","created","handleBulkSelect","checked","elements","handleChangeSort","value","location","sort","handleEditFolder","handleEditFolderClose","payload","current","focus","handleAssetDeleted","numberOfAssets","pageCount","handleBulkActionSuccess","_jsx","Page","Loading","Error","_jsxs","Layouts","Root","Main","Header","breadcrumbs","getBreadcrumbDataML","onToggleEditFolderDialog","onToggleUploadAssetDialog","Action","startActions","_Fragment","paddingLeft","paddingRight","background","hasRadius","borderColor","Checkbox","aria-label","getTrad","defaultMessage","onCheckedChange","e","SortPicker","onChangeSort","Filters","endActions","paddingTop","paddingBottom","IconButton","tag","ReactRouterLink","to","search","stringify","encode","label","Cog","onClick","LIST","List","GridIcon","SearchInput","trackedEvent","trackedEventDetails","Content","BulkActions","onSuccess","EmptyOrNoPermissions","onActionClick","TableList","indeterminate","onChangeFolder","folderID","onEditAsset","onEditFolder","onSelectOne","onSelectAll","rows","shouldDisableBulkSelect","sortQuery","FolderGridList","title","count","selectedFolders","filter","isSelected","find","url","Grid","Item","col","direction","alignItems","FolderCard","ref","ariaLabel","startAction","FolderCardCheckbox","data-testid","cardActions","Pencil","FolderCardBody","FolderCardBodyAction","Flex","maxWidth","fontWeight","textColor","ellipsis","VisuallyHidden","variant","children","filesCount","files","Divider","AssetGridList","onSelectAsset","selectedAssets","Pagination","PageSize","Links","AIUploadModal","open","onClose","folderId","Number","UploadAssetDialog","trackedLocation","EditFolderDialog","parentFolderId","EditAssetDialog","editedAsset"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MediaLibrary.mjs","sources":["../../../../../admin/src/pages/App/MediaLibrary/MediaLibrary.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n Page,\n SearchInput,\n Pagination,\n useTracking,\n useQueryParams,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n Checkbox,\n Box,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { Cog, GridFour as GridIcon, List, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink, useNavigate, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { AIUploadModal } from '../../../ai/components/AIUploadModal';\nimport { AssetGridList } from '../../../components/AssetGridList/AssetGridList';\nimport { EditAssetDialog } from '../../../components/EditAssetDialog/EditAssetContent';\nimport { EditFolderDialog } from '../../../components/EditFolderDialog/EditFolderDialog';\nimport { FolderCard } from '../../../components/FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../../components/FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../../components/FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderCardCheckbox } from '../../../components/FolderCard/FolderCardCheckbox/FolderCardCheckbox';\nimport { FolderGridList } from '../../../components/FolderGridList/FolderGridList';\nimport { SortPicker } from '../../../components/SortPicker/SortPicker';\nimport { TableList } from '../../../components/TableList/TableList';\nimport { UploadAssetDialog } from '../../../components/UploadAssetDialog/UploadAssetDialog';\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useAIAvailability } from '../../../hooks/useAiAvailability';\nimport { useAssets } from '../../../hooks/useAssets';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { useFolders } from '../../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport { useSelectionState } from '../../../hooks/useSelectionState';\nimport { containsAssetFilter, getBreadcrumbDataML, getFolderURL, getTrad } from '../../../utils';\n\nimport { BulkActions } from './components/BulkActions';\nimport { EmptyOrNoPermissions } from './components/EmptyOrNoPermissions';\nimport { Filters } from './components/Filters';\nimport { Header } from './components/Header';\n\nimport type { BulkActionsProps } from './components/BulkActions';\nimport type { HeaderProps } from './components/Header';\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FolderDefinition } from '../../../../../shared/contracts/folders';\nimport type { AssetGridListProps } from '../../../components/AssetGridList/AssetGridList';\nimport type { Asset } from '../../../components/EditAssetDialog/EditAssetContent';\nimport type { FolderRow, FileRow, TableListProps } from '../../../components/TableList/TableList';\n\nconst BoxWithHeight = styled(Box)`\n height: 3.2rem;\n display: flex;\n align-items: center;\n`;\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\nexport const MediaLibrary = () => {\n const navigate = useNavigate();\n const {\n canRead,\n canCreate,\n canUpdate,\n canCopyLink,\n canDownload,\n canConfigureView,\n isLoading: permissionsLoading,\n } = useMediaLibraryPermissions();\n const { isEnabled: isAiEnabled, status: aiAvailabilityStatus } = useAIAvailability();\n const currentFolderToEditRef = React.useRef<HTMLDivElement>();\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const isFiltering = Boolean(query._q || query.filters);\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const {\n data: assetsData,\n isLoading: assetsLoading,\n error: assetsError,\n } = useAssets({\n skipWhen: !canRead,\n query,\n });\n\n const {\n data: foldersData,\n isLoading: foldersLoading,\n error: foldersError,\n } = useFolders({\n enabled: canRead && assetsData?.pagination?.page === 1 && !containsAssetFilter(query),\n query,\n });\n\n const {\n data: currentFolder,\n isLoading: isCurrentFolderLoading,\n error: currentFolderError,\n } = useFolder(query?.folder as number | null | undefined, {\n enabled: canRead && !!query?.folder,\n });\n\n // Folder was not found: redirect to the media library root\n if (currentFolderError?.name === 'NotFoundError') {\n navigate(pathname);\n }\n\n const folders =\n foldersData?.map((folder) => ({\n ...folder,\n type: 'folder',\n folderURL: getFolderURL(pathname, query, {\n folder: folder.id.toString(),\n folderPath: folder.path,\n }),\n isSelectable: canUpdate,\n })) ?? [];\n const folderCount = folders?.length || 0;\n const assets =\n assetsData?.results?.map((asset) => ({ ...asset, type: 'asset', isSelectable: canUpdate })) ||\n [];\n const assetCount = assets?.length ?? 0;\n const totalAssetCount = assetsData?.pagination?.total;\n\n const isLoading =\n isCurrentFolderLoading ||\n foldersLoading ||\n permissionsLoading ||\n assetsLoading ||\n aiAvailabilityStatus === 'loading';\n const [showUploadAssetDialog, setShowUploadAssetDialog] = React.useState(false);\n const [showEditFolderDialog, setShowEditFolderDialog] = React.useState(false);\n const [assetToEdit, setAssetToEdit] = React.useState<Asset | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined | null>(undefined);\n const [selected, { selectOne, selectAll, setSelections }] = useSelectionState<\n FolderRow | FileRow\n >(['type', 'id'], []);\n // reset selection when folder changes to hide bulk actions\n React.useEffect(() => {\n setSelections([]);\n }, [query.folder, setSelections]);\n\n const indeterminateBulkSelect =\n selected?.length > 0 && selected?.length !== assetCount + folderCount;\n const toggleUploadAssetDialog = () => setShowUploadAssetDialog((prev) => !prev);\n const toggleEditFolderDialog = ({ created = false } = {}) => {\n // folders are only displayed on the first page, therefore\n // we have to navigate the user to that page, in case a folder\n // was created successfully in order for them to see it\n if (created && query?.page !== '1') {\n setQuery({\n ...query,\n page: 1,\n });\n }\n\n setShowEditFolderDialog((prev) => !prev);\n };\n\n const handleBulkSelect = (\n checked: boolean | 'indeterminate',\n elements?: FolderRow[] | FileRow[]\n ) => {\n if (checked) {\n trackUsage('didSelectAllMediaLibraryElements');\n }\n\n selectAll(elements as (FolderRow | FileRow)[]);\n };\n\n const handleChangeSort = (value: Query['sort'] | string) => {\n trackUsage('didSortMediaLibraryElements', {\n location: 'upload',\n sort: value,\n });\n setQuery({ sort: value as Query['sort'] });\n };\n\n const handleEditFolder = (folder: FolderRow) => {\n setFolderToEdit(folder);\n setShowEditFolderDialog(true);\n };\n\n const handleEditFolderClose = (payload?: { created?: boolean | undefined }) => {\n setFolderToEdit(null);\n toggleEditFolderDialog(payload);\n\n if (currentFolderToEditRef.current) {\n currentFolderToEditRef.current.focus();\n }\n };\n\n const handleAssetDeleted = (numberOfAssets: number) => {\n if (\n numberOfAssets === assetCount &&\n assetsData?.pagination?.page === assetsData?.pagination?.pageCount &&\n assetsData?.pagination?.page &&\n assetsData.pagination.page > 1\n ) {\n setQuery({\n ...query,\n page: assetsData.pagination.page - 1,\n });\n }\n };\n\n const handleBulkActionSuccess = () => {\n selectAll();\n\n handleAssetDeleted(selected.length);\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (assetsError || foldersError || aiAvailabilityStatus === 'error') {\n return <Page.Error />;\n }\n\n return (\n <Layouts.Root>\n <Page.Main>\n <Header\n breadcrumbs={\n !isCurrentFolderLoading\n ? (getBreadcrumbDataML(currentFolder!, {\n pathname,\n query,\n }) as HeaderProps['breadcrumbs'])\n : null\n }\n canCreate={canCreate}\n onToggleEditFolderDialog={toggleEditFolderDialog}\n onToggleUploadAssetDialog={toggleUploadAssetDialog}\n folder={currentFolder as HeaderProps['folder']}\n />\n <Layouts.Action\n startActions={\n <>\n {canUpdate && isGridView && (assetCount > 0 || folderCount > 0) && (\n <BoxWithHeight\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n checked={\n indeterminateBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n onCheckedChange={(e) =>\n handleBulkSelect(e, [...assets, ...folders] as FolderRow[] | FileRow[])\n }\n />\n </BoxWithHeight>\n )}\n {canRead && isGridView && (\n <SortPicker value={query?.sort} onChangeSort={handleChangeSort} />\n )}\n {canRead && <Filters />}\n </>\n }\n endActions={\n <>\n {canConfigureView ? (\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n tag={ReactRouterLink}\n to={{\n pathname: `${pathname}/configuration`,\n search: stringify(query, { encode: false }),\n }}\n label={formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n })}\n >\n <Cog />\n </IconButton>\n </ActionContainer>\n ) : null}\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: getTrad('view-switch.list'),\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: getTrad('view-switch.grid'),\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchInput\n label={formatMessage({\n id: getTrad('search.label'),\n defaultMessage: 'Search for an asset',\n })}\n trackedEvent=\"didSearchMediaLibraryElements\"\n trackedEventDetails={{ location: 'upload' }}\n />\n </>\n }\n />\n\n <Layouts.Content>\n {selected.length > 0 && (\n <BulkActions\n currentFolder={currentFolder as BulkActionsProps['currentFolder']}\n selected={selected as BulkActionsProps['selected']}\n onSuccess={handleBulkActionSuccess}\n />\n )}\n\n {folderCount === 0 && assetCount === 0 && (\n <EmptyOrNoPermissions\n canCreate={canCreate}\n canRead={canRead}\n isFiltering={isFiltering}\n onActionClick={toggleUploadAssetDialog}\n />\n )}\n\n {/* TODO: fix AssetListTable should handle no assets views (loading) */}\n {canRead && !isGridView && (assetCount > 0 || folderCount > 0) && (\n <TableList\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={indeterminateBulkSelect}\n onChangeSort={handleChangeSort}\n onChangeFolder={(folderID, folderPath) =>\n navigate(getFolderURL(pathname, query, { folder: folderID.toString(), folderPath }))\n }\n onEditAsset={setAssetToEdit as TableListProps['onEditAsset']}\n onEditFolder={handleEditFolder}\n onSelectOne={selectOne}\n onSelectAll={handleBulkSelect as TableListProps['onSelectAll']}\n rows={[...folders, ...assets] as TableListProps['rows']}\n selected={selected as TableListProps['selected']}\n shouldDisableBulkSelect={!canUpdate}\n sortQuery={query?.sort ?? ''}\n />\n )}\n\n {canRead && isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n // Folders title should only appear if:\n // user is filtering and there are assets to display, to divide both type of elements\n // user is not filtering\n (((isFiltering && assetCount > 0) || !isFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n const selectedFolders = selected.filter(({ type }) => type === 'folder');\n const isSelected = !!selectedFolders.find(\n (currentFolder) => currentFolder.id === folder.id\n );\n\n const url = getFolderURL(pathname, query, {\n folder: folder?.id.toString(),\n folderPath: folder?.path,\n });\n\n return (\n <Grid.Item\n col={3}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ref={\n folderToEdit && folder.id === folderToEdit.id\n ? currentFolderToEditRef\n : undefined\n }\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n to={url}\n startAction={\n folder.isSelectable ? (\n <FolderCardCheckbox\n data-testid={`folder-checkbox-${folder.id}`}\n checked={isSelected}\n onCheckedChange={() => selectOne(folder)}\n />\n ) : null\n }\n cardActions={\n <IconButton\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => handleEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction to={url}>\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n textColor=\"neutral800\"\n ellipsis\n >\n {folder.name}\n <VisuallyHidden>:</VisuallyHidden>\n </TypographyMaxWidth>\n\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, =0 {# folder} one {# folder} other {# folders}}, {filesCount, plural, =0 {# asset} one {# asset} other {# assets}}',\n },\n {\n folderCount: (folder as FolderDefinition).children?.count,\n filesCount: (folder as FolderDefinition).files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6} paddingBottom={4}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <AssetGridList\n assets={assets}\n onEditAsset={setAssetToEdit as AssetGridListProps['onEditAsset']}\n onSelectAsset={selectOne}\n selectedAssets={\n selected.filter(\n ({ type }) => type === 'asset'\n ) as AssetGridListProps['selectedAssets']\n }\n title={\n // Assets title should only appear if:\n // - user is not filtering\n // - user is filtering and there are folders to display, to separate them\n // - user is on page 1 since folders won't appear on any other page than the first one (no need to visually separate them)\n ((!isFiltering || (isFiltering && folderCount > 0)) &&\n assetsData?.pagination?.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: totalAssetCount }\n )) ||\n ''\n }\n />\n )}\n </>\n )}\n <Pagination.Root {...assetsData?.pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n </Page.Main>\n {showUploadAssetDialog &&\n (isAiEnabled ? (\n <AIUploadModal\n open={showUploadAssetDialog}\n onClose={toggleUploadAssetDialog}\n folderId={query?.folder ? Number(query.folder) : null}\n />\n ) : (\n <UploadAssetDialog\n open={showUploadAssetDialog}\n onClose={toggleUploadAssetDialog}\n trackedLocation=\"upload\"\n folderId={query?.folder as string | number | null | undefined}\n />\n ))}\n {showEditFolderDialog && (\n <EditFolderDialog\n open={showEditFolderDialog}\n onClose={() => handleEditFolderClose()}\n folder={folderToEdit as FolderDefinition}\n parentFolderId={query?.folder as string | number | null | undefined}\n location=\"upload\"\n />\n )}\n {assetToEdit && (\n <EditAssetDialog\n onClose={(editedAsset) => {\n // The asset has been deleted\n if (editedAsset === null) {\n handleAssetDeleted(1);\n }\n\n setAssetToEdit(undefined);\n }}\n open={!!assetToEdit}\n asset={assetToEdit}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation=\"upload\"\n />\n )}\n </Layouts.Root>\n );\n};\n"],"names":["BoxWithHeight","styled","Box","TypographyMaxWidth","Typography","ActionContainer","theme","colors","neutral500","MediaLibrary","navigate","useNavigate","canRead","canCreate","canUpdate","canCopyLink","canDownload","canConfigureView","isLoading","permissionsLoading","useMediaLibraryPermissions","isEnabled","isAiEnabled","status","aiAvailabilityStatus","useAIAvailability","currentFolderToEditRef","React","useRef","formatMessage","useIntl","pathname","useLocation","trackUsage","useTracking","query","setQuery","useQueryParams","isFiltering","Boolean","_q","filters","view","setView","usePersistentState","localStorageKeys","viewOptions","GRID","isGridView","data","assetsData","assetsLoading","error","assetsError","useAssets","skipWhen","foldersData","foldersLoading","foldersError","useFolders","enabled","pagination","page","containsAssetFilter","currentFolder","isCurrentFolderLoading","currentFolderError","useFolder","folder","name","folders","map","type","folderURL","getFolderURL","id","toString","folderPath","path","isSelectable","folderCount","length","assets","results","asset","assetCount","totalAssetCount","total","showUploadAssetDialog","setShowUploadAssetDialog","useState","showEditFolderDialog","setShowEditFolderDialog","assetToEdit","setAssetToEdit","undefined","folderToEdit","setFolderToEdit","selected","selectOne","selectAll","setSelections","useSelectionState","useEffect","indeterminateBulkSelect","toggleUploadAssetDialog","prev","toggleEditFolderDialog","created","handleBulkSelect","checked","elements","handleChangeSort","value","location","sort","handleEditFolder","handleEditFolderClose","payload","current","focus","handleAssetDeleted","numberOfAssets","pageCount","handleBulkActionSuccess","_jsx","Page","Loading","Error","_jsxs","Layouts","Root","Main","Header","breadcrumbs","getBreadcrumbDataML","onToggleEditFolderDialog","onToggleUploadAssetDialog","Action","startActions","_Fragment","paddingLeft","paddingRight","background","hasRadius","borderColor","Checkbox","aria-label","getTrad","defaultMessage","onCheckedChange","e","SortPicker","onChangeSort","Filters","endActions","paddingTop","paddingBottom","IconButton","tag","ReactRouterLink","to","search","stringify","encode","label","Cog","onClick","LIST","List","GridIcon","SearchInput","trackedEvent","trackedEventDetails","Content","BulkActions","onSuccess","EmptyOrNoPermissions","onActionClick","TableList","indeterminate","onChangeFolder","folderID","onEditAsset","onEditFolder","onSelectOne","onSelectAll","rows","shouldDisableBulkSelect","sortQuery","FolderGridList","title","count","selectedFolders","filter","isSelected","find","url","Grid","Item","col","direction","alignItems","FolderCard","ref","ariaLabel","startAction","FolderCardCheckbox","data-testid","cardActions","Pencil","FolderCardBody","FolderCardBodyAction","Flex","maxWidth","fontWeight","textColor","ellipsis","VisuallyHidden","variant","children","filesCount","files","Divider","AssetGridList","onSelectAsset","selectedAssets","Pagination","PageSize","Links","AIUploadModal","open","onClose","folderId","Number","UploadAssetDialog","trackedLocation","EditFolderDialog","parentFolderId","EditAssetDialog","editedAsset"],"mappings":"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"}
|
|
@@ -71,7 +71,12 @@ const SettingsPage = ()=>{
|
|
|
71
71
|
});
|
|
72
72
|
},
|
|
73
73
|
onError (err) {
|
|
74
|
-
|
|
74
|
+
toggleNotification({
|
|
75
|
+
type: 'danger',
|
|
76
|
+
message: err.message || formatMessage({
|
|
77
|
+
id: 'notification.error'
|
|
78
|
+
})
|
|
79
|
+
});
|
|
75
80
|
}
|
|
76
81
|
});
|
|
77
82
|
const handleSubmit = async (e)=>{
|
|
@@ -187,15 +192,15 @@ const SettingsPage = ()=>{
|
|
|
187
192
|
justifyContent: 'center',
|
|
188
193
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Root, {
|
|
189
194
|
name: "aiMetadata",
|
|
190
|
-
|
|
195
|
+
minWidth: "200px",
|
|
191
196
|
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Toggle, {
|
|
192
197
|
checked: modifiedData?.aiMetadata,
|
|
193
198
|
offLabel: formatMessage({
|
|
194
|
-
id: 'app.components.ToggleCheckbox.
|
|
199
|
+
id: 'app.components.ToggleCheckbox.disabled-label',
|
|
195
200
|
defaultMessage: 'Disabled'
|
|
196
201
|
}),
|
|
197
202
|
onLabel: formatMessage({
|
|
198
|
-
id: 'app.components.ToggleCheckbox.
|
|
203
|
+
id: 'app.components.ToggleCheckbox.enabled-label',
|
|
199
204
|
defaultMessage: 'Enabled'
|
|
200
205
|
}),
|
|
201
206
|
onChange: (e)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPage.js","sources":["../../../../admin/src/pages/SettingsPage/SettingsPage.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, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check, Sparkle } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\n\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { useSettings } from '../../hooks/useSettings';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useSettings();\n const isAIAvailable = useAIAvailability();\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n console.error(err);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Library',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {isAIAvailable && (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={6}>\n <Grid.Item col={8} s={12} direction=\"column\" alignItems=\"stretch\">\n <Flex gap={2}>\n <Box color=\"alternative700\">\n <Sparkle />\n </Box>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.label'),\n defaultMessage:\n 'Generate AI captions and alt texts automatically on upload!',\n })}\n </Typography>\n </Flex>\n <Flex paddingTop={1}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.description'),\n defaultMessage:\n 'Enable this feature to save time, optimize your SEO and increase accessibility by letting our AI generate captions and alternative texts for you.',\n })}\n </Typography>\n </Flex>\n </Grid.Item>\n <Grid.Item\n col={4}\n s={12}\n direction=\"column\"\n alignItems=\"end\"\n justifyContent={'center'}\n >\n <Field.Root name=\"aiMetadata\" width={'158px'}>\n <Toggle\n checked={modifiedData?.aiMetadata}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Disabled',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'Enabled',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'aiMetadata', value: e.target.checked },\n });\n }}\n />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n )}\n\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["SettingsPage","formatMessage","useIntl","toggleNotification","useNotification","put","useFetchClient","initialData","modifiedData","dispatch","React","useReducer","reducer","initialState","init","data","isLoading","refetch","useSettings","isAIAvailable","useAIAvailability","useEffect","type","isSaveButtonDisabled","isEqual","mutateAsync","isSubmitting","useMutation","body","onSuccess","message","id","onError","err","console","error","handleSubmit","e","preventDefault","handleChange","target","name","value","keys","_jsx","Page","Loading","_jsxs","Main","tabIndex","Title","getTrad","defaultMessage","form","onSubmit","Layouts","Header","title","primaryAction","Button","disabled","loading","startIcon","Check","size","subtitle","Content","Root","Flex","direction","alignItems","gap","Box","background","padding","shadow","hasRadius","Grid","Item","col","s","color","Sparkle","Typography","variant","tag","paddingTop","textColor","justifyContent","Field","width","Toggle","checked","aiMetadata","offLabel","onLabel","onChange","hint","Label","responsiveDimensions","Hint","sizeOptimization","autoOrientation","ProtectedSettingsPage","Protect","permissions","PERMISSIONS","settings"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsPage.js","sources":["../../../../admin/src/pages/SettingsPage/SettingsPage.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, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check, Sparkle } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\n\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { useSettings } from '../../hooks/useSettings';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useSettings();\n const isAIAvailable = useAIAvailability();\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err: any) {\n toggleNotification({\n type: 'danger',\n message: err.message || formatMessage({ id: 'notification.error' }),\n });\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Library',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {isAIAvailable && (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={6}>\n <Grid.Item col={8} s={12} direction=\"column\" alignItems=\"stretch\">\n <Flex gap={2}>\n <Box color=\"alternative700\">\n <Sparkle />\n </Box>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.label'),\n defaultMessage:\n 'Generate AI captions and alt texts automatically on upload!',\n })}\n </Typography>\n </Flex>\n <Flex paddingTop={1}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.description'),\n defaultMessage:\n 'Enable this feature to save time, optimize your SEO and increase accessibility by letting our AI generate captions and alternative texts for you.',\n })}\n </Typography>\n </Flex>\n </Grid.Item>\n <Grid.Item\n col={4}\n s={12}\n direction=\"column\"\n alignItems=\"end\"\n justifyContent={'center'}\n >\n <Field.Root name=\"aiMetadata\" minWidth=\"200px\">\n <Toggle\n checked={modifiedData?.aiMetadata}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.disabled-label',\n defaultMessage: 'Disabled',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.enabled-label',\n defaultMessage: 'Enabled',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'aiMetadata', value: e.target.checked },\n });\n }}\n />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n )}\n\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["SettingsPage","formatMessage","useIntl","toggleNotification","useNotification","put","useFetchClient","initialData","modifiedData","dispatch","React","useReducer","reducer","initialState","init","data","isLoading","refetch","useSettings","isAIAvailable","useAIAvailability","useEffect","type","isSaveButtonDisabled","isEqual","mutateAsync","isSubmitting","useMutation","body","onSuccess","message","id","onError","err","handleSubmit","e","preventDefault","handleChange","target","name","value","keys","_jsx","Page","Loading","_jsxs","Main","tabIndex","Title","getTrad","defaultMessage","form","onSubmit","Layouts","Header","title","primaryAction","Button","disabled","loading","startIcon","Check","size","subtitle","Content","Root","Flex","direction","alignItems","gap","Box","background","padding","shadow","hasRadius","Grid","Item","col","s","color","Sparkle","Typography","variant","tag","paddingTop","textColor","justifyContent","Field","minWidth","Toggle","checked","aiMetadata","offLabel","onLabel","onChange","hint","Label","responsiveDimensions","Hint","sizeOptimization","autoOrientation","ProtectedSettingsPage","Protect","permissions","PERMISSIONS","settings"],"mappings":"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"}
|
|
@@ -50,7 +50,12 @@ const SettingsPage = ()=>{
|
|
|
50
50
|
});
|
|
51
51
|
},
|
|
52
52
|
onError (err) {
|
|
53
|
-
|
|
53
|
+
toggleNotification({
|
|
54
|
+
type: 'danger',
|
|
55
|
+
message: err.message || formatMessage({
|
|
56
|
+
id: 'notification.error'
|
|
57
|
+
})
|
|
58
|
+
});
|
|
54
59
|
}
|
|
55
60
|
});
|
|
56
61
|
const handleSubmit = async (e)=>{
|
|
@@ -166,15 +171,15 @@ const SettingsPage = ()=>{
|
|
|
166
171
|
justifyContent: 'center',
|
|
167
172
|
children: /*#__PURE__*/ jsx(Field.Root, {
|
|
168
173
|
name: "aiMetadata",
|
|
169
|
-
|
|
174
|
+
minWidth: "200px",
|
|
170
175
|
children: /*#__PURE__*/ jsx(Toggle, {
|
|
171
176
|
checked: modifiedData?.aiMetadata,
|
|
172
177
|
offLabel: formatMessage({
|
|
173
|
-
id: 'app.components.ToggleCheckbox.
|
|
178
|
+
id: 'app.components.ToggleCheckbox.disabled-label',
|
|
174
179
|
defaultMessage: 'Disabled'
|
|
175
180
|
}),
|
|
176
181
|
onLabel: formatMessage({
|
|
177
|
-
id: 'app.components.ToggleCheckbox.
|
|
182
|
+
id: 'app.components.ToggleCheckbox.enabled-label',
|
|
178
183
|
defaultMessage: 'Enabled'
|
|
179
184
|
}),
|
|
180
185
|
onChange: (e)=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPage.mjs","sources":["../../../../admin/src/pages/SettingsPage/SettingsPage.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, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check, Sparkle } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\n\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { useSettings } from '../../hooks/useSettings';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useSettings();\n const isAIAvailable = useAIAvailability();\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n console.error(err);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Library',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {isAIAvailable && (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={6}>\n <Grid.Item col={8} s={12} direction=\"column\" alignItems=\"stretch\">\n <Flex gap={2}>\n <Box color=\"alternative700\">\n <Sparkle />\n </Box>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.label'),\n defaultMessage:\n 'Generate AI captions and alt texts automatically on upload!',\n })}\n </Typography>\n </Flex>\n <Flex paddingTop={1}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.description'),\n defaultMessage:\n 'Enable this feature to save time, optimize your SEO and increase accessibility by letting our AI generate captions and alternative texts for you.',\n })}\n </Typography>\n </Flex>\n </Grid.Item>\n <Grid.Item\n col={4}\n s={12}\n direction=\"column\"\n alignItems=\"end\"\n justifyContent={'center'}\n >\n <Field.Root name=\"aiMetadata\" width={'158px'}>\n <Toggle\n checked={modifiedData?.aiMetadata}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Disabled',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'Enabled',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'aiMetadata', value: e.target.checked },\n });\n }}\n />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n )}\n\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["SettingsPage","formatMessage","useIntl","toggleNotification","useNotification","put","useFetchClient","initialData","modifiedData","dispatch","React","useReducer","reducer","initialState","init","data","isLoading","refetch","useSettings","isAIAvailable","useAIAvailability","useEffect","type","isSaveButtonDisabled","isEqual","mutateAsync","isSubmitting","useMutation","body","onSuccess","message","id","onError","err","console","error","handleSubmit","e","preventDefault","handleChange","target","name","value","keys","_jsx","Page","Loading","_jsxs","Main","tabIndex","Title","getTrad","defaultMessage","form","onSubmit","Layouts","Header","title","primaryAction","Button","disabled","loading","startIcon","Check","size","subtitle","Content","Root","Flex","direction","alignItems","gap","Box","background","padding","shadow","hasRadius","Grid","Item","col","s","color","Sparkle","Typography","variant","tag","paddingTop","textColor","justifyContent","Field","width","Toggle","checked","aiMetadata","offLabel","onLabel","onChange","hint","Label","responsiveDimensions","Hint","sizeOptimization","autoOrientation","ProtectedSettingsPage","Protect","permissions","PERMISSIONS","settings"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;MAqBaA,YAAe,GAAA,IAAA;IAC1B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,GAAG,EAAE,GAAGC,cAAAA,EAAAA;AAEhB,IAAA,MAAM,CAAC,EAAEC,WAAW,EAAEC,YAAY,EAAE,EAAEC,QAAAA,CAAS,GAAGC,KAAAA,CAAMC,UAAU,CAACC,SAASC,YAAcC,EAAAA,IAAAA,CAAAA;AAE1F,IAAA,MAAM,EAAEC,IAAI,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAGC,WAAAA,EAAAA;AACrC,IAAA,MAAMC,aAAgBC,GAAAA,iBAAAA,EAAAA;AAEtBV,IAAAA,KAAAA,CAAMW,SAAS,CAAC,IAAA;AACd,QAAA,IAAIN,IAAM,EAAA;YACRN,QAAS,CAAA;gBACPa,IAAM,EAAA,oBAAA;AACNP,gBAAAA;AACF,aAAA,CAAA;AACF;KACC,EAAA;AAACA,QAAAA;AAAK,KAAA,CAAA;IAET,MAAMQ,oBAAAA,GAAuBC,QAAQjB,WAAaC,EAAAA,YAAAA,CAAAA;IAElD,MAAM,EAAEiB,WAAW,EAAET,SAAAA,EAAWU,YAAY,EAAE,GAAGC,YAK/C,OAAOC,IAAAA,GAAAA;AACL,QAAA,MAAM,EAAEb,IAAI,EAAE,GAAG,MAAMV,IAAI,kBAAoBuB,EAAAA,IAAAA,CAAAA;QAE/C,OAAOb,IAAAA;KAET,EAAA;AACEc,QAAAA,SAAAA,CAAAA,GAAAA;AACEZ,YAAAA,OAAAA,EAAAA;YAEAd,kBAAmB,CAAA;gBACjBmB,IAAM,EAAA,SAAA;AACNQ,gBAAAA,OAAAA,EAAS7B,aAAc,CAAA;oBAAE8B,EAAI,EAAA;AAAmC,iBAAA;AAClE,aAAA,CAAA;AACF,SAAA;AACAC,QAAAA,OAAAA,CAAAA,CAAQC,GAAG,EAAA;AACTC,YAAAA,OAAAA,CAAQC,KAAK,CAACF,GAAAA,CAAAA;AAChB;AACF,KAAA,CAAA;AAGF,IAAA,MAAMG,eAAe,OAAOC,CAAAA,GAAAA;AAC1BA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAEhB,QAAA,IAAIf,oBAAsB,EAAA;AACxB,YAAA;AACF;AAEA,QAAA,MAAME,WAAYjB,CAAAA,YAAAA,CAAAA;AACpB,KAAA;IAEA,MAAM+B,YAAAA,GAAe,CAAC,EACpBC,MAAAA,EAAQ,EAAEC,IAAI,EAAEC,KAAK,EAAE,EAGxB,GAAA;QACCjC,QAAS,CAAA;YACPa,IAAM,EAAA,WAAA;YACNqB,IAAMF,EAAAA,IAAAA;AACNC,YAAAA;AACF,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,IAAI1B,SAAW,EAAA;QACb,qBAAO4B,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,qBACEC,IAAA,CAACF,KAAKG,IAAI,EAAA;AAACC,QAAAA,QAAAA,EAAU,CAAC,CAAA;;AACpB,0BAAAL,GAAA,CAACC,KAAKK,KAAK,EAAA;0BACRjD,aAAc,CAAA;AACb8B,oBAAAA,EAAAA,EAAIoB,OAAQ,CAAA,YAAA,CAAA;oBACZC,cAAgB,EAAA;AAClB,iBAAA;;0BAEFL,IAACM,CAAAA,MAAAA,EAAAA;gBAAKC,QAAUlB,EAAAA,YAAAA;;AACd,kCAAAQ,GAAA,CAACW,QAAQC,MAAM,EAAA;AACbC,wBAAAA,KAAAA,EAAOxD,aAAc,CAAA;AACnB8B,4BAAAA,EAAAA,EAAIoB,OAAQ,CAAA,uBAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA,CAAA;AACAM,wBAAAA,aAAAA,gBACEd,GAACe,CAAAA,MAAAA,EAAAA;4BACCC,QAAUrC,EAAAA,oBAAAA;4BACVsC,OAASnC,EAAAA,YAAAA;4BACTJ,IAAK,EAAA,QAAA;AACLwC,4BAAAA,SAAAA,gBAAWlB,GAACmB,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;4BACZC,IAAK,EAAA,GAAA;sCAEJ/D,aAAc,CAAA;gCACb8B,EAAI,EAAA,aAAA;gCACJqB,cAAgB,EAAA;AAClB,6BAAA;;AAGJa,wBAAAA,QAAAA,EAAUhE,aAAc,CAAA;AACtB8B,4BAAAA,EAAAA,EAAIoB,OAAQ,CAAA,2BAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA;;AAEF,kCAAAR,GAAA,CAACW,QAAQW,OAAO,EAAA;gDACdtB,GAAA,CAACW,QAAQY,IAAI,EAAA;AACX,4BAAA,QAAA,gBAAApB,IAACqB,CAAAA,IAAAA,EAAAA;gCAAKC,SAAU,EAAA,QAAA;gCAASC,UAAW,EAAA,SAAA;gCAAUC,GAAK,EAAA,CAAA;;AAChDpD,oCAAAA,aAAAA,kBACCyB,GAAC4B,CAAAA,GAAAA,EAAAA;wCAAIC,UAAW,EAAA,UAAA;wCAAWC,OAAS,EAAA,CAAA;wCAAGC,MAAO,EAAA,cAAA;wCAAeC,SAAS,EAAA,IAAA;AACpE,wCAAA,QAAA,gBAAAhC,GAACwB,CAAAA,IAAAA,EAAAA;4CAAKC,SAAU,EAAA,QAAA;4CAASC,UAAW,EAAA,SAAA;4CAAUC,GAAK,EAAA,CAAA;oEACjDxB,IAAA,CAAC8B,KAAKV,IAAI,EAAA;gDAACI,GAAK,EAAA,CAAA;;AACd,kEAAAxB,IAAA,CAAC8B,KAAKC,IAAI,EAAA;wDAACC,GAAK,EAAA,CAAA;wDAAGC,CAAG,EAAA,EAAA;wDAAIX,SAAU,EAAA,QAAA;wDAASC,UAAW,EAAA,SAAA;;0EACtDvB,IAACqB,CAAAA,IAAAA,EAAAA;gEAAKG,GAAK,EAAA,CAAA;;kFACT3B,GAAC4B,CAAAA,GAAAA,EAAAA;wEAAIS,KAAM,EAAA,gBAAA;AACT,wEAAA,QAAA,gBAAArC,GAACsC,CAAAA,OAAAA,EAAAA,EAAAA;;kFAEHtC,GAACuC,CAAAA,UAAAA,EAAAA;wEAAWC,OAAQ,EAAA,OAAA;wEAAQC,GAAI,EAAA,IAAA;kFAC7BpF,aAAc,CAAA;AACb8B,4EAAAA,EAAAA,EAAIoB,OAAQ,CAAA,gCAAA,CAAA;4EACZC,cACE,EAAA;AACJ,yEAAA;;;;0EAGJR,GAACwB,CAAAA,IAAAA,EAAAA;gEAAKkB,UAAY,EAAA,CAAA;AAChB,gEAAA,QAAA,gBAAA1C,GAACuC,CAAAA,UAAAA,EAAAA;oEAAWC,OAAQ,EAAA,IAAA;oEAAKG,SAAU,EAAA,YAAA;8EAChCtF,aAAc,CAAA;AACb8B,wEAAAA,EAAAA,EAAIoB,OAAQ,CAAA,sCAAA,CAAA;wEACZC,cACE,EAAA;AACJ,qEAAA;;;;;AAIN,kEAAAR,GAAA,CAACiC,KAAKC,IAAI,EAAA;wDACRC,GAAK,EAAA,CAAA;wDACLC,CAAG,EAAA,EAAA;wDACHX,SAAU,EAAA,QAAA;wDACVC,UAAW,EAAA,KAAA;wDACXkB,cAAgB,EAAA,QAAA;gFAEhB5C,GAAA,CAAC6C,MAAMtB,IAAI,EAAA;4DAAC1B,IAAK,EAAA,YAAA;4DAAaiD,KAAO,EAAA,OAAA;AACnC,4DAAA,QAAA,gBAAA9C,GAAC+C,CAAAA,MAAAA,EAAAA;AACCC,gEAAAA,OAAAA,EAASpF,YAAcqF,EAAAA,UAAAA;AACvBC,gEAAAA,QAAAA,EAAU7F,aAAc,CAAA;oEACtB8B,EAAI,EAAA,yCAAA;oEACJqB,cAAgB,EAAA;AAClB,iEAAA,CAAA;AACA2C,gEAAAA,OAAAA,EAAS9F,aAAc,CAAA;oEACrB8B,EAAI,EAAA,wCAAA;oEACJqB,cAAgB,EAAA;AAClB,iEAAA,CAAA;AACA4C,gEAAAA,QAAAA,EAAU,CAAC3D,CAAAA,GAAAA;oEACTE,YAAa,CAAA;wEACXC,MAAQ,EAAA;4EAAEC,IAAM,EAAA,YAAA;4EAAcC,KAAOL,EAAAA,CAAAA,CAAEG,MAAM,CAACoD;AAAQ;AACxD,qEAAA,CAAA;AACF;;;;;;;;kDASdhD,GAAC4B,CAAAA,GAAAA,EAAAA;wCAAIC,UAAW,EAAA,UAAA;wCAAWC,OAAS,EAAA,CAAA;wCAAGC,MAAO,EAAA,cAAA;wCAAeC,SAAS,EAAA,IAAA;AACpE,wCAAA,QAAA,gBAAA7B,IAACqB,CAAAA,IAAAA,EAAAA;4CAAKC,SAAU,EAAA,QAAA;4CAASC,UAAW,EAAA,SAAA;4CAAUC,GAAK,EAAA,CAAA;;8DACjD3B,GAACwB,CAAAA,IAAAA,EAAAA;AACC,oDAAA,QAAA,gBAAAxB,GAACuC,CAAAA,UAAAA,EAAAA;wDAAWC,OAAQ,EAAA,OAAA;wDAAQC,GAAI,EAAA,IAAA;kEAC7BpF,aAAc,CAAA;AACb8B,4DAAAA,EAAAA,EAAIoB,OAAQ,CAAA,qBAAA,CAAA;4DACZC,cAAgB,EAAA;AAClB,yDAAA;;;AAGJ,8DAAAL,IAAA,CAAC8B,KAAKV,IAAI,EAAA;oDAACI,GAAK,EAAA,CAAA;;AACd,sEAAA3B,GAAA,CAACiC,KAAKC,IAAI,EAAA;4DAACC,GAAK,EAAA,CAAA;4DAAGC,CAAG,EAAA,EAAA;4DAAIX,SAAU,EAAA,QAAA;4DAASC,UAAW,EAAA,SAAA;oFACtDvB,IAAA,CAAC0C,MAAMtB,IAAI,EAAA;AACT8B,gEAAAA,IAAAA,EAAMhG,aAAc,CAAA;AAClB8B,oEAAAA,EAAAA,EAAIoB,OAAQ,CAAA,gDAAA,CAAA;oEACZC,cACE,EAAA;AACJ,iEAAA,CAAA;gEACAX,IAAK,EAAA,sBAAA;;AAEL,kFAAAG,GAAA,CAAC6C,MAAMS,KAAK,EAAA;kFACTjG,aAAc,CAAA;AACb8B,4EAAAA,EAAAA,EAAIoB,OAAQ,CAAA,0CAAA,CAAA;4EACZC,cAAgB,EAAA;AAClB,yEAAA;;kFAEFR,GAAC+C,CAAAA,MAAAA,EAAAA;AACCC,wEAAAA,OAAAA,EAASpF,YAAc2F,EAAAA,oBAAAA;AACvBL,wEAAAA,QAAAA,EAAU7F,aAAc,CAAA;4EACtB8B,EAAI,EAAA,yCAAA;4EACJqB,cAAgB,EAAA;AAClB,yEAAA,CAAA;AACA2C,wEAAAA,OAAAA,EAAS9F,aAAc,CAAA;4EACrB8B,EAAI,EAAA,wCAAA;4EACJqB,cAAgB,EAAA;AAClB,yEAAA,CAAA;AACA4C,wEAAAA,QAAAA,EAAU,CAAC3D,CAAAA,GAAAA;4EACTE,YAAa,CAAA;gFACXC,MAAQ,EAAA;oFAAEC,IAAM,EAAA,sBAAA;oFAAwBC,KAAOL,EAAAA,CAAAA,CAAEG,MAAM,CAACoD;AAAQ;AAClE,6EAAA,CAAA;AACF;;AAEF,kFAAAhD,GAAA,CAAC6C,MAAMW,IAAI,EAAA,EAAA;;;;AAGf,sEAAAxD,GAAA,CAACiC,KAAKC,IAAI,EAAA;4DAACC,GAAK,EAAA,CAAA;4DAAGC,CAAG,EAAA,EAAA;4DAAIX,SAAU,EAAA,QAAA;4DAASC,UAAW,EAAA,SAAA;oFACtDvB,IAAA,CAAC0C,MAAMtB,IAAI,EAAA;AACT8B,gEAAAA,IAAAA,EAAMhG,aAAc,CAAA;AAClB8B,oEAAAA,EAAAA,EAAIoB,OAAQ,CAAA,4CAAA,CAAA;oEACZC,cACE,EAAA;AACJ,iEAAA,CAAA;gEACAX,IAAK,EAAA,kBAAA;;AAEL,kFAAAG,GAAA,CAAC6C,MAAMS,KAAK,EAAA;kFACTjG,aAAc,CAAA;AACb8B,4EAAAA,EAAAA,EAAIoB,OAAQ,CAAA,sCAAA,CAAA;4EACZC,cAAgB,EAAA;AAClB,yEAAA;;kFAEFR,GAAC+C,CAAAA,MAAAA,EAAAA;AACCC,wEAAAA,OAAAA,EAASpF,YAAc6F,EAAAA,gBAAAA;AACvBP,wEAAAA,QAAAA,EAAU7F,aAAc,CAAA;4EACtB8B,EAAI,EAAA,yCAAA;4EACJqB,cAAgB,EAAA;AAClB,yEAAA,CAAA;AACA2C,wEAAAA,OAAAA,EAAS9F,aAAc,CAAA;4EACrB8B,EAAI,EAAA,wCAAA;4EACJqB,cAAgB,EAAA;AAClB,yEAAA,CAAA;AACA4C,wEAAAA,QAAAA,EAAU,CAAC3D,CAAAA,GAAAA;4EACTE,YAAa,CAAA;gFACXC,MAAQ,EAAA;oFAAEC,IAAM,EAAA,kBAAA;oFAAoBC,KAAOL,EAAAA,CAAAA,CAAEG,MAAM,CAACoD;AAAQ;AAC9D,6EAAA,CAAA;AACF;;AAEF,kFAAAhD,GAAA,CAAC6C,MAAMW,IAAI,EAAA,EAAA;;;;AAGf,sEAAAxD,GAAA,CAACiC,KAAKC,IAAI,EAAA;4DAACC,GAAK,EAAA,CAAA;4DAAGC,CAAG,EAAA,EAAA;4DAAIX,SAAU,EAAA,QAAA;4DAASC,UAAW,EAAA,SAAA;oFACtDvB,IAAA,CAAC0C,MAAMtB,IAAI,EAAA;AACT8B,gEAAAA,IAAAA,EAAMhG,aAAc,CAAA;AAClB8B,oEAAAA,EAAAA,EAAIoB,OAAQ,CAAA,2CAAA,CAAA;oEACZC,cACE,EAAA;AACJ,iEAAA,CAAA;gEACAX,IAAK,EAAA,iBAAA;;AAEL,kFAAAG,GAAA,CAAC6C,MAAMS,KAAK,EAAA;kFACTjG,aAAc,CAAA;AACb8B,4EAAAA,EAAAA,EAAIoB,OAAQ,CAAA,qCAAA,CAAA;4EACZC,cAAgB,EAAA;AAClB,yEAAA;;kFAEFR,GAAC+C,CAAAA,MAAAA,EAAAA;AACCC,wEAAAA,OAAAA,EAASpF,YAAc8F,EAAAA,eAAAA;AACvBR,wEAAAA,QAAAA,EAAU7F,aAAc,CAAA;4EACtB8B,EAAI,EAAA,yCAAA;4EACJqB,cAAgB,EAAA;AAClB,yEAAA,CAAA;AACA2C,wEAAAA,OAAAA,EAAS9F,aAAc,CAAA;4EACrB8B,EAAI,EAAA,wCAAA;4EACJqB,cAAgB,EAAA;AAClB,yEAAA,CAAA;AACA4C,wEAAAA,QAAAA,EAAU,CAAC3D,CAAAA,GAAAA;4EACTE,YAAa,CAAA;gFACXC,MAAQ,EAAA;oFAAEC,IAAM,EAAA,iBAAA;oFAAmBC,KAAOL,EAAAA,CAAAA,CAAEG,MAAM,CAACoD;AAAQ;AAC7D,6EAAA,CAAA;AACF;;AAEF,kFAAAhD,GAAA,CAAC6C,MAAMW,IAAI,EAAA,EAAA;;;;;;;;;;;;;;;;;AAYnC;AAEaG,MAAAA,qBAAAA,GAAwB,kBACnC3D,GAAA,CAACC,KAAK2D,OAAO,EAAA;AAACC,QAAAA,WAAAA,EAAaC,YAAYC,QAAQ;AAC7C,QAAA,QAAA,gBAAA/D,GAAC5C,CAAAA,YAAAA,EAAAA,EAAAA;AAEH,KAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"SettingsPage.mjs","sources":["../../../../admin/src/pages/SettingsPage/SettingsPage.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, useNotification, useFetchClient, Layouts } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { Box, Button, Flex, Grid, Toggle, Typography, Field } from '@strapi/design-system';\nimport { Check, Sparkle } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation } from 'react-query';\n\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { useSettings } from '../../hooks/useSettings';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { put } = useFetchClient();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useSettings();\n const isAIAvailable = useAIAvailability();\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err: any) {\n toggleNotification({\n type: 'danger',\n message: err.message || formatMessage({ id: 'notification.error' }),\n });\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Library',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {isAIAvailable && (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={6}>\n <Grid.Item col={8} s={12} direction=\"column\" alignItems=\"stretch\">\n <Flex gap={2}>\n <Box color=\"alternative700\">\n <Sparkle />\n </Box>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.label'),\n defaultMessage:\n 'Generate AI captions and alt texts automatically on upload!',\n })}\n </Typography>\n </Flex>\n <Flex paddingTop={1}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.description'),\n defaultMessage:\n 'Enable this feature to save time, optimize your SEO and increase accessibility by letting our AI generate captions and alternative texts for you.',\n })}\n </Typography>\n </Flex>\n </Grid.Item>\n <Grid.Item\n col={4}\n s={12}\n direction=\"column\"\n alignItems=\"end\"\n justifyContent={'center'}\n >\n <Field.Root name=\"aiMetadata\" minWidth=\"200px\">\n <Toggle\n checked={modifiedData?.aiMetadata}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.disabled-label',\n defaultMessage: 'Disabled',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.enabled-label',\n defaultMessage: 'Enabled',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'aiMetadata', value: e.target.checked },\n });\n }}\n />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n )}\n\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} s={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["SettingsPage","formatMessage","useIntl","toggleNotification","useNotification","put","useFetchClient","initialData","modifiedData","dispatch","React","useReducer","reducer","initialState","init","data","isLoading","refetch","useSettings","isAIAvailable","useAIAvailability","useEffect","type","isSaveButtonDisabled","isEqual","mutateAsync","isSubmitting","useMutation","body","onSuccess","message","id","onError","err","handleSubmit","e","preventDefault","handleChange","target","name","value","keys","_jsx","Page","Loading","_jsxs","Main","tabIndex","Title","getTrad","defaultMessage","form","onSubmit","Layouts","Header","title","primaryAction","Button","disabled","loading","startIcon","Check","size","subtitle","Content","Root","Flex","direction","alignItems","gap","Box","background","padding","shadow","hasRadius","Grid","Item","col","s","color","Sparkle","Typography","variant","tag","paddingTop","textColor","justifyContent","Field","minWidth","Toggle","checked","aiMetadata","offLabel","onLabel","onChange","hint","Label","responsiveDimensions","Hint","sizeOptimization","autoOrientation","ProtectedSettingsPage","Protect","permissions","PERMISSIONS","settings"],"mappings":"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"}
|
|
@@ -2,13 +2,15 @@ type TreeNode<T> = {
|
|
|
2
2
|
value: T;
|
|
3
3
|
children?: TreeNode<T>[];
|
|
4
4
|
label?: string;
|
|
5
|
+
path?: string;
|
|
5
6
|
};
|
|
6
7
|
export type FlattenedNode<T> = {
|
|
7
8
|
value: T;
|
|
8
9
|
parent?: T;
|
|
9
10
|
depth: number;
|
|
10
11
|
label?: string;
|
|
12
|
+
path?: string;
|
|
11
13
|
children?: TreeNode<T>[];
|
|
12
14
|
};
|
|
13
|
-
export declare function flattenTree<T>(tree: TreeNode<T>[], parent?: TreeNode<T> | null, depth?: number): FlattenedNode<T>[];
|
|
15
|
+
export declare function flattenTree<T>(tree: TreeNode<T>[], parent?: TreeNode<T> | null, depth?: number, path?: string): FlattenedNode<T>[];
|
|
14
16
|
export {};
|
|
@@ -15,7 +15,8 @@ const getFolderParents = (folders, currentFolderId)=>{
|
|
|
15
15
|
const parentToStore = flatFolders.find(({ value })=>value === parent);
|
|
16
16
|
parents.push({
|
|
17
17
|
id: parentToStore?.value,
|
|
18
|
-
label: parentToStore?.label
|
|
18
|
+
label: parentToStore?.label,
|
|
19
|
+
path: parentToStore?.path
|
|
19
20
|
});
|
|
20
21
|
parent = parentToStore?.parent;
|
|
21
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFolderParents.js","sources":["../../../admin/src/utils/getFolderParents.ts"],"sourcesContent":["import { flattenTree } from '../components/SelectTree/utils/flattenTree';\n\nimport type { FolderNode } from '../../../shared/contracts/folders';\n\ninterface FolderStructureValue extends Omit<FolderNode, 'children'> {\n value: string | number | null;\n children?: FolderStructureValue[];\n}\n\ntype Parents = { id?: number | string | null; label?: string; path?: string }[];\n\nexport const getFolderParents = (folders: FolderStructureValue[], currentFolderId: number) => {\n const parents: Parents = [];\n const flatFolders = flattenTree(folders);\n const currentFolder = flatFolders.find((folder) => folder.value === currentFolderId);\n\n if (!currentFolder) {\n return [];\n }\n\n let { parent } = currentFolder;\n\n while (parent !== undefined) {\n // eslint-disable-next-line no-loop-func\n const parentToStore = flatFolders.find(({ value }) => value === parent);\n parents.push({
|
|
1
|
+
{"version":3,"file":"getFolderParents.js","sources":["../../../admin/src/utils/getFolderParents.ts"],"sourcesContent":["import { flattenTree } from '../components/SelectTree/utils/flattenTree';\n\nimport type { FolderNode } from '../../../shared/contracts/folders';\n\ninterface FolderStructureValue extends Omit<FolderNode, 'children'> {\n value: string | number | null;\n children?: FolderStructureValue[];\n}\n\ntype Parents = { id?: number | string | null; label?: string; path?: string }[];\n\nexport const getFolderParents = (folders: FolderStructureValue[], currentFolderId: number) => {\n const parents: Parents = [];\n const flatFolders = flattenTree(folders);\n const currentFolder = flatFolders.find((folder) => folder.value === currentFolderId);\n\n if (!currentFolder) {\n return [];\n }\n\n let { parent } = currentFolder;\n\n while (parent !== undefined) {\n // eslint-disable-next-line no-loop-func\n const parentToStore = flatFolders.find(({ value }) => value === parent);\n parents.push({\n id: parentToStore?.value,\n label: parentToStore?.label,\n path: parentToStore?.path,\n });\n parent = parentToStore?.parent;\n }\n\n return parents.reverse();\n};\n"],"names":["getFolderParents","folders","currentFolderId","parents","flatFolders","flattenTree","currentFolder","find","folder","value","parent","undefined","parentToStore","push","id","label","path","reverse"],"mappings":";;;;AAWO,MAAMA,gBAAmB,GAAA,CAACC,OAAiCC,EAAAA,eAAAA,GAAAA;AAChE,IAAA,MAAMC,UAAmB,EAAE;AAC3B,IAAA,MAAMC,cAAcC,uBAAYJ,CAAAA,OAAAA,CAAAA;IAChC,MAAMK,aAAAA,GAAgBF,YAAYG,IAAI,CAAC,CAACC,MAAWA,GAAAA,MAAAA,CAAOC,KAAK,KAAKP,eAAAA,CAAAA;AAEpE,IAAA,IAAI,CAACI,aAAe,EAAA;AAClB,QAAA,OAAO,EAAE;AACX;IAEA,IAAI,EAAEI,MAAM,EAAE,GAAGJ,aAAAA;AAEjB,IAAA,MAAOI,WAAWC,SAAW,CAAA;;QAE3B,MAAMC,aAAAA,GAAgBR,YAAYG,IAAI,CAAC,CAAC,EAAEE,KAAK,EAAE,GAAKA,KAAUC,KAAAA,MAAAA,CAAAA;AAChEP,QAAAA,OAAAA,CAAQU,IAAI,CAAC;AACXC,YAAAA,EAAAA,EAAIF,aAAeH,EAAAA,KAAAA;AACnBM,YAAAA,KAAAA,EAAOH,aAAeG,EAAAA,KAAAA;AACtBC,YAAAA,IAAAA,EAAMJ,aAAeI,EAAAA;AACvB,SAAA,CAAA;AACAN,QAAAA,MAAAA,GAASE,aAAeF,EAAAA,MAAAA;AAC1B;AAEA,IAAA,OAAOP,QAAQc,OAAO,EAAA;AACxB;;;;"}
|
|
@@ -13,7 +13,8 @@ const getFolderParents = (folders, currentFolderId)=>{
|
|
|
13
13
|
const parentToStore = flatFolders.find(({ value })=>value === parent);
|
|
14
14
|
parents.push({
|
|
15
15
|
id: parentToStore?.value,
|
|
16
|
-
label: parentToStore?.label
|
|
16
|
+
label: parentToStore?.label,
|
|
17
|
+
path: parentToStore?.path
|
|
17
18
|
});
|
|
18
19
|
parent = parentToStore?.parent;
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getFolderParents.mjs","sources":["../../../admin/src/utils/getFolderParents.ts"],"sourcesContent":["import { flattenTree } from '../components/SelectTree/utils/flattenTree';\n\nimport type { FolderNode } from '../../../shared/contracts/folders';\n\ninterface FolderStructureValue extends Omit<FolderNode, 'children'> {\n value: string | number | null;\n children?: FolderStructureValue[];\n}\n\ntype Parents = { id?: number | string | null; label?: string; path?: string }[];\n\nexport const getFolderParents = (folders: FolderStructureValue[], currentFolderId: number) => {\n const parents: Parents = [];\n const flatFolders = flattenTree(folders);\n const currentFolder = flatFolders.find((folder) => folder.value === currentFolderId);\n\n if (!currentFolder) {\n return [];\n }\n\n let { parent } = currentFolder;\n\n while (parent !== undefined) {\n // eslint-disable-next-line no-loop-func\n const parentToStore = flatFolders.find(({ value }) => value === parent);\n parents.push({
|
|
1
|
+
{"version":3,"file":"getFolderParents.mjs","sources":["../../../admin/src/utils/getFolderParents.ts"],"sourcesContent":["import { flattenTree } from '../components/SelectTree/utils/flattenTree';\n\nimport type { FolderNode } from '../../../shared/contracts/folders';\n\ninterface FolderStructureValue extends Omit<FolderNode, 'children'> {\n value: string | number | null;\n children?: FolderStructureValue[];\n}\n\ntype Parents = { id?: number | string | null; label?: string; path?: string }[];\n\nexport const getFolderParents = (folders: FolderStructureValue[], currentFolderId: number) => {\n const parents: Parents = [];\n const flatFolders = flattenTree(folders);\n const currentFolder = flatFolders.find((folder) => folder.value === currentFolderId);\n\n if (!currentFolder) {\n return [];\n }\n\n let { parent } = currentFolder;\n\n while (parent !== undefined) {\n // eslint-disable-next-line no-loop-func\n const parentToStore = flatFolders.find(({ value }) => value === parent);\n parents.push({\n id: parentToStore?.value,\n label: parentToStore?.label,\n path: parentToStore?.path,\n });\n parent = parentToStore?.parent;\n }\n\n return parents.reverse();\n};\n"],"names":["getFolderParents","folders","currentFolderId","parents","flatFolders","flattenTree","currentFolder","find","folder","value","parent","undefined","parentToStore","push","id","label","path","reverse"],"mappings":";;AAWO,MAAMA,gBAAmB,GAAA,CAACC,OAAiCC,EAAAA,eAAAA,GAAAA;AAChE,IAAA,MAAMC,UAAmB,EAAE;AAC3B,IAAA,MAAMC,cAAcC,WAAYJ,CAAAA,OAAAA,CAAAA;IAChC,MAAMK,aAAAA,GAAgBF,YAAYG,IAAI,CAAC,CAACC,MAAWA,GAAAA,MAAAA,CAAOC,KAAK,KAAKP,eAAAA,CAAAA;AAEpE,IAAA,IAAI,CAACI,aAAe,EAAA;AAClB,QAAA,OAAO,EAAE;AACX;IAEA,IAAI,EAAEI,MAAM,EAAE,GAAGJ,aAAAA;AAEjB,IAAA,MAAOI,WAAWC,SAAW,CAAA;;QAE3B,MAAMC,aAAAA,GAAgBR,YAAYG,IAAI,CAAC,CAAC,EAAEE,KAAK,EAAE,GAAKA,KAAUC,KAAAA,MAAAA,CAAAA;AAChEP,QAAAA,OAAAA,CAAQU,IAAI,CAAC;AACXC,YAAAA,EAAAA,EAAIF,aAAeH,EAAAA,KAAAA;AACnBM,YAAAA,KAAAA,EAAOH,aAAeG,EAAAA,KAAAA;AACtBC,YAAAA,IAAAA,EAAMJ,aAAeI,EAAAA;AACvB,SAAA,CAAA;AACAN,QAAAA,MAAAA,GAASE,aAAeF,EAAAA,MAAAA;AAC1B;AAEA,IAAA,OAAOP,QAAQc,OAAO,EAAA;AACxB;;;;"}
|