@strapi/content-manager 5.61.1 → 5.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ConfigurationForm/Fields.js +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +3 -3
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/features/I18nSharedFieldsLock.js +54 -0
- package/dist/admin/features/I18nSharedFieldsLock.js.map +1 -0
- package/dist/admin/features/I18nSharedFieldsLock.mjs +31 -0
- package/dist/admin/features/I18nSharedFieldsLock.mjs.map +1 -0
- package/dist/admin/history/components/VersionInputRenderer.js +7 -2
- package/dist/admin/history/components/VersionInputRenderer.js.map +1 -1
- package/dist/admin/history/components/VersionInputRenderer.mjs +7 -3
- package/dist/admin/history/components/VersionInputRenderer.mjs.map +1 -1
- package/dist/admin/hooks/useContentManagerInitData.js +27 -8
- package/dist/admin/hooks/useContentManagerInitData.js.map +1 -1
- package/dist/admin/hooks/useContentManagerInitData.mjs +29 -10
- package/dist/admin/hooks/useContentManagerInitData.mjs.map +1 -1
- package/dist/admin/hooks/useDocument.js +11 -13
- package/dist/admin/hooks/useDocument.js.map +1 -1
- package/dist/admin/hooks/useDocument.mjs +11 -13
- package/dist/admin/hooks/useDocument.mjs.map +1 -1
- package/dist/admin/hooks/useI18nFieldLock.js +169 -0
- package/dist/admin/hooks/useI18nFieldLock.js.map +1 -0
- package/dist/admin/hooks/useI18nFieldLock.mjs +140 -0
- package/dist/admin/hooks/useI18nFieldLock.mjs.map +1 -0
- package/dist/admin/hooks/usePersistentQueryParams.js +16 -3
- package/dist/admin/hooks/usePersistentQueryParams.js.map +1 -1
- package/dist/admin/hooks/usePersistentQueryParams.mjs +16 -3
- package/dist/admin/hooks/usePersistentQueryParams.mjs.map +1 -1
- package/dist/admin/index.js +5 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +2 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/modules/app.js +8 -1
- package/dist/admin/modules/app.js.map +1 -1
- package/dist/admin/modules/app.mjs +8 -2
- package/dist/admin/modules/app.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +129 -127
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +129 -127
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +11 -4
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +12 -5
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js +31 -21
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs +32 -22
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/EditorLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/AddComponentMenu.js +98 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/AddComponentMenu.js.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/AddComponentMenu.mjs +96 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/AddComponentMenu.mjs.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/ComponentCopyModal.js +1103 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/ComponentCopyModal.js.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/ComponentCopyModal.mjs +1077 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/ComponentCopyModal.mjs.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/CopiedComponents.js +211 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/CopiedComponents.js.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/CopiedComponents.mjs +183 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/CopiedComponents.mjs.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js +84 -41
- package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs +86 -43
- package/dist/admin/pages/EditView/components/FormInputs/Component/Initializer.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js +86 -20
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs +89 -23
- package/dist/admin/pages/EditView/components/FormInputs/Component/Input.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +5 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +5 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +142 -22
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +143 -23
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/utils/componentCopy.js +402 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/utils/componentCopy.js.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/utils/componentCopy.mjs +389 -0
- package/dist/admin/pages/EditView/components/FormInputs/Component/utils/componentCopy.mjs.map +1 -0
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js +84 -33
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs +85 -34
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js +5 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs +5 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +17 -4
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +18 -5
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +54 -6
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +54 -6
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +11 -9
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +12 -10
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +9 -4
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +9 -4
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +66 -63
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +66 -63
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js +7 -1
- package/dist/admin/pages/EditView/components/InputRenderer.js.map +1 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs +7 -1
- package/dist/admin/pages/EditView/components/InputRenderer.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +14 -9
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +14 -9
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/forms.js +34 -0
- package/dist/admin/pages/EditView/utils/forms.js.map +1 -1
- package/dist/admin/pages/EditView/utils/forms.mjs +34 -1
- package/dist/admin/pages/EditView/utils/forms.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.js +2 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs +2 -1
- package/dist/admin/pages/ListConfiguration/components/DraggableCard.mjs.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js +7 -6
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.js.map +1 -1
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs +7 -6
- package/dist/admin/pages/ListConfiguration/components/EditFieldForm.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +11 -2
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +13 -4
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +15 -5
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +16 -7
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/preview/components/InputPopover.js +18 -8
- package/dist/admin/preview/components/InputPopover.js.map +1 -1
- package/dist/admin/preview/components/InputPopover.mjs +19 -9
- package/dist/admin/preview/components/InputPopover.mjs.map +1 -1
- package/dist/admin/preview/pages/Preview.js +5 -16
- package/dist/admin/preview/pages/Preview.js.map +1 -1
- package/dist/admin/preview/pages/Preview.mjs +5 -16
- package/dist/admin/preview/pages/Preview.mjs.map +1 -1
- package/dist/admin/preview/utils/fieldUtils.js +2 -0
- package/dist/admin/preview/utils/fieldUtils.js.map +1 -1
- package/dist/admin/preview/utils/fieldUtils.mjs +2 -1
- package/dist/admin/preview/utils/fieldUtils.mjs.map +1 -1
- package/dist/admin/services/api.js +2 -1
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +2 -1
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/services/documents.js +21 -1
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +21 -2
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/services/relations.js +47 -1
- package/dist/admin/services/relations.js.map +1 -1
- package/dist/admin/services/relations.mjs +47 -2
- package/dist/admin/services/relations.mjs.map +1 -1
- package/dist/admin/src/exports.d.ts +2 -0
- package/dist/admin/src/features/I18nSharedFieldsLock.d.ts +22 -0
- package/dist/admin/src/history/components/VersionInputRenderer.d.ts +7 -1
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/hooks/useI18nFieldLock.d.ts +61 -0
- package/dist/admin/src/modules/app.d.ts +4 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Component/AddComponentMenu.d.ts +15 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Component/ComponentCopyModal.d.ts +58 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Component/CopiedComponents.d.ts +41 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/Component/Initializer.d.ts +7 -3
- package/dist/admin/src/pages/EditView/components/FormInputs/Component/NonRepeatable.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Component/Repeatable.d.ts +2 -2
- package/dist/admin/src/pages/EditView/components/FormInputs/Component/utils/componentCopy.d.ts +115 -0
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/ComponentCategory.d.ts +6 -3
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/ComponentPicker.d.ts +2 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.d.ts +5 -1
- package/dist/admin/src/pages/EditView/utils/forms.d.ts +13 -2
- package/dist/admin/src/pages/ListView/components/Filters.d.ts +12 -3
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/preview/utils/fieldUtils.d.ts +1 -0
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +25 -21
- package/dist/admin/src/services/homepage.d.ts +1 -1
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +5 -3
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/translations/en.json.js +41 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +41 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/server/controllers/relations.js +4 -2
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +4 -2
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/controllers/utils/metadata.js +3 -1
- package/dist/server/controllers/utils/metadata.js.map +1 -1
- package/dist/server/controllers/utils/metadata.mjs +3 -1
- package/dist/server/controllers/utils/metadata.mjs.map +1 -1
- package/dist/server/history/services/utils.js +3 -1
- package/dist/server/history/services/utils.js.map +1 -1
- package/dist/server/history/services/utils.mjs +3 -1
- package/dist/server/history/services/utils.mjs.map +1 -1
- package/dist/server/homepage/services/homepage-query-utils.js +14 -0
- package/dist/server/homepage/services/homepage-query-utils.js.map +1 -1
- package/dist/server/homepage/services/homepage-query-utils.mjs +14 -1
- package/dist/server/homepage/services/homepage-query-utils.mjs.map +1 -1
- package/dist/server/homepage/services/homepage.js +1 -1
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +2 -2
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/mcp/sanitizers/shape-relations.js +1 -3
- package/dist/server/mcp/sanitizers/shape-relations.js.map +1 -1
- package/dist/server/mcp/sanitizers/shape-relations.mjs +1 -3
- package/dist/server/mcp/sanitizers/shape-relations.mjs.map +1 -1
- package/dist/server/mcp/schemas/output-schemas.js +2 -1
- package/dist/server/mcp/schemas/output-schemas.js.map +1 -1
- package/dist/server/mcp/schemas/output-schemas.mjs +2 -1
- package/dist/server/mcp/schemas/output-schemas.mjs.map +1 -1
- package/dist/server/services/document-manager.js +3 -2
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +3 -2
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/document-metadata.js +92 -4
- package/dist/server/services/document-metadata.js.map +1 -1
- package/dist/server/services/document-metadata.mjs +92 -4
- package/dist/server/services/document-metadata.mjs.map +1 -1
- package/dist/server/services/permission-checker.js +20 -8
- package/dist/server/services/permission-checker.js.map +1 -1
- package/dist/server/services/permission-checker.mjs +20 -8
- package/dist/server/services/permission-checker.mjs.map +1 -1
- package/dist/server/services/uid.js +2 -1
- package/dist/server/services/uid.js.map +1 -1
- package/dist/server/services/uid.mjs +2 -1
- package/dist/server/services/uid.mjs.map +1 -1
- package/dist/server/src/controllers/relations.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/metadata.d.ts +1 -0
- package/dist/server/src/controllers/utils/metadata.d.ts.map +1 -1
- package/dist/server/src/history/services/utils.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage-query-utils.d.ts +6 -0
- package/dist/server/src/homepage/services/homepage-query-utils.d.ts.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +21 -7
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/sanitizers/shape-relations.d.ts.map +1 -1
- package/dist/server/src/mcp/schemas/output-schemas.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts +5 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +21 -7
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/permission-checker.d.ts +6 -5
- package/dist/server/src/services/permission-checker.d.ts.map +1 -1
- package/dist/server/src/services/uid.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +7 -0
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/single-types.d.ts +4 -0
- package/dist/shared/contracts/single-types.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentCopyModal.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Component/ComponentCopyModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useAPIErrorHandler, useForm, useNotification } from '@strapi/admin/strapi-admin';\nimport {\n Badge,\n Box,\n Button,\n Checkbox,\n Flex,\n Loader,\n Modal,\n Radio,\n Searchbar,\n Typography,\n} from '@strapi/design-system';\nimport { Duplicate, WarningCircle } from '@strapi/icons';\nimport toPath from 'lodash/toPath';\nimport { type IntlFormatters, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES } from '../../../../../constants/collections';\nimport { useDebounce } from '../../../../../hooks/useDebounce';\nimport { useDocumentContext } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport {\n useLazyGetAllDocumentsQuery,\n useLazyGetDocumentQuery,\n} from '../../../../../services/documents';\nimport { useLazyGetAllRelationsQuery } from '../../../../../services/relations';\nimport { getTranslation } from '../../../../../utils/translations';\nimport { CellValue } from '../../../../ListView/components/TableCells/CellValue';\nimport { type AnyData } from '../../../utils/data';\n\nimport {\n cloneComponentData,\n connectRelations,\n getComponentInstances,\n getComponentPreview,\n getRelationsToCopy,\n type ComponentCopyMode,\n type ComponentInstance,\n type ComponentPreviewField,\n} from './utils/componentCopy';\n\nimport type { Document } from '../../../../../hooks/useDocument';\n\n/* -------------------------------------------------------------------------------------------------\n * ComponentCopyModal\n * -----------------------------------------------------------------------------------------------*/\n\ntype ComponentCopySelection = 'single' | 'multiple';\n\ninterface ComponentCopyModalProps {\n componentUid: string;\n /**\n * The label of the field the copies land in, as it's displayed in the form.\n */\n fieldLabel: string;\n /**\n * How many components the field can still take. The selection can't exceed it.\n */\n maxSelection?: number;\n mode: ComponentCopyMode;\n onClose: () => void;\n /**\n * Inserts the copies in the field. Returns `false` when the field turns them down, e.g. because\n * it already holds its maximum number of components. The field then reports it to the user itself.\n */\n onInsert: (components: AnyData[]) => boolean;\n /**\n * Whether the field already holds content the copy is going to replace. Only applies to a\n * `single` selection.\n */\n replacesContent?: boolean;\n /**\n * A field holding one component takes a single copy, a repeatable component or a dynamic zone\n * take several at once.\n */\n selection: ComponentCopySelection;\n sourceFieldName: string;\n}\n\nconst ENTRIES_PAGE_SIZE = '10';\n\nconst getDocumentTitle = (\n document: Document,\n mainField: string,\n fallback: string,\n untitled: string\n) => {\n if (mainField !== 'id') {\n const value = document?.[mainField];\n\n if (value !== undefined && value !== null && String(value).trim().length > 0) {\n return String(value);\n }\n }\n\n return fallback || untitled;\n};\n\ninterface EntryRow {\n documentId: string;\n title: string;\n isCurrent: boolean;\n disabled: boolean;\n meta?: string;\n}\n\n/**\n * The entry picked in the list. Kept apart from the list: searching can filter the entry out of\n * the list while its components are still previewed.\n */\ninterface SelectedEntry {\n documentId: string;\n title: string;\n isCurrent: boolean;\n}\n\ninterface GetEntryMetaArgs {\n /**\n * How many components of the wanted kind the entry holds, `undefined` when it isn't known yet.\n */\n count: number | undefined;\n fieldLabel: string;\n /**\n * The label of the only component of the entry, when it holds a single one.\n */\n firstInstanceLabel?: string;\n formatMessage: IntlFormatters['formatMessage'];\n isCurrent: boolean;\n isFormModified: boolean;\n selection: ComponentCopySelection;\n}\n\n/**\n * The line of text shown under the title of an entry in the list.\n */\nconst getEntryMeta = ({\n count,\n fieldLabel,\n firstInstanceLabel,\n formatMessage,\n isCurrent,\n isFormModified,\n selection,\n}: GetEntryMetaArgs): string | undefined => {\n if (isCurrent && isFormModified) {\n return formatMessage({\n id: getTranslation('components.ComponentCopyModal.entries.unsaved'),\n defaultMessage: 'Save your changes to copy from this entry',\n });\n }\n\n if (count === undefined) {\n return undefined;\n }\n\n if (count === 0) {\n return isCurrent && selection === 'single'\n ? formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.entries.noneOther'),\n defaultMessage: 'No other {label} in this entry',\n },\n { label: fieldLabel }\n )\n : formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.entries.none'),\n defaultMessage: 'No {label} yet',\n },\n { label: fieldLabel }\n );\n }\n\n if (isCurrent) {\n return formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.entries.count.saved'),\n defaultMessage: '{count, plural, one {# item} other {# items}} · last saved version',\n },\n { count }\n );\n }\n\n if (selection === 'single' && count === 1 && firstInstanceLabel) {\n return firstInstanceLabel;\n }\n\n return formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.entries.count'),\n defaultMessage: '{count, plural, one {# item} other {# items}}',\n },\n { count }\n );\n};\n\n/**\n * The modal is mounted while it's open and unmounted when it's closed.\n */\nconst ComponentCopyModal = ({\n componentUid,\n fieldLabel,\n maxSelection = Infinity,\n mode,\n onClose,\n onInsert,\n replacesContent = false,\n selection,\n sourceFieldName,\n}: ComponentCopyModalProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler(getTranslation);\n const { currentDocument, currentDocumentMeta } = useDocumentContext('ComponentCopyModal');\n const {\n edit: { components: componentLayouts, settings },\n } = useDocumentLayout(currentDocumentMeta.model);\n const targetValues = useForm('ComponentCopyModal', (state) => state.values);\n const isFormModified = useForm('ComponentCopyModal', (state) => state.modified);\n\n const [search, setSearch] = React.useState('');\n const debouncedSearch = useDebounce(search, 300);\n const searchRef = React.useRef<HTMLInputElement>(null);\n const [selectedEntry, setSelectedEntry] = React.useState<SelectedEntry | null>(null);\n const [sourceDocument, setSourceDocument] = React.useState<Document | null>(null);\n const [selectedPaths, setSelectedPaths] = React.useState<string[]>([]);\n const [isCopying, setIsCopying] = React.useState(false);\n // Read while rendering: once mounted, the modal holds the focus\n const [returnFocusTarget] = React.useState(getReturnFocusTarget);\n\n /**\n * Loading an entry and copying components are asynchronous, the modal can be closed in the\n * meantime and the user can pick another entry while one loads.\n */\n const isMountedRef = React.useRef(true);\n const selectedDocumentIdRef = React.useRef<string | null>(null);\n\n React.useEffect(() => {\n isMountedRef.current = true;\n\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n const [\n getDocuments,\n {\n data: documentsData,\n error: documentsError,\n isFetching: isFetchingDocuments,\n isUninitialized: isDocumentsQueryUninitialized,\n },\n ] = useLazyGetAllDocumentsQuery();\n const [getDocument, { isFetching: isFetchingDocument }] = useLazyGetDocumentQuery();\n const [getAllRelations] = useLazyGetAllRelationsQuery();\n\n const { components } = currentDocument;\n const componentDisplayName = components[componentUid]?.info?.displayName ?? componentUid;\n const currentDocumentId = currentDocumentMeta.documentId;\n /**\n * The last saved version of the entry being edited: what the API holds for it.\n */\n const savedDocument = currentDocument.document;\n /**\n * The list of entries only loads the first level of components: for a field nested in another\n * component, how many components an entry holds is only known once the entry is loaded.\n */\n const isNestedField = toPath(sourceFieldName).length > 1;\n\n React.useEffect(() => {\n if (currentDocumentMeta.collectionType !== COLLECTION_TYPES) {\n return;\n }\n\n void getDocuments({\n model: currentDocumentMeta.model,\n params: {\n ...currentDocumentMeta.params,\n _q: debouncedSearch || undefined,\n page: '1',\n pageSize: ENTRIES_PAGE_SIZE,\n sort: 'updatedAt:DESC',\n },\n });\n }, [\n currentDocumentMeta.collectionType,\n currentDocumentMeta.model,\n currentDocumentMeta.params,\n debouncedSearch,\n getDocuments,\n ]);\n\n React.useEffect(() => {\n if (documentsError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(documentsError),\n });\n }\n }, [documentsError, formatAPIError, toggleNotification]);\n\n const findInstances = React.useCallback(\n (document: Document) =>\n getComponentInstances({\n componentUid,\n components,\n getMainField: (uid) => componentLayouts[uid]?.settings?.mainField,\n mode,\n schema: currentDocument.schema,\n sourceDocument: document,\n sourceFieldName,\n targetValues,\n }),\n [\n componentLayouts,\n componentUid,\n components,\n currentDocument.schema,\n mode,\n sourceFieldName,\n targetValues,\n ]\n );\n\n /**\n * In a field holding one component, the saved version of that very component is not something\n * to copy: the field already holds it.\n */\n const filterOwnInstance = React.useCallback(\n (instances: ComponentInstance[]) =>\n selection === 'single'\n ? instances.filter((instance) => instance.sourcePath !== sourceFieldName)\n : instances,\n [selection, sourceFieldName]\n );\n\n const currentEntryInstances = React.useMemo(\n () => (savedDocument ? filterOwnInstance(findInstances(savedDocument)) : []),\n [filterOwnInstance, findInstances, savedDocument]\n );\n\n const untitled = formatMessage({\n id: 'content-manager.containers.untitled',\n defaultMessage: 'Untitled',\n });\n const getTitle = (document: Document) =>\n getDocumentTitle(document, settings.mainField, document.documentId, untitled);\n\n const currentEntryTitle = savedDocument ? getTitle(savedDocument) : '';\n const normalizedSearch = debouncedSearch.trim().toLowerCase();\n // A locale that isn't saved yet has a document id but nothing stored (no `id`)\n const showCurrentEntry =\n !!savedDocument?.id &&\n !!currentDocumentId &&\n (!normalizedSearch || currentEntryTitle.toLowerCase().includes(normalizedSearch));\n\n const currentEntryRow: EntryRow | null = showCurrentEntry\n ? {\n documentId: currentDocumentId,\n title: currentEntryTitle,\n isCurrent: true,\n disabled: isFormModified || currentEntryInstances.length === 0,\n meta: getEntryMeta({\n count: currentEntryInstances.length,\n fieldLabel,\n formatMessage,\n isCurrent: true,\n isFormModified,\n selection,\n }),\n }\n : null;\n\n const entryRows: EntryRow[] = [\n ...(currentEntryRow ? [currentEntryRow] : []),\n ...(documentsData?.results ?? [])\n .filter((document) => document.documentId !== currentDocumentId)\n .map((document): EntryRow => {\n const instances = isNestedField ? undefined : findInstances(document);\n\n return {\n documentId: document.documentId,\n title: getTitle(document),\n isCurrent: false,\n disabled: instances?.length === 0,\n meta: getEntryMeta({\n count: instances?.length,\n fieldLabel,\n firstInstanceLabel: instances?.[0]?.label,\n formatMessage,\n isCurrent: false,\n isFormModified,\n selection,\n }),\n };\n }),\n ];\n\n /**\n * Loads the entry components are copied from.\n */\n const handleSelectEntry = async (row: EntryRow) => {\n // Picking the entry that's already selected keeps the components ticked in it.\n if (selectedDocumentIdRef.current === row.documentId) {\n return;\n }\n\n selectedDocumentIdRef.current = row.documentId;\n setSelectedEntry({ documentId: row.documentId, title: row.title, isCurrent: row.isCurrent });\n setSelectedPaths([]);\n\n if (row.isCurrent) {\n setSourceDocument(savedDocument ?? null);\n\n return;\n }\n\n setSourceDocument(null);\n\n const result = await getDocument({\n collectionType: currentDocumentMeta.collectionType,\n documentId: row.documentId,\n model: currentDocumentMeta.model,\n params: currentDocumentMeta.params,\n });\n\n // Another entry was picked in the meantime, or the modal was closed.\n if (!isMountedRef.current || selectedDocumentIdRef.current !== row.documentId) {\n return;\n }\n\n if (result.error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(result.error),\n });\n selectedDocumentIdRef.current = null;\n setSelectedEntry(null);\n\n return;\n }\n\n // Without its data the entry can't be previewed: unselect it, so it can be picked again.\n if (!result.data?.data) {\n selectedDocumentIdRef.current = null;\n setSelectedEntry(null);\n\n return;\n }\n\n setSourceDocument(result.data.data);\n };\n\n const isCurrentEntrySelected = selectedEntry?.isCurrent ?? false;\n const instances = React.useMemo(() => {\n if (isCurrentEntrySelected) {\n return currentEntryInstances;\n }\n\n return sourceDocument ? findInstances(sourceDocument) : [];\n }, [currentEntryInstances, findInstances, isCurrentEntrySelected, sourceDocument]);\n\n // An entry holding a single component is selected right away: there's nothing else to pick.\n React.useEffect(() => {\n if (instances.length === 1) {\n const [{ sourcePath }] = instances;\n\n setSelectedPaths((paths) =>\n paths.length === 1 && paths[0] === sourcePath ? paths : [sourcePath]\n );\n }\n }, [instances]);\n\n const selectedInstances = instances.filter((instance) =>\n selectedPaths.includes(instance.sourcePath)\n );\n const areAllSelected = instances.length > 0 && selectedInstances.length === instances.length;\n const isSelectionTooLarge = selectedInstances.length > maxSelection;\n\n const mainField = componentLayouts[componentUid]?.settings?.mainField;\n const previewFields = React.useMemo(\n () =>\n componentLayouts[componentUid]?.layout\n .flat()\n .filter((field) => field.name !== mainField)\n .map((field) => ({ name: field.name, label: field.label })),\n [componentLayouts, componentUid, mainField]\n );\n\n /**\n * The copy is a snapshot of the component, its relations are connected to the same entries.\n * A relation that can't be loaded is left empty rather than failing the whole copy.\n */\n const copyInstance = async (instance: ComponentInstance) => {\n const relations = getRelationsToCopy(instance.source, componentUid, components);\n\n const loadedRelations = await Promise.allSettled(\n relations.map(({ model, id, targetField }) =>\n getAllRelations({ model, id, targetField, params: currentDocumentMeta.params }).unwrap()\n )\n );\n\n const data = loadedRelations.reduce(\n (acc, result, index) =>\n result.status === 'fulfilled'\n ? connectRelations(acc, relations[index].path, result.value)\n : acc,\n cloneComponentData(instance.source, componentUid, components)\n );\n\n return {\n data: mode === 'dynamiczone' ? { ...data, __component: componentUid } : data,\n hasMissingRelations: loadedRelations.some((result) => result.status === 'rejected'),\n };\n };\n\n /**\n * The current entry gets its own messages: \"this entry\" can't be injected in place of an\n * entry title without breaking the sentence in other languages.\n */\n const getSuccessMessage = (count: number) => {\n const entry = selectedEntry?.title ?? '';\n\n if (selection === 'single' && replacesContent) {\n return isCurrentEntrySelected\n ? formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.success.replaced.currentEntry'),\n defaultMessage: '{label} replaced with content from this entry',\n },\n { label: fieldLabel }\n )\n : formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.success.replaced'),\n defaultMessage: '{label} replaced with content from {entry}',\n },\n { label: fieldLabel, entry }\n );\n }\n\n if (selection === 'single') {\n return isCurrentEntrySelected\n ? formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.success.single.currentEntry'),\n defaultMessage: '{label} copied from this entry',\n },\n { label: fieldLabel }\n )\n : formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.success.single'),\n defaultMessage: '{label} copied from {entry}',\n },\n { label: fieldLabel, entry }\n );\n }\n\n if (mode === 'dynamiczone') {\n return isCurrentEntrySelected\n ? formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.success.components.currentEntry'),\n defaultMessage:\n '{count, plural, one {# {component} component} other {# {component} components}} copied from this entry',\n },\n { count, component: componentDisplayName }\n )\n : formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.success.components'),\n defaultMessage:\n '{count, plural, one {# {component} component} other {# {component} components}} copied from {entry}',\n },\n { count, component: componentDisplayName, entry }\n );\n }\n\n return isCurrentEntrySelected\n ? formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.success.entries.currentEntry'),\n defaultMessage:\n '{count, plural, one {# entry} other {# entries}} copied from this entry',\n },\n { count }\n )\n : formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.success.entries'),\n defaultMessage: '{count, plural, one {# entry} other {# entries}} copied from {entry}',\n },\n { count, entry }\n );\n };\n\n const handleConfirm = async () => {\n if (selectedInstances.length === 0 || isSelectionTooLarge) {\n return;\n }\n\n setIsCopying(true);\n\n const copies = await Promise.all(selectedInstances.map(copyInstance));\n\n if (!isMountedRef.current) {\n return;\n }\n\n // The field tells the user why it turns the copies down, e.g. it's full.\n if (!onInsert(copies.map(({ data }) => data))) {\n onClose();\n\n return;\n }\n\n onClose();\n toggleNotification(\n copies.some(({ hasMissingRelations }) => hasMissingRelations)\n ? {\n type: 'warning',\n message: formatMessage({\n id: getTranslation('components.ComponentCopyModal.relations-warning'),\n defaultMessage: 'Content copied, but some of its relations could not be loaded.',\n }),\n }\n : {\n type: 'success',\n message: getSuccessMessage(copies.length),\n }\n );\n };\n\n const title =\n selection === 'single'\n ? formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.title.single'),\n defaultMessage: 'Copy an existing {label}',\n },\n { label: fieldLabel }\n )\n : formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.title.multiple'),\n defaultMessage: 'Copy existing {label}',\n },\n { label: fieldLabel }\n );\n\n const getConfirmLabel = () => {\n if (selection === 'single' && replacesContent) {\n return formatMessage({\n id: getTranslation('components.ComponentCopyModal.confirm.replace'),\n defaultMessage: 'Replace content',\n });\n }\n\n if (selectedInstances.length > 1) {\n return formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.confirm.multiple'),\n defaultMessage: 'Use content from {count} items',\n },\n { count: selectedInstances.length }\n );\n }\n\n return formatMessage({\n id: getTranslation('components.ComponentCopyModal.confirm'),\n defaultMessage: 'Use content',\n });\n };\n\n const renderFooterNote = () => {\n if (isSelectionTooLarge) {\n return (\n <FooterWarning>\n {formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.footer.tooMany'),\n defaultMessage:\n 'You can add {remaining, plural, one {# more item} other {# more items}} to {label}. Unselect {excess, plural, one {# item} other {# items}}.',\n },\n {\n label: fieldLabel,\n remaining: maxSelection,\n excess: selectedInstances.length - maxSelection,\n }\n )}\n </FooterWarning>\n );\n }\n\n if (selection === 'single' && replacesContent) {\n return (\n <FooterWarning>\n {formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.footer.replace'),\n defaultMessage: 'This will replace the current content of {label}.',\n },\n { label: fieldLabel }\n )}\n </FooterWarning>\n );\n }\n\n return (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('components.ComponentCopyModal.footer.note'),\n defaultMessage: 'The content is copied: editing it here won’t change the original entry.',\n })}\n </Typography>\n );\n };\n\n const isLoadingEntries = isFetchingDocuments || isDocumentsQueryUninitialized;\n const isLoadingSource = selectedEntry !== null && !selectedEntry.isCurrent && !sourceDocument;\n const loadingLabel = formatMessage({\n id: getTranslation('components.ComponentCopyModal.loading'),\n defaultMessage: 'Loading',\n });\n\n const renderInstanceSummary = (instance: ComponentInstance, titleId: string) => (\n <InstanceSummary\n instance={instance}\n preview={getComponentPreview(instance.source, componentUid, components, previewFields)}\n titleId={titleId}\n />\n );\n\n const renderPreview = () => {\n if (selectedEntry === null) {\n return (\n <Flex\n direction=\"column\"\n alignItems=\"center\"\n justifyContent=\"center\"\n gap={2}\n padding={6}\n grow={1}\n >\n <Flex color=\"neutral400\">\n <Duplicate width=\"2.4rem\" height=\"2.4rem\" />\n </Flex>\n <Typography variant=\"omega\" textColor=\"neutral600\" textAlign=\"center\">\n {selection === 'single'\n ? formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.preview.empty.single'),\n defaultMessage: 'Pick an entry to preview its {label}.',\n },\n { label: fieldLabel }\n )\n : formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.preview.empty'),\n defaultMessage: 'Pick an entry to see its {label}.',\n },\n { label: fieldLabel }\n )}\n </Typography>\n </Flex>\n );\n }\n\n if (isLoadingSource) {\n return (\n <Flex justifyContent=\"center\" alignItems=\"center\" grow={1} padding={6}>\n <Loader small>{loadingLabel}</Loader>\n </Flex>\n );\n }\n\n return (\n <>\n <PreviewHeader\n justifyContent=\"space-between\"\n alignItems=\"center\"\n gap={4}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={5}\n paddingRight={5}\n >\n <Typography fontWeight=\"bold\" textColor=\"neutral800\" ellipsis>\n {formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.preview.title'),\n defaultMessage: '{entry} · {label}',\n },\n { entry: selectedEntry.title, label: fieldLabel }\n )}\n </Typography>\n {selection === 'multiple' && instances.length > 1 && (\n <Checkbox\n checked={areAllSelected}\n onCheckedChange={(checked) =>\n setSelectedPaths(\n checked === true ? instances.map((instance) => instance.sourcePath) : []\n )\n }\n >\n {formatMessage({\n id: getTranslation('components.ComponentCopyModal.selectAll'),\n defaultMessage: 'Select all',\n })}\n </Checkbox>\n )}\n </PreviewHeader>\n <Scrollable direction=\"column\" alignItems=\"stretch\" gap={3} padding={5}>\n <InstancePicker\n fieldLabel={fieldLabel}\n instances={instances}\n onSelectedPathsChange={setSelectedPaths}\n renderSummary={renderInstanceSummary}\n selectedPaths={selectedPaths}\n selection={selection}\n />\n </Scrollable>\n </>\n );\n };\n\n return (\n <Modal.Root open onOpenChange={(isOpen) => !isOpen && onClose()}>\n <ModalContent\n onCloseAutoFocus={(event) => {\n // The modal has no trigger of its own to give the focus back to\n if (returnFocusTarget?.isConnected) {\n event.preventDefault();\n returnFocusTarget.focus();\n }\n }}\n onEscapeKeyDown={(event) => {\n // Escape in a filled search only clears it, which the searchbar does itself\n if (search !== '' && event.target === searchRef.current) {\n event.preventDefault();\n }\n }}\n >\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n <Panes>\n <EntriesPane\n appliedSearch={debouncedSearch}\n isLoading={isLoadingEntries}\n // Picking a second entry while one loads would start a race between the two.\n isSelectionLocked={isFetchingDocument || isCopying}\n onSearchChange={setSearch}\n onSelect={handleSelectEntry}\n rows={entryRows}\n search={search}\n searchRef={searchRef}\n selectedDocumentId={selectedEntry?.documentId ?? null}\n />\n <PreviewPane direction=\"column\" alignItems=\"stretch\">\n {renderPreview()}\n </PreviewPane>\n </Panes>\n <ModalFooter gap={4}>\n {renderFooterNote()}\n <Flex gap={2} shrink={0}>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Modal.Close>\n <Button\n onClick={handleConfirm}\n disabled={selectedInstances.length === 0 || isSelectionTooLarge}\n loading={isCopying}\n >\n {getConfirmLabel()}\n </Button>\n </Flex>\n </ModalFooter>\n </ModalContent>\n </Modal.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * getReturnFocusTarget\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * @description The element to focus once the modal is closed: the button that opened it, or when\n * it was opened from a menu item, the button of the menu (the menu is gone by then).\n */\nconst getReturnFocusTarget = (): HTMLElement | null => {\n const active = document.activeElement;\n\n if (!(active instanceof HTMLElement) || active === document.body) {\n return null;\n }\n\n const menu = active.closest<HTMLElement>('[role=\"menu\"]');\n\n if (!menu) {\n return active;\n }\n\n return menu.id\n ? document.querySelector<HTMLElement>(`[aria-controls=\"${CSS.escape(menu.id)}\"]`)\n : null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * EntriesPane\n * -----------------------------------------------------------------------------------------------*/\n\ninterface EntriesPaneProps {\n /**\n * The search the list reflects: the typed search, debounced.\n */\n appliedSearch: string;\n isLoading: boolean;\n /**\n * Whether picking an entry is temporarily refused, e.g. while one loads.\n */\n isSelectionLocked: boolean;\n onSearchChange: (search: string) => void;\n onSelect: (row: EntryRow) => void;\n rows: EntryRow[];\n search: string;\n searchRef: React.RefObject<HTMLInputElement>;\n selectedDocumentId: string | null;\n}\n\n/**\n * The left pane of the modal: the search and the list of entries to copy from.\n */\nconst EntriesPane = ({\n appliedSearch,\n isLoading,\n isSelectionLocked,\n onSearchChange,\n onSelect,\n rows,\n search,\n searchRef,\n selectedDocumentId,\n}: EntriesPaneProps) => {\n const { formatMessage } = useIntl();\n const normalizedSearch = appliedSearch.trim();\n const searchLabel = formatMessage({\n id: getTranslation('components.ComponentCopyModal.search'),\n defaultMessage: 'Search all entries',\n });\n\n const renderRows = () => {\n if (isLoading) {\n return (\n <Flex justifyContent=\"center\" padding={4}>\n <Loader small>\n {formatMessage({\n id: getTranslation('components.ComponentCopyModal.loading'),\n defaultMessage: 'Loading',\n })}\n </Loader>\n </Flex>\n );\n }\n\n if (rows.length === 0) {\n return (\n <Box padding={2}>\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {normalizedSearch\n ? formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.entries.noMatch'),\n defaultMessage: 'No entry matches “{search}”',\n },\n { search: normalizedSearch }\n )\n : formatMessage({\n id: getTranslation('components.ComponentCopyModal.noEntries'),\n defaultMessage: 'No entries found',\n })}\n </Typography>\n </Box>\n );\n }\n\n // While locked, the entries aren't `disabled`: the picked one keeps the focus while it loads.\n return rows.map((row) => (\n <EntryButton\n key={row.documentId}\n type=\"button\"\n aria-pressed={row.documentId === selectedDocumentId}\n aria-disabled={isSelectionLocked || undefined}\n disabled={row.disabled}\n onClick={() => {\n if (!isSelectionLocked) {\n onSelect(row);\n }\n }}\n >\n <Flex gap={2} alignItems=\"center\" wrap=\"wrap\">\n <Typography fontWeight=\"bold\" textColor=\"inherit\">\n {row.title}\n </Typography>\n {row.isCurrent && (\n <Badge size=\"S\" active>\n {formatMessage({\n id: getTranslation('components.ComponentCopyModal.entries.current'),\n defaultMessage: 'This entry',\n })}\n </Badge>\n )}\n </Flex>\n {row.meta && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {row.meta}\n </Typography>\n )}\n </EntryButton>\n ));\n };\n\n return (\n <EntriesPaneRoot direction=\"column\" alignItems=\"stretch\">\n <Box paddingTop={4} paddingBottom={2} paddingLeft={4} paddingRight={4}>\n <Searchbar\n ref={searchRef}\n name=\"component-copy-search\"\n value={search}\n onChange={(event: React.ChangeEvent<HTMLInputElement>) =>\n onSearchChange(event.target.value)\n }\n onClear={() => onSearchChange('')}\n clearLabel={formatMessage({\n id: 'clearLabel',\n defaultMessage: 'Clear',\n })}\n placeholder={searchLabel}\n size=\"S\"\n >\n {searchLabel}\n </Searchbar>\n </Box>\n {!normalizedSearch && (\n <Box paddingLeft={4} paddingRight={4} paddingBottom={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslation('components.ComponentCopyModal.entries.title'),\n defaultMessage: 'Recently updated entries',\n })}\n </Typography>\n </Box>\n )}\n <Scrollable direction=\"column\" alignItems=\"stretch\" gap={1} padding={2}>\n {renderRows()}\n </Scrollable>\n </EntriesPaneRoot>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * InstancePicker\n * -----------------------------------------------------------------------------------------------*/\n\ninterface InstancePickerProps {\n fieldLabel: string;\n instances: ComponentInstance[];\n onSelectedPathsChange: (paths: string[]) => void;\n renderSummary: (instance: ComponentInstance, titleId: string) => React.ReactNode;\n selectedPaths: string[];\n selection: ComponentCopySelection;\n}\n\n/**\n * The components of the picked entry: a read-only card when there's one to take, radios when one\n * of several is taken, checkboxes when several can be taken.\n */\nconst InstancePicker = ({\n fieldLabel,\n instances,\n onSelectedPathsChange,\n renderSummary,\n selectedPaths,\n selection,\n}: InstancePickerProps) => {\n const { formatMessage } = useIntl();\n const radioTitleId = React.useId();\n\n if (instances.length === 0) {\n return (\n <Typography variant=\"omega\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.preview.noComponents'),\n defaultMessage: 'No {label} in this entry',\n },\n { label: fieldLabel }\n )}\n </Typography>\n );\n }\n\n if (selection === 'single' && instances.length === 1) {\n return (\n <InstanceCard $selected>{renderSummary(instances[0], `${radioTitleId}-0`)}</InstanceCard>\n );\n }\n\n if (selection === 'single') {\n return (\n <Radio.Group\n value={selectedPaths[0] ?? ''}\n onValueChange={(value: string) => onSelectedPathsChange([value])}\n >\n {instances.map((instance, index) => {\n const titleId = `${radioTitleId}-${index}`;\n\n return (\n <InstanceCard\n key={instance.sourcePath}\n $selected={selectedPaths.includes(instance.sourcePath)}\n >\n <Radio.Item value={instance.sourcePath} aria-labelledby={titleId}>\n {renderSummary(instance, titleId)}\n </Radio.Item>\n </InstanceCard>\n );\n })}\n </Radio.Group>\n );\n }\n\n const togglePath = (sourcePath: string, checked: boolean) => {\n onSelectedPathsChange(\n checked\n ? [...selectedPaths.filter((path) => path !== sourcePath), sourcePath]\n : selectedPaths.filter((path) => path !== sourcePath)\n );\n };\n\n return (\n <>\n {instances.map((instance) => (\n <SelectableInstanceCard\n key={instance.sourcePath}\n checked={selectedPaths.includes(instance.sourcePath)}\n onCheckedChange={(checked) => togglePath(instance.sourcePath, checked)}\n renderSummary={(titleId) => renderSummary(instance, titleId)}\n />\n ))}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * InstanceSummary\n * -----------------------------------------------------------------------------------------------*/\n\ninterface InstanceSummaryProps {\n instance: ComponentInstance;\n preview: ComponentPreviewField[];\n /**\n * The id given to the title, for the control picking the component to be named after it.\n */\n titleId: string;\n}\n\nconst InstanceSummary = ({ instance, preview, titleId }: InstanceSummaryProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex tag=\"span\" direction=\"column\" alignItems=\"stretch\" gap={2} grow={1} minWidth={0}>\n <Flex tag=\"span\" gap={2} alignItems=\"baseline\" wrap=\"wrap\">\n <Typography tag=\"span\" id={titleId} fontWeight=\"bold\" textColor=\"neutral800\">\n {instance.label}\n </Typography>\n {instance.parentLabel && (\n <Typography tag=\"span\" variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: getTranslation('components.ComponentCopyModal.instance.nested'),\n defaultMessage: 'In {parent}',\n },\n { parent: instance.parentLabel }\n )}\n </Typography>\n )}\n </Flex>\n {preview.length > 0 && (\n <PreviewGrid tag=\"span\">\n {preview.map((field) => (\n <Flex tag=\"span\" key={field.name} direction=\"column\" alignItems=\"stretch\" minWidth={0}>\n <Typography tag=\"span\" variant=\"sigma\" textColor=\"neutral600\">\n {field.label}\n </Typography>\n <Typography tag=\"span\" variant=\"omega\" textColor=\"neutral800\" ellipsis>\n <CellValue type={field.type} value={field.value} />\n </Typography>\n </Flex>\n ))}\n </PreviewGrid>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SelectableInstanceCard\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SelectableInstanceCardProps {\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n renderSummary: (titleId: string) => React.ReactNode;\n}\n\n/**\n * The whole card toggles its checkbox. The checkbox is named after the title of the component\n * only, not after the whole preview.\n */\nconst SelectableInstanceCard = ({\n checked,\n onCheckedChange,\n renderSummary,\n}: SelectableInstanceCardProps) => {\n const id = React.useId();\n const titleId = `${id}-title`;\n\n return (\n <InstanceCard tag=\"label\" htmlFor={id} $selected={checked} $interactive>\n <Flex tag=\"span\" gap={3} alignItems=\"flex-start\">\n <Checkbox\n id={id}\n aria-labelledby={titleId}\n checked={checked}\n onCheckedChange={(value) => onCheckedChange(value === true)}\n />\n {renderSummary(titleId)}\n </Flex>\n </InstanceCard>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Styles\n * -----------------------------------------------------------------------------------------------*/\n\nconst FooterWarning = ({ children }: { children: React.ReactNode }) => (\n <Flex gap={2} alignItems=\"center\" color=\"warning600\">\n <WarningCircle width=\"1.6rem\" height=\"1.6rem\" aria-hidden />\n <Typography variant=\"pi\" textColor=\"warning600\">\n {children}\n </Typography>\n </Flex>\n);\n\nconst ModalContent = styled(Modal.Content)`\n width: 92rem;\n max-width: calc(100% - ${({ theme }) => theme.spaces[8]});\n height: 60rem;\n`;\n\nconst ModalFooter = styled(Modal.Footer)`\n flex: 0 0 auto;\n`;\n\nconst Panes = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n\n ${({ theme }) => theme.breakpoints.medium} {\n flex-direction: row;\n }\n`;\n\nconst EntriesPaneRoot = styled(Flex)`\n flex: 0 0 auto;\n max-height: 40%;\n min-height: 0;\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n\n ${({ theme }) => theme.breakpoints.medium} {\n width: 30rem;\n max-height: none;\n border-bottom: 0;\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n }\n`;\n\nconst PreviewPane = styled(Flex)`\n flex: 1;\n min-width: 0;\n min-height: 0;\n`;\n\nconst Scrollable = styled(Flex)`\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n`;\n\nconst PreviewHeader = styled(Flex)`\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nconst EntryButton = styled.button`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: ${({ theme }) => theme.spaces[1]};\n width: 100%;\n border: 1px solid transparent;\n border-radius: ${({ theme }) => theme.borderRadius};\n background: transparent;\n color: ${({ theme }) => theme.colors.neutral800};\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[3]};\n text-align: left;\n cursor: pointer;\n\n &:not(:disabled):not([aria-disabled='true']):hover {\n background: ${({ theme }) => theme.colors.neutral100};\n }\n\n &:not(:disabled):focus-visible {\n outline: 2px solid ${({ theme }) => theme.colors.primary600};\n outline-offset: -2px;\n }\n\n &[aria-pressed='true'] {\n border-color: ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &:disabled,\n &[aria-disabled='true'] {\n cursor: not-allowed;\n color: ${({ theme }) => theme.colors.neutral500};\n }\n`;\n\nconst InstanceCard = styled(Box)<{ $selected?: boolean; $interactive?: boolean }>`\n display: block;\n border: 1px solid\n ${({ theme, $selected }) => ($selected ? theme.colors.primary600 : theme.colors.neutral200)};\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme, $selected }) =>\n $selected ? theme.colors.primary100 : theme.colors.neutral100};\n padding: ${({ theme }) => theme.spaces[4]};\n cursor: ${({ $interactive }) => ($interactive ? 'pointer' : 'default')};\n\n @media (prefers-reduced-motion: no-preference) {\n transition:\n border-color 120ms ${({ theme }) => theme.motion.easings.easeOutQuad},\n background-color 120ms ${({ theme }) => theme.motion.easings.easeOutQuad};\n }\n\n &:hover {\n border-color: ${({ theme, $interactive, $selected }) =>\n $interactive && !$selected ? theme.colors.primary200 : undefined};\n }\n`;\n\nconst PreviewGrid = styled(Box)`\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr));\n gap: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[4]};\n`;\n\nexport { ComponentCopyModal, getEntryMeta };\nexport type { ComponentCopyModalProps, ComponentCopySelection };\n"],"names":["ENTRIES_PAGE_SIZE","getDocumentTitle","document","mainField","fallback","untitled","value","undefined","String","trim","length","getEntryMeta","count","fieldLabel","firstInstanceLabel","formatMessage","isCurrent","isFormModified","selection","id","getTranslation","defaultMessage","label","ComponentCopyModal","componentUid","maxSelection","Infinity","mode","onClose","onInsert","replacesContent","sourceFieldName","useIntl","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","currentDocument","currentDocumentMeta","useDocumentContext","edit","components","componentLayouts","settings","useDocumentLayout","model","targetValues","useForm","state","values","modified","search","setSearch","React","useState","debouncedSearch","useDebounce","searchRef","useRef","selectedEntry","setSelectedEntry","sourceDocument","setSourceDocument","selectedPaths","setSelectedPaths","isCopying","setIsCopying","returnFocusTarget","getReturnFocusTarget","isMountedRef","selectedDocumentIdRef","useEffect","current","getDocuments","data","documentsData","error","documentsError","isFetching","isFetchingDocuments","isUninitialized","isDocumentsQueryUninitialized","useLazyGetAllDocumentsQuery","getDocument","isFetchingDocument","useLazyGetDocumentQuery","getAllRelations","useLazyGetAllRelationsQuery","componentDisplayName","info","displayName","currentDocumentId","documentId","savedDocument","isNestedField","toPath","collectionType","COLLECTION_TYPES","params","_q","page","pageSize","sort","type","message","findInstances","useCallback","getComponentInstances","getMainField","uid","schema","filterOwnInstance","instances","filter","instance","sourcePath","currentEntryInstances","useMemo","getTitle","currentEntryTitle","normalizedSearch","toLowerCase","showCurrentEntry","includes","currentEntryRow","title","disabled","meta","entryRows","results","map","handleSelectEntry","row","result","isCurrentEntrySelected","paths","selectedInstances","areAllSelected","isSelectionTooLarge","previewFields","layout","flat","field","name","copyInstance","relations","getRelationsToCopy","source","loadedRelations","Promise","allSettled","targetField","unwrap","reduce","acc","index","status","connectRelations","path","cloneComponentData","__component","hasMissingRelations","some","getSuccessMessage","entry","component","handleConfirm","copies","all","getConfirmLabel","renderFooterNote","_jsx","FooterWarning","remaining","excess","Typography","variant","textColor","isLoadingEntries","isLoadingSource","loadingLabel","renderInstanceSummary","titleId","InstanceSummary","preview","getComponentPreview","renderPreview","_jsxs","Flex","direction","alignItems","justifyContent","gap","padding","grow","color","Duplicate","width","height","textAlign","Loader","small","_Fragment","PreviewHeader","paddingTop","paddingBottom","paddingLeft","paddingRight","fontWeight","ellipsis","Checkbox","checked","onCheckedChange","Scrollable","InstancePicker","onSelectedPathsChange","renderSummary","Modal","Root","open","onOpenChange","isOpen","ModalContent","onCloseAutoFocus","event","isConnected","preventDefault","focus","onEscapeKeyDown","target","Header","Title","Panes","EntriesPane","appliedSearch","isLoading","isSelectionLocked","onSearchChange","onSelect","rows","selectedDocumentId","PreviewPane","ModalFooter","shrink","Close","Button","onClick","loading","active","activeElement","HTMLElement","body","menu","closest","querySelector","CSS","escape","searchLabel","renderRows","Box","EntryButton","aria-pressed","aria-disabled","wrap","Badge","size","EntriesPaneRoot","Searchbar","ref","onChange","onClear","clearLabel","placeholder","radioTitleId","useId","InstanceCard","$selected","Radio","Group","onValueChange","Item","aria-labelledby","togglePath","SelectableInstanceCard","tag","minWidth","parentLabel","parent","PreviewGrid","CellValue","htmlFor","$interactive","children","WarningCircle","aria-hidden","styled","Content","theme","spaces","Footer","div","breakpoints","medium","colors","neutral150","button","borderRadius","neutral800","neutral100","primary600","primary200","primary100","neutral500","neutral200","motion","easings","easeOutQuad"],"mappings":"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"}
|