@strapi/content-manager 5.10.3 → 5.10.4
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-C5H-5L1u.js → ComponentConfigurationPage-Cgjg4CQj.js} +3 -3
- package/dist/admin/chunks/{ComponentConfigurationPage-C5H-5L1u.js.map → ComponentConfigurationPage-Cgjg4CQj.js.map} +1 -1
- package/dist/admin/chunks/{ComponentConfigurationPage-BN2kOtDm.mjs → ComponentConfigurationPage-D6mjS3eX.mjs} +3 -3
- package/dist/admin/chunks/{ComponentConfigurationPage-BN2kOtDm.mjs.map → ComponentConfigurationPage-D6mjS3eX.mjs.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-BExtZuB7.js → EditConfigurationPage-C5E6D6NI.js} +3 -3
- package/dist/admin/chunks/{EditConfigurationPage-BExtZuB7.js.map → EditConfigurationPage-C5E6D6NI.js.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-tMgOELQG.mjs → EditConfigurationPage-DSSrKbwM.mjs} +3 -3
- package/dist/admin/chunks/{EditConfigurationPage-tMgOELQG.mjs.map → EditConfigurationPage-DSSrKbwM.mjs.map} +1 -1
- package/dist/admin/chunks/{EditViewPage-CYe7wAXF.mjs → EditViewPage-B9oaTSxh.mjs} +6 -9
- package/dist/admin/chunks/EditViewPage-B9oaTSxh.mjs.map +1 -0
- package/dist/admin/chunks/{EditViewPage-DFkloeMZ.js → EditViewPage-Cyt_AqcH.js} +6 -9
- package/dist/admin/chunks/EditViewPage-Cyt_AqcH.js.map +1 -0
- package/dist/admin/chunks/{Form-DGUP3zQO.js → Form-BynZsnG8.js} +2 -2
- package/dist/admin/chunks/{Form-DGUP3zQO.js.map → Form-BynZsnG8.js.map} +1 -1
- package/dist/admin/chunks/{Form-DTO0ZIaB.mjs → Form-CiDhWFF2.mjs} +2 -2
- package/dist/admin/chunks/{Form-DTO0ZIaB.mjs.map → Form-CiDhWFF2.mjs.map} +1 -1
- package/dist/admin/chunks/{History-C333pgXF.mjs → History-BIzCrHlU.mjs} +5 -5
- package/dist/admin/chunks/{History-C333pgXF.mjs.map → History-BIzCrHlU.mjs.map} +1 -1
- package/dist/admin/chunks/{History-CQznK1pG.js → History-D8x3KfXk.js} +5 -5
- package/dist/admin/chunks/{History-CQznK1pG.js.map → History-D8x3KfXk.js.map} +1 -1
- package/dist/admin/chunks/{Input-BexkC_pp.mjs → Input-BrTcf7W8.mjs} +4 -4
- package/dist/admin/chunks/{Input-BexkC_pp.mjs.map → Input-BrTcf7W8.mjs.map} +1 -1
- package/dist/admin/chunks/{Input-DLJZHw9Y.js → Input-Cx7glRRR.js} +4 -4
- package/dist/admin/chunks/{Input-DLJZHw9Y.js.map → Input-Cx7glRRR.js.map} +1 -1
- package/dist/admin/chunks/{ListConfigurationPage-71I_stAM.js → ListConfigurationPage-C1HEB6A1.js} +2 -2
- package/dist/admin/chunks/{ListConfigurationPage-71I_stAM.js.map → ListConfigurationPage-C1HEB6A1.js.map} +1 -1
- package/dist/admin/chunks/{ListConfigurationPage-BX2WR7MI.mjs → ListConfigurationPage-JWHsiJKb.mjs} +2 -2
- package/dist/admin/chunks/{ListConfigurationPage-BX2WR7MI.mjs.map → ListConfigurationPage-JWHsiJKb.mjs.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-DV3heO4F.js → ListViewPage-38RhQMrO.js} +3 -3
- package/dist/admin/chunks/{ListViewPage-DV3heO4F.js.map → ListViewPage-38RhQMrO.js.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-BDeT3Dkk.mjs → ListViewPage-lpuA2rS8.mjs} +3 -3
- package/dist/admin/chunks/{ListViewPage-BDeT3Dkk.mjs.map → ListViewPage-lpuA2rS8.mjs.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-9JHYpYVX.mjs → NoContentTypePage-mxdu7QG9.mjs} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-9JHYpYVX.mjs.map → NoContentTypePage-mxdu7QG9.mjs.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-COih9y2J.js → NoContentTypePage-q48fU1h9.js} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-COih9y2J.js.map → NoContentTypePage-q48fU1h9.js.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-DGAwRIlN.js → NoPermissionsPage-B_p7s1uj.js} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-DGAwRIlN.js.map → NoPermissionsPage-B_p7s1uj.js.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-DTe9I47q.mjs → NoPermissionsPage-CihsLbNC.mjs} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-DTe9I47q.mjs.map → NoPermissionsPage-CihsLbNC.mjs.map} +1 -1
- package/dist/admin/chunks/{Preview-CXtc9yEV.js → Preview-CMoqDEKI.js} +176 -58
- package/dist/admin/chunks/Preview-CMoqDEKI.js.map +1 -0
- package/dist/admin/chunks/{Preview-BEq0FXda.mjs → Preview-DGQMt8XZ.mjs} +180 -62
- package/dist/admin/chunks/Preview-DGQMt8XZ.mjs.map +1 -0
- package/dist/admin/chunks/{Relations-qeZyLDgQ.mjs → Relations-BemEu63h.mjs} +3 -3
- package/dist/admin/chunks/{Relations-qeZyLDgQ.mjs.map → Relations-BemEu63h.mjs.map} +1 -1
- package/dist/admin/chunks/{Relations-o7_hVGyK.js → Relations-BtC_Gort.js} +3 -3
- package/dist/admin/chunks/{Relations-o7_hVGyK.js.map → Relations-BtC_Gort.js.map} +1 -1
- package/dist/admin/chunks/{en-LfhocNG2.mjs → en-CImiNxXE.mjs} +3 -1
- package/dist/admin/chunks/{en-LfhocNG2.mjs.map → en-CImiNxXE.mjs.map} +1 -1
- package/dist/admin/chunks/{en-C1CjdAtC.js → en-CLf4SuMQ.js} +3 -1
- package/dist/admin/chunks/{en-C1CjdAtC.js.map → en-CLf4SuMQ.js.map} +1 -1
- package/dist/admin/chunks/{index-BHimg6jW.js → index-D7EkCTnw.js} +66 -34
- package/dist/admin/chunks/index-D7EkCTnw.js.map +1 -0
- package/dist/admin/chunks/{index-Cs6qwFQu.mjs → index-njcS3gUl.mjs} +66 -35
- package/dist/admin/chunks/index-njcS3gUl.mjs.map +1 -0
- package/dist/admin/chunks/{layout-Dtahn4Ue.js → layout-Ccv9FwbI.js} +4 -4
- package/dist/admin/chunks/{layout-Dtahn4Ue.js.map → layout-Ccv9FwbI.js.map} +1 -1
- package/dist/admin/chunks/{layout-DStNia_P.mjs → layout-os6F94Aa.mjs} +4 -4
- package/dist/admin/chunks/{layout-DStNia_P.mjs.map → layout-os6F94Aa.mjs.map} +1 -1
- package/dist/admin/chunks/{relations-Cq8NRUto.mjs → relations-De8hSklO.mjs} +2 -2
- package/dist/admin/chunks/{relations-Cq8NRUto.mjs.map → relations-De8hSklO.mjs.map} +1 -1
- package/dist/admin/chunks/{relations-XOYEEqMz.js → relations-iguhDgFp.js} +2 -2
- package/dist/admin/chunks/{relations-XOYEEqMz.js.map → relations-iguhDgFp.js.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/InjectionZone.d.ts +7 -1
- package/dist/admin/src/content-manager.d.ts +3 -0
- package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +2 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +1 -1
- package/dist/server/index.mjs.map +1 -1
- package/package.json +7 -7
- package/dist/admin/chunks/EditViewPage-CYe7wAXF.mjs.map +0 -1
- package/dist/admin/chunks/EditViewPage-DFkloeMZ.js.map +0 -1
- package/dist/admin/chunks/Preview-BEq0FXda.mjs.map +0 -1
- package/dist/admin/chunks/Preview-CXtc9yEV.js.map +0 -1
- package/dist/admin/chunks/index-BHimg6jW.js.map +0 -1
- package/dist/admin/chunks/index-Cs6qwFQu.mjs.map +0 -1
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index-njcS3gUl.mjs","sources":["../../../admin/src/constants/plugin.ts","../../../admin/src/components/InjectionZone.tsx","../../../admin/src/constants/attributes.ts","../../../admin/src/constants/collections.ts","../../../admin/src/features/DocumentRBAC.tsx","../../../admin/src/pages/EditView/utils/data.ts","../../../admin/src/pages/EditView/utils/forms.ts","../../../admin/src/services/api.ts","../../../admin/src/services/documents.ts","../../../admin/src/utils/api.ts","../../../admin/src/utils/validation.ts","../../../admin/src/services/init.ts","../../../admin/src/hooks/useContentTypeSchema.ts","../../../admin/src/constants/hooks.ts","../../../admin/src/services/contentTypes.ts","../../../admin/src/utils/attributes.ts","../../../admin/src/hooks/useDocumentLayout.ts","../../../admin/src/hooks/useDocument.ts","../../../admin/src/utils/translations.ts","../../../admin/src/hooks/useDocumentActions.ts","../../../admin/src/history/routes.tsx","../../../admin/src/preview/routes.tsx","../../../admin/src/router.tsx","../../../admin/src/pages/EditView/components/DocumentActions.tsx","../../../admin/src/components/RelativeTime.tsx","../../../admin/src/utils/users.ts","../../../admin/src/utils/strings.ts","../../../admin/src/pages/EditView/components/DocumentStatus.tsx","../../../admin/src/pages/EditView/components/Header.tsx","../../../admin/src/pages/EditView/components/Panels.tsx","../../../admin/src/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.tsx","../../../admin/src/pages/ListView/components/BulkActions/PublishAction.tsx","../../../admin/src/pages/ListView/components/BulkActions/Actions.tsx","../../../admin/src/pages/ListView/components/AutoCloneFailureModal.tsx","../../../admin/src/pages/ListView/components/TableActions.tsx","../../../admin/src/content-manager.ts","../../../admin/src/history/components/HistoryAction.tsx","../../../admin/src/history/index.ts","../../../admin/src/modules/app.ts","../../../admin/src/modules/reducers.ts","../../../admin/src/preview/services/preview.ts","../../../admin/src/preview/components/PreviewSidePanel.tsx","../../../admin/src/preview/index.ts","../../../admin/src/index.ts"],"sourcesContent":["const PLUGIN_ID = 'content-manager';\n\nconst PERMISSIONS = [\n 'plugin::content-manager.explorer.create',\n 'plugin::content-manager.explorer.read',\n 'plugin::content-manager.explorer.update',\n 'plugin::content-manager.explorer.delete',\n 'plugin::content-manager.explorer.publish',\n];\n\nexport { PLUGIN_ID, PERMISSIONS };\n","import { useStrapiApp, InjectionZoneComponent } from '@strapi/admin/strapi-admin';\n\nimport { PLUGIN_ID } from '../constants/plugin';\n\nconst INJECTION_ZONES = {\n editView: { informations: [], 'right-links': [] },\n listView: {\n actions: [],\n deleteModalAdditionalInfos: [],\n publishModalAdditionalInfos: [],\n unpublishModalAdditionalInfos: [],\n },\n preview: {\n actions: [],\n },\n} satisfies InjectionZones;\n\ninterface InjectionZones {\n editView: {\n informations: InjectionZoneComponent[];\n 'right-links': InjectionZoneComponent[];\n };\n listView: {\n actions: InjectionZoneComponent[];\n deleteModalAdditionalInfos: InjectionZoneComponent[];\n publishModalAdditionalInfos: InjectionZoneComponent[];\n unpublishModalAdditionalInfos: InjectionZoneComponent[];\n };\n preview: {\n actions: InjectionZoneComponent[];\n };\n}\n\ntype InjectionZoneArea =\n | 'editView.informations'\n | 'editView.right-links'\n | 'listView.actions'\n | 'listView.unpublishModalAdditionalInfos'\n | 'listView.deleteModalAdditionalInfos'\n | 'listView.publishModalAdditionalInfos'\n | 'listView.deleteModalAdditionalInfos'\n | 'preview.actions';\n\ntype InjectionZoneModule = InjectionZoneArea extends `${infer Word}.${string}` ? Word : never;\ntype InjectionZoneContainer = InjectionZoneArea extends `${string}.${infer Word}.${string}`\n ? Word\n : never;\ntype InjectionZoneBlock = InjectionZoneArea extends `${string}.${string}.${infer Word}`\n ? Word\n : never;\n\n/**\n * You can't know what this component props will be because it's generic and used everywhere\n * e.g. content-manager edit view, we just send the slug but we might not in the listView,\n * therefore, people should type it themselves on the components they render.\n */\nconst InjectionZone = ({ area, ...props }: { area: InjectionZoneArea; [key: string]: unknown }) => {\n const components = useInjectionZone(area);\n\n return (\n <>\n {components.map((component) => (\n <component.Component key={component.name} {...props} />\n ))}\n </>\n );\n};\n\nexport const useInjectionZone = (area: InjectionZoneArea) => {\n const getPlugin = useStrapiApp('useInjectionZone', (state) => state.getPlugin);\n const contentManagerPlugin = getPlugin(PLUGIN_ID);\n const [page, position] = area.split('.') as [InjectionZoneContainer, InjectionZoneBlock];\n\n return contentManagerPlugin.getInjectedComponents(page, position);\n};\n\nexport { InjectionZone, INJECTION_ZONES };\n\nexport type {\n InjectionZoneArea,\n InjectionZoneComponent,\n InjectionZones,\n InjectionZoneModule,\n InjectionZoneContainer,\n InjectionZoneBlock,\n};\n","const ID = 'id';\n\nconst CREATED_BY_ATTRIBUTE_NAME = 'createdBy';\nconst UPDATED_BY_ATTRIBUTE_NAME = 'updatedBy';\n\nconst CREATOR_FIELDS = [CREATED_BY_ATTRIBUTE_NAME, UPDATED_BY_ATTRIBUTE_NAME];\n\nconst PUBLISHED_BY_ATTRIBUTE_NAME = 'publishedBy';\nconst CREATED_AT_ATTRIBUTE_NAME = 'createdAt';\nconst UPDATED_AT_ATTRIBUTE_NAME = 'updatedAt';\nconst PUBLISHED_AT_ATTRIBUTE_NAME = 'publishedAt';\n\nconst DOCUMENT_META_FIELDS = [\n ID,\n ...CREATOR_FIELDS,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n CREATED_AT_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n];\n\n/**\n * List of attribute types that cannot be used as the main field.\n * Not sure the name could be any clearer.\n */\nconst ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD = [\n 'dynamiczone',\n 'json',\n 'text',\n 'relation',\n 'component',\n 'boolean',\n 'media',\n 'password',\n 'richtext',\n 'timestamp',\n 'blocks',\n];\n\nexport {\n ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD,\n CREATED_AT_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n CREATED_BY_ATTRIBUTE_NAME,\n UPDATED_BY_ATTRIBUTE_NAME,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n CREATOR_FIELDS,\n DOCUMENT_META_FIELDS,\n};\n","const SINGLE_TYPES = 'single-types';\nconst COLLECTION_TYPES = 'collection-types';\n\nexport { SINGLE_TYPES, COLLECTION_TYPES };\n","import * as React from 'react';\n\nimport {\n useRBAC,\n useAuth,\n type Permission,\n createContext,\n Page,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { useParams } from 'react-router-dom';\n\nimport type { Schema } from '@strapi/types';\n\n/**\n * The boolean values indicate the global actions a user can perform on the document.\n * The `string[]` values tell us specifically which fields the actions can be performed on,\n * for example, if the `canReadFields` array is empty, than no fields can be read by the user.\n * This can happen even if the user can read the document.\n */\ninterface DocumentRBACContextValue {\n canCreate?: boolean;\n canCreateFields: string[];\n canDelete?: boolean;\n canPublish?: boolean;\n canRead?: boolean;\n canReadFields: string[];\n canUpdate?: boolean;\n canUpdateFields: string[];\n canUserAction: (\n fieldName: string,\n fieldsUserCanAction: string[],\n fieldType: Schema.Attribute.Kind\n ) => boolean;\n isLoading: boolean;\n}\n\nconst [DocumentRBACProvider, useDocumentRBAC] = createContext<DocumentRBACContextValue>(\n 'DocumentRBAC',\n {\n canCreate: false,\n canCreateFields: [],\n canDelete: false,\n canPublish: false,\n canRead: false,\n canReadFields: [],\n canUpdate: false,\n canUpdateFields: [],\n canUserAction: () => false,\n isLoading: false,\n }\n);\n\ninterface DocumentRBACProps {\n children: React.ReactNode;\n permissions: Permission[] | null;\n}\n\n/**\n * @internal This component is not meant to be used outside of the Content Manager plugin.\n * It depends on knowing the slug/model of the content-type using the params of the URL.\n * If you do use the hook outside of the context, we default to `false` for all actions.\n *\n * It then creates an list of `can{Action}` that are passed to the context for consumption\n * within the app to enforce RBAC.\n */\nconst DocumentRBAC = ({ children, permissions }: DocumentRBACProps) => {\n const { slug } = useParams<{ slug: string }>();\n\n if (!slug) {\n throw new Error('Cannot find the slug param in the URL');\n }\n const [{ rawQuery }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n\n const userPermissions = useAuth('DocumentRBAC', (state) => state.permissions);\n\n const contentTypePermissions = React.useMemo(() => {\n const contentTypePermissions = userPermissions.filter(\n (permission) => permission.subject === slug\n );\n return contentTypePermissions.reduce<Record<string, Permission[]>>((acc, permission) => {\n const [action] = permission.action.split('.').slice(-1);\n return { ...acc, [action]: [permission] };\n }, {});\n }, [slug, userPermissions]);\n\n const { isLoading, allowedActions } = useRBAC(\n contentTypePermissions,\n permissions ?? undefined,\n // TODO: useRBAC context should be typed and built differently\n // We are passing raw query as context to the hook so that it can\n // rely on the locale provided from DocumentRBAC for its permission calculations.\n rawQuery\n );\n\n const canCreateFields =\n !isLoading && allowedActions.canCreate\n ? extractAndDedupeFields(contentTypePermissions.create)\n : [];\n\n const canReadFields =\n !isLoading && allowedActions.canRead ? extractAndDedupeFields(contentTypePermissions.read) : [];\n\n const canUpdateFields =\n !isLoading && allowedActions.canUpdate\n ? extractAndDedupeFields(contentTypePermissions.update)\n : [];\n\n /**\n * @description Checks if the user can perform an action on a field based on the field names\n * provided as the second argument.\n */\n const canUserAction: DocumentRBACContextValue['canUserAction'] = React.useCallback(\n (fieldName, fieldsUserCanAction, fieldType) => {\n const name = removeNumericalStrings(fieldName.split('.'));\n\n const componentFieldNames = fieldsUserCanAction\n // filter out fields that aren't components (components are dot separated)\n .filter((field) => field.split('.').length > 1);\n\n if (fieldType === 'component') {\n // check if the field name is within any of those arrays\n return componentFieldNames.some((field) => {\n return field.includes(name.join('.'));\n });\n }\n\n /**\n * The field is within a component.\n */\n if (name.length > 1) {\n return componentFieldNames.includes(name.join('.'));\n }\n\n /**\n * just a regular field\n */\n return fieldsUserCanAction.includes(fieldName);\n },\n []\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <DocumentRBACProvider\n isLoading={isLoading}\n canCreateFields={canCreateFields}\n canReadFields={canReadFields}\n canUpdateFields={canUpdateFields}\n canUserAction={canUserAction}\n {...allowedActions}\n >\n {children}\n </DocumentRBACProvider>\n );\n};\n\n/**\n * @internal it's really small, but it's used three times in a row and DRY for something this straight forward.\n */\nconst extractAndDedupeFields = (permissions: Permission[] = []) =>\n permissions\n .flatMap((permission) => permission.properties?.fields)\n .filter(\n (field, index, arr): field is string =>\n arr.indexOf(field) === index && typeof field === 'string'\n );\n\n/**\n * @internal removes numerical strings from arrays.\n * @example\n * ```ts\n * const name = 'a.0.b';\n * const res = removeNumericalStrings(name.split('.'));\n * console.log(res); // ['a', 'b']\n * ```\n */\nconst removeNumericalStrings = (arr: string[]) => arr.filter((item) => isNaN(Number(item)));\n\nexport { DocumentRBAC, useDocumentRBAC, DocumentRBACContextValue, DocumentRBACProps };\n","import { generateNKeysBetween } from 'fractional-indexing';\nimport pipe from 'lodash/fp/pipe';\n\nimport { DOCUMENT_META_FIELDS } from '../../../constants/attributes';\n\nimport type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * traverseData\n * -----------------------------------------------------------------------------------------------*/\n\n// Make only attributes required since it's the only one Content History has\ntype PartialSchema = Partial<Schema.Schema> & Pick<Schema.Schema, 'attributes'>;\n\ntype Predicate = <TAttribute extends Schema.Attribute.AnyAttribute>(\n attribute: TAttribute,\n value: Schema.Attribute.Value<TAttribute>\n) => boolean;\ntype Transform = <TAttribute extends Schema.Attribute.AnyAttribute>(\n value: any,\n attribute: TAttribute\n) => any;\ntype AnyData = Omit<Document, 'id'>;\n\nconst BLOCK_LIST_ATTRIBUTE_KEYS = ['__component', '__temp_key__'];\n\n/**\n * @internal This function is used to traverse the data and transform the values.\n * Given a predicate function, it will transform the value (using the given transform function)\n * if the predicate returns true. If it finds that the attribute is a component or dynamiczone,\n * it will recursively traverse those data structures as well.\n *\n * It is possible to break the ContentManager by using this function incorrectly, for example,\n * if you transform a number into a string but the attribute type is a number, the ContentManager\n * will not be able to save the data and the Form will likely crash because the component it's\n * passing the data too won't succesfully be able to handle the value.\n */\nconst traverseData =\n (predicate: Predicate, transform: Transform) =>\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (data: AnyData = {}) => {\n const traverse = (datum: AnyData, attributes: Schema.Schema['attributes']) => {\n return Object.entries(datum).reduce<AnyData>((acc, [key, value]) => {\n const attribute = attributes[key];\n\n /**\n * If the attribute is a block list attribute, we don't want to transform it.\n * We also don't want to transform null or undefined values.\n */\n if (BLOCK_LIST_ATTRIBUTE_KEYS.includes(key) || value === null || value === undefined) {\n acc[key] = value;\n return acc;\n }\n\n if (attribute.type === 'component') {\n if (attribute.repeatable) {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, true>>;\n acc[key] = componentValue.map((componentData) =>\n traverse(componentData, components[attribute.component]?.attributes ?? {})\n );\n } else {\n const componentValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.Component<UID.Component, false>>;\n\n acc[key] = traverse(componentValue, components[attribute.component]?.attributes ?? {});\n }\n } else if (attribute.type === 'dynamiczone') {\n const dynamicZoneValue = (\n predicate(attribute, value) ? transform(value, attribute) : value\n ) as Schema.Attribute.Value<Schema.Attribute.DynamicZone>;\n\n acc[key] = dynamicZoneValue.map((componentData) =>\n traverse(componentData, components[componentData.__component]?.attributes ?? {})\n );\n } else if (predicate(attribute, value)) {\n acc[key] = transform(value, attribute);\n } else {\n acc[key] = value;\n }\n\n return acc;\n }, {});\n };\n\n return traverse(data, schema.attributes);\n };\n\n/* -------------------------------------------------------------------------------------------------\n * removeProhibitedFields\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Removes all the fields that are not allowed.\n */\nconst removeProhibitedFields = (prohibitedFields: Schema.Attribute.Kind[]) =>\n traverseData(\n (attribute) => prohibitedFields.includes(attribute.type),\n () => ''\n );\n\n/* -------------------------------------------------------------------------------------------------\n * prepareRelations\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Sets all relation values to an empty array.\n */\nconst prepareRelations = traverseData(\n (attribute) => attribute.type === 'relation',\n () => ({\n connect: [],\n disconnect: [],\n })\n);\n\n/* -------------------------------------------------------------------------------------------------\n * prepareTempKeys\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each component and dynamiczone item. This gives us\n * a stable identifier regardless of its ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = traverseData(\n (attribute) =>\n (attribute.type === 'component' && attribute.repeatable) || attribute.type === 'dynamiczone',\n (data) => {\n if (Array.isArray(data) && data.length > 0) {\n const keys = generateNKeysBetween(undefined, undefined, data.length);\n\n return data.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n }\n\n return data;\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * removeFieldsThatDontExistOnSchema\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Fields that don't exist in the schema like createdAt etc. are only on the first level (not nested),\n * as such we don't need to traverse the components to remove them.\n */\nconst removeFieldsThatDontExistOnSchema = (schema: PartialSchema) => (data: AnyData) => {\n const schemaKeys = Object.keys(schema.attributes);\n const dataKeys = Object.keys(data);\n\n const keysToRemove = dataKeys.filter((key) => !schemaKeys.includes(key));\n\n const revisedData = [...keysToRemove, ...DOCUMENT_META_FIELDS].reduce((acc, key) => {\n delete acc[key];\n\n return acc;\n }, structuredClone(data));\n\n return revisedData;\n};\n\n/**\n * @internal\n * @description We need to remove null fields from the data-structure because it will pass it\n * to the specific inputs breaking them as most would prefer empty strings or `undefined` if\n * they're controlled / uncontrolled.\n */\nconst removeNullValues = (data: AnyData) => {\n return Object.entries(data).reduce<AnyData>((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n\n acc[key] = value;\n\n return acc;\n }, {});\n};\n\n/* -------------------------------------------------------------------------------------------------\n * transformDocuments\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Takes a document data structure (this could be from the API or a default form structure)\n * and applies consistent data transformations to it. This is also used when we add new components to the\n * form to ensure the data is correctly prepared from their default state e.g. relations are set to an empty array.\n */\nconst transformDocument =\n (schema: PartialSchema, components: ComponentsDictionary = {}) =>\n (document: AnyData) => {\n const transformations = pipe(\n removeFieldsThatDontExistOnSchema(schema),\n removeProhibitedFields(['password'])(schema, components),\n removeNullValues,\n prepareRelations(schema, components),\n prepareTempKeys(schema, components)\n );\n\n return transformations(document);\n };\n\nexport {\n removeProhibitedFields,\n prepareRelations,\n prepareTempKeys,\n removeFieldsThatDontExistOnSchema,\n transformDocument,\n};\nexport type { AnyData };\n","import type { ComponentsDictionary, Document } from '../../../hooks/useDocument';\nimport type { Schema } from '@strapi/types';\n\ntype AnyData = Omit<Document, 'id'>;\n\n/* -------------------------------------------------------------------------------------------------\n * createDefaultForm\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal Using the content-type schema & the components dictionary of the content-type,\n * creates a form with pre-filled default values. This is used when creating a new entry.\n */\nconst createDefaultForm = (\n contentType: Schema.Schema,\n components: ComponentsDictionary = {}\n): AnyData => {\n const traverseSchema = (attributes: Schema.Schema['attributes']): AnyData => {\n return Object.entries(attributes).reduce<AnyData>((acc, [key, attribute]) => {\n if ('default' in attribute) {\n acc[key] = attribute.default;\n } else if (attribute.type === 'component' && attribute.required) {\n const defaultComponentForm = traverseSchema(components[attribute.component].attributes);\n\n if (attribute.repeatable) {\n acc[key] = attribute.min ? [...Array(attribute.min).fill(defaultComponentForm)] : [];\n } else {\n acc[key] = defaultComponentForm;\n }\n } else if (attribute.type === 'dynamiczone' && attribute.required) {\n acc[key] = [];\n }\n\n return acc;\n }, {});\n };\n\n return traverseSchema(contentType.attributes);\n};\n\nexport { createDefaultForm };\n","import { adminApi } from '@strapi/admin/strapi-admin';\n\nconst contentManagerApi = adminApi.enhanceEndpoints({\n addTagTypes: [\n 'ComponentConfiguration',\n 'ContentTypesConfiguration',\n 'ContentTypeSettings',\n 'Document',\n 'InitialData',\n 'HistoryVersion',\n 'Relations',\n 'UidAvailability',\n 'RecentDocumentList',\n ],\n});\n\nexport { contentManagerApi };\n","/**\n * Related to fetching the actual content of a collection type or single type.\n */\nimport { stringify } from 'qs';\n\nimport { SINGLE_TYPES } from '../constants/collections';\n\nimport { contentManagerApi } from './api';\n\nimport type {\n Clone,\n Create,\n Delete,\n Find,\n FindOne,\n BulkDelete,\n BulkPublish,\n BulkUnpublish,\n Discard,\n CountDraftRelations,\n CountManyEntriesDraftRelations,\n Publish,\n Unpublish,\n Update,\n} from '../../../shared/contracts/collection-types';\n\nconst documentApi = contentManagerApi.injectEndpoints({\n overrideExisting: true,\n endpoints: (builder) => ({\n autoCloneDocument: builder.mutation<Clone.Response, Clone.Params & { query?: string }>({\n query: ({ model, sourceId, query }) => ({\n url: `/content-manager/collection-types/${model}/auto-clone/${sourceId}`,\n method: 'POST',\n config: {\n params: query,\n },\n }),\n invalidatesTags: (_result, error, { model }) => {\n if (error) {\n return [];\n }\n\n return [{ type: 'Document', id: `${model}_LIST` }, 'RecentDocumentList'];\n },\n }),\n cloneDocument: builder.mutation<\n Clone.Response,\n Clone.Params & {\n data: Clone.Request['body'];\n params?: Clone.Request['query'];\n }\n >({\n query: ({ model, sourceId, data, params }) => ({\n url: `/content-manager/collection-types/${model}/clone/${sourceId}`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { model }) => [\n { type: 'Document', id: `${model}_LIST` },\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n ],\n }),\n /**\n * Creates a new collection-type document. This should ONLY be used for collection-types.\n * single-types should always be using `updateDocument` since they always exist.\n */\n createDocument: builder.mutation<\n Create.Response,\n Create.Params & {\n data: Create.Request['body'];\n params?: Create.Request['query'];\n }\n >({\n query: ({ model, data, params }) => ({\n url: `/content-manager/collection-types/${model}`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (result, _error, { model }) => [\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n ],\n transformResponse: (response: Create.Response, meta, arg): Create.Response => {\n /**\n * TODO v6\n * Adapt plugin:users-permissions.user to return the same response\n * shape as all other requests. The error is returned as expected.\n */\n if (!('data' in response) && arg.model === 'plugin::users-permissions.user') {\n return {\n data: response,\n meta: {\n availableStatus: [],\n availableLocales: [],\n },\n };\n }\n\n return response;\n },\n }),\n deleteDocument: builder.mutation<\n Delete.Response,\n Pick<Delete.Params, 'model'> &\n Pick<Partial<Delete.Params>, 'documentId'> & {\n collectionType: string;\n params?: Find.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url: `/content-manager/${collectionType}/${model}${\n collectionType !== SINGLE_TYPES && documentId ? `/${documentId}` : ''\n }`,\n method: 'DELETE',\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model }) => [\n { type: 'Document', id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },\n 'RecentDocumentList',\n ],\n }),\n deleteManyDocuments: builder.mutation<\n BulkDelete.Response,\n BulkDelete.Params & BulkDelete.Request['body'] & { params?: Find.Request['query'] }\n >({\n query: ({ model, params, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkDelete`,\n method: 'POST',\n data: body,\n config: {\n params,\n },\n }),\n invalidatesTags: (_res, _error, { model }) => [\n { type: 'Document', id: `${model}_LIST` },\n 'RecentDocumentList',\n ],\n }),\n discardDocument: builder.mutation<\n Discard.Response,\n Pick<Discard.Params, 'model'> &\n Partial<Pick<Discard.Params, 'documentId'>> & {\n collectionType: string;\n params?: Find.Request['query'] & {\n [key: string]: any;\n };\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url: documentId\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/discard`\n : `/content-manager/${collectionType}/${model}/actions/discard`,\n method: 'POST',\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n ];\n },\n }),\n /**\n * Gets all documents of a collection type or single type.\n * By passing different params you can get different results e.g. only published documents or 'es' documents.\n */\n getAllDocuments: builder.query<\n Find.Response,\n Find.Params & {\n params?: Find.Request['query'] & {\n [key: string]: any;\n };\n }\n >({\n query: ({ model, params }) => ({\n url: `/content-manager/collection-types/${model}`,\n method: 'GET',\n config: {\n params: stringify(params, { encode: true }),\n },\n }),\n providesTags: (result, _error, arg) => {\n return [\n { type: 'Document', id: `ALL_LIST` },\n { type: 'Document', id: `${arg.model}_LIST` },\n ...(result?.results.map(({ documentId }) => ({\n type: 'Document' as const,\n id: `${arg.model}_${documentId}`,\n })) ?? []),\n ];\n },\n }),\n getDraftRelationCount: builder.query<\n CountDraftRelations.Response,\n {\n collectionType: string;\n model: string;\n /**\n * You don't pass the documentId if the document is a single-type\n */\n documentId?: string;\n params?: CountDraftRelations.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url: documentId\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/countDraftRelations`\n : `/content-manager/${collectionType}/${model}/actions/countDraftRelations`,\n method: 'GET',\n config: {\n params,\n },\n }),\n }),\n getDocument: builder.query<\n FindOne.Response,\n Pick<FindOne.Params, 'model'> &\n Partial<Pick<FindOne.Params, 'documentId'>> & {\n collectionType: string;\n params?: FindOne.Request['query'];\n }\n >({\n // @ts-expect-error – TODO: fix ts error where data unknown doesn't work with response via an assertion?\n queryFn: async (\n { collectionType, model, documentId, params },\n _api,\n _extraOpts,\n baseQuery\n ) => {\n const res = await baseQuery({\n url: `/content-manager/${collectionType}/${model}${documentId ? `/${documentId}` : ''}`,\n method: 'GET',\n config: {\n params,\n },\n });\n\n /**\n * To stop the query from locking itself in multiple retries, we intercept the error here and manage correctly.\n * This is because single-types don't have a list view and fetching them with the route `/single-types/:model`\n * never returns a list, just a single document but this won't exist if you've not made one before.\n */\n if (res.error && res.error.name === 'NotFoundError' && collectionType === SINGLE_TYPES) {\n return { data: { document: undefined }, error: undefined };\n }\n\n return res;\n },\n providesTags: (result, _error, { collectionType, model, documentId }) => {\n return [\n // we prefer the result's id because we don't fetch single-types with an ID.\n {\n type: 'Document',\n id:\n collectionType !== SINGLE_TYPES\n ? `${model}_${result && 'documentId' in result ? result.documentId : documentId}`\n : model,\n },\n // Make it easy to invalidate all individual documents queries for a model\n {\n type: 'Document',\n id: `${model}_ALL_ITEMS`,\n },\n ];\n },\n }),\n getManyDraftRelationCount: builder.query<\n CountManyEntriesDraftRelations.Response['data'],\n CountManyEntriesDraftRelations.Request['query'] & {\n model: string;\n }\n >({\n query: ({ model, ...params }) => ({\n url: `/content-manager/collection-types/${model}/actions/countManyEntriesDraftRelations`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (response: CountManyEntriesDraftRelations.Response) => response.data,\n }),\n /**\n * This endpoint will either create or update documents at the same time as publishing.\n */\n publishDocument: builder.mutation<\n Publish.Response,\n Pick<Publish.Params, 'model'> &\n Partial<Pick<Publish.Params, 'documentId'>> & {\n collectionType: string;\n data: Publish.Request['body'];\n params?: Publish.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params, data }) => ({\n url: documentId\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/publish`\n : `/content-manager/${collectionType}/${model}/actions/publish`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n 'RecentDocumentList',\n ];\n },\n }),\n publishManyDocuments: builder.mutation<\n BulkPublish.Response,\n BulkPublish.Params & BulkPublish.Request['body'] & { params?: BulkPublish.Request['query'] }\n >({\n query: ({ model, params, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkPublish`,\n method: 'POST',\n data: body,\n config: {\n params,\n },\n }),\n invalidatesTags: (_res, _error, { model, documentIds }) =>\n documentIds.map((id) => ({ type: 'Document', id: `${model}_${id}` })),\n }),\n updateDocument: builder.mutation<\n Update.Response,\n Pick<Update.Params, 'model'> &\n Partial<Pick<Update.Params, 'documentId'>> & {\n collectionType: string;\n data: Update.Request['body'];\n params?: Update.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, data, params }) => ({\n url: `/content-manager/${collectionType}/${model}${documentId ? `/${documentId}` : ''}`,\n method: 'PUT',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n 'Relations',\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n 'RecentDocumentList',\n ];\n },\n async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {\n // Optimistically update the cache with the new data\n const patchResult = dispatch(\n documentApi.util.updateQueryData('getDocument', patch, (draft) => {\n Object.assign(draft.data, data);\n })\n );\n try {\n await queryFulfilled;\n } catch {\n // Rollback the optimistic update if there's an error\n patchResult.undo();\n }\n },\n }),\n unpublishDocument: builder.mutation<\n Unpublish.Response,\n Pick<Unpublish.Params, 'model'> &\n Partial<Pick<Unpublish.Params, 'documentId'>> & {\n collectionType: string;\n params?: Unpublish.Request['query'];\n data: Unpublish.Request['body'];\n }\n >({\n query: ({ collectionType, model, documentId, params, data }) => ({\n url: documentId\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/unpublish`\n : `/content-manager/${collectionType}/${model}/actions/unpublish`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n 'RecentDocumentList',\n ];\n },\n }),\n unpublishManyDocuments: builder.mutation<\n BulkUnpublish.Response,\n Pick<BulkUnpublish.Params, 'model'> &\n BulkUnpublish.Request['body'] & {\n params?: BulkUnpublish.Request['query'];\n }\n >({\n query: ({ model, params, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkUnpublish`,\n method: 'POST',\n data: body,\n config: {\n params,\n },\n }),\n invalidatesTags: (_res, _error, { model, documentIds }) => [\n ...documentIds.map((id) => ({ type: 'Document' as const, id: `${model}_${id}` })),\n 'RecentDocumentList',\n ],\n }),\n }),\n});\n\nconst {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useGetAllDocumentsQuery,\n useLazyGetDocumentQuery,\n useGetDocumentQuery,\n useLazyGetDraftRelationCountQuery,\n useGetManyDraftRelationCountQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n} = documentApi;\n\nexport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useGetAllDocumentsQuery,\n useLazyGetDocumentQuery,\n useGetDocumentQuery,\n useLazyGetDraftRelationCountQuery as useGetDraftRelationCountQuery,\n useGetManyDraftRelationCountQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n};\n","import { SerializedError } from '@reduxjs/toolkit';\nimport { ApiError, type UnknownApiError } from '@strapi/admin/strapi-admin';\n\ninterface Query {\n plugins?: Record<string, unknown>;\n _q?: string;\n [key: string]: any;\n}\n\n/**\n * This type extracts the plugin options from the query\n * and appends them to the root of the query\n */\ntype TransformedQuery<TQuery extends Query> = Omit<TQuery, 'plugins'> & {\n [key: string]: string;\n};\n\n/**\n * @description\n * Creates a valid query params object for get requests\n * ie. plugins[18n][locale]=en becomes locale=en\n */\nconst buildValidParams = <TQuery extends Query>(query: TQuery): TransformedQuery<TQuery> => {\n if (!query) return query;\n\n // Extract pluginOptions from the query, they shouldn't be part of the URL\n const { plugins: _, ...validQueryParams } = {\n ...query,\n ...Object.values(query?.plugins ?? {}).reduce<Record<string, string>>(\n (acc, current) => Object.assign(acc, current),\n {}\n ),\n };\n\n return validQueryParams;\n};\n\ntype BaseQueryError = ApiError | UnknownApiError;\n\nconst isBaseQueryError = (error: BaseQueryError | SerializedError): error is BaseQueryError => {\n return error.name !== undefined;\n};\n\nexport { isBaseQueryError, buildValidParams };\nexport type { BaseQueryError, UnknownApiError };\n","import { translatedErrors } from '@strapi/admin/strapi-admin';\nimport pipe from 'lodash/fp/pipe';\nimport * as yup from 'yup';\n\nimport { DOCUMENT_META_FIELDS } from '../constants/attributes';\n\nimport type { ComponentsDictionary, Schema } from '../hooks/useDocument';\nimport type { Schema as SchemaUtils } from '@strapi/types';\nimport type { ObjectShape } from 'yup/lib/object';\n\ntype AnySchema =\n | yup.StringSchema\n | yup.NumberSchema\n | yup.BooleanSchema\n | yup.DateSchema\n | yup.ArraySchema<any>\n | yup.ObjectSchema<any>;\n\n/* -------------------------------------------------------------------------------------------------\n * createYupSchema\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ValidationOptions {\n status: 'draft' | 'published' | null;\n}\n\nconst arrayValidator = (attribute: Schema['attributes'][string], options: ValidationOptions) => ({\n message: translatedErrors.required,\n test(value: unknown) {\n if (options.status === 'draft') {\n return true;\n }\n\n if (!attribute.required) {\n return true;\n }\n\n if (!value) {\n return false;\n }\n\n if (Array.isArray(value) && value.length === 0) {\n return false;\n }\n\n return true;\n },\n});\n\n/**\n * TODO: should we create a Map to store these based on the hash of the schema?\n */\nconst createYupSchema = (\n attributes: Schema['attributes'] = {},\n components: ComponentsDictionary = {},\n options: ValidationOptions = { status: null }\n): yup.ObjectSchema<any> => {\n const createModelSchema = (attributes: Schema['attributes']): yup.ObjectSchema<any> =>\n yup\n .object()\n .shape(\n Object.entries(attributes).reduce<ObjectShape>((acc, [name, attribute]) => {\n if (DOCUMENT_META_FIELDS.includes(name)) {\n return acc;\n }\n\n /**\n * These validations won't apply to every attribute\n * and that's okay, in that case we just return the\n * schema as it was passed.\n */\n const validations = [\n addNullableValidation,\n addRequiredValidation,\n addMinLengthValidation,\n addMaxLengthValidation,\n addMinValidation,\n addMaxValidation,\n addRegexValidation,\n ].map((fn) => fn(attribute, options));\n\n const transformSchema = pipe(...validations);\n\n switch (attribute.type) {\n case 'component': {\n const { attributes } = components[attribute.component];\n\n if (attribute.repeatable) {\n return {\n ...acc,\n [name]: transformSchema(\n yup.array().of(createModelSchema(attributes).nullable(false))\n ).test(arrayValidator(attribute, options)),\n };\n } else {\n return {\n ...acc,\n [name]: transformSchema(createModelSchema(attributes).nullable()),\n };\n }\n }\n case 'dynamiczone':\n return {\n ...acc,\n [name]: transformSchema(\n yup.array().of(\n yup.lazy(\n (\n data: SchemaUtils.Attribute.Value<SchemaUtils.Attribute.DynamicZone>[number]\n ) => {\n const attributes = components?.[data?.__component]?.attributes;\n\n const validation = yup\n .object()\n .shape({\n __component: yup.string().required().oneOf(Object.keys(components)),\n })\n .nullable(false);\n if (!attributes) {\n return validation;\n }\n\n return validation.concat(createModelSchema(attributes));\n }\n ) as unknown as yup.ObjectSchema<any>\n )\n ).test(arrayValidator(attribute, options)),\n };\n case 'relation':\n return {\n ...acc,\n [name]: transformSchema(\n yup.lazy((value) => {\n if (!value) {\n return yup.mixed().nullable(true);\n } else if (Array.isArray(value)) {\n // If a relation value is an array, we expect\n // an array of objects with {id} properties, representing the related entities.\n return yup.array().of(\n yup.object().shape({\n id: yup.number().required(),\n })\n );\n } else if (typeof value === 'object') {\n // A realtion value can also be an object. Some API\n // repsonses return the number of entities in the relation\n // as { count: x }\n return yup.object();\n } else {\n return yup\n .mixed()\n .test(\n 'type-error',\n 'Relation values must be either null, an array of objects with {id} or an object.',\n () => false\n );\n }\n })\n ),\n };\n default:\n return {\n ...acc,\n [name]: transformSchema(createAttributeSchema(attribute)),\n };\n }\n }, {})\n )\n /**\n * TODO: investigate why an undefined object fails a check of `nullable`.\n */\n .default(null);\n\n return createModelSchema(attributes);\n};\n\nconst createAttributeSchema = (\n attribute: Exclude<\n SchemaUtils.Attribute.AnyAttribute,\n { type: 'dynamiczone' } | { type: 'component' } | { type: 'relation' }\n >\n) => {\n switch (attribute.type) {\n case 'biginteger':\n return yup.string().matches(/^-?\\d*$/);\n case 'boolean':\n return yup.boolean();\n case 'blocks':\n return yup.mixed().test('isBlocks', translatedErrors.json, (value) => {\n if (!value || Array.isArray(value)) {\n return true;\n } else {\n return false;\n }\n });\n case 'decimal':\n case 'float':\n case 'integer':\n return yup.number();\n case 'email':\n return yup.string().email(translatedErrors.email);\n case 'enumeration':\n return yup.string().oneOf([...attribute.enum, null]);\n case 'json':\n return yup.mixed().test('isJSON', translatedErrors.json, (value) => {\n /**\n * We don't want to validate the JSON field if it's empty.\n */\n if (!value || (typeof value === 'string' && value.length === 0)) {\n return true;\n }\n\n // If the value was created via content API and wasn't changed, then it's still an object\n if (typeof value === 'object') {\n try {\n JSON.stringify(value);\n return true;\n } catch (err) {\n return false;\n }\n }\n\n try {\n JSON.parse(value);\n\n return true;\n } catch (err) {\n return false;\n }\n });\n case 'password':\n case 'richtext':\n case 'string':\n case 'text':\n return yup.string();\n case 'uid':\n return yup.string().matches(/^[A-Za-z0-9-_.~]*$/);\n default:\n /**\n * This allows any value.\n */\n return yup.mixed();\n }\n};\n\n// Helper function to return schema.nullable() if it exists, otherwise return schema\nconst nullableSchema = <TSchema extends AnySchema>(schema: TSchema) => {\n return schema?.nullable\n ? schema.nullable()\n : // In some cases '.nullable' will not be available on the schema.\n // e.g. when the schema has been built using yup.lazy (e.g. for relations).\n // In these cases we should just return the schema as it is.\n schema;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Validators\n * -----------------------------------------------------------------------------------------------*/\n/**\n * Our validator functions can be preped with the\n * attribute and then have the schema piped through them.\n */\ntype ValidationFn = (\n attribute: Schema['attributes'][string],\n options: ValidationOptions\n) => <TSchema extends AnySchema>(schema: TSchema) => TSchema;\n\nconst addNullableValidation: ValidationFn = () => (schema) => {\n return nullableSchema(schema);\n};\n\nconst addRequiredValidation: ValidationFn = (attribute, options) => (schema) => {\n if (options.status === 'draft' || !attribute.required) {\n return schema;\n }\n\n if (attribute.required && 'required' in schema) {\n return schema.required(translatedErrors.required);\n }\n\n return schema;\n};\n\nconst addMinLengthValidation: ValidationFn =\n (attribute, options) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n // Skip minLength validation for draft\n if (options.status === 'draft') {\n return schema;\n }\n\n if (\n 'minLength' in attribute &&\n attribute.minLength &&\n Number.isInteger(attribute.minLength) &&\n 'min' in schema\n ) {\n return schema.min(attribute.minLength, {\n ...translatedErrors.minLength,\n values: {\n min: attribute.minLength,\n },\n }) as TSchema;\n }\n\n return schema;\n };\n\nconst addMaxLengthValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if (\n 'maxLength' in attribute &&\n attribute.maxLength &&\n Number.isInteger(attribute.maxLength) &&\n 'max' in schema\n ) {\n return schema.max(attribute.maxLength, {\n ...translatedErrors.maxLength,\n values: {\n max: attribute.maxLength,\n },\n }) as TSchema;\n }\n\n return schema;\n };\n\nconst addMinValidation: ValidationFn =\n (attribute, options) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n // do not validate min for draft\n if (options.status === 'draft') {\n return schema;\n }\n\n if ('min' in attribute && 'min' in schema) {\n const min = toInteger(attribute.min);\n\n if (min) {\n return schema.min(min, {\n ...translatedErrors.min,\n values: {\n min,\n },\n }) as TSchema;\n }\n }\n\n return schema;\n };\n\nconst addMaxValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if ('max' in attribute) {\n const max = toInteger(attribute.max);\n\n if ('max' in schema && max) {\n return schema.max(max, {\n ...translatedErrors.max,\n values: {\n max,\n },\n }) as TSchema;\n }\n }\n\n return schema;\n };\n\nconst toInteger = (val?: string | number): number | undefined => {\n if (typeof val === 'number' || val === undefined) {\n return val;\n } else {\n const num = Number(val);\n return isNaN(num) ? undefined : num;\n }\n};\n\nconst addRegexValidation: ValidationFn =\n (attribute) =>\n <TSchema extends AnySchema>(schema: TSchema): TSchema => {\n if ('regex' in attribute && attribute.regex && 'matches' in schema) {\n return schema.matches(new RegExp(attribute.regex), {\n message: {\n id: translatedErrors.regex.id,\n defaultMessage: 'The value does not match the defined pattern.',\n },\n\n excludeEmptyString: !attribute.required,\n }) as TSchema;\n }\n\n return schema;\n };\n\nexport { createYupSchema };\n","import { contentManagerApi } from './api';\n\nimport type { GetInitData } from '../../../shared/contracts/init';\n\nconst initApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getInitialData: builder.query<GetInitData.Response['data'], void>({\n query: () => '/content-manager/init',\n transformResponse: (response: GetInitData.Response) => response.data,\n providesTags: ['InitialData'],\n }),\n }),\n});\n\nconst { useGetInitialDataQuery } = initApi;\n\nexport { useGetInitialDataQuery };\n","import * as React from 'react';\n\nimport { useNotification, useAPIErrorHandler } from '@strapi/admin/strapi-admin';\n\nimport { useGetInitialDataQuery } from '../services/init';\n\nimport type { Component } from '../../../shared/contracts/components';\nimport type { ContentType } from '../../../shared/contracts/content-types';\nimport type { Schema } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * useContentTypeSchema\n * -----------------------------------------------------------------------------------------------*/\ntype ComponentsDictionary = Record<string, Component>;\n\n/**\n * @internal\n * @description Given a model UID, return the schema and the schemas\n * of the associated components within said model's schema. A wrapper\n * implementation around the `useGetInitialDataQuery` with a unique\n * `selectFromResult` function to memoize the calculation.\n *\n * If no model is provided, the hook will return all the schemas.\n */\nconst useContentTypeSchema = (model?: string) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const { data, error, isLoading, isFetching } = useGetInitialDataQuery(undefined);\n\n const { components, contentType, contentTypes } = React.useMemo(() => {\n const contentType = data?.contentTypes.find((ct) => ct.uid === model);\n\n const componentsByKey = data?.components.reduce<ComponentsDictionary>((acc, component) => {\n acc[component.uid] = component;\n\n return acc;\n }, {});\n\n const components = extractContentTypeComponents(contentType?.attributes, componentsByKey);\n\n return {\n components: Object.keys(components).length === 0 ? undefined : components,\n contentType,\n contentTypes: data?.contentTypes ?? [],\n };\n }, [model, data]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [toggleNotification, error, formatAPIError]);\n\n return {\n // This must be memoized to avoid inifiinite re-renders where the empty object is different everytime.\n components: React.useMemo(() => components ?? {}, [components]),\n schema: contentType,\n schemas: contentTypes,\n isLoading: isLoading || isFetching,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * extractContentTypeComponents\n * -----------------------------------------------------------------------------------------------*/\n/**\n * @internal\n * @description Extracts the components used in a content type's attributes recursively.\n */\nconst extractContentTypeComponents = (\n attributes: ContentType['attributes'] = {},\n allComponents: ComponentsDictionary = {}\n): ComponentsDictionary => {\n const getComponents = (attributes: Schema.Attribute.AnyAttribute[]) => {\n return attributes.reduce<string[]>((acc, attribute) => {\n /**\n * If the attribute is a component or dynamiczone, we need to recursively\n * extract the component UIDs from its attributes.\n */\n if (attribute.type === 'component') {\n const componentAttributes = Object.values(\n allComponents[attribute.component]?.attributes ?? {}\n );\n\n acc.push(attribute.component, ...getComponents(componentAttributes));\n } else if (attribute.type === 'dynamiczone') {\n acc.push(\n ...attribute.components,\n /**\n * Dynamic zones have an array of components, so we flatMap over them\n * performing the same search as above.\n */\n ...attribute.components.flatMap((componentUid) => {\n const componentAttributes = Object.values(\n allComponents[componentUid]?.attributes ?? {}\n );\n\n return getComponents(componentAttributes);\n })\n );\n }\n\n return acc;\n }, []);\n };\n\n const componentUids = getComponents(Object.values(attributes));\n\n const uniqueComponentUids = [...new Set(componentUids)];\n\n const componentsByKey = uniqueComponentUids.reduce<ComponentsDictionary>((acc, uid) => {\n acc[uid] = allComponents[uid];\n\n return acc;\n }, {});\n\n return componentsByKey;\n};\n\nexport { useContentTypeSchema, extractContentTypeComponents };\nexport type { ComponentsDictionary };\n","export const HOOKS = {\n /**\n * Hook that allows to mutate the displayed headers of the list view table\n * @constant\n * @type {string}\n */\n INJECT_COLUMN_IN_TABLE: 'Admin/CM/pages/ListView/inject-column-in-table',\n\n /**\n * Hook that allows to mutate the CM's collection types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_COLLECTION_TYPES_LINKS: 'Admin/CM/pages/App/mutate-collection-types-links',\n\n /**\n * Hook that allows to mutate the CM's edit view layout\n * @constant\n * @type {string}\n */\n MUTATE_EDIT_VIEW_LAYOUT: 'Admin/CM/pages/EditView/mutate-edit-view-layout',\n\n /**\n * Hook that allows to mutate the CM's single types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_SINGLE_TYPES_LINKS: 'Admin/CM/pages/App/mutate-single-types-links',\n};\n","import {\n FindContentTypeConfiguration,\n UpdateContentTypeConfiguration,\n FindContentTypesSettings,\n} from '../../../shared/contracts/content-types';\n\nimport { contentManagerApi } from './api';\n\nconst contentTypesApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getContentTypeConfiguration: builder.query<\n FindContentTypeConfiguration.Response['data'],\n string\n >({\n query: (uid) => ({\n url: `/content-manager/content-types/${uid}/configuration`,\n method: 'GET',\n }),\n transformResponse: (response: FindContentTypeConfiguration.Response) => response.data,\n providesTags: (_result, _error, uid) => [\n { type: 'ContentTypesConfiguration', id: uid },\n { type: 'ContentTypeSettings', id: 'LIST' },\n ],\n }),\n getAllContentTypeSettings: builder.query<FindContentTypesSettings.Response['data'], void>({\n query: () => '/content-manager/content-types-settings',\n transformResponse: (response: FindContentTypesSettings.Response) => response.data,\n providesTags: [{ type: 'ContentTypeSettings', id: 'LIST' }],\n }),\n updateContentTypeConfiguration: builder.mutation<\n UpdateContentTypeConfiguration.Response['data'],\n UpdateContentTypeConfiguration.Request['body'] & {\n uid: string;\n }\n >({\n query: ({ uid, ...body }) => ({\n url: `/content-manager/content-types/${uid}/configuration`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: UpdateContentTypeConfiguration.Response) => response.data,\n invalidatesTags: (_result, _error, { uid }) => [\n { type: 'ContentTypesConfiguration', id: uid },\n { type: 'ContentTypeSettings', id: 'LIST' },\n // Is this necessary?\n { type: 'InitialData' },\n ],\n }),\n }),\n});\n\nconst {\n useGetContentTypeConfigurationQuery,\n useGetAllContentTypeSettingsQuery,\n useUpdateContentTypeConfigurationMutation,\n} = contentTypesApi;\n\nexport {\n useGetContentTypeConfigurationQuery,\n useGetAllContentTypeSettingsQuery,\n useUpdateContentTypeConfigurationMutation,\n};\n","import type { ComponentsDictionary, Schema } from '../hooks/useDocument';\nimport type { Schema as SchemaUtils } from '@strapi/types';\n\nconst checkIfAttributeIsDisplayable = (attribute: SchemaUtils.Attribute.AnyAttribute) => {\n const { type } = attribute;\n\n if (type === 'relation') {\n return !attribute.relation.toLowerCase().includes('morph');\n }\n\n return !['json', 'dynamiczone', 'richtext', 'password', 'blocks'].includes(type) && !!type;\n};\n\ninterface MainField {\n name: string;\n type: SchemaUtils.Attribute.Kind | 'custom';\n}\n\n/**\n * @internal\n * @description given an attribute, content-type schemas & component schemas, find the mainField name & type.\n * If the attribute does not need a `mainField` then we return undefined. If we do not find the type\n * of the field, we assume it's a string #sensible-defaults\n */\nconst getMainField = (\n attribute: SchemaUtils.Attribute.AnyAttribute,\n mainFieldName: string | undefined,\n { schemas, components }: { schemas: Schema[]; components: ComponentsDictionary }\n): MainField | undefined => {\n if (!mainFieldName) {\n return undefined;\n }\n\n const mainFieldType =\n attribute.type === 'component'\n ? components[attribute.component].attributes[mainFieldName].type\n : // @ts-expect-error – `targetModel` does exist on the attribute for a relation.\n schemas.find((schema) => schema.uid === attribute.targetModel)?.attributes[mainFieldName]\n .type;\n\n return {\n name: mainFieldName,\n type: mainFieldType ?? 'string',\n };\n};\n\nexport { checkIfAttributeIsDisplayable, getMainField };\nexport type { MainField };\n","import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useStrapiApp,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\n\nimport { HOOKS } from '../constants/hooks';\nimport { useGetContentTypeConfigurationQuery } from '../services/contentTypes';\nimport { BaseQueryError } from '../utils/api';\nimport { getMainField } from '../utils/attributes';\n\nimport { useContentTypeSchema } from './useContentTypeSchema';\nimport {\n type ComponentsDictionary,\n type Document,\n type Schema,\n useDoc,\n useDocument,\n} from './useDocument';\n\nimport type { ComponentConfiguration } from '../../../shared/contracts/components';\nimport type {\n Metadatas,\n FindContentTypeConfiguration,\n Settings,\n} from '../../../shared/contracts/content-types';\nimport type { Filters, InputProps, Table } from '@strapi/admin/strapi-admin';\nimport type { Schema as SchemaUtils } from '@strapi/types';\n\ntype LayoutOptions = Schema['options'] & Schema['pluginOptions'] & object;\n\ninterface LayoutSettings extends Settings {\n displayName?: string;\n icon?: never;\n}\n\ninterface ListFieldLayout\n extends Table.Header<Document, ListFieldLayout>,\n Pick<Filters.Filter, 'mainField'> {\n attribute: SchemaUtils.Attribute.AnyAttribute | { type: 'custom' };\n}\n\ninterface ListLayout {\n layout: ListFieldLayout[];\n components?: never;\n metadatas: {\n [K in keyof Metadatas]: Metadatas[K]['list'];\n };\n options: LayoutOptions;\n settings: LayoutSettings;\n}\ninterface EditFieldSharedProps\n extends Omit<InputProps, 'hint' | 'label' | 'type'>,\n Pick<Filters.Filter, 'mainField'> {\n hint?: string;\n label: string;\n size: number;\n unique?: boolean;\n visible?: boolean;\n}\n\n/**\n * Map over all the types in Attribute Types and use that to create a union of new types where the attribute type\n * is under the property attribute and the type is under the property type.\n */\ntype EditFieldLayout = {\n [K in SchemaUtils.Attribute.Kind]: EditFieldSharedProps & {\n attribute: Extract<SchemaUtils.Attribute.AnyAttribute, { type: K }>;\n type: K;\n };\n}[SchemaUtils.Attribute.Kind];\n\ninterface EditLayout {\n layout: Array<Array<EditFieldLayout[]>>;\n components: {\n [uid: string]: {\n layout: Array<EditFieldLayout[]>;\n settings: ComponentConfiguration['settings'] & {\n displayName?: string;\n icon?: string;\n };\n };\n };\n metadatas: {\n [K in keyof Metadatas]: Metadatas[K]['edit'];\n };\n options: LayoutOptions;\n settings: LayoutSettings;\n}\n\ntype UseDocumentLayout = (model: string) => {\n error?: BaseQueryError | SerializedError;\n isLoading: boolean;\n /**\n * This is the layout for the edit view,\n */\n edit: EditLayout;\n list: ListLayout;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * useDocumentLayout\n * -----------------------------------------------------------------------------------------------*/\n\nconst DEFAULT_SETTINGS = {\n bulkable: false,\n filterable: false,\n searchable: false,\n pagination: false,\n defaultSortBy: '',\n defaultSortOrder: 'asc',\n mainField: 'id',\n pageSize: 10,\n};\n\n/**\n * @alpha\n * @description This hook is used to get the layouts for either the edit view or list view of a specific content-type\n * including the layouts for the components used in the content-type. It also runs the mutation hook waterfall so the data\n * is consistent wherever it is used. It's a light wrapper around the `useDocument` hook, but provides the `skip` option a document\n * is not fetched, however, it does fetch the schemas & components if they do not already exist in the cache.\n *\n * If the fetch fails, it will display a notification to the user.\n *\n * @example\n * ```tsx\n * const { model } = useParams<{ model: string }>();\n * const { edit: { schema: layout } } = useDocumentLayout(model);\n *\n * return layout.map(panel => panel.map(row => row.map(field => <Field.Root {...field} />)))\n * ```\n *\n */\nconst useDocumentLayout: UseDocumentLayout = (model) => {\n const { schema, components } = useDocument({ model, collectionType: '' }, { skip: true });\n const [{ query }] = useQueryParams();\n const runHookWaterfall = useStrapiApp('useDocumentLayout', (state) => state.runHookWaterfall);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { isLoading: isLoadingSchemas, schemas } = useContentTypeSchema();\n\n const {\n data,\n isLoading: isLoadingConfigs,\n error,\n isFetching: isFetchingConfigs,\n } = useGetContentTypeConfigurationQuery(model);\n\n const isLoading = isLoadingSchemas || isFetchingConfigs || isLoadingConfigs;\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const editLayout = React.useMemo(\n () =>\n data && !isLoading\n ? formatEditLayout(data, { schemas, schema, components })\n : ({\n layout: [],\n components: {},\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as EditLayout),\n [data, isLoading, schemas, schema, components]\n );\n\n const listLayout = React.useMemo(() => {\n return data && !isLoading\n ? formatListLayout(data, { schemas, schema, components })\n : ({\n layout: [],\n metadatas: {},\n options: {},\n settings: DEFAULT_SETTINGS,\n } as ListLayout);\n }, [data, isLoading, schemas, schema, components]);\n\n const { layout: edit } = React.useMemo(\n () =>\n runHookWaterfall(HOOKS.MUTATE_EDIT_VIEW_LAYOUT, {\n layout: editLayout,\n query,\n }),\n [editLayout, query, runHookWaterfall]\n );\n\n return {\n error,\n isLoading,\n edit,\n list: listLayout,\n } satisfies ReturnType<UseDocumentLayout>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * useDocLayout\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal this hook uses the internal useDoc hook, as such it shouldn't be used outside of the\n * content-manager because it won't work as intended.\n */\nconst useDocLayout = () => {\n const { model } = useDoc();\n return useDocumentLayout(model);\n};\n\n/* -------------------------------------------------------------------------------------------------\n * formatEditLayout\n * -----------------------------------------------------------------------------------------------*/\ntype LayoutData = FindContentTypeConfiguration.Response['data'];\n\n/**\n * @internal\n * @description takes the configuration data, the schema & the components used in the schema and formats the edit view\n * versions of the schema & components. This is then used to render the edit view of the content-type.\n */\nconst formatEditLayout = (\n data: LayoutData,\n {\n schemas,\n schema,\n components,\n }: { schemas: Schema[]; schema?: Schema; components: ComponentsDictionary }\n): EditLayout => {\n let currentPanelIndex = 0;\n /**\n * The fields arranged by the panels, new panels are made for dynamic zones only.\n */\n const panelledEditAttributes = convertEditLayoutToFieldLayouts(\n data.contentType.layouts.edit,\n schema?.attributes,\n data.contentType.metadatas,\n { configurations: data.components, schemas: components },\n schemas\n ).reduce<Array<EditFieldLayout[][]>>((panels, row) => {\n if (row.some((field) => field.type === 'dynamiczone')) {\n panels.push([row]);\n currentPanelIndex += 2;\n } else {\n if (!panels[currentPanelIndex]) {\n panels.push([row]);\n } else {\n panels[currentPanelIndex].push(row);\n }\n }\n\n return panels;\n }, []);\n\n const componentEditAttributes = Object.entries(data.components).reduce<EditLayout['components']>(\n (acc, [uid, configuration]) => {\n acc[uid] = {\n layout: convertEditLayoutToFieldLayouts(\n configuration.layouts.edit,\n components[uid].attributes,\n configuration.metadatas,\n { configurations: data.components, schemas: components }\n ),\n settings: {\n ...configuration.settings,\n icon: components[uid].info.icon,\n displayName: components[uid].info.displayName,\n },\n };\n return acc;\n },\n {}\n );\n\n const editMetadatas = Object.entries(data.contentType.metadatas).reduce<EditLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.edit,\n };\n },\n {}\n );\n\n return {\n layout: panelledEditAttributes,\n components: componentEditAttributes,\n metadatas: editMetadatas,\n settings: {\n ...data.contentType.settings,\n displayName: schema?.info.displayName,\n },\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n ...data.contentType.options,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * convertEditLayoutToFieldLayouts\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description takes the edit layout from either a content-type or a component\n * and formats it into a generic object that can be used to correctly render\n * the form fields.\n */\nconst convertEditLayoutToFieldLayouts = (\n rows: LayoutData['contentType']['layouts']['edit'],\n attributes: Schema['attributes'] = {},\n metadatas: Metadatas,\n components?: {\n configurations: Record<string, ComponentConfiguration>;\n schemas: ComponentsDictionary;\n },\n schemas: Schema[] = []\n) => {\n return rows.map((row) =>\n row\n .map((field) => {\n const attribute = attributes[field.name];\n\n if (!attribute) {\n return null;\n }\n\n const { edit: metadata } = metadatas[field.name];\n\n const settings: Partial<Settings> =\n attribute.type === 'component' && components\n ? components.configurations[attribute.component].settings\n : {};\n\n return {\n attribute,\n disabled: !metadata.editable,\n hint: metadata.description,\n label: metadata.label ?? '',\n name: field.name,\n // @ts-expect-error – mainField does exist on the metadata for a relation.\n mainField: getMainField(attribute, metadata.mainField || settings.mainField, {\n schemas,\n components: components?.schemas ?? {},\n }),\n placeholder: metadata.placeholder ?? '',\n required: attribute.required ?? false,\n size: field.size,\n unique: 'unique' in attribute ? attribute.unique : false,\n visible: metadata.visible ?? true,\n type: attribute.type,\n };\n })\n .filter((field) => field !== null)\n ) as EditFieldLayout[][];\n};\n\n/* -------------------------------------------------------------------------------------------------\n * formatListLayout\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description takes the complete configuration data, the schema & the components used in the schema and\n * formats a list view layout for the content-type. This is much simpler than the edit view layout as there\n * are less options to consider.\n */\nconst formatListLayout = (\n data: LayoutData,\n {\n schemas,\n schema,\n components,\n }: { schemas: Schema[]; schema?: Schema; components: ComponentsDictionary }\n): ListLayout => {\n const listMetadatas = Object.entries(data.contentType.metadatas).reduce<ListLayout['metadatas']>(\n (acc, [attribute, metadata]) => {\n return {\n ...acc,\n [attribute]: metadata.list,\n };\n },\n {}\n );\n /**\n * The fields arranged by the panels, new panels are made for dynamic zones only.\n */\n const listAttributes = convertListLayoutToFieldLayouts(\n data.contentType.layouts.list,\n schema?.attributes,\n listMetadatas,\n { configurations: data.components, schemas: components },\n schemas\n );\n\n return {\n layout: listAttributes,\n settings: { ...data.contentType.settings, displayName: schema?.info.displayName },\n metadatas: listMetadatas,\n options: {\n ...schema?.options,\n ...schema?.pluginOptions,\n ...data.contentType.options,\n },\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * convertListLayoutToFieldLayouts\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description takes the columns from the list view configuration and formats them into a generic object\n * combinining metadata and attribute data.\n *\n * @note We do use this to reformat the list of strings when updating the displayed headers for the list view.\n */\nconst convertListLayoutToFieldLayouts = (\n columns: LayoutData['contentType']['layouts']['list'],\n attributes: Schema['attributes'] = {},\n metadatas: ListLayout['metadatas'],\n components?: {\n configurations: Record<string, ComponentConfiguration>;\n schemas: ComponentsDictionary;\n },\n schemas: Schema[] = []\n) => {\n return columns\n .map((name) => {\n const attribute = attributes[name];\n\n if (!attribute) {\n return null;\n }\n\n const metadata = metadatas[name];\n\n const settings: Partial<Settings> =\n attribute.type === 'component' && components\n ? components.configurations[attribute.component].settings\n : {};\n\n return {\n attribute,\n label: metadata.label ?? '',\n mainField: getMainField(attribute, metadata.mainField || settings.mainField, {\n schemas,\n components: components?.schemas ?? {},\n }),\n name: name,\n searchable: metadata.searchable ?? true,\n sortable: metadata.sortable ?? true,\n } satisfies ListFieldLayout;\n })\n .filter((field) => field !== null) as ListFieldLayout[];\n};\n\nexport {\n useDocLayout,\n useDocumentLayout,\n convertListLayoutToFieldLayouts,\n convertEditLayoutToFieldLayouts,\n DEFAULT_SETTINGS,\n};\nexport type { EditLayout, EditFieldLayout, ListLayout, ListFieldLayout, UseDocumentLayout };\n","/**\n * This hook doesn't use a context provider because we fetch directly from the server,\n * this sounds expensive but actually, it's really not. Because we have redux-toolkit-query\n * being a cache layer so if nothing invalidates the cache, we don't fetch again.\n */\n\nimport * as React from 'react';\n\nimport {\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n FormErrors,\n getYupValidationErrors,\n useForm,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\nimport { ValidationError } from 'yup';\n\nimport { SINGLE_TYPES } from '../constants/collections';\nimport { type AnyData, transformDocument } from '../pages/EditView/utils/data';\nimport { createDefaultForm } from '../pages/EditView/utils/forms';\nimport { useGetDocumentQuery } from '../services/documents';\nimport { buildValidParams } from '../utils/api';\nimport { createYupSchema } from '../utils/validation';\n\nimport { useContentTypeSchema, ComponentsDictionary } from './useContentTypeSchema';\nimport { useDocumentLayout } from './useDocumentLayout';\n\nimport type { FindOne } from '../../../shared/contracts/collection-types';\nimport type { ContentType } from '../../../shared/contracts/content-types';\nimport type { Modules } from '@strapi/types';\n\ninterface UseDocumentArgs {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n}\n\ntype UseDocumentOpts = Parameters<typeof useGetDocumentQuery>[1];\n\ntype Document = FindOne.Response['data'];\n\ntype Schema = ContentType;\n\ntype UseDocument = (\n args: UseDocumentArgs,\n opts?: UseDocumentOpts\n) => {\n /**\n * These are the schemas of the components used in the content type, organised\n * by their uid.\n */\n components: ComponentsDictionary;\n document?: Document;\n meta?: FindOne.Response['meta'];\n isLoading: boolean;\n /**\n * This is the schema of the content type, it is not the same as the layout.\n */\n schema?: Schema;\n schemas?: Schema[];\n hasError?: boolean;\n validate: (document: Document) => null | FormErrors;\n /**\n * Get the document's title\n */\n getTitle: (mainField: string) => string;\n /**\n * Get the initial form values for the document\n */\n getInitialFormValues: (isCreatingDocument?: boolean) => AnyData | undefined;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * useDocument\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @alpha\n * @public\n * @description Returns a document based on the model, collection type & id passed as arguments.\n * Also extracts its schema from the redux cache to be used for creating a validation schema.\n * @example\n * ```tsx\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n *\n * if(!model || !collectionType) return null;\n *\n * const { document, isLoading, validate } = useDocument({ documentId: id, model, collectionType, params: { locale: 'en-GB' } })\n * const { update } = useDocumentActions()\n *\n * const onSubmit = async (document: Document) => {\n * const errors = validate(document);\n *\n * if(errors) {\n * // handle errors\n * }\n *\n * await update({ collectionType, model, id }, document)\n * }\n * ```\n *\n * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document} for more information\n */\nconst useDocument: UseDocument = (args, opts) => {\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const { formatMessage } = useIntl();\n\n const {\n currentData: data,\n isLoading: isLoadingDocument,\n isFetching: isFetchingDocument,\n error,\n } = useGetDocumentQuery(args, {\n ...opts,\n skip: (!args.documentId && args.collectionType !== SINGLE_TYPES) || opts?.skip,\n });\n const document = data?.data;\n const meta = data?.meta;\n\n const {\n components,\n schema,\n schemas,\n isLoading: isLoadingSchema,\n } = useContentTypeSchema(args.model);\n const isSingleType = schema?.kind === 'singleType';\n\n const getTitle = (mainField: string) => {\n // Always use mainField if it's not an id\n if (mainField !== 'id' && document?.[mainField]) {\n return document[mainField];\n }\n\n // When it's a singleType without a mainField, use the contentType displayName\n if (isSingleType && schema?.info.displayName) {\n return schema.info.displayName;\n }\n\n // Otherwise, use a fallback\n return formatMessage({\n id: 'content-manager.containers.untitled',\n defaultMessage: 'Untitled',\n });\n };\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [toggleNotification, error, formatAPIError, args.collectionType]);\n\n const validationSchema = React.useMemo(() => {\n if (!schema) {\n return null;\n }\n\n return createYupSchema(schema.attributes, components);\n }, [schema, components]);\n\n const validate = React.useCallback(\n (document: Modules.Documents.AnyDocument): FormErrors | null => {\n if (!validationSchema) {\n throw new Error(\n 'There is no validation schema generated, this is likely due to the schema not being loaded yet.'\n );\n }\n\n try {\n validationSchema.validateSync(document, { abortEarly: false, strict: true });\n return null;\n } catch (error) {\n if (error instanceof ValidationError) {\n return getYupValidationErrors(error);\n }\n\n throw error;\n }\n },\n [validationSchema]\n );\n\n /**\n * Here we prepare the form for editing, we need to:\n * - remove prohibited fields from the document (passwords | ADD YOURS WHEN THERES A NEW ONE)\n * - swap out count objects on relations for empty arrays\n * - set __temp_key__ on array objects for drag & drop\n *\n * We also prepare the form for new documents, so we need to:\n * - set default values on fields\n */\n const getInitialFormValues = React.useCallback(\n (isCreatingDocument: boolean = false) => {\n if ((!document && !isCreatingDocument && !isSingleType) || !schema) {\n return undefined;\n }\n\n /**\n * Check that we have an ID so we know the\n * document has been created in some way.\n */\n const form = document?.id ? document : createDefaultForm(schema, components);\n\n return transformDocument(schema, components)(form);\n },\n [document, isSingleType, schema, components]\n );\n\n const isLoading = isLoadingDocument || isFetchingDocument || isLoadingSchema;\n const hasError = !!error;\n\n return {\n components,\n document,\n meta,\n isLoading,\n hasError,\n schema,\n schemas,\n validate,\n getTitle,\n getInitialFormValues,\n } satisfies ReturnType<UseDocument>;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * useDoc\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal this hook uses the router to extract the model, collection type & id from the url.\n * therefore, it shouldn't be used outside of the content-manager because it won't work as intended.\n */\nconst useDoc = () => {\n const { id, slug, collectionType, origin } = useParams<{\n id: string;\n origin: string;\n slug: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!slug) {\n throw new Error('Could not find model in url params');\n }\n\n const document = useDocument(\n { documentId: origin || id, model: slug, collectionType, params },\n {\n skip: id === 'create' || (!origin && !id && collectionType !== SINGLE_TYPES),\n }\n );\n\n const returnId = origin || id === 'create' ? undefined : id;\n\n return {\n collectionType,\n model: slug,\n id: returnId,\n ...document,\n };\n};\n\n/**\n * @public\n * @experimental\n * Content manager context hooks for plugin development.\n * Make sure to use this hook inside the content manager.\n */\nconst useContentManagerContext = () => {\n const {\n collectionType,\n model,\n id,\n components,\n isLoading: isLoadingDoc,\n schema,\n schemas,\n } = useDoc();\n\n const layout = useDocumentLayout(model);\n\n const form = useForm<unknown>('useContentManagerContext', (state) => state);\n\n const isSingleType = collectionType === SINGLE_TYPES;\n const slug = model;\n const isCreatingEntry = id === 'create';\n\n const {} = useContentTypeSchema();\n\n const isLoading = isLoadingDoc || layout.isLoading;\n const error = layout.error;\n\n return {\n error,\n isLoading,\n\n // Base metadata\n model,\n collectionType,\n id,\n slug,\n isCreatingEntry,\n isSingleType,\n hasDraftAndPublish: schema?.options?.draftAndPublish ?? false,\n\n // All schema infos\n components,\n contentType: schema,\n contentTypes: schemas,\n\n // Form state\n form,\n\n // layout infos\n layout,\n };\n};\n\nexport { useDocument, useDoc, useContentManagerContext };\nexport type { UseDocument, UseDocumentArgs, Document, Schema, ComponentsDictionary };\n","type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nconst getTranslation = (id: string) => `content-manager.${id}`;\n\nexport { getTranslation, prefixPluginTranslations };\n","import * as React from 'react';\n\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n useNotification,\n useTracking,\n type TrackingEvent,\n useAPIErrorHandler,\n useGuidedTour,\n} from '@strapi/admin/strapi-admin';\nimport { useIntl, type MessageDescriptor } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useLazyGetDocumentQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n} from '../services/documents';\nimport { BaseQueryError } from '../utils/api';\nimport { getTranslation } from '../utils/translations';\n\nimport type { Document } from './useDocument';\nimport type {\n AutoClone,\n Clone,\n Create,\n Delete,\n BulkDelete,\n Discard,\n FindOne,\n Publish,\n BulkPublish,\n Update,\n Unpublish,\n BulkUnpublish,\n} from '../../../shared/contracts/collection-types';\n\nconst DEFAULT_UNEXPECTED_ERROR_MSG = {\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again',\n} satisfies MessageDescriptor;\n\ntype OperationResponse<TResponse extends { data: any; meta?: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | Pick<TResponse, 'data' | 'meta'>\n | { error: BaseQueryError | SerializedError };\n\ntype BulkOperationResponse<TResponse extends { data: any; error?: any }> =\n | Pick<TResponse, 'data'>\n | { error: BaseQueryError | SerializedError };\n\ntype UseDocumentActions = () => {\n /**\n * @description Attempts to clone a document based on the provided sourceId.\n * This will return a list of the fields as an error if it's unable to clone.\n * You most likely want to use the `clone` action instead.\n */\n isLoading: boolean;\n autoClone: (args: {\n model: string;\n sourceId: string;\n }) => Promise<OperationResponse<AutoClone.Response>>;\n clone: (\n args: {\n model: string;\n documentId: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Clone.Response>>;\n create: (\n args: {\n model: string;\n params?: object;\n },\n document: Omit<Document, 'id'>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willCreateEntry' | 'didCreateEntry' | 'didNotCreateEntry' }\n >['properties']\n ) => Promise<OperationResponse<Create.Response>>;\n delete: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willDeleteEntry' | 'didDeleteEntry' | 'didNotDeleteEntry' }\n >['properties']\n ) => Promise<OperationResponse<Delete.Response>>;\n deleteMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkDelete.Response>>;\n discard: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<OperationResponse<Discard.Response>>;\n getDocument: (args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n }) => Promise<FindOne.Response | undefined>;\n publish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>\n ) => Promise<OperationResponse<Publish.Response>>;\n publishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkPublish.Response>>;\n update: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n document: Partial<Document>,\n trackerProperty?: Extract<\n TrackingEvent,\n { name: 'willEditEntry' | 'didEditEntry' | 'didNotEditEntry' }\n >['properties']\n ) => Promise<OperationResponse<Update.Response>>;\n unpublish: (\n args: {\n collectionType: string;\n model: string;\n documentId?: string;\n params?: object;\n },\n discardDraft?: boolean\n ) => Promise<OperationResponse<Unpublish.Response>>;\n unpublishMany: (args: {\n model: string;\n documentIds: string[];\n params?: object;\n }) => Promise<BulkOperationResponse<BulkUnpublish.Response>>;\n};\n\ntype IUseDocumentActs = ReturnType<UseDocumentActions>;\n\n/**\n * @alpha\n * @public\n * @description Contains all the operations that can be performed on a single document.\n * Designed to be able to be used anywhere within a Strapi app. The hooks will handle\n * notifications should the operation fail, however the response is always returned incase\n * the user needs to handle side-effects.\n * @example\n * ```tsx\n * import { Form } from '@strapi/admin/admin';\n *\n * const { id, model, collectionType } = useParams<{ id: string; model: string; collectionType: string }>();\n * const { update } = useDocumentActions();\n *\n * const handleSubmit = async (data) => {\n * await update({ collectionType, model, documentId: id }, data);\n * }\n *\n * return <Form method=\"PUT\" onSubmit={handleSubmit} />\n * ```\n *\n * @see {@link https://contributor.strapi.io/docs/core/content-manager/hooks/use-document-operations} for more information\n */\nconst useDocumentActions: UseDocumentActions = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const navigate = useNavigate();\n const setCurrentStep = useGuidedTour('useDocumentActions', (state) => state.setCurrentStep);\n\n const [deleteDocument, { isLoading: isDeleting }] = useDeleteDocumentMutation();\n const _delete: IUseDocumentActs['delete'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, trackerProperty) => {\n try {\n trackUsage('willDeleteEntry', trackerProperty);\n\n const res = await deleteDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.delete'),\n defaultMessage: 'Deleted document',\n }),\n });\n\n trackUsage('didDeleteEntry', trackerProperty);\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotDeleteEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [trackUsage, deleteDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [deleteManyDocuments, { isLoading: isDeletingMany }] = useDeleteManyDocumentsMutation();\n\n const deleteMany: IUseDocumentActs['deleteMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkDeleteEntries');\n\n const res = await deleteManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.delete'),\n defaultMessage: 'Successfully deleted.',\n }),\n message: '',\n });\n\n trackUsage('didBulkDeleteEntries');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkDeleteEntries');\n\n throw err;\n }\n },\n [trackUsage, deleteManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [discardDocument, { isLoading: isDiscardingDocument }] = useDiscardDocumentMutation();\n const discard: IUseDocumentActs['discard'] = React.useCallback(\n async ({ collectionType, model, documentId, params }) => {\n try {\n const res = await discardDocument({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'content-manager.success.record.discard',\n defaultMessage: 'Changes discarded',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [discardDocument, formatAPIError, formatMessage, toggleNotification]\n );\n\n const [publishDocument, { isLoading: isPublishing }] = usePublishDocumentMutation();\n const publish: IUseDocumentActs['publish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data) => {\n try {\n trackUsage('willPublishEntry');\n\n const res = await publishDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n trackUsage('didPublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, publishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [publishManyDocuments, { isLoading: isPublishingMany }] = usePublishManyDocumentsMutation();\n const publishMany: IUseDocumentActs['publishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n // TODO Confirm tracking events for bulk publish?\n\n const res = await publishManyDocuments({\n model,\n documentIds,\n params,\n });\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.publish'),\n defaultMessage: 'Published document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n throw err;\n }\n },\n [\n // trackUsage,\n publishManyDocuments,\n toggleNotification,\n formatMessage,\n formatAPIError,\n ]\n );\n\n const [updateDocument, { isLoading: isUpdating }] = useUpdateDocumentMutation();\n const update: IUseDocumentActs['update'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, data, trackerProperty) => {\n try {\n trackUsage('willEditEntry', trackerProperty);\n\n const res = await updateDocument({\n collectionType,\n model,\n documentId,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotEditEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didEditEntry', trackerProperty);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n return res.data;\n } catch (err) {\n trackUsage('didNotEditEntry', { error: err, ...trackerProperty });\n\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, updateDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishDocument] = useUnpublishDocumentMutation();\n const unpublish: IUseDocumentActs['unpublish'] = React.useCallback(\n async ({ collectionType, model, documentId, params }, discardDraft = false) => {\n try {\n trackUsage('willUnpublishEntry');\n\n const res = await unpublishDocument({\n collectionType,\n model,\n documentId,\n params,\n data: {\n discardDraft,\n },\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didUnpublishEntry');\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.unpublish'),\n defaultMessage: 'Unpublished document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [trackUsage, unpublishDocument, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [unpublishManyDocuments, { isLoading: isUnpublishingMany }] =\n useUnpublishManyDocumentsMutation();\n const unpublishMany: IUseDocumentActs['unpublishMany'] = React.useCallback(\n async ({ model, documentIds, params }) => {\n try {\n trackUsage('willBulkUnpublishEntries');\n\n const res = await unpublishManyDocuments({\n model,\n documentIds,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n return { error: res.error };\n }\n\n trackUsage('didBulkUnpublishEntries');\n\n toggleNotification({\n type: 'success',\n title: formatMessage({\n id: getTranslation('success.records.unpublish'),\n defaultMessage: 'Successfully unpublished.',\n }),\n message: '',\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotBulkUnpublishEntries');\n\n throw err;\n }\n },\n [trackUsage, unpublishManyDocuments, toggleNotification, formatMessage, formatAPIError]\n );\n\n const [createDocument] = useCreateDocumentMutation();\n const create: IUseDocumentActs['create'] = React.useCallback(\n async ({ model, params }, data, trackerProperty) => {\n try {\n const res = await createDocument({\n model,\n data,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', trackerProperty);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.save'),\n defaultMessage: 'Saved document',\n }),\n });\n\n setCurrentStep('contentManager.success');\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [createDocument, formatAPIError, formatMessage, toggleNotification, trackUsage]\n );\n\n const [autoCloneDocument] = useAutoCloneDocumentMutation();\n const autoClone: IUseDocumentActs['autoClone'] = React.useCallback(\n async ({ model, sourceId }) => {\n try {\n const res = await autoCloneDocument({\n model,\n sourceId,\n });\n\n if ('error' in res) {\n return { error: res.error };\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n throw err;\n }\n },\n [autoCloneDocument, formatMessage, toggleNotification]\n );\n\n const [cloneDocument] = useCloneDocumentMutation();\n const clone: IUseDocumentActs['clone'] = React.useCallback(\n async ({ model, documentId, params }, body, trackerProperty) => {\n try {\n const { id: _id, ...restBody } = body;\n\n /**\n * If we're cloning we want to post directly to this endpoint\n * so that the relations even if they're not listed in the EditView\n * are correctly attached to the entry.\n */\n const res = await cloneDocument({\n model,\n sourceId: documentId,\n data: restBody,\n params,\n });\n\n if ('error' in res) {\n toggleNotification({ type: 'danger', message: formatAPIError(res.error) });\n\n trackUsage('didNotCreateEntry', { error: res.error, ...trackerProperty });\n\n return { error: res.error };\n }\n\n trackUsage('didCreateEntry', trackerProperty);\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslation('success.record.clone'),\n defaultMessage: 'Cloned document',\n }),\n });\n\n // Redirect to normal edit view\n navigate(`../../${res.data.data.documentId}`, { relative: 'path' });\n\n return res.data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(DEFAULT_UNEXPECTED_ERROR_MSG),\n });\n\n trackUsage('didNotCreateEntry', { error: err, ...trackerProperty });\n\n throw err;\n }\n },\n [cloneDocument, trackUsage, toggleNotification, formatMessage, formatAPIError, navigate]\n );\n\n const [getDoc] = useLazyGetDocumentQuery();\n const getDocument: IUseDocumentActs['getDocument'] = React.useCallback(\n async (args) => {\n const { data } = await getDoc(args);\n\n return data;\n },\n [getDoc]\n );\n\n return {\n isLoading:\n isPublishing ||\n isUpdating ||\n isDiscardingDocument ||\n isDeleting ||\n isDeletingMany ||\n isUnpublishingMany ||\n isPublishingMany,\n autoClone,\n clone,\n create,\n delete: _delete,\n deleteMany,\n discard,\n getDocument,\n publish,\n publishMany,\n unpublish,\n unpublishMany,\n update,\n } satisfies IUseDocumentActs;\n};\n\nexport { useDocumentActions };\nexport type { UseDocumentActions, OperationResponse };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport { type PathRouteProps } from 'react-router-dom';\n\nconst ProtectedHistoryPage = React.lazy(() =>\n import('./pages/History').then((mod) => ({ default: mod.ProtectedHistoryPage }))\n);\n\n/**\n * These routes will be merged with the rest of the Content Manager routes\n */\nconst routes: PathRouteProps[] = [\n {\n path: ':collectionType/:slug/:id/history',\n Component: ProtectedHistoryPage,\n },\n {\n path: ':collectionType/:slug/history',\n Component: ProtectedHistoryPage,\n },\n];\n\nexport { routes };\n","/* eslint-disable check-file/filename-naming-convention */\nimport * as React from 'react';\n\nimport type { PathRouteProps } from 'react-router-dom';\n\nconst ProtectedPreviewPage = React.lazy(() =>\n import('./pages/Preview').then((mod) => ({ default: mod.ProtectedPreviewPage }))\n);\n\nconst routes: PathRouteProps[] = [\n {\n path: ':collectionType/:slug/:id/preview',\n Component: ProtectedPreviewPage,\n },\n {\n path: ':collectionType/:slug/preview',\n Component: ProtectedPreviewPage,\n },\n];\n\nexport { routes };\n","/* eslint-disable check-file/filename-naming-convention */\nimport { lazy } from 'react';\n\nimport { Navigate, PathRouteProps, useParams } from 'react-router-dom';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from './constants/collections';\nimport { routes as historyRoutes } from './history/routes';\nimport { routes as previewRoutes } from './preview/routes';\n\nconst ProtectedEditViewPage = lazy(() =>\n import('./pages/EditView/EditViewPage').then((mod) => ({ default: mod.ProtectedEditViewPage }))\n);\nconst ProtectedListViewPage = lazy(() =>\n import('./pages/ListView/ListViewPage').then((mod) => ({ default: mod.ProtectedListViewPage }))\n);\nconst ProtectedListConfiguration = lazy(() =>\n import('./pages/ListConfiguration/ListConfigurationPage').then((mod) => ({\n default: mod.ProtectedListConfiguration,\n }))\n);\nconst ProtectedEditConfigurationPage = lazy(() =>\n import('./pages/EditConfigurationPage').then((mod) => ({\n default: mod.ProtectedEditConfigurationPage,\n }))\n);\nconst ProtectedComponentConfigurationPage = lazy(() =>\n import('./pages/ComponentConfigurationPage').then((mod) => ({\n default: mod.ProtectedComponentConfigurationPage,\n }))\n);\nconst NoPermissions = lazy(() =>\n import('./pages/NoPermissionsPage').then((mod) => ({ default: mod.NoPermissions }))\n);\nconst NoContentType = lazy(() =>\n import('./pages/NoContentTypePage').then((mod) => ({ default: mod.NoContentType }))\n);\n\nconst CollectionTypePages = () => {\n const { collectionType } = useParams<{ collectionType: string }>();\n\n /**\n * We only support two types of collections.\n */\n if (collectionType !== COLLECTION_TYPES && collectionType !== SINGLE_TYPES) {\n return <Navigate to=\"/404\" />;\n }\n\n return collectionType === COLLECTION_TYPES ? (\n <ProtectedListViewPage />\n ) : (\n <ProtectedEditViewPage />\n );\n};\n\nconst CLONE_RELATIVE_PATH = ':collectionType/:slug/clone/:origin';\nconst CLONE_PATH = `/content-manager/${CLONE_RELATIVE_PATH}`;\nconst LIST_RELATIVE_PATH = ':collectionType/:slug';\nconst LIST_PATH = `/content-manager/collection-types/:slug`;\n\nconst routes: PathRouteProps[] = [\n {\n path: LIST_RELATIVE_PATH,\n element: <CollectionTypePages />,\n },\n {\n path: ':collectionType/:slug/:id',\n Component: ProtectedEditViewPage,\n },\n {\n path: CLONE_RELATIVE_PATH,\n Component: ProtectedEditViewPage,\n },\n {\n path: ':collectionType/:slug/configurations/list',\n Component: ProtectedListConfiguration,\n },\n {\n path: 'components/:slug/configurations/edit',\n Component: ProtectedComponentConfigurationPage,\n },\n {\n path: ':collectionType/:slug/configurations/edit',\n Component: ProtectedEditConfigurationPage,\n },\n {\n path: '403',\n Component: NoPermissions,\n },\n {\n path: 'no-content-types',\n Component: NoContentType,\n },\n ...historyRoutes,\n ...previewRoutes,\n];\n\nexport { routes, CLONE_PATH, LIST_PATH };\n","import * as React from 'react';\n\nimport {\n useForm,\n useNotification,\n NotificationConfig,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n VisuallyHidden,\n Menu,\n ButtonProps,\n} from '@strapi/design-system';\nimport { Cross, More, WarningCircle } from '@strapi/icons';\nimport mapValues from 'lodash/fp/mapValues';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\nimport { DefaultTheme, styled } from 'styled-components';\n\nimport { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport { useGetDraftRelationCountQuery } from '../../../services/documents';\nimport { isBaseQueryError, buildValidParams } from '../../../utils/api';\nimport { getTranslation } from '../../../utils/translations';\n\nimport type { RelationsFormValue } from './FormInputs/Relations';\nimport type { DocumentActionComponent } from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row' | 'preview';\n\ninterface DocumentActionDescription {\n label: string;\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n icon?: React.ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default 'panel'\n * @description Where the action should be rendered.\n */\n position?: DocumentActionPosition | DocumentActionPosition[];\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n /**\n * @default 'secondary'\n */\n variant?: ButtonProps['variant'];\n loading?: ButtonProps['loading'];\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n variant?: ButtonProps['variant'];\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n footer?: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n id: string;\n}\n\ninterface DocumentActionsProps {\n actions: Action[];\n}\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n const { formatMessage } = useIntl();\n const [primaryAction, secondaryAction, ...restActions] = actions.filter((action) => {\n if (action.position === undefined) {\n return true;\n }\n\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('panel');\n });\n\n if (!primaryAction) {\n return null;\n }\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\" width=\"100%\">\n <Flex gap={2}>\n <DocumentActionButton {...primaryAction} variant={primaryAction.variant || 'default'} />\n {restActions.length > 0 ? (\n <DocumentActionsMenu\n actions={restActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n />\n ) : null}\n </Flex>\n {secondaryAction ? (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Action {}\n\nconst DocumentActionButton = (action: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: Action) => async (e: React.MouseEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <>\n <Button\n flex=\"auto\"\n startIcon={action.icon}\n disabled={action.disabled}\n onClick={handleClick(action)}\n justifyContent=\"center\"\n variant={action.variant || 'default'}\n paddingTop=\"7px\"\n paddingBottom=\"7px\"\n loading={action.loading}\n >\n {action.label}\n </Button>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.dialog?.variant ?? action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionMenu\n * -----------------------------------------------------------------------------------------------*/\ninterface DocumentActionsMenuProps {\n actions: Action[];\n children?: React.ReactNode;\n label?: string;\n variant?: 'ghost' | 'tertiary';\n}\n\nconst MenuItem = styled(Menu.Item)<{ isVariantDanger?: boolean; isDisabled?: boolean }>`\n &:hover {\n background: ${({ theme, isVariantDanger, isDisabled }) =>\n isVariantDanger && !isDisabled ? theme.colors.danger100 : 'neutral'};\n }\n`;\n\nconst DocumentActionsMenu = ({\n actions,\n children,\n label,\n variant = 'tertiary',\n}: DocumentActionsMenuProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const isDisabled = actions.every((action) => action.disabled) || actions.length === 0;\n\n const handleClick = (action: Action) => async (e: React.SyntheticEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n setIsOpen(false);\n };\n\n return (\n <Menu.Root open={isOpen} onOpenChange={setIsOpen}>\n <Menu.Trigger\n disabled={isDisabled}\n size=\"S\"\n endIcon={null}\n paddingTop=\"4px\"\n paddingLeft=\"7px\"\n paddingRight=\"7px\"\n variant={variant}\n >\n <More aria-hidden focusable={false} />\n <VisuallyHidden tag=\"span\">\n {label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n </VisuallyHidden>\n </Menu.Trigger>\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\">\n {actions.map((action) => {\n return (\n <MenuItem\n disabled={action.disabled}\n /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n onSelect={handleClick(action)}\n display=\"block\"\n key={action.id}\n isVariantDanger={action.variant === 'danger'}\n isDisabled={action.disabled}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex\n color={!action.disabled ? convertActionVariantToColor(action.variant) : 'inherit'}\n gap={2}\n tag=\"span\"\n >\n <Flex\n tag=\"span\"\n color={\n !action.disabled ? convertActionVariantToIconColor(action.variant) : 'inherit'\n }\n >\n {action.icon}\n </Flex>\n {action.label}\n </Flex>\n </Flex>\n </MenuItem>\n );\n })}\n {children}\n </Menu.Content>\n {actions.map((action) => {\n return (\n <React.Fragment key={action.id}>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </React.Fragment>\n );\n })}\n </Menu.Root>\n );\n};\n\nconst convertActionVariantToColor = (\n variant: DocumentActionDescription['variant'] = 'secondary'\n): keyof DefaultTheme['colors'] | undefined => {\n switch (variant) {\n case 'danger':\n return 'danger600';\n case 'secondary':\n return undefined;\n case 'success':\n return 'success600';\n default:\n return 'primary600';\n }\n};\n\nconst convertActionVariantToIconColor = (\n variant: DocumentActionDescription['variant'] = 'secondary'\n): keyof DefaultTheme['colors'] | undefined => {\n switch (variant) {\n case 'danger':\n return 'danger600';\n case 'secondary':\n return 'neutral500';\n case 'success':\n return 'success600';\n default:\n return 'primary600';\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps extends DialogOptions, Pick<Action, 'variant'> {\n onClose: () => void;\n isOpen: Dialog.Props['open'];\n loading?: ButtonProps['loading'];\n}\n\nconst DocumentActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n isOpen,\n variant = 'secondary',\n loading,\n}: DocumentActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{content}</Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button onClick={handleConfirm} variant={variant} fullWidth loading={loading}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content: Content,\n onModalClose,\n}: DocumentActionModalProps) => {\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n {typeof Content === 'function' ? (\n <Content onClose={handleClose} />\n ) : (\n <Modal.Body>{Content}</Modal.Body>\n )}\n {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst transformData = (data: Record<string, any>): any => {\n if (Array.isArray(data)) {\n return data.map(transformData);\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return mapValues(transformData)(data);\n }\n\n return data;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n meta,\n document,\n}) => {\n const { schema } = useDoc();\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const isListView = useMatch(LIST_PATH) !== null;\n const isCloning = useMatch(CLONE_PATH) !== null;\n const { id } = useParams();\n const { formatMessage } = useIntl();\n const canPublish = useDocumentRBAC('PublishAction', ({ canPublish }) => canPublish);\n const { publish, isLoading } = useDocumentActions();\n const [\n countDraftRelations,\n { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations },\n ] = useGetDraftRelationCountQuery();\n const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);\n const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);\n\n const [{ query, rawQuery }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const modified = useForm('PublishAction', ({ modified }) => modified);\n const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n const validate = useForm('PublishAction', (state) => state.validate);\n const setErrors = useForm('PublishAction', (state) => state.setErrors);\n const formValues = useForm('PublishAction', ({ values }) => values);\n\n React.useEffect(() => {\n if (isErrorDraftRelations) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('error.records.fetch-draft-relatons'),\n defaultMessage: 'An error occurred while fetching draft relations on this document.',\n }),\n });\n }\n }, [isErrorDraftRelations, toggleNotification, formatMessage]);\n\n React.useEffect(() => {\n const localDraftRelations = new Set();\n\n /**\n * Extracts draft relations from the provided data object.\n * It checks for a connect array of relations.\n * If a relation has a status of 'draft', its id is added to the localDraftRelations set.\n */\n const extractDraftRelations = (data: Omit<RelationsFormValue, 'disconnect'>) => {\n const relations = data.connect || [];\n relations.forEach((relation) => {\n if (relation.status === 'draft') {\n localDraftRelations.add(relation.id);\n }\n });\n };\n\n /**\n * Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.\n * If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.\n * It recursively calls itself for any non-null objects it contains.\n */\n const traverseAndExtract = (data: { [field: string]: any }) => {\n Object.entries(data).forEach(([key, value]) => {\n if (key === 'connect' && Array.isArray(value)) {\n extractDraftRelations({ connect: value });\n } else if (typeof value === 'object' && value !== null) {\n traverseAndExtract(value);\n }\n });\n };\n\n if (!documentId || modified) {\n traverseAndExtract(formValues);\n setLocalCountOfDraftRelations(localDraftRelations.size);\n }\n }, [documentId, modified, formValues, setLocalCountOfDraftRelations]);\n\n React.useEffect(() => {\n if (!document || !document.documentId || isListView) {\n return;\n }\n\n const fetchDraftRelationsCount = async () => {\n const { data, error } = await countDraftRelations({\n collectionType,\n model,\n documentId,\n params,\n });\n\n if (error) {\n throw error;\n }\n\n if (data) {\n setServerCountOfDraftRelations(data.data);\n }\n };\n\n fetchDraftRelationsCount();\n }, [isListView, document, documentId, countDraftRelations, collectionType, model, params]);\n\n const isDocumentPublished =\n (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||\n meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) &&\n document?.status !== 'modified';\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n const { errors } = await validate(true, {\n status: 'published',\n });\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n\n const res = await publish(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n transformData(formValues)\n );\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n /**\n * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n */\n if (id === 'create') {\n navigate({\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n });\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } finally {\n setSubmitting(false);\n }\n };\n\n const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n const hasDraftRelations = enableDraftRelationsCount && totalDraftRelations > 0;\n\n return {\n loading: isLoading,\n position: ['panel', 'preview'],\n /**\n * Disabled when:\n * - currently if you're cloning a document we don't support publish & clone at the same time.\n * - the form is submitting\n * - the active tab is the published tab\n * - the document is already published & not modified\n * - the document is being created & not modified\n * - the user doesn't have the permission to publish\n */\n disabled:\n isCloning ||\n isSubmitting ||\n isLoadingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (hasDraftRelations) {\n // In this case we need to show the user a confirmation dialog.\n // Return from the onClick and let the dialog handle the process.\n return;\n }\n\n await performPublish();\n },\n dialog: hasDraftRelations\n ? {\n type: 'dialog',\n variant: 'danger',\n footer: null,\n title: formatMessage({\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),\n defaultMessage: 'Confirmation',\n }),\n content: formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app.',\n },\n {\n count: totalDraftRelations,\n }\n ),\n onConfirm: async () => {\n await performPublish();\n },\n }\n : undefined,\n };\n};\n\nPublishAction.type = 'publish';\nPublishAction.position = ['panel', 'preview'];\n\nconst UpdateAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n}) => {\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const cloneMatch = useMatch(CLONE_PATH);\n const isCloning = cloneMatch !== null;\n const { formatMessage } = useIntl();\n const { create, update, clone, isLoading } = useDocumentActions();\n const [{ query, rawQuery }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const isSubmitting = useForm('UpdateAction', ({ isSubmitting }) => isSubmitting);\n const modified = useForm('UpdateAction', ({ modified }) => modified);\n const setSubmitting = useForm('UpdateAction', ({ setSubmitting }) => setSubmitting);\n const document = useForm('UpdateAction', ({ values }) => values);\n const validate = useForm('UpdateAction', (state) => state.validate);\n const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n const resetForm = useForm('PublishAction', ({ resetForm }) => resetForm);\n\n const handleUpdate = React.useCallback(async () => {\n setSubmitting(true);\n\n try {\n if (!modified) {\n return;\n }\n\n const { errors } = await validate(true, {\n status: 'draft',\n });\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params,\n },\n transformData(document)\n );\n\n if ('data' in res) {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { relative: 'path' }\n );\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } else if (documentId || collectionType === SINGLE_TYPES) {\n const res = await update(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n transformData(document)\n );\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else {\n resetForm();\n }\n } else {\n const res = await create(\n {\n model,\n params,\n },\n transformData(document)\n );\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { replace: true, relative: 'path' }\n );\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n }\n } finally {\n setSubmitting(false);\n }\n }, [\n clone,\n cloneMatch?.params.origin,\n collectionType,\n create,\n document,\n documentId,\n formatMessage,\n formatValidationErrors,\n isCloning,\n model,\n modified,\n navigate,\n params,\n rawQuery,\n resetForm,\n setErrors,\n setSubmitting,\n toggleNotification,\n update,\n validate,\n ]);\n\n // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n handleUpdate();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleUpdate]);\n\n return {\n loading: isLoading,\n /**\n * Disabled when:\n * - the form is submitting\n * - the document is not modified & we're not cloning (you can save a clone entity straight away)\n * - the active tab is the published tab\n */\n disabled: isSubmitting || (!modified && !isCloning) || activeTab === 'published',\n label: formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n }),\n onClick: handleUpdate,\n position: ['panel', 'preview'],\n };\n};\n\nUpdateAction.type = 'update';\nUpdateAction.position = ['panel', 'preview'];\n\nconst UNPUBLISH_DRAFT_OPTIONS = {\n KEEP: 'keep',\n DISCARD: 'discard',\n};\n\nconst UnpublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canPublish = useDocumentRBAC('UnpublishAction', ({ canPublish }) => canPublish);\n const { unpublish } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { toggleNotification } = useNotification();\n const [shouldKeepDraft, setShouldKeepDraft] = React.useState(true);\n\n const isDocumentModified = document?.status === 'modified';\n\n const handleChange = (value: string) => {\n setShouldKeepDraft(value === UNPUBLISH_DRAFT_OPTIONS.KEEP);\n };\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled:\n !canPublish ||\n activeTab === 'published' ||\n (document?.status !== 'published' && document?.status !== 'modified'),\n label: formatMessage({\n id: 'app.utils.unpublish',\n defaultMessage: 'Unpublish',\n }),\n icon: <Cross />,\n onClick: async () => {\n /**\n * return if there's no id & we're in a collection type, or the status modified\n * for either collection type because we use a dialog to handle the process in\n * the latter case.\n */\n if ((!documentId && collectionType !== SINGLE_TYPES) || isDocumentModified) {\n if (!documentId) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n return;\n }\n\n await unpublish({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n dialog: isDocumentModified\n ? {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={6}>\n <Flex width=\"100%\" direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n <Radio.Group\n defaultValue={UNPUBLISH_DRAFT_OPTIONS.KEEP}\n name=\"discard-options\"\n aria-label={formatMessage({\n id: 'content-manager.actions.unpublish.dialog.radio-label',\n defaultMessage: 'Choose an option to unpublish the document.',\n })}\n onValueChange={handleChange}\n >\n <Radio.Item checked={shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.KEEP}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.keep-draft',\n defaultMessage: 'Keep draft',\n })}\n </Radio.Item>\n <Radio.Item checked={!shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.DISCARD}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.replace-draft',\n defaultMessage: 'Replace draft',\n })}\n </Radio.Item>\n </Radio.Group>\n </Flex>\n ),\n onConfirm: async () => {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n await unpublish(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n !shouldKeepDraft\n );\n },\n }\n : undefined,\n variant: 'danger',\n position: ['panel', 'table-row'],\n };\n};\n\nUnpublishAction.type = 'unpublish';\nUnpublishAction.position = 'panel';\n\nconst DiscardAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canUpdate = useDocumentRBAC('DiscardAction', ({ canUpdate }) => canUpdate);\n const { discard, isLoading } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled: !canUpdate || activeTab === 'published' || document?.status !== 'modified',\n label: formatMessage({\n id: 'content-manager.actions.discard.label',\n defaultMessage: 'Discard changes',\n }),\n icon: <Cross />,\n position: ['panel', 'table-row'],\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.discard.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n await discard({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n },\n };\n};\n\nDiscardAction.type = 'discard';\nDiscardAction.position = 'panel';\n\nconst DEFAULT_ACTIONS = [PublishAction, UpdateAction, UnpublishAction, DiscardAction];\n\nexport { DocumentActions, DocumentActionsMenu, DocumentActionButton, DEFAULT_ACTIONS };\nexport type {\n DocumentActionDescription,\n DocumentActionPosition,\n DialogOptions,\n NotificationOptions,\n ModalOptions,\n};\n","import * as React from 'react';\n\nimport { Duration, intervalToDuration, isPast } from 'date-fns';\nimport { useIntl } from 'react-intl';\n\nconst intervals: Array<keyof Duration> = ['years', 'months', 'days', 'hours', 'minutes', 'seconds'];\n\ninterface CustomInterval {\n unit: keyof Duration;\n text: string;\n threshold: number;\n}\n\ninterface RelativeTimeProps extends React.ComponentPropsWithoutRef<'time'> {\n timestamp: Date;\n customIntervals?: CustomInterval[];\n}\n\n/**\n * Displays the relative time between a given timestamp and the current time.\n * You can display a custom message for given time intervals by passing an array of custom intervals.\n *\n * @example\n * ```jsx\n * <caption>Display \"last hour\" if the timestamp is less than an hour ago</caption>\n * <RelativeTime\n * timestamp={new Date('2021-01-01')}\n * customIntervals={[\n * { unit: 'hours', threshold: 1, text: 'last hour' },\n * ]}\n * ```\n */\nconst RelativeTime = React.forwardRef<HTMLTimeElement, RelativeTimeProps>(\n ({ timestamp, customIntervals = [], ...restProps }, forwardedRef) => {\n const { formatRelativeTime, formatDate, formatTime } = useIntl();\n\n /**\n * TODO: make this auto-update, like a clock.\n */\n const interval = intervalToDuration({\n start: timestamp,\n end: Date.now(),\n // see https://github.com/date-fns/date-fns/issues/2891 – No idea why it's all partial it returns it every time.\n }) as Required<Duration>;\n\n const unit =\n intervals.find((intervalUnit) => {\n return interval[intervalUnit] > 0 && Object.keys(interval).includes(intervalUnit);\n }) ?? 'seconds';\n\n const relativeTime = isPast(timestamp) ? -interval[unit] : interval[unit];\n\n // Display custom text if interval is less than the threshold\n const customInterval = customIntervals.find(\n (custom) => interval[custom.unit] < custom.threshold\n );\n\n const displayText = customInterval\n ? customInterval.text\n : formatRelativeTime(relativeTime, unit, { numeric: 'auto' });\n\n return (\n <time\n ref={forwardedRef}\n dateTime={timestamp.toISOString()}\n role=\"time\"\n title={`${formatDate(timestamp)} ${formatTime(timestamp)}`}\n {...restProps}\n >\n {displayText}\n </time>\n );\n }\n);\n\nexport { RelativeTime };\nexport type { CustomInterval, RelativeTimeProps };\n","import type { SanitizedAdminUser } from '@strapi/admin/strapi-admin';\n\n/**\n * Retrieves the display name of an admin panel user\n */\nconst getDisplayName = ({\n firstname,\n lastname,\n username,\n email,\n}: Partial<\n Pick<SanitizedAdminUser, 'firstname' | 'lastname' | 'username' | 'email'>\n> = {}): string => {\n if (username) {\n return username;\n }\n\n // firstname is not required if the user is created with a username\n if (firstname) {\n return `${firstname} ${lastname ?? ''}`.trim();\n }\n\n return email ?? '';\n};\n\nexport { getDisplayName };\n","const capitalise = (str: string): string => str.charAt(0).toUpperCase() + str.slice(1);\n\nexport { capitalise };\n","import { Status, StatusProps, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { capitalise } from '../../../utils/strings';\n\ninterface DocumentStatusProps extends Omit<StatusProps, 'children' | 'variant'> {\n /**\n * The status of the document (draft, published, etc.)\n * @default 'draft'\n */\n status?: string;\n}\n\n/**\n * @public\n * @description Displays the status of a document (draft, published, etc.)\n * and automatically calculates the appropriate variant for the status.\n */\nconst DocumentStatus = ({ status = 'draft', size = 'S', ...restProps }: DocumentStatusProps) => {\n const statusVariant =\n status === 'draft' ? 'secondary' : status === 'published' ? 'success' : 'alternative';\n\n const { formatMessage } = useIntl();\n\n return (\n <Status\n {...restProps}\n size={size}\n variant={statusVariant}\n role=\"status\"\n aria-labelledby=\"document-status\"\n >\n <Typography tag=\"span\" variant=\"omega\" fontWeight=\"bold\" id=\"document-status\">\n {formatMessage({\n id: `content-manager.containers.List.${status}`,\n defaultMessage: capitalise(status),\n })}\n </Typography>\n </Status>\n );\n};\n\nexport { DocumentStatus };\nexport type { DocumentStatusProps };\n","import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useForm,\n BackButton,\n useNotification,\n useStrapiApp,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n SingleSelect,\n SingleSelectOption,\n Typography,\n IconButton,\n Dialog,\n} from '@strapi/design-system';\nimport { ListPlus, Pencil, Trash, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { RelativeTime } from '../../../components/RelativeTime';\nimport {\n CREATED_AT_ATTRIBUTE_NAME,\n CREATED_BY_ATTRIBUTE_NAME,\n PUBLISHED_AT_ATTRIBUTE_NAME,\n PUBLISHED_BY_ATTRIBUTE_NAME,\n UPDATED_AT_ATTRIBUTE_NAME,\n UPDATED_BY_ATTRIBUTE_NAME,\n} from '../../../constants/attributes';\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport { getDisplayName } from '../../../utils/users';\n\nimport { DocumentActionsMenu } from './DocumentActions';\nimport { DocumentStatus } from './DocumentStatus';\n\nimport type { ContentManagerPlugin, DocumentActionComponent } from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * Header\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderProps {\n isCreating?: boolean;\n status?: 'draft' | 'published' | 'modified';\n title?: string;\n}\n\nconst Header = ({ isCreating, status, title: documentTitle = 'Untitled' }: HeaderProps) => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const params = useParams<{ collectionType: string; slug: string }>();\n\n const title = isCreating\n ? formatMessage({\n id: 'content-manager.containers.edit.title.new',\n defaultMessage: 'Create an entry',\n })\n : documentTitle;\n\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingTop={6} paddingBottom={4} gap={2}>\n <BackButton\n fallback={\n params.collectionType === SINGLE_TYPES\n ? undefined\n : `../${COLLECTION_TYPES}/${params.slug}`\n }\n />\n <Flex width=\"100%\" justifyContent=\"space-between\" gap=\"80px\" alignItems=\"flex-start\">\n <Typography variant=\"alpha\" tag=\"h1\">\n {title}\n </Typography>\n <HeaderToolbar />\n </Flex>\n {status ? (\n <Box marginTop={1}>\n <DocumentStatus status={isCloning ? 'draft' : status} />\n </Box>\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderToolbar\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n footer?: React.ReactNode;\n}\n\ninterface HeaderActionDescription {\n disabled?: boolean;\n label: string;\n icon?: React.ReactNode;\n type?: 'icon' | 'default';\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n dialog?: DialogOptions;\n options?: Array<{\n disabled?: boolean;\n label: string;\n startIcon?: React.ReactNode;\n textValue?: string;\n value: string;\n }>;\n onSelect?: (value: string) => void;\n value?: string;\n customizeContent?: (value: string) => React.ReactNode;\n}\n\n/**\n * @description Contains the document actions that have `position: header`, if there are\n * none we still render the menu because we render the information about the document there.\n */\nconst HeaderToolbar = () => {\n const { formatMessage } = useIntl();\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('HeaderToolbar', (state) => state.plugins);\n\n return (\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getHeaderActions()}\n >\n {(actions) => {\n if (actions.length > 0) {\n return <HeaderActions actions={actions} />;\n } else {\n return null;\n }\n }}\n </DescriptionComponentRenderer>\n <DescriptionComponentRenderer\n props={{\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('header')}\n >\n {(actions) => {\n const headerActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('header');\n });\n\n return (\n <DocumentActionsMenu\n actions={headerActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.header.more-actions',\n defaultMessage: 'More actions',\n })}\n >\n <Information activeTab={status} />\n </DocumentActionsMenu>\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\ninterface InformationProps {\n activeTab: 'draft' | 'published';\n}\n\nconst Information = ({ activeTab }: InformationProps) => {\n const { formatMessage } = useIntl();\n const { document, meta } = useDoc();\n\n if (!document || !document.id) {\n return null;\n }\n\n /**\n * Because in the backend separate entries are made for draft and published\n * documents, the creator fields are different for each of them. For example,\n * you could make your draft in January and then publish it for the first time\n * in Feb. This would make the createdAt value for the published entry in Feb\n * but really we want to show the document as a whole. The draft entry will also\n * never have the publishedAt values.\n *\n * So, we decipher which document to show the creator for based on the activeTab.\n */\n\n const createAndUpdateDocument =\n activeTab === 'draft'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt === null);\n\n const publishDocument =\n activeTab === 'published'\n ? document\n : meta?.availableStatus.find((status) => status.publishedAt !== null);\n\n const creator = createAndUpdateDocument?.[CREATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[CREATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const updator = createAndUpdateDocument?.[UPDATED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(createAndUpdateDocument[UPDATED_BY_ATTRIBUTE_NAME])\n : null;\n\n const information: Array<{ isDisplayed?: boolean; label: string; value: React.ReactNode }> = [\n {\n isDisplayed: !!publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-published.label',\n defaultMessage: 'Published',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-published.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime timestamp={new Date(publishDocument?.[PUBLISHED_AT_ATTRIBUTE_NAME])} />\n ),\n isAnonymous: !publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME],\n author: publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME]\n ? getDisplayName(publishDocument?.[PUBLISHED_BY_ATTRIBUTE_NAME])\n : null,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.last-draft.label',\n defaultMessage: 'Updated',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.last-draft.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[UPDATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !updator,\n author: updator,\n }\n ),\n },\n {\n isDisplayed: !!createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME],\n label: formatMessage({\n id: 'content-manager.containers.edit.information.document.label',\n defaultMessage: 'Created',\n }),\n value: formatMessage(\n {\n id: 'content-manager.containers.edit.information.document.value',\n defaultMessage: `{time}{isAnonymous, select, true {} other { by {author}}}`,\n },\n {\n time: (\n <RelativeTime\n timestamp={new Date(createAndUpdateDocument?.[CREATED_AT_ATTRIBUTE_NAME])}\n />\n ),\n isAnonymous: !creator,\n author: creator,\n }\n ),\n },\n ].filter((info) => info.isDisplayed);\n\n return (\n <Flex\n borderWidth=\"1px 0 0 0\"\n borderStyle=\"solid\"\n borderColor=\"neutral150\"\n direction=\"column\"\n marginTop={2}\n tag=\"dl\"\n padding={5}\n gap={3}\n alignItems=\"flex-start\"\n /**\n * The menu content has a padding of 4px, but we want our divider (the border top applied) to\n * be flush with the menu content. So we need to adjust the margin & width to account for the padding.\n */\n marginLeft=\"-0.4rem\"\n marginRight=\"-0.4rem\"\n width=\"calc(100% + 8px)\"\n >\n {information.map((info) => (\n <Flex gap={1} direction=\"column\" alignItems=\"flex-start\" key={info.label}>\n <Typography tag=\"dt\" variant=\"pi\" fontWeight=\"bold\">\n {info.label}\n </Typography>\n <Typography tag=\"dd\" variant=\"pi\" textColor=\"neutral600\">\n {info.value}\n </Typography>\n </Flex>\n ))}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface HeaderActionsProps {\n actions: Array<HeaderActionDescription & { id: string }>;\n}\n\nconst HeaderActions = ({ actions }: HeaderActionsProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n\n const handleClick =\n (action: HeaderActionDescription & { id: string }) => async (e: React.MouseEvent) => {\n if (!('options' in action)) {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <Flex gap={1}>\n {actions.map((action) => {\n if (action.options) {\n return (\n <SingleSelect\n key={action.id}\n size=\"S\"\n // @ts-expect-error – the DS will handle numbers, but we're not allowing the API.\n onChange={action.onSelect}\n aria-label={action.label}\n {...action}\n >\n {action.options.map(({ label, ...option }) => (\n <SingleSelectOption key={option.value} {...option}>\n {label}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n } else {\n if (action.type === 'icon') {\n return (\n <React.Fragment key={action.id}>\n <IconButton\n disabled={action.disabled}\n label={action.label}\n size=\"S\"\n onClick={handleClick(action)}\n >\n {action.icon}\n </IconButton>\n {action.dialog ? (\n <HeaderActionDialog\n {...action.dialog}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n </React.Fragment>\n );\n }\n }\n })}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * HeaderActionDialog\n * -----------------------------------------------------------------------------------------------*/\ninterface HeaderActionDialogProps {\n onClose: () => void;\n onCancel?: () => Promise<void>;\n title: string;\n content?: React.ReactNode | ((props: { onClose: () => void }) => React.ReactNode);\n isOpen: boolean;\n}\n\nconst HeaderActionDialog = ({\n onClose,\n onCancel,\n title,\n content: Content,\n isOpen,\n}: HeaderActionDialogProps) => {\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n {typeof Content === 'function' ? <Content onClose={handleClose} /> : Content}\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst ConfigureTheViewAction: DocumentActionComponent = ({ collectionType, model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n\n return {\n label: formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n }),\n icon: <ListPlus />,\n onClick: () => {\n navigate(`../${collectionType}/${model}/configurations/edit`);\n },\n position: 'header',\n };\n};\n\nConfigureTheViewAction.type = 'configure-the-view';\nConfigureTheViewAction.position = 'header';\n\nconst EditTheModelAction: DocumentActionComponent = ({ model }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n\n return {\n label: formatMessage({\n id: 'content-manager.link-to-ctb',\n defaultMessage: 'Edit the model',\n }),\n icon: <Pencil />,\n onClick: () => {\n navigate(`/plugins/content-type-builder/content-types/${model}`);\n },\n position: 'header',\n };\n};\n\nEditTheModelAction.type = 'edit-the-model';\nEditTheModelAction.position = 'header';\n\nconst DeleteAction: DocumentActionComponent = ({ documentId, model, collectionType, document }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const listViewPathMatch = useMatch(LIST_PATH);\n const canDelete = useDocumentRBAC('DeleteAction', (state) => state.canDelete);\n const { delete: deleteAction, isLoading } = useDocumentActions();\n const { toggleNotification } = useNotification();\n const setSubmitting = useForm('DeleteAction', (state) => state.setSubmitting);\n const isLocalized = document?.locale != null;\n\n return {\n disabled: !canDelete || !document,\n label: formatMessage(\n {\n id: 'content-manager.actions.delete.label',\n defaultMessage: 'Delete entry{isLocalized, select, true { (all locales)} other {}}',\n },\n { isLocalized }\n ),\n icon: <Trash />,\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.delete.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n /**\n * If we have a match, we're in the list view\n * and therefore not in a form and shouldn't be\n * trying to set the submitting value.\n */\n if (!listViewPathMatch) {\n setSubmitting(true);\n }\n try {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n console.error(\n \"You're trying to delete a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.delete.error',\n defaultMessage: 'An error occurred while trying to delete the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await deleteAction({\n documentId,\n model,\n collectionType,\n params: {\n locale: '*',\n },\n });\n\n if (!('error' in res)) {\n navigate({ pathname: `../${collectionType}/${model}` }, { replace: true });\n }\n } finally {\n if (!listViewPathMatch) {\n setSubmitting(false);\n }\n }\n },\n },\n variant: 'danger',\n position: ['header', 'table-row'],\n };\n};\n\nDeleteAction.type = 'delete';\nDeleteAction.position = ['header', 'table-row'];\n\nconst DEFAULT_HEADER_ACTIONS = [EditTheModelAction, ConfigureTheViewAction, DeleteAction];\n\nexport { Header, DEFAULT_HEADER_ACTIONS };\nexport type { HeaderProps, HeaderActionDescription };\n","import * as React from 'react';\n\nimport {\n useQueryParams,\n useStrapiApp,\n DescriptionComponentRenderer,\n} from '@strapi/admin/strapi-admin';\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useMatch } from 'react-router-dom';\n\nimport { InjectionZone } from '../../../components/InjectionZone';\nimport { useDoc } from '../../../hooks/useDocument';\nimport { CLONE_PATH } from '../../../router';\n\nimport { DocumentActions } from './DocumentActions';\n\nimport type {\n ContentManagerPlugin,\n DocumentActionProps,\n PanelComponent,\n PanelComponentProps,\n} from '../../../content-manager';\n\ninterface PanelDescription {\n title: string;\n content: React.ReactNode;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Panels\n * -----------------------------------------------------------------------------------------------*/\n\nconst Panels = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('Panels', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies PanelComponentProps;\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getEditViewSidePanels()}\n >\n {(panels) =>\n panels.map(({ content, id, ...description }) => (\n <Panel key={id} {...description}>\n {content}\n </Panel>\n ))\n }\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Default Action Panels (CE)\n * -----------------------------------------------------------------------------------------------*/\n\nconst ActionsPanel: PanelComponent = () => {\n const { formatMessage } = useIntl();\n\n return {\n title: formatMessage({\n id: 'content-manager.containers.edit.panels.default.title',\n defaultMessage: 'Entry',\n }),\n content: <ActionsPanelContent />,\n };\n};\n\nActionsPanel.type = 'actions';\n\nconst ActionsPanelContent = () => {\n const isCloning = useMatch(CLONE_PATH) !== null;\n const [\n {\n query: { status = 'draft' },\n },\n ] = useQueryParams<{ status: 'draft' | 'published' }>();\n const { model, id, document, meta, collectionType } = useDoc();\n const plugins = useStrapiApp('ActionsPanel', (state) => state.plugins);\n\n const props = {\n activeTab: status,\n model,\n documentId: id,\n document: isCloning ? undefined : document,\n meta: isCloning ? undefined : meta,\n collectionType,\n } satisfies DocumentActionProps;\n\n return (\n <Flex direction=\"column\" gap={2} width=\"100%\">\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('panel')}\n >\n {(actions) => <DocumentActions actions={actions} />}\n </DescriptionComponentRenderer>\n <InjectionZone area=\"editView.right-links\" slug={model} />\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Panel\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PanelProps extends Pick<PanelDescription, 'title'> {\n children: React.ReactNode;\n}\n\nconst Panel = React.forwardRef<any, PanelProps>(({ children, title }, ref) => {\n return (\n <Flex\n ref={ref}\n tag=\"aside\"\n aria-labelledby=\"additional-information\"\n background=\"neutral0\"\n borderColor=\"neutral150\"\n hasRadius\n paddingBottom={4}\n paddingLeft={4}\n paddingRight={4}\n paddingTop={4}\n shadow=\"tableShadow\"\n gap={3}\n direction=\"column\"\n justifyContent=\"stretch\"\n alignItems=\"flex-start\"\n >\n <Typography tag=\"h2\" variant=\"sigma\" textTransform=\"uppercase\" textColor=\"neutral600\">\n {title}\n </Typography>\n {children}\n </Flex>\n );\n});\n\nexport { Panels, ActionsPanel };\nexport type { PanelDescription };\n","import * as React from 'react';\n\nimport {\n useTable,\n useNotification,\n useAPIErrorHandler,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Dialog, Typography } from '@strapi/design-system';\nimport { Check, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useGetManyDraftRelationCountQuery } from '../../../../services/documents';\nimport { getTranslation } from '../../../../utils/translations';\n\nimport { Emphasis } from './Actions';\n\ninterface ConfirmBulkActionDialogProps {\n endAction: React.ReactNode;\n onToggleDialog: () => void;\n isOpen?: boolean;\n dialogBody: React.ReactNode;\n}\n\nconst ConfirmBulkActionDialog = ({\n onToggleDialog,\n isOpen = false,\n dialogBody,\n endAction,\n}: ConfirmBulkActionDialogProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Dialog.Root open={isOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n })}\n </Dialog.Header>\n <Dialog.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n {dialogBody}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button fullWidth onClick={onToggleDialog} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n {endAction}\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * BoldChunk\n * -----------------------------------------------------------------------------------------------*/\n\nconst BoldChunk = (chunks: React.ReactNode) => <Typography fontWeight=\"bold\">{chunks}</Typography>;\n\n/* -------------------------------------------------------------------------------------------------\n * ConfirmDialogPublishAll\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ConfirmDialogPublishAllProps\n extends Pick<ConfirmBulkActionDialogProps, 'isOpen' | 'onToggleDialog'> {\n isConfirmButtonLoading?: boolean;\n onConfirm: () => void;\n}\n\nconst ConfirmDialogPublishAll = ({\n isOpen,\n onToggleDialog,\n isConfirmButtonLoading = false,\n onConfirm,\n}: ConfirmDialogPublishAllProps) => {\n const { formatMessage } = useIntl();\n const selectedEntries = useTable('ConfirmDialogPublishAll', (state) => state.selectedRows);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const { model, schema } = useDoc();\n const [{ query }] = useQueryParams<{\n plugins?: {\n i18n?: {\n locale?: string;\n };\n };\n }>();\n\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n\n const {\n data: countDraftRelations = 0,\n isLoading,\n error,\n } = useGetManyDraftRelationCountQuery(\n {\n model,\n documentIds: selectedEntries.map((entry) => entry.documentId),\n locale: query?.plugins?.i18n?.locale,\n },\n {\n skip: !enableDraftRelationsCount || selectedEntries.length === 0,\n }\n );\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({ type: 'danger', message: formatAPIError(error) });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n if (error) {\n return null;\n }\n\n return (\n <ConfirmBulkActionDialog\n isOpen={isOpen && !isLoading}\n onToggleDialog={onToggleDialog}\n dialogBody={\n <>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {countDraftRelations > 0 &&\n formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n '<b>{count} {count, plural, one { relation } other { relations } } out of {entities} { entities, plural, one { entry } other { entries } } {count, plural, one { is } other { are } }</b> not published yet and might lead to unexpected behavior. ',\n },\n {\n b: BoldChunk,\n count: countDraftRelations,\n entities: selectedEntries.length,\n }\n )}\n {formatMessage({\n id: getTranslation('popUpWarning.bodyMessage.contentType.publish.all'),\n defaultMessage: 'Are you sure you want to publish these entries?',\n })}\n </Typography>\n {schema?.pluginOptions &&\n 'i18n' in schema.pluginOptions &&\n schema?.pluginOptions.i18n && (\n <Typography textColor=\"danger500\" textAlign=\"center\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.publishAdditionalInfos'),\n defaultMessage:\n 'This will publish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n )}\n </>\n }\n endAction={\n <Button\n onClick={onConfirm}\n variant=\"secondary\"\n startIcon={<Check />}\n loading={isConfirmButtonLoading}\n >\n {formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n })}\n </Button>\n }\n />\n );\n};\n\nexport { ConfirmDialogPublishAll, ConfirmBulkActionDialog };\nexport type { ConfirmDialogPublishAllProps, ConfirmBulkActionDialogProps };\n","import * as React from 'react';\n\nimport {\n FormErrors,\n getYupValidationErrors,\n Table,\n useQueryParams,\n useTable,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Flex,\n IconButton,\n Loader,\n Modal,\n Tooltip,\n Typography,\n TypographyComponent,\n RawTable,\n Tr,\n Td,\n Tbody,\n} from '@strapi/design-system';\nimport { ArrowsCounterClockwise, CheckCircle, CrossCircle, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link, useLocation } from 'react-router-dom';\nimport { styled } from 'styled-components';\nimport { ValidationError } from 'yup';\n\nimport { useDocumentRBAC } from '../../../../features/DocumentRBAC';\nimport { useContentTypeSchema } from '../../../../hooks/useContentTypeSchema';\nimport { useDocumentActions } from '../../../../hooks/useDocumentActions';\nimport { useDocLayout } from '../../../../hooks/useDocumentLayout';\nimport { contentManagerApi } from '../../../../services/api';\nimport {\n useGetAllDocumentsQuery,\n usePublishManyDocumentsMutation,\n} from '../../../../services/documents';\nimport { buildValidParams } from '../../../../utils/api';\nimport { getTranslation } from '../../../../utils/translations';\nimport { createYupSchema } from '../../../../utils/validation';\nimport { DocumentStatus } from '../../../EditView/components/DocumentStatus';\n\nimport { ConfirmDialogPublishAll, ConfirmDialogPublishAllProps } from './ConfirmBulkActionDialog';\n\nimport type { BulkActionComponent } from '../../../../content-manager';\nimport type { Document } from '../../../../hooks/useDocument';\n\nconst TypographyMaxWidth = styled<TypographyComponent>(Typography)`\n max-width: 300px;\n`;\n\nconst TableComponent = styled(RawTable)`\n width: 100%;\n table-layout: fixed;\n td:first-child {\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n td:first-of-type {\n padding: ${({ theme }) => theme.spaces[4]};\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * EntryValidationText\n * -----------------------------------------------------------------------------------------------*/\n\nconst formatErrorMessages = (errors: FormErrors, parentKey: string, formatMessage: any) => {\n const messages: string[] = [];\n\n Object.entries(errors).forEach(([key, value]) => {\n const currentKey = parentKey ? `${parentKey}.${key}` : key;\n\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n if ('id' in value && 'defaultMessage' in value) {\n messages.push(\n formatMessage(\n {\n id: `${value.id}.withField`,\n defaultMessage: value.defaultMessage,\n },\n { field: currentKey }\n )\n );\n } else {\n messages.push(\n ...formatErrorMessages(\n // @ts-expect-error TODO: check why value is not compatible with FormErrors\n value,\n currentKey,\n formatMessage\n )\n );\n }\n } else {\n messages.push(\n formatMessage(\n {\n id: `${value}.withField`,\n defaultMessage: value,\n },\n { field: currentKey }\n )\n );\n }\n });\n\n return messages;\n};\n\ninterface EntryValidationTextProps {\n validationErrors?: FormErrors;\n status: string;\n}\n\nconst EntryValidationText = ({ validationErrors, status }: EntryValidationTextProps) => {\n const { formatMessage } = useIntl();\n\n if (validationErrors) {\n const validationErrorsMessages = formatErrorMessages(validationErrors, '', formatMessage).join(\n ' '\n );\n\n return (\n <Flex gap={2}>\n <CrossCircle fill=\"danger600\" />\n <Tooltip description={validationErrorsMessages}>\n <TypographyMaxWidth textColor=\"danger600\" variant=\"omega\" fontWeight=\"semiBold\" ellipsis>\n {validationErrorsMessages}\n </TypographyMaxWidth>\n </Tooltip>\n </Flex>\n );\n }\n\n if (status === 'published') {\n return (\n <Flex gap={2}>\n <CheckCircle fill=\"success600\" />\n <Typography textColor=\"success600\" fontWeight=\"bold\">\n {formatMessage({\n id: 'content-manager.bulk-publish.already-published',\n defaultMessage: 'Already Published',\n })}\n </Typography>\n </Flex>\n );\n }\n\n if (status === 'modified') {\n return (\n <Flex gap={2}>\n <ArrowsCounterClockwise fill=\"alternative600\" />\n <Typography>\n {formatMessage({\n id: 'content-manager.bulk-publish.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n </Typography>\n </Flex>\n );\n }\n\n return (\n <Flex gap={2}>\n <CheckCircle fill=\"success600\" />\n <Typography>\n {formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n </Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesTableContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SelectedEntriesTableContentProps {\n isPublishing?: boolean;\n rowsToDisplay?: TableRow[];\n entriesToPublish?: TableRow['documentId'][];\n validationErrors: Record<string, EntryValidationTextProps['validationErrors']>;\n}\n\nconst TABLE_HEADERS = [\n { name: 'id', label: 'id' },\n { name: 'name', label: 'name' },\n { name: 'status', label: 'status' },\n { name: 'publicationStatus', label: 'Publication status' },\n];\n\nconst SelectedEntriesTableContent = ({\n isPublishing,\n rowsToDisplay = [],\n entriesToPublish = [],\n validationErrors = {},\n}: SelectedEntriesTableContentProps) => {\n const { pathname } = useLocation();\n const { formatMessage } = useIntl();\n\n const {\n list: {\n settings: { mainField },\n },\n } = useDocLayout();\n\n const shouldDisplayMainField = mainField != null && mainField !== 'id';\n\n return (\n <Table.Content>\n <Table.Head>\n <Table.HeaderCheckboxCell />\n {TABLE_HEADERS.filter((head) => head.name !== 'name' || shouldDisplayMainField).map(\n (head) => (\n <Table.HeaderCell key={head.name} {...head} />\n )\n )}\n </Table.Head>\n <Table.Loading />\n <Table.Body>\n {rowsToDisplay.map((row) => (\n <Table.Row key={row.id}>\n <Table.CheckboxCell id={row.id} />\n <Table.Cell>\n <Typography>{row.id}</Typography>\n </Table.Cell>\n {shouldDisplayMainField && (\n <Table.Cell>\n <Typography>{row[mainField as keyof TableRow]}</Typography>\n </Table.Cell>\n )}\n <Table.Cell>\n <DocumentStatus status={row.status} maxWidth={'min-content'} />\n </Table.Cell>\n <Table.Cell>\n {isPublishing && entriesToPublish.includes(row.documentId) ? (\n <Flex gap={2}>\n <Typography>\n {formatMessage({\n id: 'content-manager.success.record.publishing',\n defaultMessage: 'Publishing...',\n })}\n </Typography>\n <Loader small />\n </Flex>\n ) : (\n <EntryValidationText\n validationErrors={validationErrors[row.documentId]}\n status={row.status}\n />\n )}\n </Table.Cell>\n <Table.Cell>\n <Flex>\n <IconButton\n tag={Link}\n to={{\n pathname: `${pathname}/${row.documentId}`,\n search: row.locale && `?plugins[i18n][locale]=${row.locale}`,\n }}\n state={{ from: pathname }}\n label={formatMessage({\n id: 'content-manager.bulk-publish.edit',\n defaultMessage: 'Edit',\n })}\n target=\"_blank\"\n marginLeft=\"auto\"\n variant=\"ghost\"\n >\n <Pencil width={'1.6rem'} height={'1.6rem'} />\n </IconButton>\n </Flex>\n </Table.Cell>\n </Table.Row>\n ))}\n </Table.Body>\n </Table.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusSummary\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusSummaryProps {\n count: number;\n icon: React.ReactNode;\n message: string;\n}\n\nconst PublicationStatusSummary = ({ count, icon, message }: PublicationStatusSummaryProps) => {\n return (\n <Flex justifyContent=\"space-between\" flex={1} gap={3}>\n <Flex gap={2}>\n {icon}\n <Typography>{message}</Typography>\n </Flex>\n <Typography fontWeight=\"bold\">{count}</Typography>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublicationStatusGrid\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PublicationStatusGridProps {\n entriesReadyToPublishCount: number;\n entriesModifiedCount: number;\n entriesPublishedCount: number;\n entriesWithErrorsCount: number;\n}\n\nconst PublicationStatusGrid = ({\n entriesReadyToPublishCount,\n entriesPublishedCount,\n entriesModifiedCount,\n entriesWithErrorsCount,\n}: PublicationStatusGridProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box hasRadius borderColor=\"neutral150\">\n <TableComponent colCount={2} rowCount={2}>\n <Tbody>\n <Tr>\n <Td>\n <PublicationStatusSummary\n count={entriesReadyToPublishCount}\n icon={<CheckCircle fill=\"success600\" />}\n message={formatMessage({\n id: 'app.utils.ready-to-publish',\n defaultMessage: 'Ready to publish',\n })}\n />\n </Td>\n <Td>\n <PublicationStatusSummary\n count={entriesPublishedCount}\n icon={<CheckCircle fill=\"success600\" />}\n message={formatMessage({\n id: 'app.utils.already-published',\n defaultMessage: 'Already published',\n })}\n />\n </Td>\n </Tr>\n <Tr>\n <Td>\n <PublicationStatusSummary\n count={entriesModifiedCount}\n icon={<ArrowsCounterClockwise fill=\"alternative600\" />}\n message={formatMessage({\n id: 'content-manager.bulk-publish.modified',\n defaultMessage: 'Ready to publish changes',\n })}\n />\n </Td>\n <Td>\n <PublicationStatusSummary\n count={entriesWithErrorsCount}\n icon={<CrossCircle fill=\"danger600\" />}\n message={formatMessage({\n id: 'content-manager.bulk-publish.waiting-for-action',\n defaultMessage: 'Waiting for action',\n })}\n />\n </Td>\n </Tr>\n </Tbody>\n </TableComponent>\n </Box>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectedEntriesModalContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableRow extends Document {}\n\ninterface SelectedEntriesModalContentProps {\n listViewSelectedEntries: TableRow[];\n toggleModal: ConfirmDialogPublishAllProps['onToggleDialog'];\n setListViewSelectedDocuments: (documents: TableRow[]) => void;\n model: string;\n}\n\nconst SelectedEntriesModalContent = ({\n listViewSelectedEntries,\n toggleModal,\n setListViewSelectedDocuments,\n model,\n}: SelectedEntriesModalContentProps) => {\n const { formatMessage } = useIntl();\n const { schema, components } = useContentTypeSchema(model);\n const documentIds = listViewSelectedEntries.map(({ documentId }) => documentId);\n\n // We want to keep the selected entries order same as the list view\n const [{ query }] = useQueryParams<{ sort?: string; plugins?: Record<string, any> }>();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n // Fetch the documents based on the selected entries and update the modal table\n const { data, isLoading, isFetching, refetch } = useGetAllDocumentsQuery(\n {\n model,\n params: {\n page: '1',\n pageSize: documentIds.length.toString(),\n sort: query.sort,\n filters: {\n documentId: {\n $in: documentIds,\n },\n },\n locale: query.plugins?.i18n?.locale,\n },\n },\n {\n selectFromResult: ({ data, ...restRes }) => ({ data: data?.results ?? [], ...restRes }),\n }\n );\n\n // Validate the entries based on the schema to show errors if any\n const { rows, validationErrors } = React.useMemo(() => {\n if (data.length > 0 && schema) {\n const validate = createYupSchema(\n schema.attributes,\n components,\n // Since this is the \"Publish\" action, the validation\n // schema must enforce the rules for published entities\n { status: 'published' }\n );\n const validationErrors: Record<TableRow['documentId'], FormErrors> = {};\n const rows = data.map((entry: Document) => {\n try {\n validate.validateSync(entry, { abortEarly: false });\n\n return entry;\n } catch (e) {\n if (e instanceof ValidationError) {\n validationErrors[entry.documentId] = getYupValidationErrors(e);\n }\n\n return entry;\n }\n });\n\n return { rows, validationErrors };\n }\n\n return {\n rows: [],\n validationErrors: {},\n };\n }, [components, data, schema]);\n\n const [isDialogOpen, setIsDialogOpen] = React.useState(false);\n\n const { publishMany: bulkPublishAction, isLoading: isPublishing } = useDocumentActions();\n const [, { isLoading: isSubmittingForm }] = usePublishManyDocumentsMutation();\n\n const selectedRows = useTable('publishAction', (state) => state.selectedRows);\n\n // Filter selected entries from the updated modal table rows\n const selectedEntries = rows.filter((entry) =>\n selectedRows.some((selectedEntry) => selectedEntry.documentId === entry.documentId)\n );\n\n const entriesToPublish = selectedEntries\n .filter((entry) => !validationErrors[entry.documentId])\n .map((entry) => entry.documentId);\n\n const selectedEntriesWithErrorsCount = selectedEntries.filter(\n ({ documentId }) => validationErrors[documentId]\n ).length;\n const selectedEntriesPublishedCount = selectedEntries.filter(\n ({ status }) => status === 'published'\n ).length;\n const selectedEntriesModifiedCount = selectedEntries.filter(\n ({ status, documentId }) => status === 'modified' && !validationErrors[documentId]\n ).length;\n const selectedEntriesWithNoErrorsCount =\n selectedEntries.length - selectedEntriesWithErrorsCount - selectedEntriesPublishedCount;\n\n const toggleDialog = () => setIsDialogOpen((prev) => !prev);\n\n const handleConfirmBulkPublish = async () => {\n toggleDialog();\n\n const res = await bulkPublishAction({ model: model, documentIds: entriesToPublish, params });\n if (!('error' in res)) {\n const unpublishedEntries = rows.filter((row) => {\n return !entriesToPublish.includes(row.documentId);\n });\n // Keep selection of the entries in list view that were not published\n setListViewSelectedDocuments(unpublishedEntries);\n }\n };\n\n return (\n <>\n <Modal.Body>\n <PublicationStatusGrid\n entriesReadyToPublishCount={\n selectedEntriesWithNoErrorsCount - selectedEntriesModifiedCount\n }\n entriesPublishedCount={selectedEntriesPublishedCount}\n entriesModifiedCount={selectedEntriesModifiedCount}\n entriesWithErrorsCount={selectedEntriesWithErrorsCount}\n />\n <Box marginTop={7}>\n <SelectedEntriesTableContent\n isPublishing={isSubmittingForm}\n rowsToDisplay={rows}\n entriesToPublish={entriesToPublish}\n validationErrors={validationErrors}\n />\n </Box>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={toggleModal} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <Flex gap={2}>\n <Button onClick={refetch} variant=\"tertiary\" loading={isFetching}>\n {formatMessage({ id: 'app.utils.refresh', defaultMessage: 'Refresh' })}\n </Button>\n <Button\n onClick={toggleDialog}\n disabled={\n selectedEntries.length === 0 ||\n selectedEntries.length === selectedEntriesWithErrorsCount ||\n selectedEntriesPublishedCount === selectedEntries.length ||\n isLoading\n }\n loading={isPublishing || isSubmittingForm}\n >\n {formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n <ConfirmDialogPublishAll\n isOpen={isDialogOpen}\n onToggleDialog={toggleDialog}\n isConfirmButtonLoading={isPublishing || isSubmittingForm}\n onConfirm={handleConfirmBulkPublish}\n />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PublishAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n // Publish button visibility\n const hasPublishPermission = useDocumentRBAC('unpublishAction', (state) => state.canPublish);\n const showPublishButton =\n hasPublishPermission && documents.some(({ status }) => status !== 'published');\n\n const setListViewSelectedDocuments = useTable('publishAction', (state) => state.selectRow);\n\n const refetchList = () => {\n contentManagerApi.util.invalidateTags([{ type: 'Document', id: `${model}_LIST` }]);\n };\n\n if (!showPublishButton) return null;\n\n return {\n actionType: 'publish',\n variant: 'tertiary',\n label: formatMessage({ id: 'app.utils.publish', defaultMessage: 'Publish' }),\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: getTranslation('containers.ListPage.selectedEntriesModal.title'),\n defaultMessage: 'Publish entries',\n }),\n content: ({ onClose }) => {\n return (\n <Table.Root rows={documents} defaultSelectedRows={documents} headers={TABLE_HEADERS}>\n <SelectedEntriesModalContent\n listViewSelectedEntries={documents}\n toggleModal={() => {\n onClose();\n refetchList();\n }}\n setListViewSelectedDocuments={setListViewSelectedDocuments}\n model={model}\n />\n </Table.Root>\n );\n },\n onClose: () => {\n refetchList();\n },\n },\n };\n};\n\nexport { PublishAction, SelectedEntriesModalContent };\n","import * as React from 'react';\n\nimport {\n useStrapiApp,\n DescriptionComponentRenderer,\n useTable,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Box, ButtonProps, Flex, Typography } from '@strapi/design-system';\nimport { WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useDocumentRBAC } from '../../../../features/DocumentRBAC';\nimport { useDoc } from '../../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../../hooks/useDocumentActions';\nimport { buildValidParams } from '../../../../utils/api';\nimport { getTranslation } from '../../../../utils/translations';\nimport {\n DialogOptions,\n DocumentActionButton,\n ModalOptions,\n NotificationOptions,\n} from '../../../EditView/components/DocumentActions';\n\nimport { PublishAction } from './PublishAction';\n\nimport type { BulkActionComponent, ContentManagerPlugin } from '../../../../content-manager';\n\ninterface BulkActionDescription {\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n disabled?: boolean;\n icon?: React.ReactNode;\n label: string;\n onClick?: (event: React.SyntheticEvent) => void;\n /**\n * @default 'default'\n */\n type?: 'icon' | 'default';\n /**\n * @default 'secondary'\n */\n variant?: ButtonProps['variant'];\n}\n\n/* -------------------------------------------------------------------------------------------------\n * BulkActionsRenderer\n * -----------------------------------------------------------------------------------------------*/\n\nconst BulkActionsRenderer = () => {\n const plugins = useStrapiApp('BulkActionsRenderer', (state) => state.plugins);\n\n const { model, collectionType } = useDoc();\n const { selectedRows } = useTable('BulkActionsRenderer', (state) => state);\n\n return (\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={{\n model,\n collectionType,\n documents: selectedRows,\n }}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getBulkActions()}\n >\n {(actions) => actions.map((action) => <DocumentActionButton key={action.id} {...action} />)}\n </DescriptionComponentRenderer>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DefaultBulkActions\n * -----------------------------------------------------------------------------------------------*/\n\nconst DeleteAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n const { schema: contentType } = useDoc();\n const selectRow = useTable('DeleteAction', (state) => state.selectRow);\n const hasI18nEnabled = Boolean(contentType?.pluginOptions?.i18n);\n const [{ query }] = useQueryParams<{ plugins?: { i18n?: { locale?: string } } }>();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const hasDeletePermission = useDocumentRBAC('deleteAction', (state) => state.canDelete);\n const { deleteMany: bulkDeleteAction, isLoading } = useDocumentActions();\n const documentIds = documents.map(({ documentId }) => documentId);\n\n const handleConfirmBulkDelete = async () => {\n const res = await bulkDeleteAction({\n documentIds,\n model,\n params,\n });\n if (!('error' in res)) {\n selectRow([]);\n }\n };\n\n if (!hasDeletePermission) return null;\n\n return {\n variant: 'danger-light',\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n loading: isLoading,\n content: (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {formatMessage({\n id: 'popUpWarning.bodyMessage.contentType.delete.all',\n defaultMessage: 'Are you sure you want to delete these entries?',\n })}\n </Typography>\n {hasI18nEnabled && (\n <Box textAlign=\"center\" padding={3}>\n <Typography textColor=\"danger500\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.deleteAdditionalInfos'),\n defaultMessage:\n 'This will delete the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n </Box>\n )}\n </Flex>\n ),\n onConfirm: handleConfirmBulkDelete,\n },\n };\n};\n\nDeleteAction.type = 'delete';\n\nconst UnpublishAction: BulkActionComponent = ({ documents, model }) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const selectRow = useTable('UnpublishAction', (state) => state.selectRow);\n const hasPublishPermission = useDocumentRBAC('unpublishAction', (state) => state.canPublish);\n const hasI18nEnabled = Boolean(schema?.pluginOptions?.i18n);\n const hasDraftAndPublishEnabled = Boolean(schema?.options?.draftAndPublish);\n const { unpublishMany: bulkUnpublishAction, isLoading } = useDocumentActions();\n const documentIds = documents.map(({ documentId }) => documentId);\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const handleConfirmBulkUnpublish = async () => {\n const data = await bulkUnpublishAction({ documentIds, model, params });\n if (!('error' in data)) {\n selectRow([]);\n }\n };\n\n const showUnpublishButton =\n hasDraftAndPublishEnabled &&\n hasPublishPermission &&\n documents.some((entry) => entry.status === 'published' || entry.status === 'modified');\n\n if (!showUnpublishButton) return null;\n\n return {\n variant: 'tertiary',\n label: formatMessage({ id: 'app.utils.unpublish', defaultMessage: 'Unpublish' }),\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n loading: isLoading,\n content: (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={2}>\n <Flex justifyContent=\"center\">\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n </Flex>\n <Typography id=\"confirm-description\" textAlign=\"center\">\n {formatMessage({\n id: 'popUpWarning.bodyMessage.contentType.unpublish.all',\n defaultMessage: 'Are you sure you want to unpublish these entries?',\n })}\n </Typography>\n {hasI18nEnabled && (\n <Box textAlign=\"center\" padding={3}>\n <Typography textColor=\"danger500\">\n {formatMessage(\n {\n id: getTranslation('Settings.list.actions.unpublishAdditionalInfos'),\n defaultMessage:\n 'This will unpublish the active locale versions <em>(from Internationalization)</em>',\n },\n {\n em: Emphasis,\n }\n )}\n </Typography>\n </Box>\n )}\n </Flex>\n ),\n confirmButton: formatMessage({\n id: 'app.utils.unpublish',\n defaultMessage: 'Unpublish',\n }),\n onConfirm: handleConfirmBulkUnpublish,\n },\n };\n};\n\nUnpublishAction.type = 'unpublish';\n\nconst Emphasis = (chunks: React.ReactNode) => (\n <Typography fontWeight=\"semiBold\" textColor=\"danger500\">\n {chunks}\n </Typography>\n);\n\nconst DEFAULT_BULK_ACTIONS: BulkActionComponent[] = [PublishAction, UnpublishAction, DeleteAction];\n\nexport { DEFAULT_BULK_ACTIONS, BulkActionsRenderer, Emphasis };\nexport type { BulkActionDescription };\n","import { Box, Flex, Typography } from '@strapi/design-system';\nimport { ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTranslation } from '../../../utils/translations';\n\nimport type { ProhibitedCloningField } from '../../../../../shared/contracts/collection-types';\n\ntype Reason = ProhibitedCloningField[1];\n\ninterface AutoCloneFailureModalBodyProps {\n prohibitedFields: ProhibitedCloningField[];\n}\n\nconst AutoCloneFailureModalBody = ({ prohibitedFields }: AutoCloneFailureModalBodyProps) => {\n const { formatMessage } = useIntl();\n\n const getDefaultErrorMessage = (reason: Reason) => {\n switch (reason) {\n case 'relation':\n return 'Duplicating the relation could remove it from the original entry.';\n case 'unique':\n return 'Identical values in a unique field are not allowed';\n default:\n return reason;\n }\n };\n\n return (\n <>\n <Typography variant=\"beta\">\n {formatMessage({\n id: getTranslation('containers.list.autoCloneModal.title'),\n defaultMessage: \"This entry can't be duplicated directly.\",\n })}\n </Typography>\n <Box marginTop={2}>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('containers.list.autoCloneModal.description'),\n defaultMessage:\n \"A new entry will be created with the same content, but you'll have to change the following fields to save it.\",\n })}\n </Typography>\n </Box>\n <Flex marginTop={6} gap={2} direction=\"column\" alignItems=\"stretch\">\n {prohibitedFields.map(([fieldPath, reason]) => (\n <Flex\n direction=\"column\"\n gap={2}\n alignItems=\"flex-start\"\n borderColor=\"neutral200\"\n hasRadius\n padding={6}\n key={fieldPath.join()}\n >\n <Flex direction=\"row\" tag=\"ol\">\n {fieldPath.map((pathSegment, index) => (\n <Typography fontWeight=\"semiBold\" tag=\"li\" key={index}>\n {pathSegment}\n {index !== fieldPath.length - 1 && (\n <ChevronRight\n fill=\"neutral500\"\n height=\"0.8rem\"\n width=\"0.8rem\"\n style={{ margin: '0 0.8rem' }}\n />\n )}\n </Typography>\n ))}\n </Flex>\n <Typography tag=\"p\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation(`containers.list.autoCloneModal.error.${reason}`),\n defaultMessage: getDefaultErrorMessage(reason),\n })}\n </Typography>\n </Flex>\n ))}\n </Flex>\n </>\n );\n};\n\nexport { AutoCloneFailureModalBody };\nexport type { AutoCloneFailureModalBodyProps };\n","import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useNotification,\n useStrapiApp,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, LinkButton, Modal } from '@strapi/design-system';\nimport { Duplicate, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { Document, useDoc } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { isBaseQueryError } from '../../../utils/api';\nimport { DocumentActionsMenu } from '../../EditView/components/DocumentActions';\n\nimport { AutoCloneFailureModalBody } from './AutoCloneFailureModal';\n\nimport type { ProhibitedCloningField } from '../../../../../shared/contracts/collection-types';\nimport type {\n ContentManagerPlugin,\n DocumentActionComponent,\n DocumentActionProps,\n} from '../../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * TableActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface TableActionsProps {\n document: Document;\n}\n\nconst TableActions = ({ document }: TableActionsProps) => {\n const { formatMessage } = useIntl();\n const { model, collectionType } = useDoc();\n const plugins = useStrapiApp('TableActions', (state) => state.plugins);\n\n const props: DocumentActionProps = {\n activeTab: null,\n model,\n documentId: document.documentId,\n collectionType,\n document,\n };\n\n return (\n <DescriptionComponentRenderer\n props={props}\n descriptions={(plugins['content-manager'].apis as ContentManagerPlugin['config']['apis'])\n .getDocumentActions('table-row')\n // We explicitly remove the PublishAction from description so we never render it and we don't make unnecessary requests.\n .filter((action) => action.name !== 'PublishAction')}\n >\n {(actions) => {\n const tableRowActions = actions.filter((action) => {\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('table-row');\n });\n\n return (\n <DocumentActionsMenu\n actions={tableRowActions}\n label={formatMessage({\n id: 'content-manager.containers.list.table.row-actions',\n defaultMessage: 'Row actions',\n })}\n variant=\"ghost\"\n />\n );\n }}\n </DescriptionComponentRenderer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * TableActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditAction: DocumentActionComponent = ({ documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canRead } = useDocumentRBAC('EditAction', ({ canRead }) => ({ canRead }));\n const { toggleNotification } = useNotification();\n const [{ query }] = useQueryParams<{ plugins?: object }>();\n\n return {\n disabled: !canRead,\n icon: <StyledPencil />,\n label: formatMessage({\n id: 'content-manager.actions.edit.label',\n defaultMessage: 'Edit',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to edit a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.edit.error',\n defaultMessage: 'An error occurred while trying to edit the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n navigate({\n pathname: documentId,\n search: stringify({\n plugins: query.plugins,\n }),\n });\n },\n };\n};\n\nEditAction.type = 'edit';\nEditAction.position = 'table-row';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledPencil = styled(Pencil)`\n path {\n fill: currentColor;\n }\n`;\n\nconst CloneAction: DocumentActionComponent = ({ model, documentId }) => {\n const navigate = useNavigate();\n const { formatMessage } = useIntl();\n const { canCreate } = useDocumentRBAC('CloneAction', ({ canCreate }) => ({ canCreate }));\n const { toggleNotification } = useNotification();\n const { autoClone } = useDocumentActions();\n const [prohibitedFields, setProhibitedFields] = React.useState<ProhibitedCloningField[]>([]);\n\n return {\n disabled: !canCreate,\n icon: <StyledDuplicate />,\n label: formatMessage({\n id: 'content-manager.actions.clone.label',\n defaultMessage: 'Duplicate',\n }),\n position: 'table-row',\n onClick: async () => {\n if (!documentId) {\n console.error(\n \"You're trying to clone a document in the table without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.clone.error',\n defaultMessage: 'An error occurred while trying to clone the document.',\n }),\n type: 'danger',\n });\n\n return;\n }\n\n const res = await autoClone({ model, sourceId: documentId });\n\n if ('data' in res) {\n navigate(res.data.documentId);\n\n /**\n * We return true because we don't need to show a modal anymore.\n */\n return true;\n }\n\n if (\n isBaseQueryError(res.error) &&\n res.error.details &&\n typeof res.error.details === 'object' &&\n 'prohibitedFields' in res.error.details &&\n Array.isArray(res.error.details.prohibitedFields)\n ) {\n const prohibitedFields = res.error.details.prohibitedFields as ProhibitedCloningField[];\n\n setProhibitedFields(prohibitedFields);\n }\n },\n dialog: {\n type: 'modal',\n title: formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.header',\n defaultMessage: 'Duplicate',\n }),\n content: <AutoCloneFailureModalBody prohibitedFields={prohibitedFields} />,\n footer: ({ onClose }) => {\n return (\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n <LinkButton\n tag={NavLink}\n to={{\n pathname: `clone/${documentId}`,\n }}\n >\n {formatMessage({\n id: 'content-manager.containers.list.autoCloneModal.create',\n defaultMessage: 'Create',\n })}\n </LinkButton>\n </Modal.Footer>\n );\n },\n },\n };\n};\n\nCloneAction.type = 'clone';\nCloneAction.position = 'table-row';\n\n/**\n * Because the icon system is completely broken, we have to do\n * this to remove the fill from the cog.\n */\nconst StyledDuplicate = styled(Duplicate)`\n path {\n fill: currentColor;\n }\n`;\n\nconst DEFAULT_TABLE_ROW_ACTIONS = [EditAction, CloneAction];\n\nexport { TableActions, DEFAULT_TABLE_ROW_ACTIONS };\n","/* eslint-disable check-file/filename-naming-convention */\nimport { INJECTION_ZONES } from './components/InjectionZone';\nimport { PLUGIN_ID } from './constants/plugin';\nimport {\n DEFAULT_ACTIONS,\n type DocumentActionPosition,\n type DocumentActionDescription,\n} from './pages/EditView/components/DocumentActions';\nimport {\n DEFAULT_HEADER_ACTIONS,\n type HeaderActionDescription,\n} from './pages/EditView/components/Header';\nimport { ActionsPanel, type PanelDescription } from './pages/EditView/components/Panels';\nimport {\n DEFAULT_BULK_ACTIONS,\n type BulkActionDescription,\n} from './pages/ListView/components/BulkActions/Actions';\nimport { DEFAULT_TABLE_ROW_ACTIONS } from './pages/ListView/components/TableActions';\n\nimport type { Document } from './hooks/useDocument';\nimport type { DocumentMetadata } from '../../shared/contracts/collection-types';\nimport type { DescriptionComponent, PluginConfig } from '@strapi/admin/strapi-admin';\n\n/* -------------------------------------------------------------------------------------------------\n * Configuration Types\n * -----------------------------------------------------------------------------------------------*/\n\ntype DescriptionReducer<Config extends object> = (prev: Config[]) => Config[];\n\ninterface EditViewContext {\n /**\n * This will ONLY be null, if the content-type\n * does not have draft & published enabled.\n */\n activeTab: 'draft' | 'published' | null;\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n document?: Document;\n /**\n * this will be undefined if someone is creating an entry.\n */\n documentId?: string;\n /**\n * this will be undefined if someone is creating an entry.\n */\n meta?: DocumentMetadata;\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface ListViewContext {\n /**\n * Will be either 'single-types' | 'collection-types'\n */\n collectionType: string;\n /**\n * The current selected documents in the table\n */\n documents: Document[];\n /**\n * The current content-type's model.\n */\n model: string;\n}\n\ninterface PanelComponentProps extends EditViewContext {}\n\ninterface PanelComponent extends DescriptionComponent<PanelComponentProps, PanelDescription> {\n /**\n * The defaults are added by Strapi only, if you're providing your own component,\n * you do not need to provide this.\n */\n type?: 'actions' | 'releases';\n}\n\ninterface DocumentActionProps extends EditViewContext {}\n\ninterface DocumentActionComponent\n extends DescriptionComponent<DocumentActionProps, DocumentActionDescription> {\n type?:\n | 'clone'\n | 'configure-the-view'\n | 'delete'\n | 'discard'\n | 'edit'\n | 'edit-the-model'\n | 'history'\n | 'publish'\n | 'unpublish'\n | 'update';\n position?: DocumentActionDescription['position'];\n}\n\ninterface HeaderActionProps extends EditViewContext {}\n\ninterface HeaderActionComponent\n extends DescriptionComponent<HeaderActionProps, HeaderActionDescription> {}\n\ninterface BulkActionComponentProps extends ListViewContext {}\n\ninterface BulkActionComponent\n extends DescriptionComponent<BulkActionComponentProps, BulkActionDescription> {\n type?: 'delete' | 'publish' | 'unpublish';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * ContentManager plugin\n * -----------------------------------------------------------------------------------------------*/\n\nclass ContentManagerPlugin {\n /**\n * The following properties are the stored ones provided by any plugins registering with\n * the content-manager. The function calls however, need to be called at runtime in the\n * application, so instead we collate them and run them later with the complete list incl.\n * ones already registered & the context of the view.\n */\n bulkActions: BulkActionComponent[] = [...DEFAULT_BULK_ACTIONS];\n documentActions: DocumentActionComponent[] = [\n ...DEFAULT_ACTIONS,\n ...DEFAULT_TABLE_ROW_ACTIONS,\n ...DEFAULT_HEADER_ACTIONS,\n ];\n editViewSidePanels: PanelComponent[] = [ActionsPanel];\n headerActions: HeaderActionComponent[] = [];\n\n constructor() {}\n\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent>): void;\n addEditViewSidePanel(panels: PanelComponent[]): void;\n addEditViewSidePanel(panels: DescriptionReducer<PanelComponent> | PanelComponent[]) {\n if (Array.isArray(panels)) {\n this.editViewSidePanels = [...this.editViewSidePanels, ...panels];\n } else if (typeof panels === 'function') {\n this.editViewSidePanels = panels(this.editViewSidePanels);\n } else {\n throw new Error(\n `Expected the \\`panels\\` passed to \\`addEditViewSidePanel\\` to be an array or a function, but received ${getPrintableType(\n panels\n )}`\n );\n }\n }\n\n addDocumentAction(actions: DescriptionReducer<DocumentActionComponent>): void;\n addDocumentAction(actions: DocumentActionComponent[]): void;\n addDocumentAction(\n actions: DescriptionReducer<DocumentActionComponent> | DocumentActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.documentActions = [...this.documentActions, ...actions];\n } else if (typeof actions === 'function') {\n this.documentActions = actions(this.documentActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addDocumentHeaderAction(actions: DescriptionReducer<HeaderActionComponent>): void;\n addDocumentHeaderAction(actions: HeaderActionComponent[]): void;\n addDocumentHeaderAction(\n actions: DescriptionReducer<HeaderActionComponent> | HeaderActionComponent[]\n ) {\n if (Array.isArray(actions)) {\n this.headerActions = [...this.headerActions, ...actions];\n } else if (typeof actions === 'function') {\n this.headerActions = actions(this.headerActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addDocumentHeaderAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n addBulkAction(actions: DescriptionReducer<BulkActionComponent>): void;\n addBulkAction(actions: BulkActionComponent[]): void;\n addBulkAction(actions: DescriptionReducer<BulkActionComponent> | BulkActionComponent[]) {\n if (Array.isArray(actions)) {\n this.bulkActions = [...this.bulkActions, ...actions];\n } else if (typeof actions === 'function') {\n this.bulkActions = actions(this.bulkActions);\n } else {\n throw new Error(\n `Expected the \\`actions\\` passed to \\`addBulkAction\\` to be an array or a function, but received ${getPrintableType(\n actions\n )}`\n );\n }\n }\n\n get config() {\n return {\n id: PLUGIN_ID,\n name: 'Content Manager',\n injectionZones: INJECTION_ZONES,\n apis: {\n addBulkAction: this.addBulkAction.bind(this),\n addDocumentAction: this.addDocumentAction.bind(this),\n addDocumentHeaderAction: this.addDocumentHeaderAction.bind(this),\n addEditViewSidePanel: this.addEditViewSidePanel.bind(this),\n getBulkActions: () => this.bulkActions,\n getDocumentActions: (position?: DocumentActionPosition) => {\n /**\n * When possible, pre-filter the actions by the components static position property.\n * This avoids rendering the actions in multiple places where they weren't displayed,\n * which wasn't visible but created issues with useEffect for instance.\n * The response should still be filtered by the position, as the static property is new\n * and not mandatory to avoid a breaking change.\n */\n if (position) {\n return this.documentActions.filter((action) => {\n return action.position == undefined || [action.position].flat().includes(position);\n });\n }\n\n return this.documentActions;\n },\n getEditViewSidePanels: () => this.editViewSidePanels,\n getHeaderActions: () => this.headerActions,\n },\n } satisfies PluginConfig;\n }\n}\n\n/* -------------------------------------------------------------------------------------------------\n * getPrintableType\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @internal\n * @description Gets the human-friendly printable type name for the given value, for instance it will yield\n * `array` instead of `object`, as the native `typeof` operator would do.\n */\nconst getPrintableType = (value: unknown): string => {\n const nativeType = typeof value;\n\n if (nativeType === 'object') {\n if (value === null) return 'null';\n if (Array.isArray(value)) return 'array';\n if (value instanceof Object && value.constructor.name !== 'Object') {\n return value.constructor.name;\n }\n }\n\n return nativeType;\n};\n\nexport { ContentManagerPlugin };\nexport type {\n EditViewContext,\n ListViewContext,\n BulkActionComponent,\n BulkActionComponentProps,\n BulkActionDescription,\n DescriptionComponent,\n DescriptionReducer,\n PanelComponentProps,\n PanelComponent,\n PanelDescription,\n DocumentActionComponent,\n DocumentActionDescription,\n DocumentActionProps,\n HeaderActionComponent,\n HeaderActionDescription,\n HeaderActionProps,\n};\n","import { useQueryParams, useTracking } from '@strapi/admin/strapi-admin';\nimport { ClockCounterClockwise } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useLocation } from 'react-router-dom';\n\nimport type { DocumentActionComponent } from '../../content-manager';\n\nconst HistoryAction: DocumentActionComponent = ({ model, document }) => {\n const { formatMessage } = useIntl();\n const [{ query }] = useQueryParams<{ plugins?: Record<string, unknown> }>();\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const pluginsQueryParams = stringify({ plugins: query.plugins }, { encode: false });\n\n if (!window.strapi.features.isEnabled('cms-content-history')) {\n return null;\n }\n\n const handleOnClick = () => {\n const destination = { pathname: 'history', search: pluginsQueryParams };\n trackUsage('willNavigate', {\n from: pathname,\n to: `${pathname}/${destination.pathname}`,\n });\n navigate(destination);\n };\n\n return {\n icon: <ClockCounterClockwise />,\n label: formatMessage({\n id: 'content-manager.history.document-action',\n defaultMessage: 'Content History',\n }),\n onClick: handleOnClick,\n disabled:\n /**\n * The user is creating a new document.\n * It hasn't been saved yet, so there's no history to go to\n */\n !document ||\n /**\n * The document has been created but the current dimension has never been saved.\n * For example, the user is creating a new locale in an existing document,\n * so there's no history for the document in that locale\n */\n !document.id ||\n /**\n * History is only available for content types created by the user.\n * These have the `api::` prefix, as opposed to the ones created by Strapi or plugins,\n * which start with `admin::` or `plugin::`\n */\n !model.startsWith('api::'),\n position: 'header',\n };\n};\n\nHistoryAction.type = 'history';\nHistoryAction.position = 'header';\n\nexport { HistoryAction };\n","/* eslint-disable check-file/no-index */\n\nimport { type ContentManagerPlugin } from '../content-manager';\n\nimport { HistoryAction } from './components/HistoryAction';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst historyAdmin: Partial<Plugin.Config.AdminInput> = {\n bootstrap(app: StrapiApp) {\n const { addDocumentAction } = app.getPlugin('content-manager').apis as {\n addDocumentAction: ContentManagerPlugin['addDocumentAction'];\n };\n\n /**\n * Register the document action here using the public API, and not by setting the action in the\n * Content Manager directly, because this API lets us control the order of the actions array.\n * We want history to be the last non-delete action in the array.\n */\n addDocumentAction((actions) => {\n const indexOfDeleteAction = actions.findIndex((action) => action.type === 'delete');\n actions.splice(indexOfDeleteAction, 0, HistoryAction);\n return actions;\n });\n },\n};\n\nexport { historyAdmin };\n","import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\n\nimport { GetInitData } from '../../../shared/contracts/init';\n\nimport type { ContentManagerLink } from '../hooks/useContentManagerInitData';\n\ninterface AppState {\n collectionTypeLinks: ContentManagerLink[];\n components: GetInitData.Response['data']['components'];\n fieldSizes: GetInitData.Response['data']['fieldSizes'];\n models: GetInitData.Response['data']['contentTypes'];\n singleTypeLinks: ContentManagerLink[];\n isLoading: boolean;\n}\n\nconst initialState: AppState = {\n collectionTypeLinks: [],\n components: [],\n fieldSizes: {},\n models: [],\n singleTypeLinks: [],\n isLoading: true,\n};\n\nconst appSlice = createSlice({\n name: 'app',\n initialState,\n reducers: {\n setInitialData(\n state,\n action: PayloadAction<{\n authorizedCollectionTypeLinks: AppState['collectionTypeLinks'];\n authorizedSingleTypeLinks: AppState['singleTypeLinks'];\n components: AppState['components'];\n contentTypeSchemas: AppState['models'];\n fieldSizes: AppState['fieldSizes'];\n }>\n ) {\n const {\n authorizedCollectionTypeLinks,\n authorizedSingleTypeLinks,\n components,\n contentTypeSchemas,\n fieldSizes,\n } = action.payload;\n state.collectionTypeLinks = authorizedCollectionTypeLinks.filter(\n ({ isDisplayed }) => isDisplayed\n );\n state.singleTypeLinks = authorizedSingleTypeLinks.filter(({ isDisplayed }) => isDisplayed);\n state.components = components;\n state.models = contentTypeSchemas;\n state.fieldSizes = fieldSizes;\n state.isLoading = false;\n },\n },\n});\n\nconst { actions, reducer } = appSlice;\nconst { setInitialData } = actions;\n\nexport { reducer, setInitialData };\nexport type { AppState };\n","import { combineReducers } from '@reduxjs/toolkit';\n\nimport { reducer as appReducer } from './app';\n\nconst reducer = combineReducers({\n app: appReducer,\n});\n\ntype State = ReturnType<typeof reducer>;\n\nexport { reducer };\nexport type { State };\n","import { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { contentManagerApi } from '../../services/api';\n\nconst previewApi = contentManagerApi.injectEndpoints({\n endpoints: (builder) => ({\n getPreviewUrl: builder.query<GetPreviewUrl.Response, GetPreviewUrl.Request>({\n query({ query, params }) {\n return {\n url: `/content-manager/preview/url/${params.contentType}`,\n method: 'GET',\n config: {\n params: query,\n },\n };\n },\n }),\n }),\n});\n\nconst { useGetPreviewUrlQuery } = previewApi;\n\nexport { useGetPreviewUrlQuery };\n","import * as React from 'react';\n\nimport { useQueryParams, useTracking, useForm } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Tooltip, type TooltipProps } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useLocation } from 'react-router-dom';\n\nimport { useGetPreviewUrlQuery } from '../services/preview';\n\nimport type { PanelComponent } from '@strapi/content-manager/strapi-admin';\nimport type { UID } from '@strapi/types';\n\ninterface ConditionalTooltipProps {\n isShown: boolean;\n label: TooltipProps['label'];\n children: React.ReactNode;\n}\n\nconst ConditionalTooltip = ({ isShown, label, children }: ConditionalTooltipProps) => {\n if (isShown) {\n return <Tooltip label={label}>{children}</Tooltip>;\n }\n\n return children;\n};\n\nconst PreviewSidePanel: PanelComponent = ({ model, documentId, document }) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const isModified = useForm('PreviewSidePanel', (state) => state.modified);\n\n /**\n * The preview URL isn't used in this component, we just fetch it to know if preview is enabled\n * for the content type. If it's not, the panel is not displayed. If it is, we display a link to\n * /preview, and the URL will already be loaded in the RTK query cache.\n */\n const { data, error } = useGetPreviewUrlQuery({\n params: {\n contentType: model as UID.ContentType,\n },\n query: {\n documentId,\n locale: document?.locale,\n status: document?.status,\n },\n });\n\n if (!data?.data?.url || error) {\n return null;\n }\n\n const trackNavigation = () => {\n // Append /preview to the current URL\n const destinationPathname = pathname.replace(/\\/$/, '') + '/preview';\n trackUsage('willNavigate', { from: pathname, to: destinationPathname });\n };\n\n return {\n title: formatMessage({ id: 'content-manager.preview.panel.title', defaultMessage: 'Preview' }),\n content: (\n <ConditionalTooltip\n label={formatMessage({\n id: 'content-manager.preview.panel.button-disabled-tooltip',\n defaultMessage: 'Please save to open the preview',\n })}\n isShown={isModified}\n >\n <Box cursor=\"not-allowed\" width=\"100%\">\n <Button\n variant=\"tertiary\"\n tag={Link}\n to={{ pathname: 'preview', search: stringify(query, { encode: false }) }}\n onClick={trackNavigation}\n width=\"100%\"\n disabled={isModified}\n pointerEvents={isModified ? 'none' : undefined}\n tabIndex={isModified ? -1 : undefined}\n >\n {formatMessage({\n id: 'content-manager.preview.panel.button',\n defaultMessage: 'Open preview',\n })}\n </Button>\n </Box>\n </ConditionalTooltip>\n ),\n };\n};\n\nexport { PreviewSidePanel };\n","/* eslint-disable check-file/no-index */\n\nimport { PreviewSidePanel } from './components/PreviewSidePanel';\n\nimport type { ContentManagerPlugin } from '../content-manager';\nimport type { PluginDefinition } from '@strapi/admin/strapi-admin';\n\nconst previewAdmin: Partial<PluginDefinition> = {\n bootstrap(app) {\n const contentManagerPluginApis = app.getPlugin('content-manager')\n .apis as ContentManagerPlugin['config']['apis'];\n\n contentManagerPluginApis.addEditViewSidePanel([PreviewSidePanel]);\n },\n};\n\nexport { previewAdmin };\n","import { Feather } from '@strapi/icons';\n\nimport { PLUGIN_ID } from './constants/plugin';\nimport { ContentManagerPlugin } from './content-manager';\nimport { historyAdmin } from './history';\nimport { reducer } from './modules/reducers';\nimport { previewAdmin } from './preview';\nimport { routes } from './router';\nimport { prefixPluginTranslations } from './utils/translations';\n\n// NOTE: we have to preload it to ensure chunks will have it available as global\nimport 'prismjs';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: any) {\n const cm = new ContentManagerPlugin();\n\n app.addReducers({\n [PLUGIN_ID]: reducer,\n });\n\n app.addMenuLink({\n to: PLUGIN_ID,\n icon: Feather,\n intlLabel: {\n id: `content-manager.plugin.name`,\n defaultMessage: 'Content Manager',\n },\n permissions: [],\n position: 1,\n });\n\n app.router.addRoute({\n path: 'content-manager/*',\n lazy: async () => {\n const { Layout } = await import('./layout');\n\n return {\n Component: Layout,\n };\n },\n children: routes,\n });\n\n app.registerPlugin(cm.config);\n },\n bootstrap(app: any) {\n if (typeof historyAdmin.bootstrap === 'function') {\n historyAdmin.bootstrap(app);\n }\n if (typeof previewAdmin.bootstrap === 'function') {\n previewAdmin.bootstrap(app);\n }\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, PLUGIN_ID),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\nexport * from './exports';\n"],"names":["PLUGIN_ID","PERMISSIONS","INJECTION_ZONES","editView","informations","listView","actions","deleteModalAdditionalInfos","publishModalAdditionalInfos","unpublishModalAdditionalInfos","preview","InjectionZone","area","props","components","useInjectionZone","_jsx","_Fragment","map","component","Component","name","getPlugin","useStrapiApp","state","contentManagerPlugin","page","position","split","getInjectedComponents","ID","CREATED_BY_ATTRIBUTE_NAME","UPDATED_BY_ATTRIBUTE_NAME","CREATOR_FIELDS","PUBLISHED_BY_ATTRIBUTE_NAME","CREATED_AT_ATTRIBUTE_NAME","UPDATED_AT_ATTRIBUTE_NAME","PUBLISHED_AT_ATTRIBUTE_NAME","DOCUMENT_META_FIELDS","ATTRIBUTE_TYPES_THAT_CANNOT_BE_MAIN_FIELD","SINGLE_TYPES","COLLECTION_TYPES","DocumentRBACProvider","useDocumentRBAC","createContext","canCreate","canCreateFields","canDelete","canPublish","canRead","canReadFields","canUpdate","canUpdateFields","canUserAction","isLoading","DocumentRBAC","children","permissions","slug","useParams","Error","rawQuery","useQueryParams","userPermissions","useAuth","contentTypePermissions","React","useMemo","filter","permission","subject","reduce","acc","action","slice","allowedActions","useRBAC","undefined","extractAndDedupeFields","create","read","update","useCallback","fieldName","fieldsUserCanAction","fieldType","removeNumericalStrings","componentFieldNames","field","length","some","includes","join","Page","Loading","flatMap","properties","fields","index","arr","indexOf","item","isNaN","Number","BLOCK_LIST_ATTRIBUTE_KEYS","traverseData","predicate","transform","schema","data","traverse","datum","attributes","Object","entries","key","value","attribute","type","repeatable","componentValue","componentData","dynamicZoneValue","__component","removeProhibitedFields","prohibitedFields","prepareRelations","connect","disconnect","prepareTempKeys","Array","isArray","keys","generateNKeysBetween","__temp_key__","removeFieldsThatDontExistOnSchema","schemaKeys","dataKeys","keysToRemove","revisedData","structuredClone","removeNullValues","transformDocument","document","transformations","pipe","createDefaultForm","contentType","traverseSchema","default","required","defaultComponentForm","min","fill","contentManagerApi","adminApi","enhanceEndpoints","addTagTypes","documentApi","injectEndpoints","overrideExisting","endpoints","builder","autoCloneDocument","mutation","query","model","sourceId","url","method","config","params","invalidatesTags","_result","error","id","cloneDocument","_error","createDocument","result","transformResponse","response","meta","arg","availableStatus","availableLocales","deleteDocument","collectionType","documentId","deleteManyDocuments","body","_res","discardDocument","getAllDocuments","stringify","encode","providesTags","results","getDraftRelationCount","getDocument","queryFn","_api","_extraOpts","baseQuery","res","getManyDraftRelationCount","publishDocument","publishManyDocuments","documentIds","updateDocument","onQueryStarted","patch","dispatch","queryFulfilled","patchResult","util","updateQueryData","draft","assign","undo","unpublishDocument","unpublishManyDocuments","useAutoCloneDocumentMutation","useCloneDocumentMutation","useCreateDocumentMutation","useDeleteDocumentMutation","useDeleteManyDocumentsMutation","useDiscardDocumentMutation","useGetAllDocumentsQuery","useLazyGetDocumentQuery","useGetDocumentQuery","useLazyGetDraftRelationCountQuery","useGetManyDraftRelationCountQuery","usePublishDocumentMutation","usePublishManyDocumentsMutation","useUpdateDocumentMutation","useUnpublishDocumentMutation","useUnpublishManyDocumentsMutation","buildValidParams","plugins","_","validQueryParams","values","current","isBaseQueryError","arrayValidator","options","message","translatedErrors","test","status","createYupSchema","createModelSchema","yup","object","shape","validations","addNullableValidation","addRequiredValidation","addMinLengthValidation","addMaxLengthValidation","addMinValidation","addMaxValidation","addRegexValidation","fn","transformSchema","array","of","nullable","lazy","validation","string","oneOf","concat","mixed","number","createAttributeSchema","matches","boolean","json","email","enum","JSON","err","parse","nullableSchema","minLength","isInteger","maxLength","max","toInteger","val","num","regex","RegExp","defaultMessage","excludeEmptyString","initApi","getInitialData","useGetInitialDataQuery","useContentTypeSchema","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","isFetching","contentTypes","find","ct","uid","componentsByKey","extractContentTypeComponents","useEffect","schemas","allComponents","getComponents","componentAttributes","push","componentUid","componentUids","uniqueComponentUids","Set","HOOKS","INJECT_COLUMN_IN_TABLE","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","contentTypesApi","getContentTypeConfiguration","getAllContentTypeSettings","updateContentTypeConfiguration","useGetContentTypeConfigurationQuery","useGetAllContentTypeSettingsQuery","useUpdateContentTypeConfigurationMutation","checkIfAttributeIsDisplayable","relation","toLowerCase","getMainField","mainFieldName","mainFieldType","targetModel","DEFAULT_SETTINGS","bulkable","filterable","searchable","pagination","defaultSortBy","defaultSortOrder","mainField","pageSize","useDocumentLayout","useDocument","skip","runHookWaterfall","isLoadingSchemas","isLoadingConfigs","isFetchingConfigs","editLayout","formatEditLayout","layout","metadatas","settings","listLayout","formatListLayout","edit","list","useDocLayout","useDoc","currentPanelIndex","panelledEditAttributes","convertEditLayoutToFieldLayouts","layouts","configurations","panels","row","componentEditAttributes","configuration","icon","info","displayName","editMetadatas","metadata","pluginOptions","rows","disabled","editable","hint","description","label","placeholder","size","unique","visible","listMetadatas","listAttributes","convertListLayoutToFieldLayouts","columns","sortable","args","opts","formatMessage","useIntl","currentData","isLoadingDocument","isFetchingDocument","isLoadingSchema","isSingleType","kind","getTitle","validationSchema","validate","validateSync","abortEarly","strict","ValidationError","getYupValidationErrors","getInitialFormValues","isCreatingDocument","form","hasError","origin","returnId","useContentManagerContext","isLoadingDoc","useForm","isCreatingEntry","hasDraftAndPublish","draftAndPublish","prefixPluginTranslations","trad","pluginId","getTranslation","DEFAULT_UNEXPECTED_ERROR_MSG","useDocumentActions","trackUsage","useTracking","navigate","useNavigate","setCurrentStep","useGuidedTour","isDeleting","_delete","trackerProperty","isDeletingMany","deleteMany","title","isDiscardingDocument","discard","isPublishing","publish","isPublishingMany","publishMany","isUpdating","unpublish","discardDraft","isUnpublishingMany","unpublishMany","autoClone","clone","_id","restBody","relative","getDoc","delete","ProtectedHistoryPage","then","mod","routes","path","ProtectedPreviewPage","ProtectedEditViewPage","ProtectedListViewPage","ProtectedListConfiguration","ProtectedEditConfigurationPage","ProtectedComponentConfigurationPage","NoPermissions","NoContentType","CollectionTypePages","Navigate","to","CLONE_RELATIVE_PATH","CLONE_PATH","LIST_RELATIVE_PATH","LIST_PATH","element","historyRoutes","previewRoutes","DocumentActions","primaryAction","secondaryAction","restActions","positions","_jsxs","Flex","direction","gap","alignItems","width","DocumentActionButton","variant","DocumentActionsMenu","dialogId","setDialogId","useState","handleClick","e","onClick","dialog","muteDialog","content","timeout","onClose","preventDefault","handleClose","Button","flex","startIcon","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","MenuItem","styled","Menu","Item","theme","isVariantDanger","isDisabled","colors","danger100","setIsOpen","every","Root","open","onOpenChange","Trigger","endIcon","paddingLeft","paddingRight","More","aria-hidden","focusable","VisuallyHidden","tag","Content","maxHeight","popoverPlacement","onSelect","display","color","convertActionVariantToColor","convertActionVariantToIconColor","Fragment","onCancel","onConfirm","handleConfirm","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","apiData","mapValues","PublishAction","activeTab","_unstableFormatValidationErrors","formatValidationErrors","isListView","useMatch","isCloning","countDraftRelations","isLoadingDraftRelations","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localCountOfDraftRelations","setLocalCountOfDraftRelations","serverCountOfDraftRelations","setServerCountOfDraftRelations","modified","setSubmitting","isSubmitting","setErrors","formValues","localDraftRelations","extractDraftRelations","relations","forEach","add","traverseAndExtract","fetchDraftRelationsCount","isDocumentPublished","doc","performPublish","errors","pathname","search","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","count","UpdateAction","cloneMatch","resetForm","handleUpdate","replace","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","UNPUBLISH_DRAFT_OPTIONS","KEEP","DISCARD","UnpublishAction","shouldKeepDraft","setShouldKeepDraft","isDocumentModified","handleChange","Cross","console","WarningCircle","height","Typography","textAlign","Radio","Group","defaultValue","aria-label","onValueChange","checked","DiscardAction","DEFAULT_ACTIONS","intervals","RelativeTime","forwardRef","timestamp","customIntervals","restProps","forwardedRef","formatRelativeTime","formatDate","formatTime","interval","intervalToDuration","start","end","Date","now","unit","intervalUnit","relativeTime","isPast","customInterval","custom","threshold","displayText","text","numeric","time","ref","dateTime","toISOString","role","getDisplayName","firstname","lastname","username","trim","capitalise","str","charAt","toUpperCase","DocumentStatus","statusVariant","Status","aria-labelledby","fontWeight","isCreating","documentTitle","BackButton","fallback","HeaderToolbar","Box","marginTop","DescriptionComponentRenderer","descriptions","apis","getHeaderActions","HeaderActions","getDocumentActions","headerActions","Information","createAndUpdateDocument","publishedAt","creator","updator","information","isDisplayed","isAnonymous","author","borderWidth","borderStyle","borderColor","padding","marginLeft","marginRight","textColor","SingleSelect","onChange","option","SingleSelectOption","IconButton","HeaderActionDialog","ConfigureTheViewAction","ListPlus","EditTheModelAction","Pencil","DeleteAction","listViewPathMatch","deleteAction","isLocalized","locale","Trash","DEFAULT_HEADER_ACTIONS","Panels","getEditViewSidePanels","Panel","ActionsPanel","ActionsPanelContent","background","hasRadius","shadow","textTransform","ConfirmBulkActionDialog","onToggleDialog","dialogBody","endAction","BoldChunk","chunks","ConfirmDialogPublishAll","isConfirmButtonLoading","selectedEntries","useTable","selectedRows","entry","i18n","b","entities","em","Emphasis","Check","TypographyMaxWidth","TableComponent","RawTable","neutral150","spaces","formatErrorMessages","parentKey","messages","currentKey","EntryValidationText","validationErrors","validationErrorsMessages","CrossCircle","Tooltip","ellipsis","CheckCircle","ArrowsCounterClockwise","TABLE_HEADERS","SelectedEntriesTableContent","rowsToDisplay","entriesToPublish","useLocation","shouldDisplayMainField","Table","Head","HeaderCheckboxCell","head","HeaderCell","Row","CheckboxCell","Cell","maxWidth","Loader","small","Link","from","target","PublicationStatusSummary","PublicationStatusGrid","entriesReadyToPublishCount","entriesPublishedCount","entriesModifiedCount","entriesWithErrorsCount","colCount","rowCount","Tbody","Tr","Td","SelectedEntriesModalContent","listViewSelectedEntries","toggleModal","setListViewSelectedDocuments","refetch","toString","sort","filters","$in","selectFromResult","restRes","isDialogOpen","setIsDialogOpen","bulkPublishAction","isSubmittingForm","selectedEntry","selectedEntriesWithErrorsCount","selectedEntriesPublishedCount","selectedEntriesModifiedCount","selectedEntriesWithNoErrorsCount","toggleDialog","prev","handleConfirmBulkPublish","unpublishedEntries","documents","hasPublishPermission","showPublishButton","selectRow","refetchList","invalidateTags","actionType","defaultSelectedRows","headers","BulkActionsRenderer","getBulkActions","hasI18nEnabled","Boolean","hasDeletePermission","bulkDeleteAction","handleConfirmBulkDelete","hasDraftAndPublishEnabled","bulkUnpublishAction","handleConfirmBulkUnpublish","showUnpublishButton","confirmButton","DEFAULT_BULK_ACTIONS","AutoCloneFailureModalBody","getDefaultErrorMessage","reason","fieldPath","pathSegment","ChevronRight","style","margin","TableActions","tableRowActions","EditAction","StyledPencil","CloneAction","setProhibitedFields","StyledDuplicate","details","LinkButton","NavLink","Duplicate","DEFAULT_TABLE_ROW_ACTIONS","ContentManagerPlugin","addEditViewSidePanel","editViewSidePanels","getPrintableType","addDocumentAction","documentActions","addDocumentHeaderAction","addBulkAction","bulkActions","injectionZones","bind","flat","constructor","nativeType","HistoryAction","pluginsQueryParams","strapi","features","isEnabled","handleOnClick","destination","ClockCounterClockwise","startsWith","historyAdmin","bootstrap","app","indexOfDeleteAction","findIndex","splice","initialState","collectionTypeLinks","fieldSizes","models","singleTypeLinks","appSlice","createSlice","reducers","setInitialData","authorizedCollectionTypeLinks","authorizedSingleTypeLinks","contentTypeSchemas","payload","reducer","combineReducers","appReducer","previewApi","getPreviewUrl","useGetPreviewUrlQuery","ConditionalTooltip","isShown","PreviewSidePanel","isModified","trackNavigation","destinationPathname","cursor","pointerEvents","tabIndex","previewAdmin","contentManagerPluginApis","register","cm","addReducers","addMenuLink","Feather","intlLabel","router","addRoute","Layout","registerPlugin","registerTrads","locales","importedTrads","Promise","all","catch","resolve"],"mappings":"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"}
|