@strapi/upload 5.28.0 → 5.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/admin/ai/components/AIAssetCard.js +4 -2
  2. package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
  3. package/dist/admin/ai/components/AIAssetCard.mjs +4 -2
  4. package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
  5. package/dist/admin/ai/components/AIUploadModal.js +2 -1
  6. package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
  7. package/dist/admin/ai/components/AIUploadModal.mjs +2 -1
  8. package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
  9. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +2 -2
  10. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
  11. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +1 -1
  12. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
  13. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +8 -5
  14. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  15. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +7 -4
  16. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  17. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +2 -2
  18. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
  19. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +1 -1
  20. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
  21. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +2 -2
  22. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
  23. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +1 -1
  24. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
  25. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +2 -1
  26. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
  27. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs +2 -1
  28. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -1
  29. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +2 -2
  30. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
  31. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +1 -1
  32. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
  33. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +2 -2
  34. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
  35. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +1 -1
  36. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
  37. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +2 -2
  38. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
  39. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +1 -1
  40. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
  41. package/dist/admin/hooks/useConfig.js +2 -1
  42. package/dist/admin/hooks/useConfig.js.map +1 -1
  43. package/dist/admin/hooks/useConfig.mjs +2 -1
  44. package/dist/admin/hooks/useConfig.mjs.map +1 -1
  45. package/dist/admin/hooks/useModalQueryParams.js +2 -2
  46. package/dist/admin/hooks/useModalQueryParams.js.map +1 -1
  47. package/dist/admin/hooks/useModalQueryParams.mjs +1 -1
  48. package/dist/admin/hooks/useModalQueryParams.mjs.map +1 -1
  49. package/dist/admin/hooks/useTracking.js +21 -0
  50. package/dist/admin/hooks/useTracking.js.map +1 -0
  51. package/dist/admin/hooks/useTracking.mjs +19 -0
  52. package/dist/admin/hooks/useTracking.mjs.map +1 -0
  53. package/dist/admin/package.json.js +5 -5
  54. package/dist/admin/package.json.mjs +5 -5
  55. package/dist/admin/pages/App/MediaLibrary/components/Filters.js +2 -1
  56. package/dist/admin/pages/App/MediaLibrary/components/Filters.js.map +1 -1
  57. package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs +2 -1
  58. package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs.map +1 -1
  59. package/dist/admin/pages/SettingsPage/SettingsPage.js +9 -4
  60. package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
  61. package/dist/admin/pages/SettingsPage/SettingsPage.mjs +9 -4
  62. package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
  63. package/dist/admin/src/hooks/useTracking.d.ts +4 -0
  64. package/dist/server/controllers/admin-folder-file.js +2 -2
  65. package/dist/server/controllers/admin-folder-file.js.map +1 -1
  66. package/dist/server/controllers/admin-folder-file.mjs +2 -2
  67. package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
  68. package/dist/server/controllers/admin-upload.js +9 -2
  69. package/dist/server/controllers/admin-upload.js.map +1 -1
  70. package/dist/server/controllers/admin-upload.mjs +9 -2
  71. package/dist/server/controllers/admin-upload.mjs.map +1 -1
  72. package/dist/server/services/metrics.js +11 -1
  73. package/dist/server/services/metrics.js.map +1 -1
  74. package/dist/server/services/metrics.mjs +11 -1
  75. package/dist/server/services/metrics.mjs.map +1 -1
  76. package/dist/server/services/upload.js +8 -8
  77. package/dist/server/services/upload.js.map +1 -1
  78. package/dist/server/services/upload.mjs +8 -8
  79. package/dist/server/services/upload.mjs.map +1 -1
  80. package/dist/server/services/weekly-metrics.js +3 -6
  81. package/dist/server/services/weekly-metrics.js.map +1 -1
  82. package/dist/server/services/weekly-metrics.mjs +3 -6
  83. package/dist/server/services/weekly-metrics.mjs.map +1 -1
  84. package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
  85. package/dist/server/src/index.d.ts +1 -1
  86. package/dist/server/src/services/index.d.ts +1 -1
  87. package/dist/server/src/services/metrics.d.ts +1 -0
  88. package/dist/server/src/services/metrics.d.ts.map +1 -1
  89. package/dist/server/src/services/upload.d.ts.map +1 -1
  90. package/dist/server/src/services/weekly-metrics.d.ts +0 -1
  91. package/dist/server/src/services/weekly-metrics.d.ts.map +1 -1
  92. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"AIUploadModal.mjs","sources":["../../../../admin/src/ai/components/AIUploadModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext, useTracking } from '@strapi/admin/strapi-admin';\nimport { Alert, Button, Flex, Modal } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n AddAssetStep,\n FileWithRawFile,\n} from '../../components/UploadAssetDialog/AddAssetStep/AddAssetStep';\nimport { AssetType } from '../../constants';\nimport { useBulkEdit } from '../../hooks/useBulkEdit';\nimport { useUpload } from '../../hooks/useUpload';\nimport { getTrad, typeFromMime } from '../../utils';\n\nimport { AIAssetCard, AIAssetCardSkeletons } from './AIAssetCard';\n\nimport type { File } from '../../../../shared/contracts/files';\n\n/* -------------------------------------------------------------------------------------------------\n * ModalBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n display: flex;\n justify-content: center;\n\n [data-radix-scroll-area-viewport] {\n padding-top: ${({ theme }) => theme.spaces[6]};\n padding-bottom: ${({ theme }) => theme.spaces[6]};\n padding-left: ${({ theme }) => theme.spaces[7]};\n padding-right: ${({ theme }) => theme.spaces[7]};\n }\n`;\n\nconst StyledAlert = styled(Alert)`\n & > button {\n display: none;\n }\n`;\n\nconst ModalContent = ({ onClose }: Pick<AIUploadModalProps, 'onClose'>) => {\n const { formatMessage } = useIntl();\n const state = useAIUploadModalContext('ModalContent', (s) => s.state);\n const dispatch = useAIUploadModalContext('ModalContent', (s) => s.dispatch);\n const folderId = useAIUploadModalContext('ModalContent', (s) => s.folderId);\n const { upload } = useUpload();\n const { edit, isLoading: isSaving } = useBulkEdit();\n const [isUploading, setIsUploading] = React.useState(false);\n const [uploadError, setUploadError] = React.useState<Error | null>(null);\n const { trackUsage } = useTracking();\n\n const handleCaptionChange = (assetId: number, caption: string) => {\n dispatch({\n type: 'set_uploaded_asset_caption',\n payload: { id: assetId, caption },\n });\n };\n\n const handleAltTextChange = (assetId: number, altText: string) => {\n dispatch({\n type: 'set_uploaded_asset_alt_text',\n payload: { id: assetId, altText },\n });\n };\n\n const resetState = () => {\n dispatch({ type: 'set_uploaded_assets', payload: [] });\n };\n\n const handleFinish = async () => {\n if (state.hasUnsavedChanges) {\n const assetsToUpdate = state.uploadedAssets.filter(\n (asset) => (asset.wasCaptionChanged || asset.wasAltTextChanged) && asset.file.id\n );\n\n if (assetsToUpdate.length > 0) {\n if (assetsToUpdate.some((asset) => asset.wasCaptionChanged)) {\n trackUsage('didEditAICaption');\n }\n\n if (assetsToUpdate.some((asset) => asset.wasAltTextChanged)) {\n trackUsage('didEditAIAlternativeText');\n }\n\n // Update assets\n const updates = assetsToUpdate.map((asset) => ({\n id: asset.file.id!,\n fileInfo: {\n name: asset.file.name,\n alternativeText: asset.file.alternativeText ?? null,\n caption: asset.file.caption ?? null,\n folder:\n typeof asset.file.folder === 'object' && asset.file.folder !== null\n ? // @ts-expect-error types are wrong\n asset.file.folder.id\n : asset.file.folder,\n },\n }));\n\n try {\n await edit(updates);\n dispatch({ type: 'clear_unsaved_changes' });\n } catch (err) {\n console.error('Failed to save asset changes:', err);\n return; // Don't close modal on error\n }\n }\n }\n\n resetState();\n onClose();\n };\n\n const handleCancel = () => {\n resetState();\n onClose();\n };\n\n const handleUpload = async (assets: FileWithRawFile[]) => {\n dispatch({ type: 'set_assets_to_upload_length', payload: assets.length });\n setUploadError(null);\n setIsUploading(true);\n\n try {\n const assetsForUpload = assets.map((asset) => ({\n ...asset,\n id: asset.id ? Number(asset.id) : undefined,\n }));\n\n const uploadedFiles = await upload(assetsForUpload, folderId);\n const filesWithFolder = uploadedFiles.map((file: File) => ({\n ...file,\n // The upload API doesn't populate the folder relation, so we add it manually\n folder: folderId || file.folder,\n }));\n dispatch({ type: 'set_uploaded_assets', payload: filesWithFolder });\n } catch (error) {\n console.error('Upload failed:', error);\n setUploadError(error instanceof Error ? error : new Error('Upload failed'));\n } finally {\n setIsUploading(false);\n }\n };\n\n if (state.assetsToUploadLength === 0) {\n return (\n <Modal.Content>\n <AddAssetStep onClose={onClose} onAddAsset={handleUpload} />\n </Modal.Content>\n );\n }\n\n if (\n isUploading ||\n (state.assetsToUploadLength > 0 && state.uploadedAssets.length === 0 && !uploadError)\n ) {\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('ai.modal.uploading.title'),\n defaultMessage: 'Uploading and processing with AI...',\n })}\n </Modal.Title>\n </Modal.Header>\n <StyledModalBody>\n <AIAssetCardSkeletons count={state.assetsToUploadLength} />\n </StyledModalBody>\n </Modal.Content>\n );\n }\n\n const title = formatMessage(\n {\n id: getTrad('ai.modal.title'),\n defaultMessage:\n '{count, plural, one {# asset uploaded} other {# assets uploaded}}, review AI generated metadata',\n },\n { count: state.uploadedAssets.length }\n );\n\n if (uploadError) {\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <StyledAlert closeLabel=\"\" variant=\"danger\">\n {formatMessage({\n id: getTrad('ai.modal.error'),\n defaultMessage: 'Could not generate AI metadata for the uploaded files.',\n })}\n </StyledAlert>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={handleCancel} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button onClick={handleFinish} loading={isSaving}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Modal.Content>\n );\n }\n\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n\n <StyledModalBody>\n <Flex gap={6} direction=\"column\" alignItems=\"stretch\">\n {state.uploadedAssets.map(({ file: asset, wasCaptionChanged, wasAltTextChanged }) => (\n <AIAssetCard\n key={asset.id}\n asset={asset}\n onCaptionChange={(caption: string) =>\n asset.id && handleCaptionChange(asset.id, caption)\n }\n onAltTextChange={(altText: string) =>\n asset.id && handleAltTextChange(asset.id, altText)\n }\n wasCaptionChanged={wasCaptionChanged}\n wasAltTextChanged={wasAltTextChanged}\n />\n ))}\n </Flex>\n </StyledModalBody>\n\n <Modal.Footer>\n <Button onClick={handleCancel} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button onClick={handleFinish} loading={isSaving}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Modal.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UploadModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AIUploadModalProps {\n open: boolean;\n onClose: () => void;\n folderId?: number | null;\n}\n\ntype State = {\n uploadedAssets: Array<{ file: File; wasCaptionChanged: boolean; wasAltTextChanged: boolean }>;\n assetsToUploadLength: number;\n hasUnsavedChanges: boolean;\n};\n\ntype Action =\n | {\n type: 'set_uploaded_assets';\n payload: File[];\n }\n | {\n type: 'set_assets_to_upload_length';\n payload: number;\n }\n | {\n type: 'set_uploaded_asset_caption';\n payload: { id: number; caption: string };\n }\n | {\n type: 'set_uploaded_asset_alt_text';\n payload: { id: number; altText: string };\n }\n | {\n type: 'remove_uploaded_asset';\n payload: { id: number };\n }\n | {\n type: 'edit_uploaded_asset';\n payload: { editedAsset: File };\n }\n | {\n type: 'clear_unsaved_changes';\n };\n\nconst [AIUploadModalContext, useAIUploadModalContext] = createContext<{\n state: State;\n dispatch: React.Dispatch<Action>;\n folderId: number | null;\n onClose: () => void;\n}>('AIUploadModalContext');\n\nconst reducer = (state: State, action: Action): State => {\n return produce(state, (draft: State) => {\n if (action.type === 'set_uploaded_assets') {\n draft.uploadedAssets = action.payload.map((file) => ({\n file,\n wasCaptionChanged: false,\n wasAltTextChanged: false,\n }));\n draft.hasUnsavedChanges = false;\n }\n\n if (action.type === 'set_assets_to_upload_length') {\n draft.assetsToUploadLength = action.payload;\n }\n\n if (action.type === 'set_uploaded_asset_caption') {\n const asset = draft.uploadedAssets.find((a) => a.file.id === action.payload.id);\n if (asset && asset.file.caption !== action.payload.caption) {\n asset.file.caption = action.payload.caption;\n asset.wasCaptionChanged = true;\n draft.hasUnsavedChanges = true;\n }\n }\n\n if (action.type === 'set_uploaded_asset_alt_text') {\n const asset = draft.uploadedAssets.find((a) => a.file.id === action.payload.id);\n if (asset && asset.file.alternativeText !== action.payload.altText) {\n asset.file.alternativeText = action.payload.altText;\n asset.wasAltTextChanged = true;\n draft.hasUnsavedChanges = true;\n }\n }\n\n if (action.type === 'remove_uploaded_asset') {\n draft.uploadedAssets = draft.uploadedAssets.filter((a) => a.file.id !== action.payload.id);\n }\n\n if (action.type === 'edit_uploaded_asset') {\n const assetIndex = draft.uploadedAssets.findIndex(\n (a) => a.file.id === action.payload.editedAsset.id\n );\n if (assetIndex !== -1) {\n draft.uploadedAssets[assetIndex] = {\n file: action.payload.editedAsset,\n wasCaptionChanged: draft.uploadedAssets[assetIndex].wasCaptionChanged,\n wasAltTextChanged: draft.uploadedAssets[assetIndex].wasAltTextChanged,\n };\n }\n }\n\n if (action.type === 'clear_unsaved_changes') {\n draft.hasUnsavedChanges = false;\n draft.uploadedAssets.forEach((asset) => {\n asset.wasCaptionChanged = false;\n asset.wasAltTextChanged = false;\n });\n }\n });\n};\n\nexport const AIUploadModal = ({ open, onClose, folderId = null }: AIUploadModalProps) => {\n const [state, dispatch] = React.useReducer(reducer, {\n uploadedAssets: [],\n assetsToUploadLength: 0,\n hasUnsavedChanges: false,\n });\n\n const handleClose = React.useCallback(() => {\n // Reset state when modal closes\n dispatch({ type: 'set_uploaded_assets', payload: [] });\n onClose();\n }, [onClose]);\n\n return (\n <AIUploadModalContext\n state={state}\n dispatch={dispatch}\n folderId={folderId}\n onClose={handleClose}\n >\n <Modal.Root open={open} onOpenChange={handleClose}>\n <ModalContent onClose={handleClose} />\n </Modal.Root>\n </AIUploadModalContext>\n );\n};\n\nexport { useAIUploadModalContext };\n"],"names":["StyledModalBody","styled","Modal","Body","theme","spaces","StyledAlert","Alert","ModalContent","onClose","formatMessage","useIntl","state","useAIUploadModalContext","s","dispatch","folderId","upload","useUpload","edit","isLoading","isSaving","useBulkEdit","isUploading","setIsUploading","React","useState","uploadError","setUploadError","trackUsage","useTracking","handleCaptionChange","assetId","caption","type","payload","id","handleAltTextChange","altText","resetState","handleFinish","hasUnsavedChanges","assetsToUpdate","uploadedAssets","filter","asset","wasCaptionChanged","wasAltTextChanged","file","length","some","updates","map","fileInfo","name","alternativeText","folder","err","console","error","handleCancel","handleUpload","assets","assetsForUpload","Number","undefined","uploadedFiles","filesWithFolder","Error","assetsToUploadLength","_jsx","Content","AddAssetStep","onAddAsset","_jsxs","Header","Title","getTrad","defaultMessage","AIAssetCardSkeletons","count","title","closeLabel","variant","Footer","Button","onClick","loading","Flex","gap","direction","alignItems","AIAssetCard","onCaptionChange","onAltTextChange","AIUploadModalContext","createContext","reducer","action","produce","draft","find","a","assetIndex","findIndex","editedAsset","forEach","AIUploadModal","open","useReducer","handleClose","useCallback","Root","onOpenChange"],"mappings":"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"}
1
+ {"version":3,"file":"AIUploadModal.mjs","sources":["../../../../admin/src/ai/components/AIUploadModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@strapi/admin/strapi-admin';\nimport { Alert, Button, Flex, Modal } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n AddAssetStep,\n FileWithRawFile,\n} from '../../components/UploadAssetDialog/AddAssetStep/AddAssetStep';\nimport { AssetType } from '../../constants';\nimport { useBulkEdit } from '../../hooks/useBulkEdit';\nimport { useTracking } from '../../hooks/useTracking';\nimport { useUpload } from '../../hooks/useUpload';\nimport { getTrad, typeFromMime } from '../../utils';\n\nimport { AIAssetCard, AIAssetCardSkeletons } from './AIAssetCard';\n\nimport type { File } from '../../../../shared/contracts/files';\n\n/* -------------------------------------------------------------------------------------------------\n * ModalBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n display: flex;\n justify-content: center;\n\n [data-radix-scroll-area-viewport] {\n padding-top: ${({ theme }) => theme.spaces[6]};\n padding-bottom: ${({ theme }) => theme.spaces[6]};\n padding-left: ${({ theme }) => theme.spaces[7]};\n padding-right: ${({ theme }) => theme.spaces[7]};\n }\n`;\n\nconst StyledAlert = styled(Alert)`\n & > button {\n display: none;\n }\n`;\n\nconst ModalContent = ({ onClose }: Pick<AIUploadModalProps, 'onClose'>) => {\n const { formatMessage } = useIntl();\n const state = useAIUploadModalContext('ModalContent', (s) => s.state);\n const dispatch = useAIUploadModalContext('ModalContent', (s) => s.dispatch);\n const folderId = useAIUploadModalContext('ModalContent', (s) => s.folderId);\n const { upload } = useUpload();\n const { edit, isLoading: isSaving } = useBulkEdit();\n const [isUploading, setIsUploading] = React.useState(false);\n const [uploadError, setUploadError] = React.useState<Error | null>(null);\n const { trackUsage } = useTracking();\n\n const handleCaptionChange = (assetId: number, caption: string) => {\n dispatch({\n type: 'set_uploaded_asset_caption',\n payload: { id: assetId, caption },\n });\n };\n\n const handleAltTextChange = (assetId: number, altText: string) => {\n dispatch({\n type: 'set_uploaded_asset_alt_text',\n payload: { id: assetId, altText },\n });\n };\n\n const resetState = () => {\n dispatch({ type: 'set_uploaded_assets', payload: [] });\n };\n\n const handleFinish = async () => {\n if (state.hasUnsavedChanges) {\n const assetsToUpdate = state.uploadedAssets.filter(\n (asset) => (asset.wasCaptionChanged || asset.wasAltTextChanged) && asset.file.id\n );\n\n if (assetsToUpdate.length > 0) {\n if (assetsToUpdate.some((asset) => asset.wasCaptionChanged)) {\n trackUsage('didEditAICaption');\n }\n\n if (assetsToUpdate.some((asset) => asset.wasAltTextChanged)) {\n trackUsage('didEditAIAlternativeText');\n }\n\n // Update assets\n const updates = assetsToUpdate.map((asset) => ({\n id: asset.file.id!,\n fileInfo: {\n name: asset.file.name,\n alternativeText: asset.file.alternativeText ?? null,\n caption: asset.file.caption ?? null,\n folder:\n typeof asset.file.folder === 'object' && asset.file.folder !== null\n ? // @ts-expect-error types are wrong\n asset.file.folder.id\n : asset.file.folder,\n },\n }));\n\n try {\n await edit(updates);\n dispatch({ type: 'clear_unsaved_changes' });\n } catch (err) {\n console.error('Failed to save asset changes:', err);\n return; // Don't close modal on error\n }\n }\n }\n\n resetState();\n onClose();\n };\n\n const handleCancel = () => {\n resetState();\n onClose();\n };\n\n const handleUpload = async (assets: FileWithRawFile[]) => {\n dispatch({ type: 'set_assets_to_upload_length', payload: assets.length });\n setUploadError(null);\n setIsUploading(true);\n\n try {\n const assetsForUpload = assets.map((asset) => ({\n ...asset,\n id: asset.id ? Number(asset.id) : undefined,\n }));\n\n const uploadedFiles = await upload(assetsForUpload, folderId);\n const filesWithFolder = uploadedFiles.map((file: File) => ({\n ...file,\n // The upload API doesn't populate the folder relation, so we add it manually\n folder: folderId || file.folder,\n }));\n dispatch({ type: 'set_uploaded_assets', payload: filesWithFolder });\n } catch (error) {\n console.error('Upload failed:', error);\n setUploadError(error instanceof Error ? error : new Error('Upload failed'));\n } finally {\n setIsUploading(false);\n }\n };\n\n if (state.assetsToUploadLength === 0) {\n return (\n <Modal.Content>\n <AddAssetStep onClose={onClose} onAddAsset={handleUpload} />\n </Modal.Content>\n );\n }\n\n if (\n isUploading ||\n (state.assetsToUploadLength > 0 && state.uploadedAssets.length === 0 && !uploadError)\n ) {\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('ai.modal.uploading.title'),\n defaultMessage: 'Uploading and processing with AI...',\n })}\n </Modal.Title>\n </Modal.Header>\n <StyledModalBody>\n <AIAssetCardSkeletons count={state.assetsToUploadLength} />\n </StyledModalBody>\n </Modal.Content>\n );\n }\n\n const title = formatMessage(\n {\n id: getTrad('ai.modal.title'),\n defaultMessage:\n '{count, plural, one {# asset uploaded} other {# assets uploaded}}, review AI generated metadata',\n },\n { count: state.uploadedAssets.length }\n );\n\n if (uploadError) {\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <StyledAlert closeLabel=\"\" variant=\"danger\">\n {formatMessage({\n id: getTrad('ai.modal.error'),\n defaultMessage: 'Could not generate AI metadata for the uploaded files.',\n })}\n </StyledAlert>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={handleCancel} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button onClick={handleFinish} loading={isSaving}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Modal.Content>\n );\n }\n\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n\n <StyledModalBody>\n <Flex gap={6} direction=\"column\" alignItems=\"stretch\">\n {state.uploadedAssets.map(({ file: asset, wasCaptionChanged, wasAltTextChanged }) => (\n <AIAssetCard\n key={asset.id}\n asset={asset}\n onCaptionChange={(caption: string) =>\n asset.id && handleCaptionChange(asset.id, caption)\n }\n onAltTextChange={(altText: string) =>\n asset.id && handleAltTextChange(asset.id, altText)\n }\n wasCaptionChanged={wasCaptionChanged}\n wasAltTextChanged={wasAltTextChanged}\n />\n ))}\n </Flex>\n </StyledModalBody>\n\n <Modal.Footer>\n <Button onClick={handleCancel} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button onClick={handleFinish} loading={isSaving}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Modal.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UploadModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AIUploadModalProps {\n open: boolean;\n onClose: () => void;\n folderId?: number | null;\n}\n\ntype State = {\n uploadedAssets: Array<{ file: File; wasCaptionChanged: boolean; wasAltTextChanged: boolean }>;\n assetsToUploadLength: number;\n hasUnsavedChanges: boolean;\n};\n\ntype Action =\n | {\n type: 'set_uploaded_assets';\n payload: File[];\n }\n | {\n type: 'set_assets_to_upload_length';\n payload: number;\n }\n | {\n type: 'set_uploaded_asset_caption';\n payload: { id: number; caption: string };\n }\n | {\n type: 'set_uploaded_asset_alt_text';\n payload: { id: number; altText: string };\n }\n | {\n type: 'remove_uploaded_asset';\n payload: { id: number };\n }\n | {\n type: 'edit_uploaded_asset';\n payload: { editedAsset: File };\n }\n | {\n type: 'clear_unsaved_changes';\n };\n\nconst [AIUploadModalContext, useAIUploadModalContext] = createContext<{\n state: State;\n dispatch: React.Dispatch<Action>;\n folderId: number | null;\n onClose: () => void;\n}>('AIUploadModalContext');\n\nconst reducer = (state: State, action: Action): State => {\n return produce(state, (draft: State) => {\n if (action.type === 'set_uploaded_assets') {\n draft.uploadedAssets = action.payload.map((file) => ({\n file,\n wasCaptionChanged: false,\n wasAltTextChanged: false,\n }));\n draft.hasUnsavedChanges = false;\n }\n\n if (action.type === 'set_assets_to_upload_length') {\n draft.assetsToUploadLength = action.payload;\n }\n\n if (action.type === 'set_uploaded_asset_caption') {\n const asset = draft.uploadedAssets.find((a) => a.file.id === action.payload.id);\n if (asset && asset.file.caption !== action.payload.caption) {\n asset.file.caption = action.payload.caption;\n asset.wasCaptionChanged = true;\n draft.hasUnsavedChanges = true;\n }\n }\n\n if (action.type === 'set_uploaded_asset_alt_text') {\n const asset = draft.uploadedAssets.find((a) => a.file.id === action.payload.id);\n if (asset && asset.file.alternativeText !== action.payload.altText) {\n asset.file.alternativeText = action.payload.altText;\n asset.wasAltTextChanged = true;\n draft.hasUnsavedChanges = true;\n }\n }\n\n if (action.type === 'remove_uploaded_asset') {\n draft.uploadedAssets = draft.uploadedAssets.filter((a) => a.file.id !== action.payload.id);\n }\n\n if (action.type === 'edit_uploaded_asset') {\n const assetIndex = draft.uploadedAssets.findIndex(\n (a) => a.file.id === action.payload.editedAsset.id\n );\n if (assetIndex !== -1) {\n draft.uploadedAssets[assetIndex] = {\n file: action.payload.editedAsset,\n wasCaptionChanged: draft.uploadedAssets[assetIndex].wasCaptionChanged,\n wasAltTextChanged: draft.uploadedAssets[assetIndex].wasAltTextChanged,\n };\n }\n }\n\n if (action.type === 'clear_unsaved_changes') {\n draft.hasUnsavedChanges = false;\n draft.uploadedAssets.forEach((asset) => {\n asset.wasCaptionChanged = false;\n asset.wasAltTextChanged = false;\n });\n }\n });\n};\n\nexport const AIUploadModal = ({ open, onClose, folderId = null }: AIUploadModalProps) => {\n const [state, dispatch] = React.useReducer(reducer, {\n uploadedAssets: [],\n assetsToUploadLength: 0,\n hasUnsavedChanges: false,\n });\n\n const handleClose = React.useCallback(() => {\n // Reset state when modal closes\n dispatch({ type: 'set_uploaded_assets', payload: [] });\n onClose();\n }, [onClose]);\n\n return (\n <AIUploadModalContext\n state={state}\n dispatch={dispatch}\n folderId={folderId}\n onClose={handleClose}\n >\n <Modal.Root open={open} onOpenChange={handleClose}>\n <ModalContent onClose={handleClose} />\n </Modal.Root>\n </AIUploadModalContext>\n );\n};\n\nexport { useAIUploadModalContext };\n"],"names":["StyledModalBody","styled","Modal","Body","theme","spaces","StyledAlert","Alert","ModalContent","onClose","formatMessage","useIntl","state","useAIUploadModalContext","s","dispatch","folderId","upload","useUpload","edit","isLoading","isSaving","useBulkEdit","isUploading","setIsUploading","React","useState","uploadError","setUploadError","trackUsage","useTracking","handleCaptionChange","assetId","caption","type","payload","id","handleAltTextChange","altText","resetState","handleFinish","hasUnsavedChanges","assetsToUpdate","uploadedAssets","filter","asset","wasCaptionChanged","wasAltTextChanged","file","length","some","updates","map","fileInfo","name","alternativeText","folder","err","console","error","handleCancel","handleUpload","assets","assetsForUpload","Number","undefined","uploadedFiles","filesWithFolder","Error","assetsToUploadLength","_jsx","Content","AddAssetStep","onAddAsset","_jsxs","Header","Title","getTrad","defaultMessage","AIAssetCardSkeletons","count","title","closeLabel","variant","Footer","Button","onClick","loading","Flex","gap","direction","alignItems","AIAssetCard","onCaptionChange","onAltTextChange","AIUploadModalContext","createContext","reducer","action","produce","draft","find","a","assetIndex","findIndex","editedAsset","forEach","AIUploadModal","open","useReducer","handleClose","useCallback","Root","onOpenChange"],"mappings":"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"}
@@ -2,10 +2,10 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var strapiAdmin = require('@strapi/admin/strapi-admin');
6
5
  var designSystem = require('@strapi/design-system');
7
6
  var icons = require('@strapi/icons');
8
7
  var reactIntl = require('react-intl');
8
+ var useTracking = require('../../../../hooks/useTracking.js');
9
9
  require('byte-size');
10
10
  require('date-fns');
11
11
  var getTrad = require('../../../../utils/getTrad.js');
@@ -35,7 +35,7 @@ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
35
35
  // TODO: find a better naming convention for the file that was an index file before
36
36
  const SearchAsset = ({ onChangeSearch, queryValue = null })=>{
37
37
  const { formatMessage } = reactIntl.useIntl();
38
- const { trackUsage } = strapiAdmin.useTracking();
38
+ const { trackUsage } = useTracking.useTracking();
39
39
  const [isOpen, setIsOpen] = React__namespace.useState(!!queryValue);
40
40
  const [value, setValue] = React__namespace.useState(queryValue || '');
41
41
  const wrapperRef = React__namespace.useRef(null);
@@ -1 +1 @@
1
- {"version":3,"file":"SearchAsset.js","sources":["../../../../../../admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\n\ninterface SearchAssetProps {\n onChangeSearch: (_q: Query['_q'] | null) => void;\n queryValue?: Query['_q'] | null;\n}\n\nexport const SearchAsset = ({ onChangeSearch, queryValue = null }: SearchAssetProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [isOpen, setIsOpen] = React.useState(!!queryValue);\n const [value, setValue] = React.useState(queryValue || '');\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n wrapperRef.current?.querySelector('input')?.focus();\n }, 0);\n }\n }, [isOpen]);\n\n const handleToggle = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleClear = () => {\n handleToggle();\n onChangeSearch(null);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n trackUsage('didSearchMediaLibraryElements', { location: 'content-manager' });\n onChangeSearch(value);\n };\n\n if (isOpen) {\n return (\n <div ref={wrapperRef}>\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n name=\"search\"\n onClear={handleClear}\n onChange={(e) => setValue(e.target.value)}\n clearLabel={formatMessage({\n id: getTrad('search.clear.label'),\n defaultMessage: 'Clear the search',\n })}\n aria-label=\"search\"\n size=\"S\"\n value={value}\n placeholder={formatMessage({\n id: getTrad('search.placeholder'),\n defaultMessage: 'e.g: the first dog on the moon',\n })}\n >\n {formatMessage({ id: getTrad('search.label'), defaultMessage: 'Search for an asset' })}\n </Searchbar>\n </SearchForm>\n </div>\n );\n }\n\n return (\n <IconButton label=\"Search\" onClick={handleToggle}>\n <Search />\n </IconButton>\n );\n};\n"],"names":["SearchAsset","onChangeSearch","queryValue","formatMessage","useIntl","trackUsage","useTracking","isOpen","setIsOpen","React","useState","value","setValue","wrapperRef","useRef","useLayoutEffect","setTimeout","current","querySelector","focus","handleToggle","prev","handleClear","handleSubmit","e","preventDefault","stopPropagation","location","_jsx","div","ref","SearchForm","onSubmit","Searchbar","name","onClear","onChange","target","clearLabel","id","getTrad","defaultMessage","aria-label","size","placeholder","IconButton","label","onClick","Search"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAiBO,MAAMA,cAAc,CAAC,EAAEC,cAAc,EAAEC,UAAAA,GAAa,IAAI,EAAoB,GAAA;IACjF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;IACvB,MAAM,CAACC,QAAQC,SAAU,CAAA,GAAGC,iBAAMC,QAAQ,CAAC,CAAC,CAACR,UAAAA,CAAAA;AAC7C,IAAA,MAAM,CAACS,KAAOC,EAAAA,QAAAA,CAAS,GAAGH,gBAAMC,CAAAA,QAAQ,CAACR,UAAc,IAAA,EAAA,CAAA;IACvD,MAAMW,UAAAA,GAAaJ,gBAAMK,CAAAA,MAAM,CAAiB,IAAA,CAAA;AAEhDL,IAAAA,gBAAAA,CAAMM,eAAe,CAAC,IAAA;AACpB,QAAA,IAAIR,MAAQ,EAAA;YACVS,UAAW,CAAA,IAAA;gBACTH,UAAWI,CAAAA,OAAO,EAAEC,aAAAA,CAAc,OAAUC,CAAAA,EAAAA,KAAAA,EAAAA;aAC3C,EAAA,CAAA,CAAA;AACL;KACC,EAAA;AAACZ,QAAAA;AAAO,KAAA,CAAA;AAEX,IAAA,MAAMa,YAAe,GAAA,IAAA;QACnBZ,SAAU,CAAA,CAACa,OAAS,CAACA,IAAAA,CAAAA;AACvB,KAAA;AAEA,IAAA,MAAMC,WAAc,GAAA,IAAA;AAClBF,QAAAA,YAAAA,EAAAA;QACAnB,cAAe,CAAA,IAAA,CAAA;AACjB,KAAA;AAEA,IAAA,MAAMsB,eAAe,CAACC,CAAAA,GAAAA;AACpBA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBD,QAAAA,CAAAA,CAAEE,eAAe,EAAA;AAEjBrB,QAAAA,UAAAA,CAAW,+BAAiC,EAAA;YAAEsB,QAAU,EAAA;AAAkB,SAAA,CAAA;QAC1E1B,cAAeU,CAAAA,KAAAA,CAAAA;AACjB,KAAA;AAEA,IAAA,IAAIJ,MAAQ,EAAA;AACV,QAAA,qBACEqB,cAACC,CAAAA,KAAAA,EAAAA;YAAIC,GAAKjB,EAAAA,UAAAA;AACR,YAAA,QAAA,gBAAAe,cAACG,CAAAA,uBAAAA,EAAAA;gBAAWC,QAAUT,EAAAA,YAAAA;AACpB,gBAAA,QAAA,gBAAAK,cAACK,CAAAA,sBAAAA,EAAAA;oBACCC,IAAK,EAAA,QAAA;oBACLC,OAASb,EAAAA,WAAAA;AACTc,oBAAAA,QAAAA,EAAU,CAACZ,CAAMZ,GAAAA,QAAAA,CAASY,CAAEa,CAAAA,MAAM,CAAC1B,KAAK,CAAA;AACxC2B,oBAAAA,UAAAA,EAAYnC,aAAc,CAAA;AACxBoC,wBAAAA,EAAAA,EAAIC,eAAQ,CAAA,oBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACAC,YAAW,EAAA,QAAA;oBACXC,IAAK,EAAA,GAAA;oBACLhC,KAAOA,EAAAA,KAAAA;AACPiC,oBAAAA,WAAAA,EAAazC,aAAc,CAAA;AACzBoC,wBAAAA,EAAAA,EAAIC,eAAQ,CAAA,oBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA,CAAA;8BAECtC,aAAc,CAAA;AAAEoC,wBAAAA,EAAAA,EAAIC,eAAQ,CAAA,cAAA,CAAA;wBAAiBC,cAAgB,EAAA;AAAsB,qBAAA;;;;AAK9F;AAEA,IAAA,qBACEb,cAACiB,CAAAA,uBAAAA,EAAAA;QAAWC,KAAM,EAAA,QAAA;QAASC,OAAS3B,EAAAA,YAAAA;AAClC,QAAA,QAAA,gBAAAQ,cAACoB,CAAAA,YAAAA,EAAAA,EAAAA;;AAGP;;;;"}
1
+ {"version":3,"file":"SearchAsset.js","sources":["../../../../../../admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../../hooks/useTracking';\nimport { getTrad } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\n\ninterface SearchAssetProps {\n onChangeSearch: (_q: Query['_q'] | null) => void;\n queryValue?: Query['_q'] | null;\n}\n\nexport const SearchAsset = ({ onChangeSearch, queryValue = null }: SearchAssetProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [isOpen, setIsOpen] = React.useState(!!queryValue);\n const [value, setValue] = React.useState(queryValue || '');\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n wrapperRef.current?.querySelector('input')?.focus();\n }, 0);\n }\n }, [isOpen]);\n\n const handleToggle = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleClear = () => {\n handleToggle();\n onChangeSearch(null);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n trackUsage('didSearchMediaLibraryElements', { location: 'content-manager' });\n onChangeSearch(value);\n };\n\n if (isOpen) {\n return (\n <div ref={wrapperRef}>\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n name=\"search\"\n onClear={handleClear}\n onChange={(e) => setValue(e.target.value)}\n clearLabel={formatMessage({\n id: getTrad('search.clear.label'),\n defaultMessage: 'Clear the search',\n })}\n aria-label=\"search\"\n size=\"S\"\n value={value}\n placeholder={formatMessage({\n id: getTrad('search.placeholder'),\n defaultMessage: 'e.g: the first dog on the moon',\n })}\n >\n {formatMessage({ id: getTrad('search.label'), defaultMessage: 'Search for an asset' })}\n </Searchbar>\n </SearchForm>\n </div>\n );\n }\n\n return (\n <IconButton label=\"Search\" onClick={handleToggle}>\n <Search />\n </IconButton>\n );\n};\n"],"names":["SearchAsset","onChangeSearch","queryValue","formatMessage","useIntl","trackUsage","useTracking","isOpen","setIsOpen","React","useState","value","setValue","wrapperRef","useRef","useLayoutEffect","setTimeout","current","querySelector","focus","handleToggle","prev","handleClear","handleSubmit","e","preventDefault","stopPropagation","location","_jsx","div","ref","SearchForm","onSubmit","Searchbar","name","onClear","onChange","target","clearLabel","id","getTrad","defaultMessage","aria-label","size","placeholder","IconButton","label","onClick","Search"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAiBO,MAAMA,cAAc,CAAC,EAAEC,cAAc,EAAEC,UAAAA,GAAa,IAAI,EAAoB,GAAA;IACjF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;IACvB,MAAM,CAACC,QAAQC,SAAU,CAAA,GAAGC,iBAAMC,QAAQ,CAAC,CAAC,CAACR,UAAAA,CAAAA;AAC7C,IAAA,MAAM,CAACS,KAAOC,EAAAA,QAAAA,CAAS,GAAGH,gBAAMC,CAAAA,QAAQ,CAACR,UAAc,IAAA,EAAA,CAAA;IACvD,MAAMW,UAAAA,GAAaJ,gBAAMK,CAAAA,MAAM,CAAiB,IAAA,CAAA;AAEhDL,IAAAA,gBAAAA,CAAMM,eAAe,CAAC,IAAA;AACpB,QAAA,IAAIR,MAAQ,EAAA;YACVS,UAAW,CAAA,IAAA;gBACTH,UAAWI,CAAAA,OAAO,EAAEC,aAAAA,CAAc,OAAUC,CAAAA,EAAAA,KAAAA,EAAAA;aAC3C,EAAA,CAAA,CAAA;AACL;KACC,EAAA;AAACZ,QAAAA;AAAO,KAAA,CAAA;AAEX,IAAA,MAAMa,YAAe,GAAA,IAAA;QACnBZ,SAAU,CAAA,CAACa,OAAS,CAACA,IAAAA,CAAAA;AACvB,KAAA;AAEA,IAAA,MAAMC,WAAc,GAAA,IAAA;AAClBF,QAAAA,YAAAA,EAAAA;QACAnB,cAAe,CAAA,IAAA,CAAA;AACjB,KAAA;AAEA,IAAA,MAAMsB,eAAe,CAACC,CAAAA,GAAAA;AACpBA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBD,QAAAA,CAAAA,CAAEE,eAAe,EAAA;AAEjBrB,QAAAA,UAAAA,CAAW,+BAAiC,EAAA;YAAEsB,QAAU,EAAA;AAAkB,SAAA,CAAA;QAC1E1B,cAAeU,CAAAA,KAAAA,CAAAA;AACjB,KAAA;AAEA,IAAA,IAAIJ,MAAQ,EAAA;AACV,QAAA,qBACEqB,cAACC,CAAAA,KAAAA,EAAAA;YAAIC,GAAKjB,EAAAA,UAAAA;AACR,YAAA,QAAA,gBAAAe,cAACG,CAAAA,uBAAAA,EAAAA;gBAAWC,QAAUT,EAAAA,YAAAA;AACpB,gBAAA,QAAA,gBAAAK,cAACK,CAAAA,sBAAAA,EAAAA;oBACCC,IAAK,EAAA,QAAA;oBACLC,OAASb,EAAAA,WAAAA;AACTc,oBAAAA,QAAAA,EAAU,CAACZ,CAAMZ,GAAAA,QAAAA,CAASY,CAAEa,CAAAA,MAAM,CAAC1B,KAAK,CAAA;AACxC2B,oBAAAA,UAAAA,EAAYnC,aAAc,CAAA;AACxBoC,wBAAAA,EAAAA,EAAIC,eAAQ,CAAA,oBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACAC,YAAW,EAAA,QAAA;oBACXC,IAAK,EAAA,GAAA;oBACLhC,KAAOA,EAAAA,KAAAA;AACPiC,oBAAAA,WAAAA,EAAazC,aAAc,CAAA;AACzBoC,wBAAAA,EAAAA,EAAIC,eAAQ,CAAA,oBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA,CAAA;8BAECtC,aAAc,CAAA;AAAEoC,wBAAAA,EAAAA,EAAIC,eAAQ,CAAA,cAAA,CAAA;wBAAiBC,cAAgB,EAAA;AAAsB,qBAAA;;;;AAK9F;AAEA,IAAA,qBACEb,cAACiB,CAAAA,uBAAAA,EAAAA;QAAWC,KAAM,EAAA,QAAA;QAASC,OAAS3B,EAAAA,YAAAA;AAClC,QAAA,QAAA,gBAAAQ,cAACoB,CAAAA,YAAAA,EAAAA,EAAAA;;AAGP;;;;"}
@@ -1,9 +1,9 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useTracking } from '@strapi/admin/strapi-admin';
4
3
  import { SearchForm, Searchbar, IconButton } from '@strapi/design-system';
5
4
  import { Search } from '@strapi/icons';
6
5
  import { useIntl } from 'react-intl';
6
+ import { useTracking } from '../../../../hooks/useTracking.mjs';
7
7
  import 'byte-size';
8
8
  import 'date-fns';
9
9
  import { getTrad } from '../../../../utils/getTrad.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"SearchAsset.mjs","sources":["../../../../../../admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\n\ninterface SearchAssetProps {\n onChangeSearch: (_q: Query['_q'] | null) => void;\n queryValue?: Query['_q'] | null;\n}\n\nexport const SearchAsset = ({ onChangeSearch, queryValue = null }: SearchAssetProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [isOpen, setIsOpen] = React.useState(!!queryValue);\n const [value, setValue] = React.useState(queryValue || '');\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n wrapperRef.current?.querySelector('input')?.focus();\n }, 0);\n }\n }, [isOpen]);\n\n const handleToggle = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleClear = () => {\n handleToggle();\n onChangeSearch(null);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n trackUsage('didSearchMediaLibraryElements', { location: 'content-manager' });\n onChangeSearch(value);\n };\n\n if (isOpen) {\n return (\n <div ref={wrapperRef}>\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n name=\"search\"\n onClear={handleClear}\n onChange={(e) => setValue(e.target.value)}\n clearLabel={formatMessage({\n id: getTrad('search.clear.label'),\n defaultMessage: 'Clear the search',\n })}\n aria-label=\"search\"\n size=\"S\"\n value={value}\n placeholder={formatMessage({\n id: getTrad('search.placeholder'),\n defaultMessage: 'e.g: the first dog on the moon',\n })}\n >\n {formatMessage({ id: getTrad('search.label'), defaultMessage: 'Search for an asset' })}\n </Searchbar>\n </SearchForm>\n </div>\n );\n }\n\n return (\n <IconButton label=\"Search\" onClick={handleToggle}>\n <Search />\n </IconButton>\n );\n};\n"],"names":["SearchAsset","onChangeSearch","queryValue","formatMessage","useIntl","trackUsage","useTracking","isOpen","setIsOpen","React","useState","value","setValue","wrapperRef","useRef","useLayoutEffect","setTimeout","current","querySelector","focus","handleToggle","prev","handleClear","handleSubmit","e","preventDefault","stopPropagation","location","_jsx","div","ref","SearchForm","onSubmit","Searchbar","name","onClear","onChange","target","clearLabel","id","getTrad","defaultMessage","aria-label","size","placeholder","IconButton","label","onClick","Search"],"mappings":";;;;;;;;;;;;;AAAA;AAiBO,MAAMA,cAAc,CAAC,EAAEC,cAAc,EAAEC,UAAAA,GAAa,IAAI,EAAoB,GAAA;IACjF,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IACvB,MAAM,CAACC,QAAQC,SAAU,CAAA,GAAGC,MAAMC,QAAQ,CAAC,CAAC,CAACR,UAAAA,CAAAA;AAC7C,IAAA,MAAM,CAACS,KAAOC,EAAAA,QAAAA,CAAS,GAAGH,KAAMC,CAAAA,QAAQ,CAACR,UAAc,IAAA,EAAA,CAAA;IACvD,MAAMW,UAAAA,GAAaJ,KAAMK,CAAAA,MAAM,CAAiB,IAAA,CAAA;AAEhDL,IAAAA,KAAAA,CAAMM,eAAe,CAAC,IAAA;AACpB,QAAA,IAAIR,MAAQ,EAAA;YACVS,UAAW,CAAA,IAAA;gBACTH,UAAWI,CAAAA,OAAO,EAAEC,aAAAA,CAAc,OAAUC,CAAAA,EAAAA,KAAAA,EAAAA;aAC3C,EAAA,CAAA,CAAA;AACL;KACC,EAAA;AAACZ,QAAAA;AAAO,KAAA,CAAA;AAEX,IAAA,MAAMa,YAAe,GAAA,IAAA;QACnBZ,SAAU,CAAA,CAACa,OAAS,CAACA,IAAAA,CAAAA;AACvB,KAAA;AAEA,IAAA,MAAMC,WAAc,GAAA,IAAA;AAClBF,QAAAA,YAAAA,EAAAA;QACAnB,cAAe,CAAA,IAAA,CAAA;AACjB,KAAA;AAEA,IAAA,MAAMsB,eAAe,CAACC,CAAAA,GAAAA;AACpBA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBD,QAAAA,CAAAA,CAAEE,eAAe,EAAA;AAEjBrB,QAAAA,UAAAA,CAAW,+BAAiC,EAAA;YAAEsB,QAAU,EAAA;AAAkB,SAAA,CAAA;QAC1E1B,cAAeU,CAAAA,KAAAA,CAAAA;AACjB,KAAA;AAEA,IAAA,IAAIJ,MAAQ,EAAA;AACV,QAAA,qBACEqB,GAACC,CAAAA,KAAAA,EAAAA;YAAIC,GAAKjB,EAAAA,UAAAA;AACR,YAAA,QAAA,gBAAAe,GAACG,CAAAA,UAAAA,EAAAA;gBAAWC,QAAUT,EAAAA,YAAAA;AACpB,gBAAA,QAAA,gBAAAK,GAACK,CAAAA,SAAAA,EAAAA;oBACCC,IAAK,EAAA,QAAA;oBACLC,OAASb,EAAAA,WAAAA;AACTc,oBAAAA,QAAAA,EAAU,CAACZ,CAAMZ,GAAAA,QAAAA,CAASY,CAAEa,CAAAA,MAAM,CAAC1B,KAAK,CAAA;AACxC2B,oBAAAA,UAAAA,EAAYnC,aAAc,CAAA;AACxBoC,wBAAAA,EAAAA,EAAIC,OAAQ,CAAA,oBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACAC,YAAW,EAAA,QAAA;oBACXC,IAAK,EAAA,GAAA;oBACLhC,KAAOA,EAAAA,KAAAA;AACPiC,oBAAAA,WAAAA,EAAazC,aAAc,CAAA;AACzBoC,wBAAAA,EAAAA,EAAIC,OAAQ,CAAA,oBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA,CAAA;8BAECtC,aAAc,CAAA;AAAEoC,wBAAAA,EAAAA,EAAIC,OAAQ,CAAA,cAAA,CAAA;wBAAiBC,cAAgB,EAAA;AAAsB,qBAAA;;;;AAK9F;AAEA,IAAA,qBACEb,GAACiB,CAAAA,UAAAA,EAAAA;QAAWC,KAAM,EAAA,QAAA;QAASC,OAAS3B,EAAAA,YAAAA;AAClC,QAAA,QAAA,gBAAAQ,GAACoB,CAAAA,MAAAA,EAAAA,EAAAA;;AAGP;;;;"}
1
+ {"version":3,"file":"SearchAsset.mjs","sources":["../../../../../../admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../../hooks/useTracking';\nimport { getTrad } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\n\ninterface SearchAssetProps {\n onChangeSearch: (_q: Query['_q'] | null) => void;\n queryValue?: Query['_q'] | null;\n}\n\nexport const SearchAsset = ({ onChangeSearch, queryValue = null }: SearchAssetProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [isOpen, setIsOpen] = React.useState(!!queryValue);\n const [value, setValue] = React.useState(queryValue || '');\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n wrapperRef.current?.querySelector('input')?.focus();\n }, 0);\n }\n }, [isOpen]);\n\n const handleToggle = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleClear = () => {\n handleToggle();\n onChangeSearch(null);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n trackUsage('didSearchMediaLibraryElements', { location: 'content-manager' });\n onChangeSearch(value);\n };\n\n if (isOpen) {\n return (\n <div ref={wrapperRef}>\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n name=\"search\"\n onClear={handleClear}\n onChange={(e) => setValue(e.target.value)}\n clearLabel={formatMessage({\n id: getTrad('search.clear.label'),\n defaultMessage: 'Clear the search',\n })}\n aria-label=\"search\"\n size=\"S\"\n value={value}\n placeholder={formatMessage({\n id: getTrad('search.placeholder'),\n defaultMessage: 'e.g: the first dog on the moon',\n })}\n >\n {formatMessage({ id: getTrad('search.label'), defaultMessage: 'Search for an asset' })}\n </Searchbar>\n </SearchForm>\n </div>\n );\n }\n\n return (\n <IconButton label=\"Search\" onClick={handleToggle}>\n <Search />\n </IconButton>\n );\n};\n"],"names":["SearchAsset","onChangeSearch","queryValue","formatMessage","useIntl","trackUsage","useTracking","isOpen","setIsOpen","React","useState","value","setValue","wrapperRef","useRef","useLayoutEffect","setTimeout","current","querySelector","focus","handleToggle","prev","handleClear","handleSubmit","e","preventDefault","stopPropagation","location","_jsx","div","ref","SearchForm","onSubmit","Searchbar","name","onClear","onChange","target","clearLabel","id","getTrad","defaultMessage","aria-label","size","placeholder","IconButton","label","onClick","Search"],"mappings":";;;;;;;;;;;;;AAAA;AAiBO,MAAMA,cAAc,CAAC,EAAEC,cAAc,EAAEC,UAAAA,GAAa,IAAI,EAAoB,GAAA;IACjF,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IACvB,MAAM,CAACC,QAAQC,SAAU,CAAA,GAAGC,MAAMC,QAAQ,CAAC,CAAC,CAACR,UAAAA,CAAAA;AAC7C,IAAA,MAAM,CAACS,KAAOC,EAAAA,QAAAA,CAAS,GAAGH,KAAMC,CAAAA,QAAQ,CAACR,UAAc,IAAA,EAAA,CAAA;IACvD,MAAMW,UAAAA,GAAaJ,KAAMK,CAAAA,MAAM,CAAiB,IAAA,CAAA;AAEhDL,IAAAA,KAAAA,CAAMM,eAAe,CAAC,IAAA;AACpB,QAAA,IAAIR,MAAQ,EAAA;YACVS,UAAW,CAAA,IAAA;gBACTH,UAAWI,CAAAA,OAAO,EAAEC,aAAAA,CAAc,OAAUC,CAAAA,EAAAA,KAAAA,EAAAA;aAC3C,EAAA,CAAA,CAAA;AACL;KACC,EAAA;AAACZ,QAAAA;AAAO,KAAA,CAAA;AAEX,IAAA,MAAMa,YAAe,GAAA,IAAA;QACnBZ,SAAU,CAAA,CAACa,OAAS,CAACA,IAAAA,CAAAA;AACvB,KAAA;AAEA,IAAA,MAAMC,WAAc,GAAA,IAAA;AAClBF,QAAAA,YAAAA,EAAAA;QACAnB,cAAe,CAAA,IAAA,CAAA;AACjB,KAAA;AAEA,IAAA,MAAMsB,eAAe,CAACC,CAAAA,GAAAA;AACpBA,QAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBD,QAAAA,CAAAA,CAAEE,eAAe,EAAA;AAEjBrB,QAAAA,UAAAA,CAAW,+BAAiC,EAAA;YAAEsB,QAAU,EAAA;AAAkB,SAAA,CAAA;QAC1E1B,cAAeU,CAAAA,KAAAA,CAAAA;AACjB,KAAA;AAEA,IAAA,IAAIJ,MAAQ,EAAA;AACV,QAAA,qBACEqB,GAACC,CAAAA,KAAAA,EAAAA;YAAIC,GAAKjB,EAAAA,UAAAA;AACR,YAAA,QAAA,gBAAAe,GAACG,CAAAA,UAAAA,EAAAA;gBAAWC,QAAUT,EAAAA,YAAAA;AACpB,gBAAA,QAAA,gBAAAK,GAACK,CAAAA,SAAAA,EAAAA;oBACCC,IAAK,EAAA,QAAA;oBACLC,OAASb,EAAAA,WAAAA;AACTc,oBAAAA,QAAAA,EAAU,CAACZ,CAAMZ,GAAAA,QAAAA,CAASY,CAAEa,CAAAA,MAAM,CAAC1B,KAAK,CAAA;AACxC2B,oBAAAA,UAAAA,EAAYnC,aAAc,CAAA;AACxBoC,wBAAAA,EAAAA,EAAIC,OAAQ,CAAA,oBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACAC,YAAW,EAAA,QAAA;oBACXC,IAAK,EAAA,GAAA;oBACLhC,KAAOA,EAAAA,KAAAA;AACPiC,oBAAAA,WAAAA,EAAazC,aAAc,CAAA;AACzBoC,wBAAAA,EAAAA,EAAIC,OAAQ,CAAA,oBAAA,CAAA;wBACZC,cAAgB,EAAA;AAClB,qBAAA,CAAA;8BAECtC,aAAc,CAAA;AAAEoC,wBAAAA,EAAAA,EAAIC,OAAQ,CAAA,cAAA,CAAA;wBAAiBC,cAAgB,EAAA;AAAsB,qBAAA;;;;AAK9F;AAEA,IAAA,qBACEb,GAACiB,CAAAA,UAAAA,EAAAA;QAAWC,KAAM,EAAA,QAAA;QAASC,OAAS3B,EAAAA,YAAAA;AAClC,QAAA,QAAA,gBAAAQ,GAACoB,CAAAA,MAAAA,EAAAA,EAAAA;;AAGP;;;;"}
@@ -2,7 +2,6 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var strapiAdmin = require('@strapi/admin/strapi-admin');
6
5
  var designSystem = require('@strapi/design-system');
7
6
  var formik = require('formik');
8
7
  var isEqual = require('lodash/isEqual');
@@ -11,6 +10,7 @@ var styledComponents = require('styled-components');
11
10
  var yup = require('yup');
12
11
  var useEditAsset = require('../../hooks/useEditAsset.js');
13
12
  var useFolderStructure = require('../../hooks/useFolderStructure.js');
13
+ var useTracking = require('../../hooks/useTracking.js');
14
14
  var findRecursiveFolderByValue = require('../../utils/findRecursiveFolderByValue.js');
15
15
  var formatBytes = require('../../utils/formatBytes.js');
16
16
  require('date-fns');
@@ -57,7 +57,7 @@ const fileInfoSchema = yup__namespace.object({
57
57
  });
58
58
  const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation, omitFields = [], omitActions = [] })=>{
59
59
  const { formatMessage, formatDate } = reactIntl.useIntl();
60
- const { trackUsage } = strapiAdmin.useTracking();
60
+ const { trackUsage } = useTracking.useTracking();
61
61
  const submitButtonRef = React__namespace.useRef(null);
62
62
  const [isCropping, setIsCropping] = React__namespace.useState(false);
63
63
  const [replacementFile, setReplacementFile] = React__namespace.useState();
@@ -249,7 +249,8 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
249
249
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.TextInput, {
250
250
  value: values.name,
251
251
  onChange: handleChange,
252
- disabled: formDisabled
252
+ disabled: formDisabled,
253
+ type: "text"
253
254
  }),
254
255
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {})
255
256
  ]
@@ -271,7 +272,8 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
271
272
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.TextInput, {
272
273
  value: values.alternativeText,
273
274
  onChange: handleChange,
274
- disabled: formDisabled
275
+ disabled: formDisabled,
276
+ type: "text"
275
277
  }),
276
278
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Hint, {}),
277
279
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Error, {})
@@ -290,7 +292,8 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
290
292
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.TextInput, {
291
293
  value: values.caption,
292
294
  onChange: handleChange,
293
- disabled: formDisabled
295
+ disabled: formDisabled,
296
+ type: "text"
294
297
  })
295
298
  ]
296
299
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"EditAssetContent.js","sources":["../../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type { File as FileDefinition, RawFile } from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const formDisabled = !canUpdate || isCropping;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","fileInfoSchema","yup","object","name","string","required","alternativeText","caption","folder","number","EditAssetContent","onClose","asset","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","value","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","undefined","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
1
+ {"version":3,"file":"EditAssetContent.js","sources":["../../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type { File as FileDefinition, RawFile } from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const formDisabled = !canUpdate || isCropping;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","fileInfoSchema","yup","object","name","string","required","alternativeText","caption","folder","number","EditAssetContent","onClose","asset","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","value","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","undefined","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useTracking } from '@strapi/admin/strapi-admin';
4
3
  import { Flex, Modal, Loader, Button, Grid, Field, TextInput, VisuallyHidden } from '@strapi/design-system';
5
4
  import { Formik, Form } from 'formik';
6
5
  import isEqual from 'lodash/isEqual';
@@ -9,6 +8,7 @@ import { styled } from 'styled-components';
9
8
  import * as yup from 'yup';
10
9
  import { useEditAsset } from '../../hooks/useEditAsset.mjs';
11
10
  import { useFolderStructure } from '../../hooks/useFolderStructure.mjs';
11
+ import { useTracking } from '../../hooks/useTracking.mjs';
12
12
  import { findRecursiveFolderByValue } from '../../utils/findRecursiveFolderByValue.mjs';
13
13
  import { formatBytes } from '../../utils/formatBytes.mjs';
14
14
  import 'date-fns';
@@ -227,7 +227,8 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
227
227
  /*#__PURE__*/ jsx(TextInput, {
228
228
  value: values.name,
229
229
  onChange: handleChange,
230
- disabled: formDisabled
230
+ disabled: formDisabled,
231
+ type: "text"
231
232
  }),
232
233
  /*#__PURE__*/ jsx(Field.Error, {})
233
234
  ]
@@ -249,7 +250,8 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
249
250
  /*#__PURE__*/ jsx(TextInput, {
250
251
  value: values.alternativeText,
251
252
  onChange: handleChange,
252
- disabled: formDisabled
253
+ disabled: formDisabled,
254
+ type: "text"
253
255
  }),
254
256
  /*#__PURE__*/ jsx(Field.Hint, {}),
255
257
  /*#__PURE__*/ jsx(Field.Error, {})
@@ -268,7 +270,8 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
268
270
  /*#__PURE__*/ jsx(TextInput, {
269
271
  value: values.caption,
270
272
  onChange: handleChange,
271
- disabled: formDisabled
273
+ disabled: formDisabled,
274
+ type: "text"
272
275
  })
273
276
  ]
274
277
  }),