@strapi/content-manager 5.11.0 → 5.12.0-beta.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/chunks/{ComponentConfigurationPage-BBCYsnnE.js → ComponentConfigurationPage-CBvwLnAK.js} +5 -6
- package/dist/admin/chunks/{ComponentConfigurationPage-BBCYsnnE.js.map → ComponentConfigurationPage-CBvwLnAK.js.map} +1 -1
- package/dist/admin/chunks/{ComponentConfigurationPage-DNBN8tI3.mjs → ComponentConfigurationPage-w_ss7xEy.mjs} +5 -6
- package/dist/admin/chunks/{ComponentConfigurationPage-DNBN8tI3.mjs.map → ComponentConfigurationPage-w_ss7xEy.mjs.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-Cu0Vt-uc.js → EditConfigurationPage-CbAhYSyH.js} +5 -6
- package/dist/admin/chunks/{EditConfigurationPage-Cu0Vt-uc.js.map → EditConfigurationPage-CbAhYSyH.js.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-CoivzF-x.mjs → EditConfigurationPage-D1iHIzSR.mjs} +5 -6
- package/dist/admin/chunks/{EditConfigurationPage-CoivzF-x.mjs.map → EditConfigurationPage-D1iHIzSR.mjs.map} +1 -1
- package/dist/admin/chunks/{EditViewPage-BpGtaOKG.mjs → EditViewPage-BtunY0ZP.mjs} +102 -95
- package/dist/admin/chunks/EditViewPage-BtunY0ZP.mjs.map +1 -0
- package/dist/admin/chunks/{EditViewPage-B48r4DLX.js → EditViewPage-Cf_TPJZd.js} +102 -95
- package/dist/admin/chunks/EditViewPage-Cf_TPJZd.js.map +1 -0
- package/dist/admin/chunks/{Form-rQQtxfmF.mjs → Form-DsvK3WTh.mjs} +3 -3
- package/dist/admin/chunks/{Form-rQQtxfmF.mjs.map → Form-DsvK3WTh.mjs.map} +1 -1
- package/dist/admin/chunks/{Form-DD49gSWW.js → Form-UMrizqJP.js} +5 -5
- package/dist/admin/chunks/{Form-DD49gSWW.js.map → Form-UMrizqJP.js.map} +1 -1
- package/dist/admin/chunks/{History-RLJ9Svg6.js → History-Crvb_hzd.js} +17 -13
- package/dist/admin/chunks/History-Crvb_hzd.js.map +1 -0
- package/dist/admin/chunks/{History-BdsTgpW-.mjs → History-DsRVSUF7.mjs} +16 -12
- package/dist/admin/chunks/History-DsRVSUF7.mjs.map +1 -0
- package/dist/admin/chunks/{Input-BUVu6H9n.js → Input-C2r54bIL.js} +1327 -64
- package/dist/admin/chunks/Input-C2r54bIL.js.map +1 -0
- package/dist/admin/chunks/{Input-CtIJ2J0c.mjs → Input-D6obstp0.mjs} +1315 -55
- package/dist/admin/chunks/Input-D6obstp0.mjs.map +1 -0
- package/dist/admin/chunks/{ListConfigurationPage-38s4e-VJ.mjs → ListConfigurationPage-DW-wAwmW.mjs} +4 -5
- package/dist/admin/chunks/{ListConfigurationPage-38s4e-VJ.mjs.map → ListConfigurationPage-DW-wAwmW.mjs.map} +1 -1
- package/dist/admin/chunks/{ListConfigurationPage-DfnrA3dw.js → ListConfigurationPage-DlQ2pLyr.js} +6 -7
- package/dist/admin/chunks/{ListConfigurationPage-DfnrA3dw.js.map → ListConfigurationPage-DlQ2pLyr.js.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-BTmlktgT.mjs → ListViewPage-DcUhPA9a.mjs} +3 -4
- package/dist/admin/chunks/{ListViewPage-BTmlktgT.mjs.map → ListViewPage-DcUhPA9a.mjs.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-D9-LGPq_.js → ListViewPage-nJJ227Fo.js} +7 -8
- package/dist/admin/chunks/{ListViewPage-D9-LGPq_.js.map → ListViewPage-nJJ227Fo.js.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-owzdv-pl.js → NoContentTypePage-Cxt-uFq7.js} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-owzdv-pl.js.map → NoContentTypePage-Cxt-uFq7.js.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-CcyR2i1K.mjs → NoContentTypePage-DbRXR2cr.mjs} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-CcyR2i1K.mjs.map → NoContentTypePage-DbRXR2cr.mjs.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-CM_r8w5u.js → NoPermissionsPage-BeMTv_SG.js} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-CM_r8w5u.js.map → NoPermissionsPage-BeMTv_SG.js.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-lBonAXej.mjs → NoPermissionsPage-RWPwNESA.mjs} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-lBonAXej.mjs.map → NoPermissionsPage-RWPwNESA.mjs.map} +1 -1
- package/dist/admin/chunks/{Preview-Bv3GKyWZ.js → Preview-CCjSV5Iu.js} +119 -200
- package/dist/admin/chunks/Preview-CCjSV5Iu.js.map +1 -0
- package/dist/admin/chunks/{Preview-Dh5Z7aGp.mjs → Preview-aVLT3LM_.mjs} +123 -204
- package/dist/admin/chunks/Preview-aVLT3LM_.mjs.map +1 -0
- package/dist/admin/chunks/{en-CImiNxXE.mjs → en-C2zEwS3-.mjs} +4 -1
- package/dist/admin/chunks/{en-CImiNxXE.mjs.map → en-C2zEwS3-.mjs.map} +1 -1
- package/dist/admin/chunks/{en-CLf4SuMQ.js → en-G976DLsg.js} +4 -1
- package/dist/admin/chunks/{en-CLf4SuMQ.js.map → en-G976DLsg.js.map} +1 -1
- package/dist/admin/chunks/{index-CGBB9Dho.js → index-BA_JLxKS.js} +185 -121
- package/dist/admin/chunks/index-BA_JLxKS.js.map +1 -0
- package/dist/admin/chunks/{index-BkM_Z7pU.mjs → index-CIOT3ggy.mjs} +184 -123
- package/dist/admin/chunks/index-CIOT3ggy.mjs.map +1 -0
- package/dist/admin/chunks/{layout-Dbmjk7mC.js → layout-C510xcd6.js} +86 -13
- package/dist/admin/chunks/layout-C510xcd6.js.map +1 -0
- package/dist/admin/chunks/{layout-D8ji6QNJ.mjs → layout-DjT9cccU.mjs} +78 -5
- package/dist/admin/chunks/layout-DjT9cccU.mjs.map +1 -0
- package/dist/admin/chunks/{useDragAndDrop-gcqEJMnO.js → objects-BJTP843m.js} +73 -1
- package/dist/admin/chunks/objects-BJTP843m.js.map +1 -0
- package/dist/admin/chunks/{useDragAndDrop-HYwNDExe.mjs → objects-D2z-IJgu.mjs} +72 -2
- package/dist/admin/chunks/objects-D2z-IJgu.mjs.map +1 -0
- package/dist/admin/chunks/{relations-jNJK8ESO.js → usePrev-BglKW7a4.js} +18 -2
- package/dist/admin/chunks/usePrev-BglKW7a4.js.map +1 -0
- package/dist/admin/chunks/{relations-Dv0FHoBS.mjs → usePrev-DAWUYIPh.mjs} +18 -4
- package/dist/admin/chunks/usePrev-DAWUYIPh.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/features/DocumentContext.d.ts +53 -0
- package/dist/admin/src/features/DocumentRBAC.d.ts +3 -2
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +8 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/{Relations.d.ts → Relations/Relations.d.ts} +9 -4
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +8 -3
- package/dist/admin/src/pages/EditView/components/InputRenderer.d.ts +7 -4
- package/dist/admin/src/preview/components/PreviewHeader.d.ts +1 -2
- package/dist/admin/src/preview/pages/Preview.d.ts +0 -2
- package/package.json +5 -5
- package/dist/admin/chunks/EditViewPage-B48r4DLX.js.map +0 -1
- package/dist/admin/chunks/EditViewPage-BpGtaOKG.mjs.map +0 -1
- package/dist/admin/chunks/History-BdsTgpW-.mjs.map +0 -1
- package/dist/admin/chunks/History-RLJ9Svg6.js.map +0 -1
- package/dist/admin/chunks/Input-BUVu6H9n.js.map +0 -1
- package/dist/admin/chunks/Input-CtIJ2J0c.mjs.map +0 -1
- package/dist/admin/chunks/Preview-Bv3GKyWZ.js.map +0 -1
- package/dist/admin/chunks/Preview-Dh5Z7aGp.mjs.map +0 -1
- package/dist/admin/chunks/Relations-DP5krCGC.mjs +0 -1291
- package/dist/admin/chunks/Relations-DP5krCGC.mjs.map +0 -1
- package/dist/admin/chunks/Relations-T8Cr0N9M.js +0 -1318
- package/dist/admin/chunks/Relations-T8Cr0N9M.js.map +0 -1
- package/dist/admin/chunks/index-BkM_Z7pU.mjs.map +0 -1
- package/dist/admin/chunks/index-CGBB9Dho.js.map +0 -1
- package/dist/admin/chunks/layout-D8ji6QNJ.mjs.map +0 -1
- package/dist/admin/chunks/layout-Dbmjk7mC.js.map +0 -1
- package/dist/admin/chunks/objects-C3EebVVe.js +0 -76
- package/dist/admin/chunks/objects-C3EebVVe.js.map +0 -1
- package/dist/admin/chunks/objects-wl73iEma.mjs +0 -73
- package/dist/admin/chunks/objects-wl73iEma.mjs.map +0 -1
- package/dist/admin/chunks/relations-Dv0FHoBS.mjs.map +0 -1
- package/dist/admin/chunks/relations-jNJK8ESO.js.map +0 -1
- package/dist/admin/chunks/useDragAndDrop-HYwNDExe.mjs.map +0 -1
- package/dist/admin/chunks/useDragAndDrop-gcqEJMnO.js.map +0 -1
- package/dist/admin/chunks/usePrev-Bjw2dhmq.mjs +0 -18
- package/dist/admin/chunks/usePrev-Bjw2dhmq.mjs.map +0 -1
- package/dist/admin/chunks/usePrev-DIYl-IAL.js +0 -21
- package/dist/admin/chunks/usePrev-DIYl-IAL.js.map +0 -1
- package/dist/admin/src/preview/components/PreviewContent.d.ts +0 -2
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"EditViewPage-BpGtaOKG.mjs","sources":["../../../admin/src/hooks/useOnce.ts","../../../admin/src/pages/EditView/EditViewPage.tsx"],"sourcesContent":["/* eslint-disable react-hooks/exhaustive-deps */\nimport * as React from 'react';\n\nexport const useOnce = (effect: React.EffectCallback) => React.useEffect(effect, emptyDeps);\n\nconst emptyDeps: React.DependencyList = [];\n","import * as React from 'react';\n\nimport {\n Page,\n Blocker,\n Form,\n useRBAC,\n useNotification,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Grid, Main, Tabs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDoc } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useOnce } from '../../hooks/useOnce';\nimport { getTranslation } from '../../utils/translations';\nimport { createYupSchema } from '../../utils/validation';\n\nimport { FormLayout } from './components/FormLayout';\nimport { Header } from './components/Header';\nimport { Panels } from './components/Panels';\n\n/* -------------------------------------------------------------------------------------------------\n * EditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditViewPage = () => {\n const location = useLocation();\n const [\n {\n query: { status },\n },\n setQuery,\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const {\n document,\n meta,\n isLoading: isLoadingDocument,\n schema,\n components,\n collectionType,\n id,\n model,\n hasError,\n getTitle,\n getInitialFormValues,\n } = useDoc();\n\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n useOnce(() => {\n /**\n * We only ever want to fire the notification once otherwise\n * whenever the app re-renders it'll pop up regardless of\n * what we do because the state comes from react-router-dom\n */\n if (location?.state && 'error' in location.state) {\n toggleNotification({\n type: 'danger',\n message: location.state.error,\n timeout: 5000,\n });\n }\n });\n\n const isLoadingActionsRBAC = useDocumentRBAC('EditViewPage', (state) => state.isLoading);\n\n const isSingleType = collectionType === SINGLE_TYPES;\n\n /**\n * single-types don't current have an id, but because they're a singleton\n * we can simply use the update operation to continuously update the same\n * document with varying params.\n */\n const isCreatingDocument = !id && !isSingleType;\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { mainField },\n },\n } = useDocumentLayout(model);\n\n const { isLazyLoading } = useLazyComponents([]);\n\n const isLoading = isLoadingActionsRBAC || isLoadingDocument || isLoadingLayout || isLazyLoading;\n\n const initialValues = getInitialFormValues(isCreatingDocument);\n\n if (isLoading && !document?.documentId) {\n return <Page.Loading />;\n }\n\n if (!initialValues || hasError) {\n return <Page.Error />;\n }\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n ...options,\n });\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n return (\n <Main paddingLeft={10} paddingRight={10}>\n <Page.Title>{getTitle(mainField)}</Page.Title>\n <Form\n disabled={hasDraftAndPublished && status === 'published'}\n initialValues={initialValues}\n method={isCreatingDocument ? 'POST' : 'PUT'}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n ...options,\n });\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n >\n {({ resetForm }) => (\n <>\n <Header\n isCreating={isCreatingDocument}\n status={hasDraftAndPublished ? getDocumentStatus(document, meta) : undefined}\n title={getTitle(mainField)}\n />\n <Tabs.Root variant=\"simple\" value={status} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTranslation('containers.edit.tabs.label'),\n defaultMessage: 'Document status',\n })}\n >\n {hasDraftAndPublished ? (\n <>\n <StatusTab value=\"draft\">\n {formatMessage({\n id: getTranslation('containers.edit.tabs.draft'),\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab\n disabled={!meta || meta.availableStatus.length === 0}\n value=\"published\"\n >\n {formatMessage({\n id: getTranslation('containers.edit.tabs.published'),\n defaultMessage: 'published',\n })}\n </StatusTab>\n </>\n ) : null}\n </Tabs.List>\n <Grid.Root paddingTop={8} gap={4}>\n <Grid.Item col={9} s={12} direction=\"column\" alignItems=\"stretch\">\n <Tabs.Content value=\"draft\">\n <FormLayout layout={layout} />\n </Tabs.Content>\n <Tabs.Content value=\"published\">\n <FormLayout layout={layout} />\n </Tabs.Content>\n </Grid.Item>\n <Grid.Item col={3} s={12} direction=\"column\" alignItems=\"stretch\">\n <Panels />\n </Grid.Item>\n </Grid.Root>\n </Tabs.Root>\n <Blocker\n // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284\n onProceed={resetForm}\n />\n </>\n )}\n </Form>\n </Main>\n );\n};\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\n/**\n * @internal\n * @description Returns the status of the document where its latest state takes priority,\n * this typically will be \"published\" unless a user has edited their draft in which we should\n * display \"modified\".\n */\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <EditViewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { EditViewPage, ProtectedEditViewPage, getDocumentStatus };\n"],"names":["useOnce","effect","React","useEffect","emptyDeps","EditViewPage","location","useLocation","query","status","setQuery","useQueryParams","formatMessage","useIntl","toggleNotification","useNotification","document","meta","isLoading","isLoadingDocument","schema","components","collectionType","id","model","hasError","getTitle","getInitialFormValues","useDoc","hasDraftAndPublished","options","draftAndPublish","state","type","message","error","timeout","isLoadingActionsRBAC","useDocumentRBAC","isSingleType","SINGLE_TYPES","isCreatingDocument","isLoadingLayout","edit","layout","settings","mainField","useDocumentLayout","isLazyLoading","useLazyComponents","initialValues","documentId","_jsx","Page","Loading","Error","handleTabChange","validateSync","values","yupSchema","createYupSchema","attributes","abortEarly","_jsxs","Main","paddingLeft","paddingRight","Title","Form","disabled","method","validate","initialErrors","forceValidation","resetForm","_Fragment","Header","isCreating","getDocumentStatus","undefined","title","Tabs","Root","variant","value","onValueChange","List","aria-label","getTranslation","defaultMessage","StatusTab","availableStatus","length","Grid","paddingTop","gap","Item","col","s","direction","alignItems","Content","FormLayout","Panels","Blocker","onProceed","styled","Trigger","docStatus","statuses","find","doc","publishedAt","ProtectedEditViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","map","action","subject","Protect","DocumentRBAC"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"History-BdsTgpW-.mjs","sources":["../../../admin/src/history/components/VersionInputRenderer.tsx","../../../admin/src/history/components/VersionContent.tsx","../../../admin/src/history/services/historyVersion.ts","../../../admin/src/history/components/VersionHeader.tsx","../../../admin/src/history/components/VersionsList.tsx","../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n Form,\n} from '@strapi/admin/strapi-admin';\nimport { Alert, Box, Field, Flex, Link, Tooltip, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { HistoryVersionDataResponse } from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport { useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { BlocksInput } from '../../pages/EditView/components/FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from '../../pages/EditView/components/FormInputs/Component/Input';\nimport {\n DynamicZone,\n useDynamicZone,\n} from '../../pages/EditView/components/FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from '../../pages/EditView/components/FormInputs/NotAllowed';\nimport { UIDInput } from '../../pages/EditView/components/FormInputs/UID';\nimport { Wysiwyg } from '../../pages/EditView/components/FormInputs/Wysiwyg/Field';\nimport { useFieldHint } from '../../pages/EditView/components/InputRenderer';\nimport { getRelationLabel } from '../../utils/relations';\nimport { useHistoryContext } from '../pages/History';\n\nimport { getRemaingFieldsLayout } from './VersionContent';\n\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { RelationsFieldProps } from '../../pages/EditView/components/FormInputs/Relations';\nimport type { RelationResult } from '../../services/relations';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\nconst StyledAlert = styled(Alert).attrs({ closeLabel: 'Close', onClose: () => {}, shadow: 'none' })`\n button {\n display: none;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * CustomRelationInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst LinkEllipsis = styled(Link)`\n display: block;\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n`;\n\nconst CustomRelationInput = (props: RelationsFieldProps) => {\n const { formatMessage } = useIntl();\n const field = useField<\n { results: RelationResult[]; meta: { missingCount: number } } | RelationResult[]\n >(props.name);\n\n /**\n * Ideally the server would return the correct shape, however, for admin user relations\n * it sanitizes everything out when it finds an object for the relation value.\n */\n let formattedFieldValue;\n if (field) {\n formattedFieldValue = Array.isArray(field.value)\n ? { results: field.value, meta: { missingCount: 0 } }\n : field.value;\n }\n\n if (\n !formattedFieldValue ||\n (formattedFieldValue.results.length === 0 && formattedFieldValue.meta.missingCount === 0)\n ) {\n return (\n <>\n <Field.Label action={props.labelAction}>{props.label}</Field.Label>\n <Box marginTop={1}>\n {/* @ts-expect-error – we dont need closeLabel */}\n <StyledAlert variant=\"default\">\n {formatMessage({\n id: 'content-manager.history.content.no-relations',\n defaultMessage: 'No relations.',\n })}\n </StyledAlert>\n </Box>\n </>\n );\n }\n\n const { results, meta } = formattedFieldValue;\n\n return (\n <Box>\n <Field.Label>{props.label}</Field.Label>\n {results.length > 0 && (\n <Flex direction=\"column\" gap={2} marginTop={1} alignItems=\"stretch\">\n {results.map((relationData) => {\n // @ts-expect-error - targetModel does exist on the attribute. But it's not typed.\n const { targetModel } = props.attribute;\n const href = `../${COLLECTION_TYPES}/${targetModel}/${relationData.documentId}`;\n const label = getRelationLabel(relationData, props.mainField);\n const isAdminUserRelation = targetModel === 'admin::user';\n\n return (\n <Flex\n key={relationData.documentId ?? relationData.id}\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background=\"neutral150\"\n justifyContent=\"space-between\"\n >\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip label={label}>\n {isAdminUserRelation ? (\n <Typography>{label}</Typography>\n ) : (\n <LinkEllipsis tag={NavLink} to={href}>\n {label}\n </LinkEllipsis>\n )}\n </Tooltip>\n </Box>\n <DocumentStatus status={relationData.status as string} />\n </Flex>\n );\n })}\n </Flex>\n )}\n {meta.missingCount > 0 && (\n /* @ts-expect-error – we dont need closeLabel */\n <StyledAlert\n marginTop={1}\n variant=\"warning\"\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.title',\n defaultMessage:\n '{number, plural, =1 {Missing relation} other {{number} missing relations}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CustomMediaInput\n * -----------------------------------------------------------------------------------------------*/\n\n// Create an object with value at key path (i.e. 'a.b.c')\nconst createInitialValuesForPath = (keyPath: string, value: any) => {\n const keys = keyPath.split('.');\n // The root level object\n const root: Record<string, any> = {};\n\n // Make the first node the root\n let node = root;\n keys.forEach((key, index) => {\n // Skip prototype pollution keys\n if (key === '__proto__' || key === 'constructor') return;\n // If it's the last key, set the node value\n if (index === keys.length - 1) {\n node[key] = value;\n } else {\n // Ensure the key exists and is an object\n node[key] = node[key] || {};\n }\n\n // Traverse down the tree\n node = node[key];\n });\n\n return root;\n};\n\nconst CustomMediaInput = (props: VersionInputRendererProps) => {\n const { value } = useField(props.name);\n const results = value?.results ?? [];\n const meta = value?.meta ?? { missingCount: 0 };\n\n const { formatMessage } = useIntl();\n\n const fields = useStrapiApp('CustomMediaInput', (state) => state.fields);\n const MediaLibrary = fields.media as React.ComponentType<\n VersionInputRendererProps & { multiple: boolean }\n >;\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Form\n method=\"PUT\"\n disabled={true}\n initialValues={createInitialValuesForPath(props.name, results)}\n >\n <MediaLibrary {...props} disabled={true} multiple={results.length > 1} />\n </Form>\n {meta.missingCount > 0 && (\n <StyledAlert\n variant=\"warning\"\n closeLabel=\"Close\"\n onClose={() => {}}\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.title',\n defaultMessage:\n '{number, plural, =1 {Missing asset} other {{number} missing assets}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted in the Media Library and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Flex>\n );\n};\n\ntype VersionInputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n /**\n * In the context of content history, deleted fields need to ignore RBAC\n * @default false\n */\n shouldIgnoreRBAC?: boolean;\n};\n\n/**\n * Checks if the i18n plugin added a label action to the field and modifies it\n * to adapt the wording for the history page.\n */\nconst getLabelAction = (labelAction: VersionInputRendererProps['labelAction']) => {\n if (!React.isValidElement(labelAction)) {\n return labelAction;\n }\n\n // TODO: find a better way to do this rather than access internals\n const labelActionTitleId = labelAction.props.title.id;\n\n if (labelActionTitleId === 'i18n.Field.localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.localized',\n defaultMessage:\n 'This value is specific to this locale. If you restore this version, the content will not be replaced for other locales.',\n },\n });\n }\n\n if (labelActionTitleId === 'i18n.Field.not-localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.not-localized',\n defaultMessage:\n 'This value is common to all locales. If you restore this version and save the changes, the content will be replaced for all locales.',\n },\n });\n }\n\n // Label action is unrelated to i18n, don't touch it.\n return labelAction;\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed specifically\n * to be used on the History page in the content-manager. It understands how to render specific\n * inputs within the context of a history version (i.e. relations, media, ignored RBAC, etc...)\n */\nconst VersionInputRenderer = ({\n visible,\n hint: providedHint,\n shouldIgnoreRBAC = false,\n labelAction,\n ...props\n}: VersionInputRendererProps) => {\n const customLabelAction = getLabelAction(labelAction);\n\n const { formatMessage } = useIntl();\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const fieldSizes = useTypedSelector((state) => state['content-manager'].app.fieldSizes);\n\n const { id, components } = useDoc();\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n const editableFields = id ? canUpdateFields : canCreateFields;\n const readableFields = id ? canReadFields : canCreateFields;\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n const {\n edit: { components: componentsLayout },\n } = useDocLayout();\n\n if (!visible) {\n return null;\n }\n\n /**\n * Don't render the field if the user can't read it.\n */\n if (!shouldIgnoreRBAC && !canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Attributes found on the current content-type schema cannot be restored. We handle\n * this by displaying a warning alert to the user instead of the input for that field type.\n */\n const addedAttributes = version.meta.unknownAttributes.added;\n if (Object.keys(addedAttributes).includes(props.name)) {\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={1}>\n <Field.Label>{props.label}</Field.Label>\n <StyledAlert\n width=\"100%\"\n closeLabel=\"Close\"\n onClose={() => {}}\n variant=\"warning\"\n title={formatMessage({\n id: 'content-manager.history.content.new-field.title',\n defaultMessage: 'New field',\n })}\n >\n {formatMessage({\n id: 'content-manager.history.content.new-field.message',\n defaultMessage:\n \"This field didn't exist when this version was saved. If you restore this version, it will be empty.\",\n })}\n </StyledAlert>\n </Flex>\n );\n }\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * Since media fields use a custom input via the upload plugin provided by the useLibrary hook,\n * we need to handle the them before other custom inputs coming from the useLibrary hook.\n */\n if (props.type === 'media') {\n return (\n <CustomMediaInput {...props} labelAction={customLabelAction} disabled={fieldIsDisabled} />\n );\n }\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component':\n const { layout } = componentsLayout[props.attribute.component];\n // Components can only have one panel, so only save the first layout item\n const [remainingFieldsLayout] = getRemaingFieldsLayout({\n layout: [layout],\n metadatas: configuration.components[props.attribute.component].metadatas,\n fieldSizes,\n schemaAttributes: components[props.attribute.component].attributes,\n });\n\n return (\n <ComponentInput\n {...props}\n layout={[...layout, ...(remainingFieldsLayout || [])]}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </ComponentInput>\n );\n case 'dynamiczone':\n return (\n <DynamicZone\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </DynamicZone>\n );\n case 'relation':\n return (\n <CustomRelationInput\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'richtext':\n return (\n <Wysiwyg\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'uid':\n return (\n <UIDInput\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nexport type { VersionInputRendererProps };\nexport { VersionInputRenderer };\n","import * as React from 'react';\n\nimport { Form, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n borderColor=\"neutral150\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => (\n <Grid.Root key={gridRowIndex} gap={4}>\n {row.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n ))}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={8}>\n <Form disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Divider />\n <Box paddingTop={8}>\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingBottom={6} gap={1}>\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form disabled={true} method=\"PUT\" initialValues={version.data}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n","import {\n GetHistoryVersions,\n RestoreHistoryVersion,\n} from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { contentManagerApi } from '../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RestoreVersion extends RestoreHistoryVersion.Request {\n documentId: Data.ID;\n collectionType?: string;\n}\n\nconst historyVersionsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getHistoryVersions: builder.query<\n GetHistoryVersions.Response,\n GetHistoryVersions.Request['query']\n >({\n query(params) {\n return {\n url: `/content-manager/history-versions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: ['HistoryVersion'],\n }),\n restoreVersion: builder.mutation<RestoreHistoryVersion.Response, RestoreVersion>({\n query({ params, body }) {\n return {\n url: `/content-manager/history-versions/${params.versionId}/restore`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (_res, _error, { documentId, collectionType, params }) => {\n return [\n 'HistoryVersion',\n {\n type: 'Document',\n id:\n collectionType === COLLECTION_TYPES\n ? `${params.contentType}_${documentId}`\n : params.contentType,\n },\n ];\n },\n }),\n }),\n});\n\nconst { useGetHistoryVersionsQuery, useRestoreVersionMutation } = historyVersionsApi;\n\nexport { useGetHistoryVersionsQuery, useRestoreVersionMutation };\n","import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n","import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { RelativeTime } from '../../components/RelativeTime';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDisplayName } from '../../utils/users';\nimport { useHistoryContext } from '../pages/History';\n\nimport type { HistoryVersions } from '../../../../shared/contracts';\n\n/* -------------------------------------------------------------------------------------------------\n * BlueText\n * -----------------------------------------------------------------------------------------------*/\n\nconst BlueText = (children: React.ReactNode) => (\n <Typography textColor=\"primary600\" variant=\"pi\">\n {children}\n </Typography>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * VersionCard\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VersionCardProps {\n version: HistoryVersions.HistoryVersionDataResponse;\n isCurrent: boolean;\n}\n\nconst VersionCard = ({ version, isCurrent }: VersionCardProps) => {\n const { formatDate, formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ id?: string }>();\n const isActive = query.id === version.id.toString();\n const author = version.createdBy && getDisplayName(version.createdBy);\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={3}\n hasRadius\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={isActive ? 'primary600' : 'neutral200'}\n color=\"neutral800\"\n padding={5}\n tag={Link}\n to={`?${stringify({ ...query, id: version.id })}`}\n style={{ textDecoration: 'none' }}\n >\n <Flex direction=\"column\" gap={1} alignItems=\"flex-start\">\n <Typography tag=\"h3\" fontWeight=\"semiBold\">\n {formatDate(version.createdAt, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </Typography>\n <Typography tag=\"p\" variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.sidebar.versionDescription',\n defaultMessage:\n '{distanceToNow}{isAnonymous, select, true {} other { by {author}}}{isCurrent, select, true { <b>(current)</b>} other {}}',\n },\n {\n distanceToNow: <RelativeTime timestamp={new Date(version.createdAt)} />,\n author,\n isAnonymous: !Boolean(version.createdBy),\n isCurrent,\n b: BlueText,\n }\n )}\n </Typography>\n </Flex>\n {version.status && <DocumentStatus status={version.status} size=\"XS\" />}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PaginationButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PaginationButtonProps {\n page: number;\n children: React.ReactNode;\n}\n\nconst PaginationButton = ({ page, children }: PaginationButtonProps) => {\n const [{ query }] = useQueryParams<{ id?: string }>();\n\n // Remove the id from the pagination link, so that the history page can redirect\n // to the id of the first history version in the new page once it's loaded\n const { id: _id, ...queryRest } = query;\n\n return (\n <Link to={{ search: stringify({ ...queryRest, page }) }} style={{ textDecoration: 'none' }}>\n <Typography variant=\"omega\" textColor=\"primary600\">\n {children}\n </Typography>\n </Link>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionsList = () => {\n const { formatMessage } = useIntl();\n const { versions, page } = useHistoryContext('VersionsList', (state) => ({\n versions: state.versions,\n page: state.page,\n }));\n\n return (\n <Flex\n shrink={0}\n direction=\"column\"\n alignItems=\"stretch\"\n width=\"320px\"\n height=\"100vh\"\n background=\"neutral0\"\n borderColor=\"neutral200\"\n borderWidth=\"0 0 0 1px\"\n borderStyle=\"solid\"\n tag=\"aside\"\n >\n <Flex\n direction=\"row\"\n justifyContent=\"space-between\"\n padding={4}\n borderColor=\"neutral200\"\n borderWidth=\"0 0 1px\"\n borderStyle=\"solid\"\n tag=\"header\"\n >\n <Typography tag=\"h2\" variant=\"omega\" fontWeight=\"semiBold\">\n {formatMessage({\n id: 'content-manager.history.sidebar.title',\n defaultMessage: 'Versions',\n })}\n </Typography>\n <Box background=\"neutral150\" hasRadius padding={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {versions.meta.pagination.total}\n </Typography>\n </Box>\n </Flex>\n <Box flex={1} overflow=\"auto\">\n {versions.meta.pagination.page > 1 && (\n <Box paddingTop={4} textAlign=\"center\">\n <PaginationButton page={page - 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-newer',\n defaultMessage: 'Show newer versions',\n })}\n </PaginationButton>\n </Box>\n )}\n <Flex direction=\"column\" gap={3} padding={4} tag=\"ul\" alignItems=\"stretch\">\n {versions.data.map((version, index) => (\n <li\n key={version.id}\n aria-label={formatMessage({\n id: 'content-manager.history.sidebar.title.version-card.aria-label',\n defaultMessage: 'Version card',\n })}\n >\n <VersionCard version={version} isCurrent={page === 1 && index === 0} />\n </li>\n ))}\n </Flex>\n {versions.meta.pagination.page < versions.meta.pagination.pageCount && (\n <Box paddingBottom={4} textAlign=\"center\">\n <PaginationButton page={page + 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-older',\n defaultMessage: 'Show older versions',\n })}\n </PaginationButton>\n </Box>\n )}\n </Box>\n </Flex>\n );\n};\n\nexport { VersionsList };\n","import * as React from 'react';\n\nimport { useQueryParams, Page, createContext, useRBAC } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Main, Portal, Link } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams, NavLink } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useGetContentTypeConfigurationQuery } from '../../services/contentTypes';\nimport { buildValidParams } from '../../utils/api';\nimport { VersionContent } from '../components/VersionContent';\nimport { VersionHeader } from '../components/VersionHeader';\nimport { VersionsList } from '../components/VersionsList';\nimport { useGetHistoryVersionsQuery } from '../services/historyVersion';\n\nimport type {\n ContentType,\n FindContentTypeConfiguration,\n} from '../../../../shared/contracts/content-types';\nimport type {\n HistoryVersionDataResponse,\n GetHistoryVersions,\n} from '../../../../shared/contracts/history-versions';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HistoryContextValue {\n contentType: UID.ContentType;\n id?: string; // null for single types\n layout: EditLayout['layout'];\n configuration: FindContentTypeConfiguration.Response['data'];\n selectedVersion: HistoryVersionDataResponse;\n // Errors are handled outside of the provider, so we exclude errors from the response type\n versions: Extract<GetHistoryVersions.Response, { data: Array<HistoryVersionDataResponse> }>;\n page: number;\n mainField: string;\n schema: ContentType;\n}\n\nconst [HistoryProvider, useHistoryContext] = createContext<HistoryContextValue>('HistoryPage');\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HistoryPage = () => {\n const headerId = React.useId();\n const { formatMessage } = useIntl();\n const {\n slug,\n id: documentId,\n collectionType,\n } = useParams<{\n collectionType: string;\n slug: UID.ContentType;\n id: string;\n }>();\n\n const { isLoading: isLoadingDocument, schema } = useDocument({\n collectionType: collectionType!,\n model: slug!,\n });\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { displayName, mainField },\n },\n } = useDocumentLayout(slug!);\n const { data: configuration, isLoading: isLoadingConfiguration } =\n useGetContentTypeConfigurationQuery(slug!);\n\n // Parse state from query params\n const [{ query }] = useQueryParams<{\n page?: number;\n id?: string;\n plugins?: Record<string, unknown>;\n }>();\n const { id: selectedVersionId, ...queryWithoutId } = query;\n const validQueryParamsWithoutId = buildValidParams(queryWithoutId);\n const page = validQueryParamsWithoutId.page ? Number(validQueryParamsWithoutId.page) : 1;\n\n const versionsResponse = useGetHistoryVersionsQuery(\n {\n contentType: slug!,\n ...(documentId ? { documentId } : {}),\n // Omit id since it's not needed by the endpoint and caused extra refetches\n ...validQueryParamsWithoutId,\n },\n { refetchOnMountOrArgChange: true }\n );\n\n /**\n * When the page is first mounted, if there's already data in the cache, RTK has a fullfilled\n * status for the first render, right before it triggers a new request. This means the code\n * briefly reaches the part that redirects to the first history version (if none is set).\n * But since that data is stale, that means auto-selecting a version that may not be the most\n * recent. To avoid this, we identify through requestId if the query is stale despite the\n * fullfilled status, and show the loader in that case.\n * This means we essentially don't want cache. We always refetch when the page mounts, and\n * we always show the loader until we have the most recent data. That's fine for this page.\n */\n const initialRequestId = React.useRef(versionsResponse.requestId);\n const isStaleRequest = versionsResponse.requestId === initialRequestId.current;\n\n /**\n * Ensure that we have the necessary data to render the page:\n * - slug for single types\n * - slug _and_ documentId for collection types\n */\n if (!slug || (collectionType === COLLECTION_TYPES && !documentId)) {\n return <Navigate to=\"/content-manager\" />;\n }\n\n if (\n isLoadingDocument ||\n isLoadingLayout ||\n versionsResponse.isFetching ||\n isStaleRequest ||\n isLoadingConfiguration\n ) {\n return <Page.Loading />;\n }\n\n // It was a success, handle empty data\n if (!versionsResponse.isError && !versionsResponse.data?.data?.length) {\n return (\n <>\n <Page.NoData\n action={\n <Link\n tag={NavLink}\n to={`/content-manager/${collectionType}/${slug}${documentId ? `/${documentId}` : ''}`}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n </>\n );\n }\n\n // We have data, handle selected version\n if (versionsResponse.data?.data?.length && !selectedVersionId) {\n return (\n <Navigate\n to={{ search: stringify({ ...query, id: versionsResponse.data.data[0].id }) }}\n replace\n />\n );\n }\n\n const selectedVersion = versionsResponse.data?.data?.find(\n (version) => version.id.toString() === selectedVersionId\n );\n if (\n versionsResponse.isError ||\n !layout ||\n !schema ||\n !selectedVersion ||\n !configuration ||\n // This should not happen as it's covered by versionsResponse.isError, but we need it for TS\n versionsResponse.data.error\n ) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.history.page-title',\n defaultMessage: '{contentType} history',\n },\n {\n contentType: displayName,\n }\n )}\n </Page.Title>\n <HistoryProvider\n contentType={slug}\n id={documentId}\n schema={schema}\n layout={layout}\n configuration={configuration}\n selectedVersion={selectedVersion}\n versions={versionsResponse.data}\n page={page}\n mainField={mainField}\n >\n <Flex direction=\"row\" alignItems=\"flex-start\">\n <Main\n grow={1}\n height=\"100vh\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n <VersionContent />\n </Main>\n <VersionsList />\n </Flex>\n </HistoryProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedHistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedHistoryPageImpl = () => {\n const { slug } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <HistoryPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedHistoryPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedHistoryPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedHistoryPage, HistoryProvider, useHistoryContext };\nexport type { HistoryContextValue };\n"],"names":["StyledAlert","styled","Alert","attrs","closeLabel","onClose","shadow","LinkEllipsis","Link","CustomRelationInput","props","formatMessage","useIntl","field","useField","name","formattedFieldValue","Array","isArray","value","results","meta","missingCount","length","_jsxs","_Fragment","_jsx","Field","Label","action","labelAction","label","Box","marginTop","variant","id","defaultMessage","Flex","direction","gap","alignItems","map","relationData","targetModel","attribute","href","COLLECTION_TYPES","documentId","getRelationLabel","mainField","isAdminUserRelation","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderColor","background","justifyContent","minWidth","Tooltip","Typography","tag","NavLink","to","DocumentStatus","status","title","number","createInitialValuesForPath","keyPath","keys","split","root","node","forEach","key","index","CustomMediaInput","fields","useStrapiApp","state","MediaLibrary","media","Form","method","disabled","initialValues","multiple","getLabelAction","React","isValidElement","labelActionTitleId","cloneElement","VersionInputRenderer","visible","hint","providedHint","shouldIgnoreRBAC","customLabelAction","version","useHistoryContext","selectedVersion","configuration","fieldSizes","useTypedSelector","app","components","useDoc","isFormDisabled","useForm","isInDynamicZone","useDynamicZone","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","editableFields","readableFields","canUserReadField","type","canUserEditField","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","edit","componentsLayout","useDocLayout","NotAllowedInput","fieldIsDisabled","addedAttributes","unknownAttributes","added","Object","includes","width","CustomInput","FormInputRenderer","addedInputTypes","BlocksInput","layout","component","remainingFieldsLayout","getRemaingFieldsLayout","metadatas","schemaAttributes","attributes","ComponentInput","inputProps","DynamicZone","Wysiwyg","UIDInput","options","enum","unique","_unique","_mainField","restProps","createLayoutFromFields","reduce","rows","push","row","fieldsInLayout","flatMap","panel","remainingFields","entries","currentRemainingFields","size","default","FormPanel","some","Grid","Root","Item","col","s","xs","gridRowIndex","VersionContent","schema","removedAttributes","removed","removedAttributesAsFields","attributeName","unknownFieldsLayout","contentType","transformedData","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","position","Divider","b","chunks","fontWeight","historyVersionsApi","contentManagerApi","injectEndpoints","endpoints","builder","getHistoryVersions","query","params","url","config","providesTags","restoreVersion","mutation","body","versionId","invalidatesTags","_res","_error","collectionType","useGetHistoryVersionsQuery","useRestoreVersionMutation","VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","useState","navigate","useNavigate","formatDate","trackUsage","useTracking","toggleNotification","useNotification","useQueryParams","slug","useParams","isLoading","allowedActions","useRBAC","PERMISSIONS","subject","isCurrentVersion","page","versions","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","relatedDocumentId","relative","message","error","Dialog","open","onOpenChange","BaseHeader","Date","createdAt","year","month","day","hour","minute","subtitle","textColor","hasLocale","Boolean","locale","info","singularName","trim","navigationAction","startIcon","ArrowLeft","isExternal","sticky","primaryAction","Trigger","Button","canUpdate","onClick","ConfirmDialog","onConfirm","endAction","loading","textAlign","WarningCircle","height","fill","isDraft","BlueText","children","VersionCard","isCurrent","isActive","toString","author","createdBy","getDisplayName","borderWidth","borderStyle","color","padding","style","textDecoration","distanceToNow","RelativeTime","timestamp","isAnonymous","PaginationButton","_id","queryRest","VersionsList","shrink","pagination","total","flex","overflow","li","aria-label","pageCount","HistoryProvider","createContext","HistoryPage","useId","isLoadingDocument","useDocument","model","isLoadingLayout","settings","displayName","useDocumentLayout","isLoadingConfiguration","useGetContentTypeConfigurationQuery","selectedVersionId","queryWithoutId","validQueryParamsWithoutId","buildValidParams","Number","versionsResponse","refetchOnMountOrArgChange","initialRequestId","useRef","requestId","isStaleRequest","current","Navigate","isFetching","Page","Loading","isError","NoData","replace","find","Error","Title","Main","grow","labelledBy","ProtectedHistoryPageImpl","permissions","top","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"History-RLJ9Svg6.js","sources":["../../../admin/src/history/components/VersionInputRenderer.tsx","../../../admin/src/history/components/VersionContent.tsx","../../../admin/src/history/services/historyVersion.ts","../../../admin/src/history/components/VersionHeader.tsx","../../../admin/src/history/components/VersionsList.tsx","../../../admin/src/history/pages/History.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useForm,\n InputRenderer as FormInputRenderer,\n useField,\n Form,\n} from '@strapi/admin/strapi-admin';\nimport { Alert, Box, Field, Flex, Link, Tooltip, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { HistoryVersionDataResponse } from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc } from '../../hooks/useDocument';\nimport { useDocLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useTypedSelector } from '../../modules/hooks';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { BlocksInput } from '../../pages/EditView/components/FormInputs/BlocksInput/BlocksInput';\nimport { ComponentInput } from '../../pages/EditView/components/FormInputs/Component/Input';\nimport {\n DynamicZone,\n useDynamicZone,\n} from '../../pages/EditView/components/FormInputs/DynamicZone/Field';\nimport { NotAllowedInput } from '../../pages/EditView/components/FormInputs/NotAllowed';\nimport { UIDInput } from '../../pages/EditView/components/FormInputs/UID';\nimport { Wysiwyg } from '../../pages/EditView/components/FormInputs/Wysiwyg/Field';\nimport { useFieldHint } from '../../pages/EditView/components/InputRenderer';\nimport { getRelationLabel } from '../../utils/relations';\nimport { useHistoryContext } from '../pages/History';\n\nimport { getRemaingFieldsLayout } from './VersionContent';\n\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { RelationsFieldProps } from '../../pages/EditView/components/FormInputs/Relations';\nimport type { RelationResult } from '../../services/relations';\nimport type { Schema } from '@strapi/types';\nimport type { DistributiveOmit } from 'react-redux';\n\nconst StyledAlert = styled(Alert).attrs({ closeLabel: 'Close', onClose: () => {}, shadow: 'none' })`\n button {\n display: none;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * CustomRelationInput\n * -----------------------------------------------------------------------------------------------*/\n\nconst LinkEllipsis = styled(Link)`\n display: block;\n\n & > span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n }\n`;\n\nconst CustomRelationInput = (props: RelationsFieldProps) => {\n const { formatMessage } = useIntl();\n const field = useField<\n { results: RelationResult[]; meta: { missingCount: number } } | RelationResult[]\n >(props.name);\n\n /**\n * Ideally the server would return the correct shape, however, for admin user relations\n * it sanitizes everything out when it finds an object for the relation value.\n */\n let formattedFieldValue;\n if (field) {\n formattedFieldValue = Array.isArray(field.value)\n ? { results: field.value, meta: { missingCount: 0 } }\n : field.value;\n }\n\n if (\n !formattedFieldValue ||\n (formattedFieldValue.results.length === 0 && formattedFieldValue.meta.missingCount === 0)\n ) {\n return (\n <>\n <Field.Label action={props.labelAction}>{props.label}</Field.Label>\n <Box marginTop={1}>\n {/* @ts-expect-error – we dont need closeLabel */}\n <StyledAlert variant=\"default\">\n {formatMessage({\n id: 'content-manager.history.content.no-relations',\n defaultMessage: 'No relations.',\n })}\n </StyledAlert>\n </Box>\n </>\n );\n }\n\n const { results, meta } = formattedFieldValue;\n\n return (\n <Box>\n <Field.Label>{props.label}</Field.Label>\n {results.length > 0 && (\n <Flex direction=\"column\" gap={2} marginTop={1} alignItems=\"stretch\">\n {results.map((relationData) => {\n // @ts-expect-error - targetModel does exist on the attribute. But it's not typed.\n const { targetModel } = props.attribute;\n const href = `../${COLLECTION_TYPES}/${targetModel}/${relationData.documentId}`;\n const label = getRelationLabel(relationData, props.mainField);\n const isAdminUserRelation = targetModel === 'admin::user';\n\n return (\n <Flex\n key={relationData.documentId ?? relationData.id}\n paddingTop={2}\n paddingBottom={2}\n paddingLeft={4}\n paddingRight={4}\n hasRadius\n borderColor=\"neutral200\"\n background=\"neutral150\"\n justifyContent=\"space-between\"\n >\n <Box minWidth={0} paddingTop={1} paddingBottom={1} paddingRight={4}>\n <Tooltip label={label}>\n {isAdminUserRelation ? (\n <Typography>{label}</Typography>\n ) : (\n <LinkEllipsis tag={NavLink} to={href}>\n {label}\n </LinkEllipsis>\n )}\n </Tooltip>\n </Box>\n <DocumentStatus status={relationData.status as string} />\n </Flex>\n );\n })}\n </Flex>\n )}\n {meta.missingCount > 0 && (\n /* @ts-expect-error – we dont need closeLabel */\n <StyledAlert\n marginTop={1}\n variant=\"warning\"\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.title',\n defaultMessage:\n '{number, plural, =1 {Missing relation} other {{number} missing relations}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-relations.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * CustomMediaInput\n * -----------------------------------------------------------------------------------------------*/\n\n// Create an object with value at key path (i.e. 'a.b.c')\nconst createInitialValuesForPath = (keyPath: string, value: any) => {\n const keys = keyPath.split('.');\n // The root level object\n const root: Record<string, any> = {};\n\n // Make the first node the root\n let node = root;\n keys.forEach((key, index) => {\n // Skip prototype pollution keys\n if (key === '__proto__' || key === 'constructor') return;\n // If it's the last key, set the node value\n if (index === keys.length - 1) {\n node[key] = value;\n } else {\n // Ensure the key exists and is an object\n node[key] = node[key] || {};\n }\n\n // Traverse down the tree\n node = node[key];\n });\n\n return root;\n};\n\nconst CustomMediaInput = (props: VersionInputRendererProps) => {\n const { value } = useField(props.name);\n const results = value?.results ?? [];\n const meta = value?.meta ?? { missingCount: 0 };\n\n const { formatMessage } = useIntl();\n\n const fields = useStrapiApp('CustomMediaInput', (state) => state.fields);\n const MediaLibrary = fields.media as React.ComponentType<\n VersionInputRendererProps & { multiple: boolean }\n >;\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\">\n <Form\n method=\"PUT\"\n disabled={true}\n initialValues={createInitialValuesForPath(props.name, results)}\n >\n <MediaLibrary {...props} disabled={true} multiple={results.length > 1} />\n </Form>\n {meta.missingCount > 0 && (\n <StyledAlert\n variant=\"warning\"\n closeLabel=\"Close\"\n onClose={() => {}}\n title={formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.title',\n defaultMessage:\n '{number, plural, =1 {Missing asset} other {{number} missing assets}}',\n },\n { number: meta.missingCount }\n )}\n >\n {formatMessage(\n {\n id: 'content-manager.history.content.missing-assets.message',\n defaultMessage:\n \"{number, plural, =1 {It has} other {They have}} been deleted in the Media Library and can't be restored.\",\n },\n { number: meta.missingCount }\n )}\n </StyledAlert>\n )}\n </Flex>\n );\n};\n\ntype VersionInputRendererProps = DistributiveOmit<EditFieldLayout, 'size'> & {\n /**\n * In the context of content history, deleted fields need to ignore RBAC\n * @default false\n */\n shouldIgnoreRBAC?: boolean;\n};\n\n/**\n * Checks if the i18n plugin added a label action to the field and modifies it\n * to adapt the wording for the history page.\n */\nconst getLabelAction = (labelAction: VersionInputRendererProps['labelAction']) => {\n if (!React.isValidElement(labelAction)) {\n return labelAction;\n }\n\n // TODO: find a better way to do this rather than access internals\n const labelActionTitleId = labelAction.props.title.id;\n\n if (labelActionTitleId === 'i18n.Field.localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.localized',\n defaultMessage:\n 'This value is specific to this locale. If you restore this version, the content will not be replaced for other locales.',\n },\n });\n }\n\n if (labelActionTitleId === 'i18n.Field.not-localized') {\n return React.cloneElement(labelAction, {\n ...labelAction.props,\n title: {\n id: 'history.content.not-localized',\n defaultMessage:\n 'This value is common to all locales. If you restore this version and save the changes, the content will be replaced for all locales.',\n },\n });\n }\n\n // Label action is unrelated to i18n, don't touch it.\n return labelAction;\n};\n\n/**\n * @internal\n *\n * @description An abstraction around the regular form input renderer designed specifically\n * to be used on the History page in the content-manager. It understands how to render specific\n * inputs within the context of a history version (i.e. relations, media, ignored RBAC, etc...)\n */\nconst VersionInputRenderer = ({\n visible,\n hint: providedHint,\n shouldIgnoreRBAC = false,\n labelAction,\n ...props\n}: VersionInputRendererProps) => {\n const customLabelAction = getLabelAction(labelAction);\n\n const { formatMessage } = useIntl();\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const fieldSizes = useTypedSelector((state) => state['content-manager'].app.fieldSizes);\n\n const { id, components } = useDoc();\n const isFormDisabled = useForm('InputRenderer', (state) => state.disabled);\n\n const isInDynamicZone = useDynamicZone('isInDynamicZone', (state) => state.isInDynamicZone);\n\n const canCreateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canCreateFields);\n const canReadFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canReadFields);\n const canUpdateFields = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUpdateFields);\n const canUserAction = useDocumentRBAC('InputRenderer', (rbac) => rbac.canUserAction);\n\n const editableFields = id ? canUpdateFields : canCreateFields;\n const readableFields = id ? canReadFields : canCreateFields;\n /**\n * Component fields are always readable and editable,\n * however the fields within them may not be.\n */\n const canUserReadField = canUserAction(props.name, readableFields, props.type);\n const canUserEditField = canUserAction(props.name, editableFields, props.type);\n\n const fields = useStrapiApp('InputRenderer', (app) => app.fields);\n const { lazyComponentStore } = useLazyComponents(\n attributeHasCustomFieldProperty(props.attribute) ? [props.attribute.customField] : undefined\n );\n\n const hint = useFieldHint(providedHint, props.attribute);\n const {\n edit: { components: componentsLayout },\n } = useDocLayout();\n\n if (!visible) {\n return null;\n }\n\n /**\n * Don't render the field if the user can't read it.\n */\n if (!shouldIgnoreRBAC && !canUserReadField && !isInDynamicZone) {\n return <NotAllowedInput hint={hint} {...props} />;\n }\n\n const fieldIsDisabled =\n (!canUserEditField && !isInDynamicZone) || props.disabled || isFormDisabled;\n\n /**\n * Attributes found on the current content-type schema cannot be restored. We handle\n * this by displaying a warning alert to the user instead of the input for that field type.\n */\n const addedAttributes = version.meta.unknownAttributes.added;\n if (Object.keys(addedAttributes).includes(props.name)) {\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" gap={1}>\n <Field.Label>{props.label}</Field.Label>\n <StyledAlert\n width=\"100%\"\n closeLabel=\"Close\"\n onClose={() => {}}\n variant=\"warning\"\n title={formatMessage({\n id: 'content-manager.history.content.new-field.title',\n defaultMessage: 'New field',\n })}\n >\n {formatMessage({\n id: 'content-manager.history.content.new-field.message',\n defaultMessage:\n \"This field didn't exist when this version was saved. If you restore this version, it will be empty.\",\n })}\n </StyledAlert>\n </Flex>\n );\n }\n\n /**\n * Because a custom field has a unique prop but the type could be confused with either\n * the useField hook or the type of the field we need to handle it separately and first.\n */\n if (attributeHasCustomFieldProperty(props.attribute)) {\n const CustomInput = lazyComponentStore[props.attribute.customField];\n\n if (CustomInput) {\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLazyComponents hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – this workaround lets us display that the custom field is missing.\n type={props.attribute.customField}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * Since media fields use a custom input via the upload plugin provided by the useLibrary hook,\n * we need to handle the them before other custom inputs coming from the useLibrary hook.\n */\n if (props.type === 'media') {\n return (\n <CustomMediaInput {...props} labelAction={customLabelAction} disabled={fieldIsDisabled} />\n );\n }\n /**\n * This is where we handle ONLY the fields from the `useLibrary` hook.\n */\n const addedInputTypes = Object.keys(fields);\n if (!attributeHasCustomFieldProperty(props.attribute) && addedInputTypes.includes(props.type)) {\n const CustomInput = fields[props.type];\n return (\n <CustomInput\n {...props}\n // @ts-expect-error – TODO: fix this type error in the useLibrary hook.\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n }\n\n /**\n * These include the content-manager specific fields, failing that we fall back\n * to the more generic form input renderer.\n */\n switch (props.type) {\n case 'blocks':\n return <BlocksInput {...props} hint={hint} type={props.type} disabled={fieldIsDisabled} />;\n case 'component':\n const { layout } = componentsLayout[props.attribute.component];\n // Components can only have one panel, so only save the first layout item\n const [remainingFieldsLayout] = getRemaingFieldsLayout({\n layout: [layout],\n metadatas: configuration.components[props.attribute.component].metadatas,\n fieldSizes,\n schemaAttributes: components[props.attribute.component].attributes,\n });\n\n return (\n <ComponentInput\n {...props}\n layout={[...layout, ...(remainingFieldsLayout || [])]}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </ComponentInput>\n );\n case 'dynamiczone':\n return (\n <DynamicZone\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n >\n {(inputProps) => <VersionInputRenderer {...inputProps} shouldIgnoreRBAC={true} />}\n </DynamicZone>\n );\n case 'relation':\n return (\n <CustomRelationInput\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'richtext':\n return (\n <Wysiwyg\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n case 'uid':\n return (\n <UIDInput\n {...props}\n hint={hint}\n type={props.type}\n labelAction={customLabelAction}\n disabled={fieldIsDisabled}\n />\n );\n /**\n * Enumerations are a special case because they require options.\n */\n case 'enumeration':\n return (\n <FormInputRenderer\n {...props}\n hint={hint}\n labelAction={customLabelAction}\n options={props.attribute.enum.map((value) => ({ value }))}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n default:\n // These props are not needed for the generic form input renderer.\n const { unique: _unique, mainField: _mainField, ...restProps } = props;\n return (\n <FormInputRenderer\n {...restProps}\n hint={hint}\n labelAction={customLabelAction}\n // @ts-expect-error – Temp workaround so we don't forget custom-fields don't work!\n type={props.customField ? 'custom-field' : props.type}\n disabled={fieldIsDisabled}\n />\n );\n }\n};\n\nconst attributeHasCustomFieldProperty = (\n attribute: Schema.Attribute.AnyAttribute\n): attribute is Schema.Attribute.AnyAttribute & Schema.Attribute.CustomField<string> =>\n 'customField' in attribute && typeof attribute.customField === 'string';\n\nexport type { VersionInputRendererProps };\nexport { VersionInputRenderer };\n","import * as React from 'react';\n\nimport { Form, Layouts } from '@strapi/admin/strapi-admin';\nimport { Box, Divider, Flex, Grid, Typography } from '@strapi/design-system';\nimport pipe from 'lodash/fp/pipe';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../hooks/useDocument';\nimport { useTypedSelector } from '../../modules/hooks';\nimport {\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n} from '../../pages/EditView/utils/data';\nimport { HistoryContextValue, useHistoryContext } from '../pages/History';\n\nimport { VersionInputRenderer } from './VersionInputRenderer';\n\nimport type { Metadatas } from '../../../../shared/contracts/content-types';\nimport type { GetInitData } from '../../../../shared/contracts/init';\nimport type { ComponentsDictionary, Document } from '../../hooks/useDocument';\nimport type { EditFieldLayout } from '../../hooks/useDocumentLayout';\nimport type { Schema } from '@strapi/types';\n\nconst createLayoutFromFields = <T extends EditFieldLayout | UnknownField>(fields: T[]) => {\n return (\n fields\n .reduce<Array<T[]>>((rows, field) => {\n if (field.type === 'dynamiczone') {\n // Dynamic zones take up all the columns in a row\n rows.push([field]);\n\n return rows;\n }\n\n if (!rows[rows.length - 1]) {\n // Create a new row if there isn't one available\n rows.push([]);\n }\n\n // Push fields to the current row, they wrap and handle their own column size\n rows[rows.length - 1].push(field);\n\n return rows;\n }, [])\n // Map the rows to panels\n .map((row) => [row])\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getRemainingFieldsLayout\n * -----------------------------------------------------------------------------------------------*/\n\ninterface GetRemainingFieldsLayoutOptions\n extends Pick<HistoryContextValue, 'layout'>,\n Pick<GetInitData.Response['data'], 'fieldSizes'> {\n schemaAttributes: HistoryContextValue['schema']['attributes'];\n metadatas: Metadatas;\n}\n\n/**\n * Build a layout for the fields that are were deleted from the edit view layout\n * via the configure the view page. This layout will be merged with the main one.\n * Those fields would be restored if the user restores the history version, which is why it's\n * important to show them, even if they're not in the normal layout.\n */\nfunction getRemaingFieldsLayout({\n layout,\n metadatas,\n schemaAttributes,\n fieldSizes,\n}: GetRemainingFieldsLayoutOptions) {\n const fieldsInLayout = layout.flatMap((panel) =>\n panel.flatMap((row) => row.flatMap((field) => field.name))\n );\n const remainingFields = Object.entries(metadatas).reduce<EditFieldLayout[]>(\n (currentRemainingFields, [name, field]) => {\n // Make sure we do not fields that are not visible, e.g. \"id\"\n if (!fieldsInLayout.includes(name) && field.edit.visible === true) {\n const attribute = schemaAttributes[name];\n // @ts-expect-error not sure why attribute causes type error\n currentRemainingFields.push({\n attribute,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: field.edit.label || name,\n name: name,\n size: fieldSizes[attribute.type].default ?? 12,\n });\n }\n\n return currentRemainingFields;\n },\n []\n );\n\n return createLayoutFromFields(remainingFields);\n}\n\n/* -------------------------------------------------------------------------------------------------\n * FormPanel\n * -----------------------------------------------------------------------------------------------*/\n\nconst FormPanel = ({ panel }: { panel: EditFieldLayout[][] }) => {\n if (panel.some((row) => row.some((field) => field.type === 'dynamiczone'))) {\n const [row] = panel;\n const [field] = row;\n\n return (\n <Grid.Root key={field.name} gap={4}>\n <Grid.Item col={12} s={12} xs={12} direction=\"column\" alignItems=\"stretch\">\n <VersionInputRenderer {...field} />\n </Grid.Item>\n </Grid.Root>\n );\n }\n\n return (\n <Box\n hasRadius\n background=\"neutral0\"\n shadow=\"tableShadow\"\n paddingLeft={6}\n paddingRight={6}\n paddingTop={6}\n paddingBottom={6}\n borderColor=\"neutral150\"\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {panel.map((row, gridRowIndex) => (\n <Grid.Root key={gridRowIndex} gap={4}>\n {row.map(({ size, ...field }) => {\n return (\n <Grid.Item\n col={size}\n key={field.name}\n s={12}\n xs={12}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <VersionInputRenderer {...field} />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n ))}\n </Flex>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionContent\n * -----------------------------------------------------------------------------------------------*/\n\ntype UnknownField = EditFieldLayout & { shouldIgnoreRBAC: boolean };\n\nconst VersionContent = () => {\n const { formatMessage } = useIntl();\n const { fieldSizes } = useTypedSelector((state) => state['content-manager'].app);\n const version = useHistoryContext('VersionContent', (state) => state.selectedVersion);\n const layout = useHistoryContext('VersionContent', (state) => state.layout);\n const configuration = useHistoryContext('VersionContent', (state) => state.configuration);\n const schema = useHistoryContext('VersionContent', (state) => state.schema);\n\n // Build a layout for the unknown fields section\n const removedAttributes = version.meta.unknownAttributes.removed;\n const removedAttributesAsFields = Object.entries(removedAttributes).map(\n ([attributeName, attribute]) => {\n const field = {\n attribute,\n shouldIgnoreRBAC: true,\n type: attribute.type,\n visible: true,\n disabled: true,\n label: attributeName,\n name: attributeName,\n size: fieldSizes[attribute.type].default ?? 12,\n } as UnknownField;\n\n return field;\n }\n );\n const unknownFieldsLayout = createLayoutFromFields(removedAttributesAsFields);\n\n // Build a layout for the fields that are were deleted from the layout\n const remainingFieldsLayout = getRemaingFieldsLayout({\n metadatas: configuration.contentType.metadatas,\n layout,\n schemaAttributes: schema.attributes,\n fieldSizes,\n });\n\n const { components } = useDoc();\n\n /**\n * Transform the data before passing it to the form so that each field\n * has a uniquely generated key\n */\n const transformedData = React.useMemo(() => {\n const transform =\n (schemaAttributes: Schema.Attributes, components: ComponentsDictionary = {}) =>\n (document: Omit<Document, 'id'>) => {\n const schema = { attributes: schemaAttributes };\n\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n prepareTempKeys(schema, components)\n );\n return transformations(document);\n };\n\n return transform(version.schema, components)(version.data);\n }, [components, version.data, version.schema]);\n\n return (\n <Layouts.Content>\n <Box paddingBottom={8}>\n <Form disabled={true} method=\"PUT\" initialValues={transformedData}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {[...layout, ...remainingFieldsLayout].map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n {removedAttributesAsFields.length > 0 && (\n <>\n <Divider />\n <Box paddingTop={8}>\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingBottom={6} gap={1}>\n <Typography variant=\"delta\">\n {formatMessage({\n id: 'content-manager.history.content.unknown-fields.title',\n defaultMessage: 'Unknown fields',\n })}\n </Typography>\n <Typography variant=\"pi\">\n {formatMessage(\n {\n id: 'content-manager.history.content.unknown-fields.message',\n defaultMessage:\n 'These fields have been deleted or renamed in the Content-Type Builder. <b>These fields will not be restored.</b>',\n },\n {\n b: (chunks: React.ReactNode) => (\n <Typography variant=\"pi\" fontWeight=\"bold\">\n {chunks}\n </Typography>\n ),\n }\n )}\n </Typography>\n </Flex>\n <Form disabled={true} method=\"PUT\" initialValues={version.data}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6} position=\"relative\">\n {unknownFieldsLayout.map((panel, index) => {\n return <FormPanel key={index} panel={panel} />;\n })}\n </Flex>\n </Form>\n </Box>\n </>\n )}\n </Layouts.Content>\n );\n};\n\nexport { VersionContent, getRemaingFieldsLayout };\n","import {\n GetHistoryVersions,\n RestoreHistoryVersion,\n} from '../../../../shared/contracts/history-versions';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { contentManagerApi } from '../../services/api';\n\nimport type { Data } from '@strapi/types';\n\ninterface RestoreVersion extends RestoreHistoryVersion.Request {\n documentId: Data.ID;\n collectionType?: string;\n}\n\nconst historyVersionsApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getHistoryVersions: builder.query<\n GetHistoryVersions.Response,\n GetHistoryVersions.Request['query']\n >({\n query(params) {\n return {\n url: `/content-manager/history-versions`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n providesTags: ['HistoryVersion'],\n }),\n restoreVersion: builder.mutation<RestoreHistoryVersion.Response, RestoreVersion>({\n query({ params, body }) {\n return {\n url: `/content-manager/history-versions/${params.versionId}/restore`,\n method: 'PUT',\n data: body,\n };\n },\n invalidatesTags: (_res, _error, { documentId, collectionType, params }) => {\n return [\n 'HistoryVersion',\n {\n type: 'Document',\n id:\n collectionType === COLLECTION_TYPES\n ? `${params.contentType}_${documentId}`\n : params.contentType,\n },\n ];\n },\n }),\n }),\n});\n\nconst { useGetHistoryVersionsQuery, useRestoreVersionMutation } = historyVersionsApi;\n\nexport { useGetHistoryVersionsQuery, useRestoreVersionMutation };\n","import * as React from 'react';\n\nimport {\n ConfirmDialog,\n useNotification,\n useQueryParams,\n useTracking,\n useRBAC,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Typography, Flex, Link, Dialog } from '@strapi/design-system';\nimport { ArrowLeft, WarningCircle } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, useParams, type To } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { useHistoryContext } from '../pages/History';\nimport { useRestoreVersionMutation } from '../services/historyVersion';\n\nimport type { UID } from '@strapi/types';\n\ninterface VersionHeaderProps {\n headerId: string;\n}\n\nexport const VersionHeader = ({ headerId }: VersionHeaderProps) => {\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const navigate = useNavigate();\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { collectionType, slug } = useParams<{ collectionType: string; slug: UID.ContentType }>();\n const [restoreVersion, { isLoading }] = useRestoreVersionMutation();\n const { allowedActions } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n const version = useHistoryContext('VersionHeader', (state) => state.selectedVersion);\n const mainField = useHistoryContext('VersionHeader', (state) => state.mainField);\n const schema = useHistoryContext('VersionHeader', (state) => state.schema);\n const isCurrentVersion = useHistoryContext(\n 'VersionHeader',\n (state) => state.page === 1 && state.versions.data[0].id === state.selectedVersion.id\n );\n\n const mainFieldValue = version.data[mainField];\n\n const getNextNavigation = (): To => {\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n return {\n pathname: '..',\n search: pluginsQueryParams,\n };\n };\n\n const handleRestore = async () => {\n try {\n const response = await restoreVersion({\n documentId: version.relatedDocumentId,\n collectionType,\n params: {\n versionId: version.id,\n contentType: version.contentType,\n },\n body: { contentType: version.contentType },\n });\n\n if ('data' in response) {\n navigate(getNextNavigation(), { relative: 'path' });\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: 'content-manager.restore.success.title',\n defaultMessage: 'Version restored.',\n }),\n message: formatMessage({\n id: 'content-manager.restore.success.message',\n defaultMessage: 'A past version of the content was restored.',\n }),\n });\n\n trackUsage('didRestoreHistoryVersion');\n }\n\n if ('error' in response) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.history.restore.error.message',\n defaultMessage: 'Could not restore version.',\n }),\n });\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={setIsConfirmDialogOpen}>\n <Layouts.BaseHeader\n id={headerId}\n title={formatDate(new Date(version.createdAt), {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n })}\n subtitle={\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.version.subtitle',\n defaultMessage:\n '{hasLocale, select, true {{subtitle}, in {locale}} other {{subtitle}}}',\n },\n {\n hasLocale: Boolean(version.locale),\n subtitle: `${mainFieldValue || ''} (${schema.info.singularName})`.trim(),\n locale: version.locale?.name,\n }\n )}\n </Typography>\n }\n navigationAction={\n <Link\n startIcon={<ArrowLeft />}\n tag={NavLink}\n to={getNextNavigation()}\n relative=\"path\"\n isExternal={false}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n sticky={false}\n primaryAction={\n <Dialog.Trigger>\n <Button\n disabled={!allowedActions.canUpdate || isCurrentVersion}\n onClick={() => {\n setIsConfirmDialogOpen(true);\n }}\n >\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n </Dialog.Trigger>\n }\n />\n <ConfirmDialog\n onConfirm={handleRestore}\n endAction={\n <Button variant=\"secondary\" onClick={handleRestore} loading={isLoading}>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.button',\n defaultMessage: 'Restore',\n })}\n </Button>\n }\n >\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n textAlign=\"center\"\n >\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography>\n {formatMessage({\n id: 'content-manager.history.restore.confirm.title',\n defaultMessage: 'Are you sure you want to restore this version?',\n })}\n </Typography>\n <Typography>\n {formatMessage(\n {\n id: 'content-manager.history.restore.confirm.message',\n defaultMessage:\n \"{isDraft, select, true {The restored content will override your draft.} other {The restored content won't be published, it will override the draft and be saved as pending changes. You'll be able to publish the changes at anytime.}}\",\n },\n {\n isDraft: version.status === 'draft',\n }\n )}\n </Typography>\n </Flex>\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n","import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { RelativeTime } from '../../components/RelativeTime';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDisplayName } from '../../utils/users';\nimport { useHistoryContext } from '../pages/History';\n\nimport type { HistoryVersions } from '../../../../shared/contracts';\n\n/* -------------------------------------------------------------------------------------------------\n * BlueText\n * -----------------------------------------------------------------------------------------------*/\n\nconst BlueText = (children: React.ReactNode) => (\n <Typography textColor=\"primary600\" variant=\"pi\">\n {children}\n </Typography>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * VersionCard\n * -----------------------------------------------------------------------------------------------*/\n\ninterface VersionCardProps {\n version: HistoryVersions.HistoryVersionDataResponse;\n isCurrent: boolean;\n}\n\nconst VersionCard = ({ version, isCurrent }: VersionCardProps) => {\n const { formatDate, formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ id?: string }>();\n const isActive = query.id === version.id.toString();\n const author = version.createdBy && getDisplayName(version.createdBy);\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"flex-start\"\n gap={3}\n hasRadius\n borderWidth=\"1px\"\n borderStyle=\"solid\"\n borderColor={isActive ? 'primary600' : 'neutral200'}\n color=\"neutral800\"\n padding={5}\n tag={Link}\n to={`?${stringify({ ...query, id: version.id })}`}\n style={{ textDecoration: 'none' }}\n >\n <Flex direction=\"column\" gap={1} alignItems=\"flex-start\">\n <Typography tag=\"h3\" fontWeight=\"semiBold\">\n {formatDate(version.createdAt, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n })}\n </Typography>\n <Typography tag=\"p\" variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: 'content-manager.history.sidebar.versionDescription',\n defaultMessage:\n '{distanceToNow}{isAnonymous, select, true {} other { by {author}}}{isCurrent, select, true { <b>(current)</b>} other {}}',\n },\n {\n distanceToNow: <RelativeTime timestamp={new Date(version.createdAt)} />,\n author,\n isAnonymous: !Boolean(version.createdBy),\n isCurrent,\n b: BlueText,\n }\n )}\n </Typography>\n </Flex>\n {version.status && <DocumentStatus status={version.status} size=\"XS\" />}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PaginationButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PaginationButtonProps {\n page: number;\n children: React.ReactNode;\n}\n\nconst PaginationButton = ({ page, children }: PaginationButtonProps) => {\n const [{ query }] = useQueryParams<{ id?: string }>();\n\n // Remove the id from the pagination link, so that the history page can redirect\n // to the id of the first history version in the new page once it's loaded\n const { id: _id, ...queryRest } = query;\n\n return (\n <Link to={{ search: stringify({ ...queryRest, page }) }} style={{ textDecoration: 'none' }}>\n <Typography variant=\"omega\" textColor=\"primary600\">\n {children}\n </Typography>\n </Link>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * VersionsList\n * -----------------------------------------------------------------------------------------------*/\n\nconst VersionsList = () => {\n const { formatMessage } = useIntl();\n const { versions, page } = useHistoryContext('VersionsList', (state) => ({\n versions: state.versions,\n page: state.page,\n }));\n\n return (\n <Flex\n shrink={0}\n direction=\"column\"\n alignItems=\"stretch\"\n width=\"320px\"\n height=\"100vh\"\n background=\"neutral0\"\n borderColor=\"neutral200\"\n borderWidth=\"0 0 0 1px\"\n borderStyle=\"solid\"\n tag=\"aside\"\n >\n <Flex\n direction=\"row\"\n justifyContent=\"space-between\"\n padding={4}\n borderColor=\"neutral200\"\n borderWidth=\"0 0 1px\"\n borderStyle=\"solid\"\n tag=\"header\"\n >\n <Typography tag=\"h2\" variant=\"omega\" fontWeight=\"semiBold\">\n {formatMessage({\n id: 'content-manager.history.sidebar.title',\n defaultMessage: 'Versions',\n })}\n </Typography>\n <Box background=\"neutral150\" hasRadius padding={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {versions.meta.pagination.total}\n </Typography>\n </Box>\n </Flex>\n <Box flex={1} overflow=\"auto\">\n {versions.meta.pagination.page > 1 && (\n <Box paddingTop={4} textAlign=\"center\">\n <PaginationButton page={page - 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-newer',\n defaultMessage: 'Show newer versions',\n })}\n </PaginationButton>\n </Box>\n )}\n <Flex direction=\"column\" gap={3} padding={4} tag=\"ul\" alignItems=\"stretch\">\n {versions.data.map((version, index) => (\n <li\n key={version.id}\n aria-label={formatMessage({\n id: 'content-manager.history.sidebar.title.version-card.aria-label',\n defaultMessage: 'Version card',\n })}\n >\n <VersionCard version={version} isCurrent={page === 1 && index === 0} />\n </li>\n ))}\n </Flex>\n {versions.meta.pagination.page < versions.meta.pagination.pageCount && (\n <Box paddingBottom={4} textAlign=\"center\">\n <PaginationButton page={page + 1}>\n {formatMessage({\n id: 'content-manager.history.sidebar.show-older',\n defaultMessage: 'Show older versions',\n })}\n </PaginationButton>\n </Box>\n )}\n </Box>\n </Flex>\n );\n};\n\nexport { VersionsList };\n","import * as React from 'react';\n\nimport { useQueryParams, Page, createContext, useRBAC } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, Main, Portal, Link } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Navigate, useParams, NavLink } from 'react-router-dom';\n\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useGetContentTypeConfigurationQuery } from '../../services/contentTypes';\nimport { buildValidParams } from '../../utils/api';\nimport { VersionContent } from '../components/VersionContent';\nimport { VersionHeader } from '../components/VersionHeader';\nimport { VersionsList } from '../components/VersionsList';\nimport { useGetHistoryVersionsQuery } from '../services/historyVersion';\n\nimport type {\n ContentType,\n FindContentTypeConfiguration,\n} from '../../../../shared/contracts/content-types';\nimport type {\n HistoryVersionDataResponse,\n GetHistoryVersions,\n} from '../../../../shared/contracts/history-versions';\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HistoryContextValue {\n contentType: UID.ContentType;\n id?: string; // null for single types\n layout: EditLayout['layout'];\n configuration: FindContentTypeConfiguration.Response['data'];\n selectedVersion: HistoryVersionDataResponse;\n // Errors are handled outside of the provider, so we exclude errors from the response type\n versions: Extract<GetHistoryVersions.Response, { data: Array<HistoryVersionDataResponse> }>;\n page: number;\n mainField: string;\n schema: ContentType;\n}\n\nconst [HistoryProvider, useHistoryContext] = createContext<HistoryContextValue>('HistoryPage');\n\n/* -------------------------------------------------------------------------------------------------\n * HistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst HistoryPage = () => {\n const headerId = React.useId();\n const { formatMessage } = useIntl();\n const {\n slug,\n id: documentId,\n collectionType,\n } = useParams<{\n collectionType: string;\n slug: UID.ContentType;\n id: string;\n }>();\n\n const { isLoading: isLoadingDocument, schema } = useDocument({\n collectionType: collectionType!,\n model: slug!,\n });\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { displayName, mainField },\n },\n } = useDocumentLayout(slug!);\n const { data: configuration, isLoading: isLoadingConfiguration } =\n useGetContentTypeConfigurationQuery(slug!);\n\n // Parse state from query params\n const [{ query }] = useQueryParams<{\n page?: number;\n id?: string;\n plugins?: Record<string, unknown>;\n }>();\n const { id: selectedVersionId, ...queryWithoutId } = query;\n const validQueryParamsWithoutId = buildValidParams(queryWithoutId);\n const page = validQueryParamsWithoutId.page ? Number(validQueryParamsWithoutId.page) : 1;\n\n const versionsResponse = useGetHistoryVersionsQuery(\n {\n contentType: slug!,\n ...(documentId ? { documentId } : {}),\n // Omit id since it's not needed by the endpoint and caused extra refetches\n ...validQueryParamsWithoutId,\n },\n { refetchOnMountOrArgChange: true }\n );\n\n /**\n * When the page is first mounted, if there's already data in the cache, RTK has a fullfilled\n * status for the first render, right before it triggers a new request. This means the code\n * briefly reaches the part that redirects to the first history version (if none is set).\n * But since that data is stale, that means auto-selecting a version that may not be the most\n * recent. To avoid this, we identify through requestId if the query is stale despite the\n * fullfilled status, and show the loader in that case.\n * This means we essentially don't want cache. We always refetch when the page mounts, and\n * we always show the loader until we have the most recent data. That's fine for this page.\n */\n const initialRequestId = React.useRef(versionsResponse.requestId);\n const isStaleRequest = versionsResponse.requestId === initialRequestId.current;\n\n /**\n * Ensure that we have the necessary data to render the page:\n * - slug for single types\n * - slug _and_ documentId for collection types\n */\n if (!slug || (collectionType === COLLECTION_TYPES && !documentId)) {\n return <Navigate to=\"/content-manager\" />;\n }\n\n if (\n isLoadingDocument ||\n isLoadingLayout ||\n versionsResponse.isFetching ||\n isStaleRequest ||\n isLoadingConfiguration\n ) {\n return <Page.Loading />;\n }\n\n // It was a success, handle empty data\n if (!versionsResponse.isError && !versionsResponse.data?.data?.length) {\n return (\n <>\n <Page.NoData\n action={\n <Link\n tag={NavLink}\n to={`/content-manager/${collectionType}/${slug}${documentId ? `/${documentId}` : ''}`}\n >\n {formatMessage({\n id: 'global.back',\n defaultMessage: 'Back',\n })}\n </Link>\n }\n />\n </>\n );\n }\n\n // We have data, handle selected version\n if (versionsResponse.data?.data?.length && !selectedVersionId) {\n return (\n <Navigate\n to={{ search: stringify({ ...query, id: versionsResponse.data.data[0].id }) }}\n replace\n />\n );\n }\n\n const selectedVersion = versionsResponse.data?.data?.find(\n (version) => version.id.toString() === selectedVersionId\n );\n if (\n versionsResponse.isError ||\n !layout ||\n !schema ||\n !selectedVersion ||\n !configuration ||\n // This should not happen as it's covered by versionsResponse.isError, but we need it for TS\n versionsResponse.data.error\n ) {\n return <Page.Error />;\n }\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.history.page-title',\n defaultMessage: '{contentType} history',\n },\n {\n contentType: displayName,\n }\n )}\n </Page.Title>\n <HistoryProvider\n contentType={slug}\n id={documentId}\n schema={schema}\n layout={layout}\n configuration={configuration}\n selectedVersion={selectedVersion}\n versions={versionsResponse.data}\n page={page}\n mainField={mainField}\n >\n <Flex direction=\"row\" alignItems=\"flex-start\">\n <Main\n grow={1}\n height=\"100vh\"\n background=\"neutral100\"\n paddingBottom={6}\n overflow=\"auto\"\n labelledBy={headerId}\n >\n <VersionHeader headerId={headerId} />\n <VersionContent />\n </Main>\n <VersionsList />\n </Flex>\n </HistoryProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedHistoryPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedHistoryPageImpl = () => {\n const { slug } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(PERMISSIONS.map((action) => ({ action, subject: slug })));\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <HistoryPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedHistoryPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedHistoryPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedHistoryPage, HistoryProvider, useHistoryContext };\nexport type { HistoryContextValue };\n"],"names":["StyledAlert","styled","Alert","attrs","closeLabel","onClose","shadow","LinkEllipsis","Link","CustomRelationInput","props","formatMessage","useIntl","field","useField","name","formattedFieldValue","Array","isArray","value","results","meta","missingCount","length","_jsxs","_Fragment","_jsx","Field","Label","action","labelAction","label","Box","marginTop","variant","id","defaultMessage","Flex","direction","gap","alignItems","map","relationData","targetModel","attribute","href","COLLECTION_TYPES","documentId","getRelationLabel","mainField","isAdminUserRelation","paddingTop","paddingBottom","paddingLeft","paddingRight","hasRadius","borderColor","background","justifyContent","minWidth","Tooltip","Typography","tag","NavLink","to","DocumentStatus","status","title","number","createInitialValuesForPath","keyPath","keys","split","root","node","forEach","key","index","CustomMediaInput","fields","useStrapiApp","state","MediaLibrary","media","Form","method","disabled","initialValues","multiple","getLabelAction","React","isValidElement","labelActionTitleId","cloneElement","VersionInputRenderer","visible","hint","providedHint","shouldIgnoreRBAC","customLabelAction","version","useHistoryContext","selectedVersion","configuration","fieldSizes","useTypedSelector","app","components","useDoc","isFormDisabled","useForm","isInDynamicZone","useDynamicZone","canCreateFields","useDocumentRBAC","rbac","canReadFields","canUpdateFields","canUserAction","editableFields","readableFields","canUserReadField","type","canUserEditField","lazyComponentStore","useLazyComponents","attributeHasCustomFieldProperty","customField","undefined","useFieldHint","edit","componentsLayout","useDocLayout","NotAllowedInput","fieldIsDisabled","addedAttributes","unknownAttributes","added","Object","includes","width","CustomInput","FormInputRenderer","addedInputTypes","BlocksInput","layout","component","remainingFieldsLayout","getRemaingFieldsLayout","metadatas","schemaAttributes","attributes","ComponentInput","inputProps","DynamicZone","Wysiwyg","UIDInput","options","enum","unique","_unique","_mainField","restProps","createLayoutFromFields","reduce","rows","push","row","fieldsInLayout","flatMap","panel","remainingFields","entries","currentRemainingFields","size","default","FormPanel","some","Grid","Root","Item","col","s","xs","gridRowIndex","VersionContent","schema","removedAttributes","removed","removedAttributesAsFields","attributeName","unknownFieldsLayout","contentType","transformedData","useMemo","transform","document","transformations","pipe","removeFieldsThatDontExistOnSchema","prepareTempKeys","data","Layouts","Content","position","Divider","b","chunks","fontWeight","historyVersionsApi","contentManagerApi","injectEndpoints","endpoints","builder","getHistoryVersions","query","params","url","config","providesTags","restoreVersion","mutation","body","versionId","invalidatesTags","_res","_error","collectionType","useGetHistoryVersionsQuery","useRestoreVersionMutation","VersionHeader","headerId","isConfirmDialogOpen","setIsConfirmDialogOpen","useState","navigate","useNavigate","formatDate","trackUsage","useTracking","toggleNotification","useNotification","useQueryParams","slug","useParams","isLoading","allowedActions","useRBAC","PERMISSIONS","subject","isCurrentVersion","page","versions","mainFieldValue","getNextNavigation","pluginsQueryParams","stringify","plugins","encode","pathname","search","handleRestore","response","relatedDocumentId","relative","message","error","Dialog","open","onOpenChange","BaseHeader","Date","createdAt","year","month","day","hour","minute","subtitle","textColor","hasLocale","Boolean","locale","info","singularName","trim","navigationAction","startIcon","ArrowLeft","isExternal","sticky","primaryAction","Trigger","Button","canUpdate","onClick","ConfirmDialog","onConfirm","endAction","loading","textAlign","WarningCircle","height","fill","isDraft","BlueText","children","VersionCard","isCurrent","isActive","toString","author","createdBy","getDisplayName","borderWidth","borderStyle","color","padding","style","textDecoration","distanceToNow","RelativeTime","timestamp","isAnonymous","PaginationButton","_id","queryRest","VersionsList","shrink","pagination","total","flex","overflow","li","aria-label","pageCount","HistoryProvider","createContext","HistoryPage","useId","isLoadingDocument","useDocument","model","isLoadingLayout","settings","displayName","useDocumentLayout","isLoadingConfiguration","useGetContentTypeConfigurationQuery","selectedVersionId","queryWithoutId","validQueryParamsWithoutId","buildValidParams","Number","versionsResponse","refetchOnMountOrArgChange","initialRequestId","useRef","requestId","isStaleRequest","current","Navigate","isFetching","Page","Loading","isError","NoData","replace","find","Error","Title","Main","grow","labelledBy","ProtectedHistoryPageImpl","permissions","top","left","zIndex","Protect","DocumentRBAC","ProtectedHistoryPage","Portal","FocusTrap"],"mappings":"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"}
|