@strapi/content-manager 5.56.0 → 5.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/dist/admin/components/ConfigurationForm/Form.js +3 -3
  2. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Form.mjs +2 -2
  4. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  5. package/dist/admin/components/RelativeTime.js +9 -0
  6. package/dist/admin/components/RelativeTime.js.map +1 -1
  7. package/dist/admin/components/RelativeTime.mjs +10 -1
  8. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  9. package/dist/admin/features/DocumentRBAC.js +0 -3
  10. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  11. package/dist/admin/features/DocumentRBAC.mjs +1 -4
  12. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  13. package/dist/admin/history/components/VersionContent.js +3 -3
  14. package/dist/admin/history/components/VersionContent.js.map +1 -1
  15. package/dist/admin/history/components/VersionContent.mjs +2 -2
  16. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  17. package/dist/admin/history/pages/History.js +2 -1
  18. package/dist/admin/history/pages/History.js.map +1 -1
  19. package/dist/admin/history/pages/History.mjs +3 -2
  20. package/dist/admin/history/pages/History.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/EditViewPage.js +2 -2
  22. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  23. package/dist/admin/pages/EditView/EditViewPage.mjs +2 -2
  24. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/DocumentActions.js +37 -2
  26. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/DocumentActions.mjs +37 -3
  28. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +1 -0
  30. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -0
  32. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +3 -3
  34. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -2
  36. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +30 -2
  38. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +31 -4
  40. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +14 -2
  42. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +14 -2
  44. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/utils/data.js +3 -3
  46. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  47. package/dist/admin/pages/EditView/utils/data.mjs +2 -2
  48. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  49. package/dist/admin/pages/ListView/ListViewPage.js +4 -3
  50. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  51. package/dist/admin/pages/ListView/ListViewPage.mjs +4 -3
  52. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  53. package/dist/admin/preview/pages/Preview.js +2 -1
  54. package/dist/admin/preview/pages/Preview.js.map +1 -1
  55. package/dist/admin/preview/pages/Preview.mjs +3 -2
  56. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  57. package/dist/admin/services/documents.js +3 -2
  58. package/dist/admin/services/documents.js.map +1 -1
  59. package/dist/admin/services/documents.mjs +2 -2
  60. package/dist/admin/services/documents.mjs.map +1 -1
  61. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +2 -1
  62. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +19 -2
  63. package/dist/admin/src/services/documents.d.ts +10 -2
  64. package/dist/admin/translations/en.json.js +2 -0
  65. package/dist/admin/translations/en.json.js.map +1 -1
  66. package/dist/admin/translations/en.json.mjs +2 -0
  67. package/dist/admin/translations/en.json.mjs.map +1 -1
  68. package/dist/admin/utils/validation.js +3 -3
  69. package/dist/admin/utils/validation.js.map +1 -1
  70. package/dist/admin/utils/validation.mjs +2 -2
  71. package/dist/admin/utils/validation.mjs.map +1 -1
  72. package/dist/server/controllers/collection-types.js +4 -4
  73. package/dist/server/controllers/collection-types.js.map +1 -1
  74. package/dist/server/controllers/collection-types.mjs +4 -4
  75. package/dist/server/controllers/collection-types.mjs.map +1 -1
  76. package/dist/server/controllers/content-types.js +5 -7
  77. package/dist/server/controllers/content-types.js.map +1 -1
  78. package/dist/server/controllers/content-types.mjs +5 -7
  79. package/dist/server/controllers/content-types.mjs.map +1 -1
  80. package/dist/server/controllers/relations.js +19 -15
  81. package/dist/server/controllers/relations.js.map +1 -1
  82. package/dist/server/controllers/relations.mjs +17 -13
  83. package/dist/server/controllers/relations.mjs.map +1 -1
  84. package/dist/server/controllers/utils/clone.js +3 -4
  85. package/dist/server/controllers/utils/clone.js.map +1 -1
  86. package/dist/server/controllers/utils/clone.mjs +4 -5
  87. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  88. package/dist/server/controllers/validation/index.js +1 -1
  89. package/dist/server/controllers/validation/index.mjs +1 -1
  90. package/dist/server/history/controllers/history-version.js +3 -3
  91. package/dist/server/history/controllers/history-version.js.map +1 -1
  92. package/dist/server/history/controllers/history-version.mjs +3 -3
  93. package/dist/server/history/controllers/history-version.mjs.map +1 -1
  94. package/dist/server/history/services/history.js +4 -4
  95. package/dist/server/history/services/history.js.map +1 -1
  96. package/dist/server/history/services/history.mjs +4 -4
  97. package/dist/server/history/services/history.mjs.map +1 -1
  98. package/dist/server/history/services/lifecycles.js +8 -8
  99. package/dist/server/history/services/lifecycles.js.map +1 -1
  100. package/dist/server/history/services/lifecycles.mjs +3 -3
  101. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  102. package/dist/server/history/services/utils.js +7 -10
  103. package/dist/server/history/services/utils.js.map +1 -1
  104. package/dist/server/history/services/utils.mjs +5 -8
  105. package/dist/server/history/services/utils.mjs.map +1 -1
  106. package/dist/server/mcp/permissions.js +2 -2
  107. package/dist/server/mcp/permissions.js.map +1 -1
  108. package/dist/server/mcp/permissions.mjs +2 -2
  109. package/dist/server/mcp/permissions.mjs.map +1 -1
  110. package/dist/server/mcp/register-content-manager-mcp-tools.js +7 -5
  111. package/dist/server/mcp/register-content-manager-mcp-tools.js.map +1 -1
  112. package/dist/server/mcp/register-content-manager-mcp-tools.mjs +7 -5
  113. package/dist/server/mcp/register-content-manager-mcp-tools.mjs.map +1 -1
  114. package/dist/server/preview/controllers/previewScript.js +30 -15
  115. package/dist/server/preview/controllers/validation/preview.js +3 -3
  116. package/dist/server/preview/controllers/validation/preview.js.map +1 -1
  117. package/dist/server/preview/controllers/validation/preview.mjs +3 -3
  118. package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
  119. package/dist/server/services/components.js +3 -3
  120. package/dist/server/services/components.js.map +1 -1
  121. package/dist/server/services/components.mjs +3 -3
  122. package/dist/server/services/components.mjs.map +1 -1
  123. package/dist/server/services/content-structure.js +2 -2
  124. package/dist/server/services/content-structure.js.map +1 -1
  125. package/dist/server/services/content-structure.mjs +2 -2
  126. package/dist/server/services/content-structure.mjs.map +1 -1
  127. package/dist/server/services/content-types.js +3 -3
  128. package/dist/server/services/content-types.js.map +1 -1
  129. package/dist/server/services/content-types.mjs +3 -3
  130. package/dist/server/services/content-types.mjs.map +1 -1
  131. package/dist/server/services/data-mapper.js +3 -3
  132. package/dist/server/services/data-mapper.js.map +1 -1
  133. package/dist/server/services/data-mapper.mjs +3 -3
  134. package/dist/server/services/data-mapper.mjs.map +1 -1
  135. package/dist/server/services/document-manager.js +6 -6
  136. package/dist/server/services/document-manager.js.map +1 -1
  137. package/dist/server/services/document-manager.mjs +6 -6
  138. package/dist/server/services/document-manager.mjs.map +1 -1
  139. package/dist/server/services/document-metadata.js +29 -31
  140. package/dist/server/services/document-metadata.js.map +1 -1
  141. package/dist/server/services/document-metadata.mjs +29 -31
  142. package/dist/server/services/document-metadata.mjs.map +1 -1
  143. package/dist/server/services/metrics.js +3 -3
  144. package/dist/server/services/metrics.js.map +1 -1
  145. package/dist/server/services/metrics.mjs +3 -3
  146. package/dist/server/services/metrics.mjs.map +1 -1
  147. package/dist/server/services/permission-checker.js +2 -2
  148. package/dist/server/services/permission-checker.js.map +1 -1
  149. package/dist/server/services/permission-checker.mjs +1 -1
  150. package/dist/server/services/permission-checker.mjs.map +1 -1
  151. package/dist/server/services/permission.js +2 -3
  152. package/dist/server/services/permission.js.map +1 -1
  153. package/dist/server/services/permission.mjs +2 -3
  154. package/dist/server/services/permission.mjs.map +1 -1
  155. package/dist/server/services/populate-builder.js +4 -4
  156. package/dist/server/services/populate-builder.js.map +1 -1
  157. package/dist/server/services/populate-builder.mjs +4 -4
  158. package/dist/server/services/populate-builder.mjs.map +1 -1
  159. package/dist/server/services/utils/configuration/attributes.js +1 -2
  160. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  161. package/dist/server/services/utils/configuration/attributes.mjs +2 -3
  162. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  163. package/dist/server/services/utils/configuration/settings.js +4 -7
  164. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  165. package/dist/server/services/utils/configuration/settings.mjs +2 -5
  166. package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
  167. package/dist/server/services/utils/draft.js +8 -7
  168. package/dist/server/services/utils/draft.js.map +1 -1
  169. package/dist/server/services/utils/draft.mjs +6 -5
  170. package/dist/server/services/utils/draft.mjs.map +1 -1
  171. package/dist/server/services/utils/populate.js +10 -11
  172. package/dist/server/services/utils/populate.js.map +1 -1
  173. package/dist/server/services/utils/populate.mjs +9 -10
  174. package/dist/server/services/utils/populate.mjs.map +1 -1
  175. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  176. package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
  177. package/dist/server/src/history/services/utils.d.ts +2 -2
  178. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  179. package/dist/server/src/index.d.ts +1 -1
  180. package/dist/server/src/index.d.ts.map +1 -1
  181. package/dist/server/src/mcp/permissions.d.ts +1 -1
  182. package/dist/server/src/mcp/permissions.d.ts.map +1 -1
  183. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts +3 -1
  184. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -1
  185. package/dist/server/src/mcp/types.d.ts +2 -2
  186. package/dist/server/src/services/content-types.d.ts.map +1 -1
  187. package/dist/server/src/services/data-mapper.d.ts +1 -1
  188. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  189. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  190. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  191. package/dist/server/src/services/index.d.ts +1 -1
  192. package/dist/server/src/services/index.d.ts.map +1 -1
  193. package/dist/server/src/services/metrics.d.ts.map +1 -1
  194. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  195. package/dist/server/src/services/permission.d.ts.map +1 -1
  196. package/dist/server/src/services/populate-builder.d.ts.map +1 -1
  197. package/dist/server/src/services/utils/configuration/index.d.ts +10 -1
  198. package/dist/server/src/services/utils/configuration/index.d.ts.map +1 -1
  199. package/dist/server/src/services/utils/configuration/settings.d.ts +10 -1
  200. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  201. package/dist/server/src/services/utils/draft.d.ts.map +1 -1
  202. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  203. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"RelationModal.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n DescriptionComponentRenderer,\n Form as FormContext,\n useRBAC,\n useStrapiApp,\n createContext,\n useForm,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Dialog,\n EmptyStateLayout,\n Flex,\n IconButton,\n Loader,\n Modal,\n Typography,\n TextButton,\n} from '@strapi/design-system';\nimport { ArrowLeft, ArrowsOut, WarningCircle } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport { useIntl } from 'react-intl';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../../../constants/collections';\nimport { PERMISSIONS } from '../../../../../constants/plugin';\nimport { buildValidParams } from '../../../../../exports';\nimport { DocumentRBAC } from '../../../../../features/DocumentRBAC';\nimport { useDoc, useDocument, type UseDocument } from '../../../../../hooks/useDocument';\nimport { type DocumentMeta } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { useLazyGetDocumentQuery } from '../../../../../services/documents';\nimport { setIn } from '../../../../../utils/objects';\nimport { createYupSchema } from '../../../../../utils/validation';\nimport { DocumentActionButton } from '../../../components/DocumentActions';\nimport { DocumentStatus } from '../../DocumentStatus';\nimport { FormLayout } from '../../FormLayout';\nimport { ComponentProvider } from '../ComponentContext';\n\nimport type { RelationOpenMode } from '../../../../../../../shared/contracts/content-types';\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../../../../content-manager';\nimport type { AnyData } from '../../../utils/data';\n\nexport function getCollectionType(url: string) {\n const regex = new RegExp(`(${COLLECTION_TYPES}|${SINGLE_TYPES})`);\n const match = url.match(regex);\n return match ? match[1] : undefined;\n}\n\nconst StyledModalContent = styled(Modal.Content)`\n width: 90%;\n max-width: 100%;\n height: 90%;\n max-height: 100%;\n`;\n\nconst getFullPageUrl = (currentDocumentMeta: DocumentMeta): string => {\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const queryParams = currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : '';\n\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModalRenderer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * A local \"connect\" edit waiting to be applied to a document that isn't the modal's current one.\n * Needed because every level of a nested relation-on-the-fly chain (root document aside) shares\n * one Form instance whose values get wholesale-replaced by fresh initialValues on every\n * `documentHistory` navigation — writing the field directly while a different level is current\n * would land on the wrong document and then immediately be discarded. Instead the patch is stashed\n * here, keyed by the target document, and merged back into that document's initialValues once it\n * becomes current again (see `RelationModal`'s `initialValues` below).\n */\ninterface PendingConnectPatch {\n fieldToConnect: string;\n relationValue: AnyData;\n componentUIDPath?: string;\n componentUID?: string;\n}\n\nconst getDocumentHistoryKey = (meta: Pick<DocumentMeta, 'model' | 'documentId'>) =>\n `${meta.model}::${meta.documentId}`;\n\nconst EMPTY_PENDING_CONNECTS: PendingConnectPatch[] = [];\n\ninterface State {\n documentHistory: DocumentMeta[];\n confirmDialogIntent:\n | null // No dialog\n | 'close' // Close the modal\n | 'back' // Go back one document in the modal's history\n | 'navigate' // Open the document in the edit view instead of in the modal\n | DocumentMeta; // Open a specific document in the modal\n isModalOpen: boolean;\n hasUnsavedChanges: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n getParentFormValues?: () => AnyData;\n // Sets a field directly on the parent's own (live, unsaved) form state, so connecting a\n // newly-created relation doesn't require persisting the whole parent document to the server.\n setParentFormValue?: (path: string, value: unknown) => void;\n pendingConnects: Record<string, PendingConnectPatch[]>;\n}\n\ntype Action =\n | {\n type: 'GO_TO_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n getParentFormValues?: () => AnyData;\n setParentFormValue?: (path: string, value: unknown) => void;\n };\n }\n | {\n type: 'GO_BACK';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'GO_FULL_PAGE';\n }\n | {\n type: 'GO_TO_CREATED_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n // Present when the document being connected belongs to a NESTED parent (one still further\n // up `documentHistory`, not the root document) — see `pendingConnects` on `State`.\n connectPatch?: PendingConnectPatch;\n };\n }\n | {\n type: 'CANCEL_CONFIRM_DIALOG';\n }\n | {\n type: 'CLOSE_MODAL';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'SET_HAS_UNSAVED_CHANGES';\n payload: { hasUnsavedChanges: boolean };\n }\n | {\n type: 'CLEAR_PENDING_CONNECTS';\n payload: { documentMeta: Pick<DocumentMeta, 'model' | 'documentId'> };\n };\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'GO_TO_RELATION':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return {\n ...state,\n confirmDialogIntent: action.payload.document,\n fieldToConnect: action.payload.fieldToConnect,\n fieldToConnectUID: action.payload.fieldToConnectUID,\n getParentFormValues: action.payload.getParentFormValues,\n setParentFormValue: action.payload.setParentFormValue,\n };\n }\n\n const lastItemDocumentHistory = state.documentHistory.at(-1);\n const hasToResetDocumentHistory =\n lastItemDocumentHistory && !lastItemDocumentHistory.documentId;\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: hasToResetDocumentHistory\n ? [action.payload.document]\n : [...state.documentHistory, action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnect,\n fieldToConnectUID: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnectUID,\n getParentFormValues: hasToResetDocumentHistory\n ? undefined\n : action.payload.getParentFormValues,\n setParentFormValue: hasToResetDocumentHistory\n ? undefined\n : action.payload.setParentFormValue,\n };\n case 'GO_BACK':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'back' };\n }\n\n return {\n ...state,\n documentHistory: state.documentHistory.slice(0, -1),\n confirmDialogIntent: null,\n };\n case 'GO_FULL_PAGE':\n if (state.hasUnsavedChanges) {\n return { ...state, confirmDialogIntent: 'navigate' };\n }\n\n return {\n ...state,\n documentHistory: [],\n hasUnsavedChanges: false,\n isModalOpen: false,\n confirmDialogIntent: null,\n pendingConnects: {},\n };\n case 'GO_TO_CREATED_RELATION': {\n // Anything beyond the second-to-last history entry is a nested parent still open further up\n // the stack — the root document (outside documentHistory entirely) is handled directly via\n // setParentFormValue instead, since its Form never gets replaced by modal navigation.\n const nestedParentMeta =\n state.documentHistory.length >= 2 ? state.documentHistory.at(-2) : undefined;\n const pendingConnects =\n nestedParentMeta && action.payload.connectPatch\n ? {\n ...state.pendingConnects,\n [getDocumentHistoryKey(nestedParentMeta)]: [\n ...(state.pendingConnects[getDocumentHistoryKey(nestedParentMeta)] ?? []),\n action.payload.connectPatch,\n ],\n }\n : state.pendingConnects;\n\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: state.documentHistory\n ? [...state.documentHistory.slice(0, -1), action.payload.document]\n : [action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: undefined,\n fieldToConnectUID: undefined,\n getParentFormValues: undefined,\n setParentFormValue: undefined,\n pendingConnects,\n };\n }\n case 'CANCEL_CONFIRM_DIALOG':\n return {\n ...state,\n confirmDialogIntent: null,\n };\n case 'CLOSE_MODAL':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'close' };\n }\n\n return {\n ...state,\n documentHistory: [],\n confirmDialogIntent: null,\n hasUnsavedChanges: false,\n isModalOpen: false,\n fieldToConnect: undefined,\n fieldToConnectUID: undefined,\n getParentFormValues: undefined,\n setParentFormValue: undefined,\n pendingConnects: {},\n };\n case 'SET_HAS_UNSAVED_CHANGES':\n return {\n ...state,\n hasUnsavedChanges: action.payload.hasUnsavedChanges,\n };\n case 'CLEAR_PENDING_CONNECTS': {\n const key = getDocumentHistoryKey(action.payload.documentMeta);\n\n if (!(key in state.pendingConnects)) {\n return state;\n }\n\n const pendingConnects = { ...state.pendingConnects };\n delete pendingConnects[key];\n\n return { ...state, pendingConnects };\n }\n default:\n return state;\n }\n}\n\n/**\n * Whether any relation-on-the-fly modal is currently open, anywhere on the page.\n *\n * The modal's React context (`RelationModalProvider`, below) only reaches the modal's own subtree\n * (the relation field that renders it), so components mounted outside that subtree — like the\n * background entry's save/publish buttons in the side panel — can't read `state.isModalOpen` from\n * context. This module-level counter is the cross-tree signal those components use instead, so\n * they can tell a relation modal is open and suppress their own keyboard shortcuts while it is.\n */\nlet openRelationModalCount = 0;\n\nconst isAnyRelationModalOpen = () => openRelationModalCount > 0;\n\ninterface RelationModalContextValue {\n state: State;\n dispatch: React.Dispatch<Action>;\n rootDocumentMeta: DocumentMeta;\n currentDocumentMeta: DocumentMeta;\n currentDocument: ReturnType<UseDocument>;\n onPreview?: () => void;\n isCreating: boolean;\n relationOpenMode: RelationOpenMode;\n}\n\nconst [RelationModalProvider, useRelationModal] =\n createContext<RelationModalContextValue>('RelationModal');\n\nfunction isRenderProp(\n children: RelationModalRendererProps['children']\n): children is (props: {\n dispatch: (action: Action) => void;\n relationOpenMode: RelationOpenMode;\n}) => React.ReactNode {\n return typeof children === 'function';\n}\n\ntype RelationModalRendererProps =\n // Is editing\n | {\n relation: DocumentMeta;\n children: React.ReactNode;\n }\n // Is creating\n | {\n relation?: never;\n children: (props: {\n dispatch: (action: Action) => void;\n relationOpenMode: RelationOpenMode;\n }) => React.ReactNode;\n };\n\nconst RootRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n\n const [state, dispatch] = React.useReducer(reducer, {\n documentHistory: [],\n confirmDialogIntent: null,\n isModalOpen: false,\n hasUnsavedChanges: false,\n fieldToConnect: undefined,\n pendingConnects: {},\n });\n\n const rootDocument = useDoc();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query ?? {}), [query]);\n\n const rootDocumentMeta: DocumentMeta = {\n documentId: rootDocument.document?.documentId || '',\n model: rootDocument.model,\n collectionType: rootDocument.collectionType,\n params,\n };\n\n // Get the relationOpenMode setting from the current document's layout configuration\n const documentLayoutResponse = useDocumentLayout(rootDocument.model);\n const relationOpenMode: RelationOpenMode =\n documentLayoutResponse.edit?.settings?.relationOpenMode ?? 'modal';\n\n const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;\n const currentDocument = useDocument(currentDocumentMeta);\n // TODO: check if we can remove the single type check\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const isCreating = !currentDocumentMeta.documentId && !isSingleType;\n\n const { isModalOpen } = state;\n React.useEffect(() => {\n if (!isModalOpen) {\n return;\n }\n\n openRelationModalCount += 1;\n\n return () => {\n openRelationModalCount -= 1;\n };\n }, [isModalOpen]);\n\n /**\n * There is no parent relation, so the relation modal doesn't exist. Create it and set up all the\n * pieces that will be used by potential child relations: the context, header, form, and footer.\n */\n return (\n <RelationModalProvider\n state={state}\n dispatch={dispatch}\n rootDocumentMeta={rootDocumentMeta}\n currentDocumentMeta={currentDocumentMeta}\n currentDocument={currentDocument}\n isCreating={isCreating}\n relationOpenMode={relationOpenMode}\n >\n <RelationModal>\n {isRenderProp(children)\n ? children({ dispatch, relationOpenMode })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n )}\n </RelationModal>\n </RelationModalProvider>\n );\n};\n\nconst NestedRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n const dispatch = useRelationModal('NestedRelation', (state) => state.dispatch);\n const relationOpenMode = useRelationModal('NestedRelation', (state) => state.relationOpenMode);\n\n return isRenderProp(children)\n ? children({ dispatch, relationOpenMode })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n ); /* This is the trigger that will be rendered in the parent relation */\n};\n\n/**\n * Component responsible for rendering its children wrapped in a modal, form and context if needed\n */\nconst RelationModalRenderer = (props: RelationModalRendererProps) => {\n // We're in a nested relation if the relation modal context is not undefined\n const isNested = useRelationModal('RelationContextWrapper', (state) => state != undefined, false);\n\n return isNested ? <NestedRelationRenderer {...props} /> : <RootRelationRenderer {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModal\n * -----------------------------------------------------------------------------------------------*/\nconst generateCreateUrl = (currentDocumentMeta: DocumentMeta) => {\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}/create${\n currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : ''\n }`;\n};\n\n/**\n * Pre-fill the inverse relation with the parent that opened create-on-the-fly.\n * One-way relations have no inverse; unsaved parents have no documentId.\n */\nconst prefillParentRelation = ({\n initialValues,\n fieldToConnect,\n childSchema,\n parentDocument,\n parentModel,\n}: {\n initialValues?: AnyData;\n fieldToConnect?: string;\n childSchema?: { attributes?: Record<string, unknown> };\n parentDocument?: Record<string, unknown>;\n parentModel?: string;\n}): AnyData | undefined => {\n const documentId = parentDocument?.documentId;\n // mappedBy/inversedBy names a top-level attribute, not a component path.\n const parentFieldName = fieldToConnect;\n\n if (!initialValues || typeof documentId !== 'string' || !documentId || !parentFieldName) {\n return initialValues;\n }\n\n const inverseField = Object.entries(childSchema?.attributes ?? {}).find(([, attribute]) => {\n const relation = attribute as {\n type?: string;\n target?: string;\n inversedBy?: string;\n mappedBy?: string;\n };\n\n return (\n relation.type === 'relation' &&\n relation.target === parentModel &&\n (relation.inversedBy === parentFieldName || relation.mappedBy === parentFieldName)\n );\n })?.[0];\n\n if (!inverseField) {\n return initialValues;\n }\n\n const id = parentDocument.id ?? documentId;\n\n return {\n ...initialValues,\n [inverseField]: {\n connect: [\n {\n ...Object.fromEntries(\n Object.entries(parentDocument).filter(\n ([, value]) =>\n value === null || ['string', 'number', 'boolean'].includes(typeof value)\n )\n ),\n id,\n documentId,\n apiData: {\n id,\n documentId,\n locale: parentDocument.locale,\n isTemporary: true,\n },\n __temp_key__: generateNKeysBetween(null, null, 1)[0],\n },\n ],\n disconnect: [],\n },\n };\n};\n\nconst RelationModal = ({ children }: { children: React.ReactNode }) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n const rootDocumentMeta = useRelationModal('RelationModalForm', (state) => state.rootDocumentMeta);\n const parentDocumentMeta = state.documentHistory.at(-2) ?? rootDocumentMeta;\n const parentDocument = useDocument(parentDocumentMeta, {\n skip: !isCreating || !state.fieldToConnect,\n });\n\n const pendingConnectsForCurrent =\n useRelationModal(\n 'RelationModalForm',\n (state) => state.state.pendingConnects[getDocumentHistoryKey(currentDocumentMeta)],\n false\n ) ?? EMPTY_PENDING_CONNECTS;\n\n // Re-apply any local \"connect\" edits recorded for this document while a nested child was open,\n // since navigating here just replaced the Form's values with a fresh, patch-less snapshot.\n const initialValues = React.useMemo(() => {\n const baseInitialValues = prefillParentRelation({\n initialValues: currentDocument.getInitialFormValues(isCreating),\n fieldToConnect: isCreating ? state.fieldToConnect : undefined,\n childSchema: currentDocument.schema,\n parentDocument: parentDocument.document,\n parentModel: parentDocumentMeta.model,\n });\n\n // The document (and its default values) may still be loading, e.g. right after navigating\n // back to a document that now has a real documentId. Let the loading guard below handle it\n // instead of trying to patch a value that doesn't exist yet.\n if (!baseInitialValues) {\n return baseInitialValues;\n }\n\n return pendingConnectsForCurrent.reduce((values, patch) => {\n const withRelation = setIn(values, patch.fieldToConnect, patch.relationValue);\n\n return patch.componentUIDPath && patch.componentUID !== undefined\n ? setIn(withRelation, patch.componentUIDPath, patch.componentUID)\n : withRelation;\n }, baseInitialValues);\n }, [\n currentDocument,\n isCreating,\n state.fieldToConnect,\n parentDocument.document,\n parentDocumentMeta.model,\n pendingConnectsForCurrent,\n ]);\n\n /*\n * We must wrap the modal window with Component Provider with reset values\n * to avoid inheriting id and uid from the root document and having weird\n * behaviors with simple relationships..\n */\n return (\n <ComponentProvider id={undefined} level={-1} uid={undefined} type={undefined}>\n <Modal.Root\n open={state.isModalOpen}\n onOpenChange={(open) => {\n if (!open) {\n dispatch({\n type: 'CLOSE_MODAL',\n payload: { shouldBypassConfirmation: false },\n });\n }\n }}\n >\n {children}\n <StyledModalContent>\n <Modal.Header gap={2}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Flex gap={2}>\n <IconButton\n withTooltip={false}\n label={formatMessage({ id: 'global.back', defaultMessage: 'Back' })}\n variant=\"ghost\"\n disabled={state.documentHistory.length < 2}\n onClick={() => {\n dispatch({\n type: 'GO_BACK',\n payload: { shouldBypassConfirmation: false },\n });\n }}\n marginRight={1}\n >\n <ArrowLeft />\n </IconButton>\n <Typography tag=\"span\" fontWeight={600}>\n {isCreating\n ? formatMessage({\n id: 'content-manager.relation.create',\n defaultMessage: 'Create a relation',\n })\n : formatMessage({\n id: 'content-manager.components.RelationInputModal.modal-title',\n defaultMessage: 'Edit a relation',\n })}\n </Typography>\n </Flex>\n <IconButton\n onClick={() => {\n dispatch({\n type: 'GO_FULL_PAGE',\n });\n if (!state.hasUnsavedChanges) {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(getFullPageUrl(currentDocumentMeta));\n }\n }\n }}\n variant=\"tertiary\"\n label={formatMessage({\n id: 'content-manager.components.RelationInputModal.button-fullpage',\n defaultMessage: 'Go to entry',\n })}\n >\n <ArrowsOut />\n </IconButton>\n </Flex>\n </Modal.Header>\n <Modal.Body>\n <FormContext\n method={isCreating ? 'POST' : 'PUT'}\n initialValues={initialValues}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n currentDocument.schema?.attributes,\n currentDocument.components,\n {\n status: currentDocument.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n <RelationModalBody />\n </FormContext>\n </Modal.Body>\n </StyledModalContent>\n </Modal.Root>\n </ComponentProvider>\n );\n};\n/**\n * All the main content (not header and footer) of the relation modal, plus the confirmation dialog.\n * Will be wrapped in a Modal.Body by the RelationModal component.\n * Cannot be moved directly inside RelationModal because it needs access to the context via hooks.\n */\nconst RelationModalBody = () => {\n const navigate = useNavigate();\n const { pathname, search } = useLocation();\n const { formatMessage } = useIntl();\n\n const [triggerRefetchDocument] = useLazyGetDocumentQuery();\n\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const rootDocumentMeta = useRelationModal('RelationModalForm', (state) => state.rootDocumentMeta);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n\n /**\n * One-way sync the modified state from the form to the modal state.\n * It is needed because we need to consume state from the form context in order to lift it up\n * into the modal context. It is not possible otherwise because the modal needs the form state,\n * but it must be a parent of the form.\n */\n const modified = useForm('FormWatcher', (state) => state.modified);\n const isSubmitting = useForm('FormWatcher', (state) => state.isSubmitting);\n const hasUnsavedChanges = modified && !isSubmitting;\n React.useEffect(() => {\n dispatch({ type: 'SET_HAS_UNSAVED_CHANGES', payload: { hasUnsavedChanges } });\n }, [hasUnsavedChanges, dispatch]);\n\n const handleCloseModal = (shouldBypassConfirmation: boolean) => {\n dispatch({ type: 'CLOSE_MODAL', payload: { shouldBypassConfirmation } });\n\n if (shouldBypassConfirmation || !state.hasUnsavedChanges) {\n // TODO: check if we can avoid this by relying on RTK invalidatesTags.\n // If so we can delete this function and dispatch the events directly\n triggerRefetchDocument(\n // TODO check if params should be removed (as they were before)\n rootDocumentMeta,\n // Favor the cache\n true\n );\n }\n };\n\n const handleRedirection = () => {\n const editViewUrl = `${pathname}${search}`;\n const fullPageUrl = getFullPageUrl(currentDocumentMeta);\n const isRootDocumentUrl = editViewUrl.includes(fullPageUrl);\n\n if (isRootDocumentUrl) {\n handleCloseModal(true);\n } else {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(fullPageUrl);\n }\n }\n };\n\n const handleConfirm = () => {\n if (state.confirmDialogIntent === null) {\n return;\n }\n if (state.confirmDialogIntent === 'navigate') {\n handleRedirection();\n } else if (state.confirmDialogIntent === 'back') {\n dispatch({ type: 'GO_BACK', payload: { shouldBypassConfirmation: true } });\n } else if (state.confirmDialogIntent === 'close') {\n handleCloseModal(true);\n } else if ('documentId' in state.confirmDialogIntent) {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: {\n document: state.confirmDialogIntent,\n shouldBypassConfirmation: true,\n fieldToConnect: state.fieldToConnect,\n fieldToConnectUID: state.fieldToConnectUID,\n getParentFormValues: state.getParentFormValues,\n setParentFormValue: state.setParentFormValue,\n },\n });\n }\n };\n\n return (\n <>\n <RelationModalForm />\n <Dialog.Root open={state.confirmDialogIntent != null}>\n <ConfirmDialog\n onConfirm={() => handleConfirm()}\n onCancel={() => dispatch({ type: 'CANCEL_CONFIRM_DIALOG' })}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.confirmation-message',\n defaultMessage:\n 'Some changes were not saved. Are you sure you want to close this relation? All changes that were not saved will be lost.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </>\n );\n};\n\nconst RelationModalTrigger = ({\n children,\n relation,\n}: {\n children: React.ReactNode;\n relation: DocumentMeta;\n}) => {\n const dispatch = useRelationModal('ModalTrigger', (state) => state.dispatch);\n const relationOpenMode = useRelationModal('ModalTrigger', (state) => state.relationOpenMode);\n\n const fullPageUrl = getFullPageUrl(relation);\n\n if (relationOpenMode === 'newTab') {\n return (\n <StyledRelationLink to={fullPageUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </StyledRelationLink>\n );\n }\n\n if (relationOpenMode === 'page') {\n return <StyledRelationLink to={fullPageUrl}>{children}</StyledRelationLink>;\n }\n\n return (\n <StyledTextButton\n onClick={() =>\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: relation, shouldBypassConfirmation: false },\n })\n }\n >\n {children}\n </StyledTextButton>\n );\n};\n\nconst StyledTextButton = styled(TextButton)`\n max-width: 100%;\n & > span {\n font-size: ${({ theme }) => theme.fontSizes[2]};\n width: inherit;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n`;\n\nconst StyledRelationLink = styled(RouterLink)`\n max-width: 100%;\n font-size: ${({ theme }) => theme.fontSizes[2]};\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n display: block;\n color: ${({ theme }) => theme.colors.primary600};\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: ${({ theme }) => theme.colors.primary700};\n text-decoration: underline;\n }\n`;\n\n/**\n * The mini edit view for a relation that is displayed inside a modal.\n * It's complete with its header, document actions and form layout.\n */\nconst RelationModalForm = () => {\n const { formatMessage } = useIntl();\n\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const documentLayoutResponse = useDocumentLayout(currentDocumentMeta.model);\n const plugins = useStrapiApp('RelationModalForm', (state) => state.plugins);\n\n const initialValues = isCreating\n ? currentDocument.getInitialFormValues(isCreating)\n : currentDocument.getInitialFormValues();\n\n const {\n permissions = [],\n isLoading: isLoadingPermissions,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: currentDocumentMeta.model,\n }))\n );\n\n const isLoading =\n isLoadingPermissions || documentLayoutResponse.isLoading || currentDocument.isLoading;\n\n if (isLoading && !currentDocument.document?.documentId) {\n return (\n <Loader small>\n {formatMessage({\n id: 'content-manager.ListViewTable.relation-loading',\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n );\n }\n\n if (\n error ||\n !currentDocumentMeta.model ||\n documentLayoutResponse.error ||\n (!isCreating && !currentDocument.document) ||\n (!isCreating && !currentDocument.meta) ||\n !currentDocument.schema ||\n !initialValues\n ) {\n return (\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n />\n </Flex>\n );\n }\n\n const documentTitle = currentDocument.getTitle(documentLayoutResponse.edit.settings.mainField);\n const hasDraftAndPublished = currentDocument.schema?.options?.draftAndPublish ?? false;\n\n const props = {\n activeTab: 'draft',\n collectionType: currentDocumentMeta.collectionType,\n model: currentDocumentMeta.model,\n documentId: currentDocumentMeta.documentId,\n document: currentDocument.document,\n meta: currentDocument.meta,\n } satisfies DocumentActionProps;\n\n return (\n <DocumentRBAC permissions={permissions} model={currentDocumentMeta.model}>\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={2}>\n <Flex width=\"100%\" justifyContent=\"space-between\" gap={2}>\n <Typography tag=\"h2\" variant=\"alpha\">\n {documentTitle}\n </Typography>\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('relation-modal')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) => {\n return [action.position].flat().includes('relation-modal');\n });\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n {hasDraftAndPublished ? (\n <Box>\n <DocumentStatus status={currentDocument.document?.status} />\n </Box>\n ) : null}\n </Flex>\n\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\" paddingTop={7}>\n <Box overflow=\"auto\" flex={1}>\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={currentDocument}\n hasBackground={false}\n />\n </Box>\n </Flex>\n </DocumentRBAC>\n );\n};\n\nexport {\n reducer,\n RelationModalRenderer,\n useRelationModal,\n isAnyRelationModalOpen,\n getFullPageUrl,\n generateCreateUrl,\n prefillParentRelation,\n};\nexport type { State, Action, RelationOpenMode, PendingConnectPatch };\n"],"names":["getCollectionType","url","regex","RegExp","COLLECTION_TYPES","SINGLE_TYPES","match","undefined","StyledModalContent","styled","Modal","Content","getFullPageUrl","currentDocumentMeta","isSingleType","collectionType","queryParams","params","locale","model","documentId","getDocumentHistoryKey","meta","EMPTY_PENDING_CONNECTS","reducer","state","action","type","hasUnsavedChanges","payload","shouldBypassConfirmation","confirmDialogIntent","document","fieldToConnect","fieldToConnectUID","getParentFormValues","setParentFormValue","lastItemDocumentHistory","documentHistory","at","hasToResetDocumentHistory","isModalOpen","slice","pendingConnects","nestedParentMeta","length","connectPatch","key","documentMeta","openRelationModalCount","isAnyRelationModalOpen","RelationModalProvider","useRelationModal","createContext","isRenderProp","children","RootRelationRenderer","props","dispatch","React","useReducer","rootDocument","useDoc","query","useQueryParams","useMemo","buildValidParams","rootDocumentMeta","documentLayoutResponse","useDocumentLayout","relationOpenMode","edit","settings","currentDocument","useDocument","isCreating","useEffect","_jsx","RelationModal","relation","RelationModalTrigger","NestedRelationRenderer","RelationModalRenderer","isNested","generateCreateUrl","prefillParentRelation","initialValues","childSchema","parentDocument","parentModel","parentFieldName","inverseField","Object","entries","attributes","find","attribute","target","inversedBy","mappedBy","id","connect","fromEntries","filter","value","includes","apiData","isTemporary","__temp_key__","generateNKeysBetween","disconnect","formatMessage","useIntl","navigate","useNavigate","parentDocumentMeta","skip","pendingConnectsForCurrent","baseInitialValues","getInitialFormValues","schema","reduce","values","patch","withRelation","setIn","relationValue","componentUIDPath","componentUID","ComponentProvider","level","uid","_jsxs","Root","open","onOpenChange","Header","gap","Flex","justifyContent","alignItems","width","IconButton","withTooltip","label","defaultMessage","variant","disabled","onClick","marginRight","ArrowLeft","Typography","tag","fontWeight","ArrowsOut","Body","FormContext","method","validate","options","yupSchema","createYupSchema","components","status","abortEarly","RelationModalBody","pathname","search","useLocation","triggerRefetchDocument","useLazyGetDocumentQuery","modified","useForm","isSubmitting","handleCloseModal","handleRedirection","editViewUrl","fullPageUrl","isRootDocumentUrl","handleConfirm","_Fragment","RelationModalForm","Dialog","ConfirmDialog","onConfirm","onCancel","StyledRelationLink","to","rel","StyledTextButton","TextButton","theme","fontSizes","RouterLink","colors","primary600","primary700","plugins","useStrapiApp","permissions","isLoading","isLoadingPermissions","error","useRBAC","PERMISSIONS","map","subject","Loader","small","height","EmptyStateLayout","icon","WarningCircle","content","documentTitle","getTitle","mainField","hasDraftAndPublished","draftAndPublish","activeTab","DocumentRBAC","direction","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","actions","filteredActions","position","flat","primaryAction","secondaryAction","DocumentActionButton","Box","DocumentStatus","flex","overflow","paddingTop","FormLayout","layout","hasBackground"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDO,SAASA,kBAAkBC,GAAW,EAAA;IAC3C,MAAMC,KAAAA,GAAQ,IAAIC,MAAAA,CAAO,CAAC,CAAC,EAAEC,4BAAAA,CAAiB,CAAC,EAAEC,wBAAAA,CAAa,CAAC,CAAC,CAAA;IAChE,MAAMC,KAAAA,GAAQL,GAAAA,CAAIK,KAAK,CAACJ,KAAAA,CAAAA;AACxB,IAAA,OAAOI,KAAAA,GAAQA,KAAK,CAAC,CAAA,CAAE,GAAGC,SAAAA;AAC5B;AAEA,MAAMC,kBAAAA,GAAqBC,uBAAAA,CAAOC,kBAAAA,CAAMC,OAAO,CAAC;;;;;AAKhD,CAAC;AAED,MAAMC,iBAAiB,CAACC,mBAAAA,GAAAA;IACtB,MAAMC,YAAAA,GAAeD,mBAAAA,CAAoBE,cAAc,KAAKV,wBAAAA;AAC5D,IAAA,MAAMW,WAAAA,GAAcH,mBAAAA,CAAoBI,MAAM,EAAEC,MAAAA,GAC5C,CAAC,uBAAuB,EAAEL,mBAAAA,CAAoBI,MAAM,CAACC,MAAM,EAAE,GAC7D,EAAA;AAEJ,IAAA,OAAO,CAAC,iBAAiB,EAAEL,mBAAAA,CAAoBE,cAAc,CAAC,CAAC,EAAEF,mBAAAA,CAAoBM,KAAK,GAAGL,YAAAA,GAAe,EAAA,GAAK,MAAMD,mBAAAA,CAAoBO,UAAU,GAAGJ,WAAAA,CAAAA,CAAa;AACvK;AAsBA,MAAMK,qBAAAA,GAAwB,CAACC,IAAAA,GAC7B,CAAA,EAAGA,IAAAA,CAAKH,KAAK,CAAC,EAAE,EAAEG,IAAAA,CAAKF,UAAU,CAAA,CAAE;AAErC,MAAMG,yBAAgD,EAAE;AAkExD,SAASC,OAAAA,CAAQC,KAAY,EAAEC,MAAc,EAAA;AAC3C,IAAA,OAAQA,OAAOC,IAAI;QACjB,KAAK,gBAAA;YACH,IAAIF,KAAAA,CAAMG,iBAAiB,IAAI,CAACF,OAAOG,OAAO,CAACC,wBAAwB,EAAE;gBACvE,OAAO;AACL,oBAAA,GAAGL,KAAK;oBACRM,mBAAAA,EAAqBL,MAAAA,CAAOG,OAAO,CAACG,QAAQ;oBAC5CC,cAAAA,EAAgBP,MAAAA,CAAOG,OAAO,CAACI,cAAc;oBAC7CC,iBAAAA,EAAmBR,MAAAA,CAAOG,OAAO,CAACK,iBAAiB;oBACnDC,mBAAAA,EAAqBT,MAAAA,CAAOG,OAAO,CAACM,mBAAmB;oBACvDC,kBAAAA,EAAoBV,MAAAA,CAAOG,OAAO,CAACO;AACrC,iBAAA;AACF,YAAA;AAEA,YAAA,MAAMC,0BAA0BZ,KAAAA,CAAMa,eAAe,CAACC,EAAE,CAAC,EAAC,CAAA;AAC1D,YAAA,MAAMC,yBAAAA,GACJH,uBAAAA,IAA2B,CAACA,uBAAAA,CAAwBjB,UAAU;YAChE,OAAO;AACL,gBAAA,GAAGK,KAAK;;AAERa,gBAAAA,eAAAA,EAAiBE,yBAAAA,GACb;oBAACd,MAAAA,CAAOG,OAAO,CAACG;iBAAS,GACzB;AAAIP,oBAAAA,GAAAA,KAAAA,CAAMa,eAAe;oBAAEZ,MAAAA,CAAOG,OAAO,CAACG;AAAS,iBAAA;gBACvDD,mBAAAA,EAAqB,IAAA;gBACrBU,WAAAA,EAAa,IAAA;AACbR,gBAAAA,cAAAA,EAAgBO,yBAAAA,GAA4BjC,SAAAA,GAAYmB,MAAAA,CAAOG,OAAO,CAACI,cAAc;AACrFC,gBAAAA,iBAAAA,EAAmBM,yBAAAA,GAA4BjC,SAAAA,GAAYmB,MAAAA,CAAOG,OAAO,CAACK,iBAAiB;AAC3FC,gBAAAA,mBAAAA,EAAqBK,yBAAAA,GACjBjC,SAAAA,GACAmB,MAAAA,CAAOG,OAAO,CAACM,mBAAmB;AACtCC,gBAAAA,kBAAAA,EAAoBI,yBAAAA,GAChBjC,SAAAA,GACAmB,MAAAA,CAAOG,OAAO,CAACO;AACrB,aAAA;QACF,KAAK,SAAA;YACH,IAAIX,KAAAA,CAAMG,iBAAiB,IAAI,CAACF,OAAOG,OAAO,CAACC,wBAAwB,EAAE;gBACvE,OAAO;AAAE,oBAAA,GAAGL,KAAK;oBAAEM,mBAAAA,EAAqB;AAAO,iBAAA;AACjD,YAAA;YAEA,OAAO;AACL,gBAAA,GAAGN,KAAK;AACRa,gBAAAA,eAAAA,EAAiBb,MAAMa,eAAe,CAACI,KAAK,CAAC,GAAG,EAAC,CAAA;gBACjDX,mBAAAA,EAAqB;AACvB,aAAA;QACF,KAAK,cAAA;YACH,IAAIN,KAAAA,CAAMG,iBAAiB,EAAE;gBAC3B,OAAO;AAAE,oBAAA,GAAGH,KAAK;oBAAEM,mBAAAA,EAAqB;AAAW,iBAAA;AACrD,YAAA;YAEA,OAAO;AACL,gBAAA,GAAGN,KAAK;AACRa,gBAAAA,eAAAA,EAAiB,EAAE;gBACnBV,iBAAAA,EAAmB,KAAA;gBACnBa,WAAAA,EAAa,KAAA;gBACbV,mBAAAA,EAAqB,IAAA;AACrBY,gBAAAA,eAAAA,EAAiB;AACnB,aAAA;QACF,KAAK,wBAAA;AAA0B,YAAA;;;;AAI7B,gBAAA,MAAMC,gBAAAA,GACJnB,KAAAA,CAAMa,eAAe,CAACO,MAAM,IAAI,CAAA,GAAIpB,KAAAA,CAAMa,eAAe,CAACC,EAAE,CAAC,EAAC,CAAA,GAAKhC,SAAAA;AACrE,gBAAA,MAAMoC,kBACJC,gBAAAA,IAAoBlB,MAAAA,CAAOG,OAAO,CAACiB,YAAY,GAC3C;AACE,oBAAA,GAAGrB,MAAMkB,eAAe;oBACxB,CAACtB,qBAAAA,CAAsBuB,oBAAoB;AACrCnB,wBAAAA,GAAAA,KAAAA,CAAMkB,eAAe,CAACtB,qBAAAA,CAAsBuB,gBAAAA,CAAAA,CAAkB,IAAI,EAAE;wBACxElB,MAAAA,CAAOG,OAAO,CAACiB;AAChB;AACH,iBAAA,GACArB,MAAMkB,eAAe;gBAE3B,OAAO;AACL,oBAAA,GAAGlB,KAAK;;oBAERa,eAAAA,EAAiBb,KAAAA,CAAMa,eAAe,GAClC;AAAIb,wBAAAA,GAAAA,KAAAA,CAAMa,eAAe,CAACI,KAAK,CAAC,GAAG,EAAC,CAAA;wBAAIhB,MAAAA,CAAOG,OAAO,CAACG;qBAAS,GAChE;wBAACN,MAAAA,CAAOG,OAAO,CAACG;AAAS,qBAAA;oBAC7BD,mBAAAA,EAAqB,IAAA;oBACrBU,WAAAA,EAAa,IAAA;oBACbR,cAAAA,EAAgB1B,SAAAA;oBAChB2B,iBAAAA,EAAmB3B,SAAAA;oBACnB4B,mBAAAA,EAAqB5B,SAAAA;oBACrB6B,kBAAAA,EAAoB7B,SAAAA;AACpBoC,oBAAAA;AACF,iBAAA;AACF,YAAA;QACA,KAAK,uBAAA;YACH,OAAO;AACL,gBAAA,GAAGlB,KAAK;gBACRM,mBAAAA,EAAqB;AACvB,aAAA;QACF,KAAK,aAAA;YACH,IAAIN,KAAAA,CAAMG,iBAAiB,IAAI,CAACF,OAAOG,OAAO,CAACC,wBAAwB,EAAE;gBACvE,OAAO;AAAE,oBAAA,GAAGL,KAAK;oBAAEM,mBAAAA,EAAqB;AAAQ,iBAAA;AAClD,YAAA;YAEA,OAAO;AACL,gBAAA,GAAGN,KAAK;AACRa,gBAAAA,eAAAA,EAAiB,EAAE;gBACnBP,mBAAAA,EAAqB,IAAA;gBACrBH,iBAAAA,EAAmB,KAAA;gBACnBa,WAAAA,EAAa,KAAA;gBACbR,cAAAA,EAAgB1B,SAAAA;gBAChB2B,iBAAAA,EAAmB3B,SAAAA;gBACnB4B,mBAAAA,EAAqB5B,SAAAA;gBACrB6B,kBAAAA,EAAoB7B,SAAAA;AACpBoC,gBAAAA,eAAAA,EAAiB;AACnB,aAAA;QACF,KAAK,yBAAA;YACH,OAAO;AACL,gBAAA,GAAGlB,KAAK;gBACRG,iBAAAA,EAAmBF,MAAAA,CAAOG,OAAO,CAACD;AACpC,aAAA;QACF,KAAK,wBAAA;AAA0B,YAAA;AAC7B,gBAAA,MAAMmB,GAAAA,GAAM1B,qBAAAA,CAAsBK,MAAAA,CAAOG,OAAO,CAACmB,YAAY,CAAA;AAE7D,gBAAA,IAAI,EAAED,GAAAA,IAAOtB,KAAAA,CAAMkB,eAAe,CAAD,EAAI;oBACnC,OAAOlB,KAAAA;AACT,gBAAA;AAEA,gBAAA,MAAMkB,eAAAA,GAAkB;AAAE,oBAAA,GAAGlB,MAAMkB;AAAgB,iBAAA;gBACnD,OAAOA,eAAe,CAACI,GAAAA,CAAI;gBAE3B,OAAO;AAAE,oBAAA,GAAGtB,KAAK;AAAEkB,oBAAAA;AAAgB,iBAAA;AACrC,YAAA;AACA,QAAA;YACE,OAAOlB,KAAAA;AACX;AACF;AAEA;;;;;;;;AAQC,IACD,IAAIwB,sBAAAA,GAAyB,CAAA;AAE7B,MAAMC,sBAAAA,GAAyB,IAAMD,sBAAAA,GAAyB;AAa9D,MAAM,CAACE,qBAAAA,EAAuBC,gBAAAA,CAAiB,GAC7CC,yBAAAA,CAAyC,eAAA;AAE3C,SAASC,aACPC,QAAgD,EAAA;AAKhD,IAAA,OAAO,OAAOA,QAAAA,KAAa,UAAA;AAC7B;AAiBA,MAAMC,uBAAuB,CAACC,KAAAA,GAAAA;IAC5B,MAAM,EAAEF,QAAQ,EAAE,GAAGE,KAAAA;AAErB,IAAA,MAAM,CAAChC,KAAAA,EAAOiC,QAAAA,CAAS,GAAGC,gBAAAA,CAAMC,UAAU,CAACpC,OAAAA,EAAS;AAClDc,QAAAA,eAAAA,EAAiB,EAAE;QACnBP,mBAAAA,EAAqB,IAAA;QACrBU,WAAAA,EAAa,KAAA;QACbb,iBAAAA,EAAmB,KAAA;QACnBK,cAAAA,EAAgB1B,SAAAA;AAChBoC,QAAAA,eAAAA,EAAiB;AACnB,KAAA,CAAA;AAEA,IAAA,MAAMkB,YAAAA,GAAeC,kBAAAA,EAAAA;AACrB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;IACpB,MAAM/C,MAAAA,GAAS0C,iBAAMM,OAAO,CAAC,IAAMC,oBAAAA,CAAiBH,KAAAA,IAAS,EAAC,CAAA,EAAI;AAACA,QAAAA;AAAM,KAAA,CAAA;AAEzE,IAAA,MAAMI,gBAAAA,GAAiC;QACrC/C,UAAAA,EAAYyC,YAAAA,CAAa7B,QAAQ,EAAEZ,UAAAA,IAAc,EAAA;AACjDD,QAAAA,KAAAA,EAAO0C,aAAa1C,KAAK;AACzBJ,QAAAA,cAAAA,EAAgB8C,aAAa9C,cAAc;AAC3CE,QAAAA;AACF,KAAA;;IAGA,MAAMmD,sBAAAA,GAAyBC,mCAAAA,CAAkBR,YAAAA,CAAa1C,KAAK,CAAA;AACnE,IAAA,MAAMmD,gBAAAA,GACJF,sBAAAA,CAAuBG,IAAI,EAAEC,UAAUF,gBAAAA,IAAoB,OAAA;AAE7D,IAAA,MAAMzD,sBAAsBY,KAAAA,CAAMa,eAAe,CAACC,EAAE,CAAC,EAAC,CAAA,IAAM4B,gBAAAA;AAC5D,IAAA,MAAMM,kBAAkBC,uBAAAA,CAAY7D,mBAAAA,CAAAA;;IAEpC,MAAMC,YAAAA,GAAeD,mBAAAA,CAAoBE,cAAc,KAAKV,wBAAAA;AAC5D,IAAA,MAAMsE,UAAAA,GAAa,CAAC9D,mBAAAA,CAAoBO,UAAU,IAAI,CAACN,YAAAA;IAEvD,MAAM,EAAE2B,WAAW,EAAE,GAAGhB,KAAAA;AACxBkC,IAAAA,gBAAAA,CAAMiB,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAACnC,WAAAA,EAAa;AAChB,YAAA;AACF,QAAA;QAEAQ,sBAAAA,IAA0B,CAAA;QAE1B,OAAO,IAAA;YACLA,sBAAAA,IAA0B,CAAA;AAC5B,QAAA,CAAA;IACF,CAAA,EAAG;AAACR,QAAAA;AAAY,KAAA,CAAA;AAEhB;;;AAGC,MACD,qBACEoC,cAAA,CAAC1B,qBAAAA,EAAAA;QACC1B,KAAAA,EAAOA,KAAAA;QACPiC,QAAAA,EAAUA,QAAAA;QACVS,gBAAAA,EAAkBA,gBAAAA;QAClBtD,mBAAAA,EAAqBA,mBAAAA;QACrB4D,eAAAA,EAAiBA,eAAAA;QACjBE,UAAAA,EAAYA,UAAAA;QACZL,gBAAAA,EAAkBA,gBAAAA;AAElB,QAAA,QAAA,gBAAAO,cAAA,CAACC,aAAAA,EAAAA;AACExB,YAAAA,QAAAA,EAAAA,YAAAA,CAAaC,YACVA,QAAAA,CAAS;AAAEG,gBAAAA,QAAAA;AAAUY,gBAAAA;aAAiB,CAAA,GACtCb,KAAAA,CAAMsB,QAAQ,kBACZF,cAAA,CAACG,oBAAAA,EAAAA;AAAqBD,gBAAAA,QAAAA,EAAUtB,MAAMsB,QAAQ;AAAGxB,gBAAAA,QAAAA,EAAAA;;;;AAK/D,CAAA;AAEA,MAAM0B,yBAAyB,CAACxB,KAAAA,GAAAA;IAC9B,MAAM,EAAEF,QAAQ,EAAE,GAAGE,KAAAA;AACrB,IAAA,MAAMC,WAAWN,gBAAAA,CAAiB,gBAAA,EAAkB,CAAC3B,KAAAA,GAAUA,MAAMiC,QAAQ,CAAA;AAC7E,IAAA,MAAMY,mBAAmBlB,gBAAAA,CAAiB,gBAAA,EAAkB,CAAC3B,KAAAA,GAAUA,MAAM6C,gBAAgB,CAAA;IAE7F,OAAOhB,YAAAA,CAAaC,YAChBA,QAAAA,CAAS;AAAEG,QAAAA,QAAAA;AAAUY,QAAAA;KAAiB,CAAA,GACtCb,KAAAA,CAAMsB,QAAQ,kBACZF,cAAA,CAACG,oBAAAA,EAAAA;AAAqBD,QAAAA,QAAAA,EAAUtB,MAAMsB,QAAQ;AAAGxB,QAAAA,QAAAA,EAAAA;;AAEzD,CAAA;AAEA;;IAGA,MAAM2B,wBAAwB,CAACzB,KAAAA,GAAAA;;AAE7B,IAAA,MAAM0B,WAAW/B,gBAAAA,CAAiB,wBAAA,EAA0B,CAAC3B,KAAAA,GAAUA,SAASlB,SAAAA,EAAW,KAAA,CAAA;AAE3F,IAAA,OAAO4E,yBAAWN,cAAA,CAACI,sBAAAA,EAAAA;AAAwB,QAAA,GAAGxB;uBAAYoB,cAAA,CAACrB,oBAAAA,EAAAA;AAAsB,QAAA,GAAGC;;AACtF;AAEA;;qGAGA,MAAM2B,oBAAoB,CAACvE,mBAAAA,GAAAA;IACzB,OAAO,CAAC,iBAAiB,EAAEA,mBAAAA,CAAoBE,cAAc,CAAC,CAAC,EAAEF,mBAAAA,CAAoBM,KAAK,CAAC,OAAO,EAChGN,oBAAoBI,MAAM,EAAEC,MAAAA,GACxB,CAAC,uBAAuB,EAAEL,mBAAAA,CAAoBI,MAAM,CAACC,MAAM,CAAA,CAAE,GAC7D,EAAA,CAAA,CACJ;AACJ;AAEA;;;AAGC,IACD,MAAMmE,qBAAAA,GAAwB,CAAC,EAC7BC,aAAa,EACbrD,cAAc,EACdsD,WAAW,EACXC,cAAc,EACdC,WAAW,EAOZ,GAAA;AACC,IAAA,MAAMrE,aAAaoE,cAAAA,EAAgBpE,UAAAA;;AAEnC,IAAA,MAAMsE,eAAAA,GAAkBzD,cAAAA;IAExB,IAAI,CAACqD,iBAAiB,OAAOlE,UAAAA,KAAe,YAAY,CAACA,UAAAA,IAAc,CAACsE,eAAAA,EAAiB;QACvF,OAAOJ,aAAAA;AACT,IAAA;AAEA,IAAA,MAAMK,YAAAA,GAAeC,MAAAA,CAAOC,OAAO,CAACN,WAAAA,EAAaO,UAAAA,IAAc,EAAC,CAAA,CAAGC,IAAI,CAAC,CAAC,GAAGC,SAAAA,CAAU,GAAA;AACpF,QAAA,MAAMjB,QAAAA,GAAWiB,SAAAA;AAOjB,QAAA,OACEjB,SAASpD,IAAI,KAAK,UAAA,IAClBoD,QAAAA,CAASkB,MAAM,KAAKR,WAAAA,KACnBV,QAAAA,CAASmB,UAAU,KAAKR,eAAAA,IAAmBX,QAAAA,CAASoB,QAAQ,KAAKT,eAAc,CAAA;AAEpF,IAAA,CAAA,CAAA,GAAK,CAAA,CAAE;AAEP,IAAA,IAAI,CAACC,YAAAA,EAAc;QACjB,OAAOL,aAAAA;AACT,IAAA;IAEA,MAAMc,EAAAA,GAAKZ,cAAAA,CAAeY,EAAE,IAAIhF,UAAAA;IAEhC,OAAO;AACL,QAAA,GAAGkE,aAAa;AAChB,QAAA,CAACK,eAAe;YACdU,OAAAA,EAAS;AACP,gBAAA;AACE,oBAAA,GAAGT,MAAAA,CAAOU,WAAW,CACnBV,MAAAA,CAAOC,OAAO,CAACL,cAAAA,CAAAA,CAAgBe,MAAM,CACnC,CAAC,GAAGC,KAAAA,CAAM,GACRA,UAAU,IAAA,IAAQ;AAAC,4BAAA,QAAA;AAAU,4BAAA,QAAA;AAAU,4BAAA;yBAAU,CAACC,QAAQ,CAAC,OAAOD,KAAAA,CAAAA,CAAAA,CAEvE;AACDJ,oBAAAA,EAAAA;AACAhF,oBAAAA,UAAAA;oBACAsF,OAAAA,EAAS;AACPN,wBAAAA,EAAAA;AACAhF,wBAAAA,UAAAA;AACAF,wBAAAA,MAAAA,EAAQsE,eAAetE,MAAM;wBAC7ByF,WAAAA,EAAa;AACf,qBAAA;AACAC,oBAAAA,YAAAA,EAAcC,uCAAAA,CAAqB,IAAA,EAAM,IAAA,EAAM,CAAA,CAAE,CAAC,CAAA;AACpD;AACD,aAAA;AACDC,YAAAA,UAAAA,EAAY;AACd;AACF,KAAA;AACF;AAEA,MAAMhC,aAAAA,GAAgB,CAAC,EAAEvB,QAAQ,EAAiC,GAAA;IAChE,MAAM,EAAEwD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAAA,GAAWC,0BAAAA,EAAAA;AACjB,IAAA,MAAMzF,QAAQ2B,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAMA,KAAK,CAAA;AAC1E,IAAA,MAAMiC,WAAWN,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAMiC,QAAQ,CAAA;AAChF,IAAA,MAAM7C,sBAAsBuC,gBAAAA,CAC1B,mBAAA,EACA,CAAC3B,KAAAA,GAAUA,MAAMZ,mBAAmB,CAAA;AAEtC,IAAA,MAAM4D,kBAAkBrB,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAMgD,eAAe,CAAA;AAC9F,IAAA,MAAME,aAAavB,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAMkD,UAAU,CAAA;AACpF,IAAA,MAAMR,mBAAmBf,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAM0C,gBAAgB,CAAA;AAChG,IAAA,MAAMgD,qBAAqB1F,KAAAA,CAAMa,eAAe,CAACC,EAAE,CAAC,EAAC,CAAA,IAAM4B,gBAAAA;IAC3D,MAAMqB,cAAAA,GAAiBd,wBAAYyC,kBAAAA,EAAoB;AACrDC,QAAAA,IAAAA,EAAM,CAACzC,UAAAA,IAAc,CAAClD,KAAAA,CAAMQ;AAC9B,KAAA,CAAA;AAEA,IAAA,MAAMoF,yBAAAA,GACJjE,gBAAAA,CACE,mBAAA,EACA,CAAC3B,KAAAA,GAAUA,KAAAA,CAAMA,KAAK,CAACkB,eAAe,CAACtB,qBAAAA,CAAsBR,mBAAAA,CAAAA,CAAqB,EAClF,KAAA,CAAA,IACGU,sBAAAA;;;IAIP,MAAM+D,aAAAA,GAAgB3B,gBAAAA,CAAMM,OAAO,CAAC,IAAA;AAClC,QAAA,MAAMqD,oBAAoBjC,qBAAAA,CAAsB;YAC9CC,aAAAA,EAAeb,eAAAA,CAAgB8C,oBAAoB,CAAC5C,UAAAA,CAAAA;YACpD1C,cAAAA,EAAgB0C,UAAAA,GAAalD,KAAAA,CAAMQ,cAAc,GAAG1B,SAAAA;AACpDgF,YAAAA,WAAAA,EAAad,gBAAgB+C,MAAM;AACnChC,YAAAA,cAAAA,EAAgBA,eAAexD,QAAQ;AACvCyD,YAAAA,WAAAA,EAAa0B,mBAAmBhG;AAClC,SAAA,CAAA;;;;AAKA,QAAA,IAAI,CAACmG,iBAAAA,EAAmB;YACtB,OAAOA,iBAAAA;AACT,QAAA;AAEA,QAAA,OAAOD,yBAAAA,CAA0BI,MAAM,CAAC,CAACC,MAAAA,EAAQC,KAAAA,GAAAA;AAC/C,YAAA,MAAMC,eAAeC,aAAAA,CAAMH,MAAAA,EAAQC,MAAM1F,cAAc,EAAE0F,MAAMG,aAAa,CAAA;AAE5E,YAAA,OAAOH,KAAAA,CAAMI,gBAAgB,IAAIJ,KAAAA,CAAMK,YAAY,KAAKzH,SAAAA,GACpDsH,aAAAA,CAAMD,YAAAA,EAAcD,KAAAA,CAAMI,gBAAgB,EAAEJ,KAAAA,CAAMK,YAAY,CAAA,GAC9DJ,YAAAA;QACN,CAAA,EAAGN,iBAAAA,CAAAA;IACL,CAAA,EAAG;AACD7C,QAAAA,eAAAA;AACAE,QAAAA,UAAAA;AACAlD,QAAAA,KAAAA,CAAMQ,cAAc;AACpBuD,QAAAA,cAAAA,CAAexD,QAAQ;AACvBmF,QAAAA,kBAAAA,CAAmBhG,KAAK;AACxBkG,QAAAA;AACD,KAAA,CAAA;AAED;;;;AAIC,MACD,qBACExC,cAAA,CAACoD,kCAAAA,EAAAA;QAAkB7B,EAAAA,EAAI7F,SAAAA;AAAW2H,QAAAA,KAAAA,EAAO,EAAC;QAAGC,GAAAA,EAAK5H,SAAAA;QAAWoB,IAAAA,EAAMpB,SAAAA;gCACjE6H,eAAA,CAAC1H,mBAAM2H,IAAI,EAAA;AACTC,YAAAA,IAAAA,EAAM7G,MAAMgB,WAAW;AACvB8F,YAAAA,YAAAA,EAAc,CAACD,IAAAA,GAAAA;AACb,gBAAA,IAAI,CAACA,IAAAA,EAAM;oBACT5E,QAAAA,CAAS;wBACP/B,IAAAA,EAAM,aAAA;wBACNE,OAAAA,EAAS;4BAAEC,wBAAAA,EAA0B;AAAM;AAC7C,qBAAA,CAAA;AACF,gBAAA;AACF,YAAA,CAAA;;AAECyB,gBAAAA,QAAAA;8BACD6E,eAAA,CAAC5H,kBAAAA,EAAAA;;AACC,sCAAAqE,cAAA,CAACnE,mBAAM8H,MAAM,EAAA;4BAACC,GAAAA,EAAK,CAAA;AACjB,4BAAA,QAAA,gBAAAL,eAAA,CAACM,iBAAAA,EAAAA;gCAAKC,cAAAA,EAAe,eAAA;gCAAgBC,UAAAA,EAAW,QAAA;gCAASC,KAAAA,EAAM,MAAA;;kDAC7DT,eAAA,CAACM,iBAAAA,EAAAA;wCAAKD,GAAAA,EAAK,CAAA;;0DACT5D,cAAA,CAACiE,uBAAAA,EAAAA;gDACCC,WAAAA,EAAa,KAAA;AACbC,gDAAAA,KAAAA,EAAOjC,aAAAA,CAAc;oDAAEX,EAAAA,EAAI,aAAA;oDAAe6C,cAAAA,EAAgB;AAAO,iDAAA,CAAA;gDACjEC,OAAAA,EAAQ,OAAA;AACRC,gDAAAA,QAAAA,EAAU1H,KAAAA,CAAMa,eAAe,CAACO,MAAM,GAAG,CAAA;gDACzCuG,OAAAA,EAAS,IAAA;oDACP1F,QAAAA,CAAS;wDACP/B,IAAAA,EAAM,SAAA;wDACNE,OAAAA,EAAS;4DAAEC,wBAAAA,EAA0B;AAAM;AAC7C,qDAAA,CAAA;AACF,gDAAA,CAAA;gDACAuH,WAAAA,EAAa,CAAA;AAEb,gDAAA,QAAA,gBAAAxE,cAAA,CAACyE,eAAAA,EAAAA,EAAAA;;0DAEHzE,cAAA,CAAC0E,uBAAAA,EAAAA;gDAAWC,GAAAA,EAAI,MAAA;gDAAOC,UAAAA,EAAY,GAAA;AAChC9E,gDAAAA,QAAAA,EAAAA,UAAAA,GACGoC,aAAAA,CAAc;oDACZX,EAAAA,EAAI,iCAAA;oDACJ6C,cAAAA,EAAgB;AAClB,iDAAA,CAAA,GACAlC,aAAAA,CAAc;oDACZX,EAAAA,EAAI,2DAAA;oDACJ6C,cAAAA,EAAgB;AAClB,iDAAA;;;;kDAGRpE,cAAA,CAACiE,uBAAAA,EAAAA;wCACCM,OAAAA,EAAS,IAAA;4CACP1F,QAAAA,CAAS;gDACP/B,IAAAA,EAAM;AACR,6CAAA,CAAA;4CACA,IAAI,CAACF,KAAAA,CAAMG,iBAAiB,EAAE;AAC5B,gDAAA,IAAI+C,UAAAA,EAAY;AACdsC,oDAAAA,QAAAA,CAAS7B,iBAAAA,CAAkBvE,mBAAAA,CAAAA,CAAAA;gDAC7B,CAAA,MAAO;AACLoG,oDAAAA,QAAAA,CAASrG,cAAAA,CAAeC,mBAAAA,CAAAA,CAAAA;AAC1B,gDAAA;AACF,4CAAA;AACF,wCAAA,CAAA;wCACAqI,OAAAA,EAAQ,UAAA;AACRF,wCAAAA,KAAAA,EAAOjC,aAAAA,CAAc;4CACnBX,EAAAA,EAAI,+DAAA;4CACJ6C,cAAAA,EAAgB;AAClB,yCAAA,CAAA;AAEA,wCAAA,QAAA,gBAAApE,cAAA,CAAC6E,eAAAA,EAAAA,EAAAA;;;;;AAIP,sCAAA7E,cAAA,CAACnE,mBAAMiJ,IAAI,EAAA;AACT,4BAAA,QAAA,gBAAA9E,cAAA,CAAC+E,gBAAAA,EAAAA;AACCC,gCAAAA,MAAAA,EAAQlF,aAAa,MAAA,GAAS,KAAA;gCAC9BW,aAAAA,EAAeA,aAAAA;AACfwE,gCAAAA,QAAAA,EAAU,CAACpC,MAAAA,EAAiCqC,OAAAA,GAAAA;oCAC1C,MAAMC,SAAAA,GAAYC,2BAChBxF,eAAAA,CAAgB+C,MAAM,EAAE1B,UAAAA,EACxBrB,eAAAA,CAAgByF,UAAU,EAC1B;wCACEC,MAAAA,EAAQ1F,eAAAA,CAAgBzC,QAAQ,EAAEmI,MAAAA;AAClC,wCAAA,GAAGJ;AACL,qCAAA,CAAA;oCAGF,OAAOC,SAAAA,CAAUF,QAAQ,CAACpC,MAAAA,EAAQ;wCAAE0C,UAAAA,EAAY;AAAM,qCAAA,CAAA;AACxD,gCAAA,CAAA;AAEA,gCAAA,QAAA,gBAAAvF,cAAA,CAACwF,iBAAAA,EAAAA,EAAAA;;;;;;;;AAOf,CAAA;AACA;;;;AAIC,IACD,MAAMA,iBAAAA,GAAoB,IAAA;AACxB,IAAA,MAAMpD,QAAAA,GAAWC,0BAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEoD,QAAQ,EAAEC,MAAM,EAAE,GAAGC,0BAAAA,EAAAA;IAC7B,MAAM,EAAEzD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,MAAM,CAACyD,uBAAuB,GAAGC,iCAAAA,EAAAA;AAEjC,IAAA,MAAMjJ,QAAQ2B,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAMA,KAAK,CAAA;AAC1E,IAAA,MAAMiC,WAAWN,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAMiC,QAAQ,CAAA;AAChF,IAAA,MAAMS,mBAAmBf,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAM0C,gBAAgB,CAAA;AAChG,IAAA,MAAMtD,sBAAsBuC,gBAAAA,CAC1B,mBAAA,EACA,CAAC3B,KAAAA,GAAUA,MAAMZ,mBAAmB,CAAA;AAEtC,IAAA,MAAM8D,aAAavB,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAMkD,UAAU,CAAA;AAEpF;;;;;AAKC,MACD,MAAMgG,QAAAA,GAAWC,mBAAAA,CAAQ,eAAe,CAACnJ,KAAAA,GAAUA,MAAMkJ,QAAQ,CAAA;AACjE,IAAA,MAAME,eAAeD,mBAAAA,CAAQ,aAAA,EAAe,CAACnJ,KAAAA,GAAUA,MAAMoJ,YAAY,CAAA;IACzE,MAAMjJ,iBAAAA,GAAoB+I,YAAY,CAACE,YAAAA;AACvClH,IAAAA,gBAAAA,CAAMiB,SAAS,CAAC,IAAA;QACdlB,QAAAA,CAAS;YAAE/B,IAAAA,EAAM,yBAAA;YAA2BE,OAAAA,EAAS;AAAED,gBAAAA;AAAkB;AAAE,SAAA,CAAA;IAC7E,CAAA,EAAG;AAACA,QAAAA,iBAAAA;AAAmB8B,QAAAA;AAAS,KAAA,CAAA;AAEhC,IAAA,MAAMoH,mBAAmB,CAAChJ,wBAAAA,GAAAA;QACxB4B,QAAAA,CAAS;YAAE/B,IAAAA,EAAM,aAAA;YAAeE,OAAAA,EAAS;AAAEC,gBAAAA;AAAyB;AAAE,SAAA,CAAA;AAEtE,QAA0D;;;AAGxD2I,YAAAA,sBAAAA;AAEEtG,YAAAA,gBAAAA;AAEA,YAAA,IAAA,CAAA;AAEJ,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM4G,iBAAAA,GAAoB,IAAA;QACxB,MAAMC,WAAAA,GAAc,CAAA,EAAGV,QAAAA,CAAAA,EAAWC,MAAAA,CAAAA,CAAQ;AAC1C,QAAA,MAAMU,cAAcrK,cAAAA,CAAeC,mBAAAA,CAAAA;QACnC,MAAMqK,iBAAAA,GAAoBF,WAAAA,CAAYvE,QAAQ,CAACwE,WAAAA,CAAAA;AAE/C,QAAA,IAAIC,iBAAAA,EAAmB;YACrBJ,gBAAAA,CAAiB,IAAA,CAAA;QACnB,CAAA,MAAO;AACL,YAAA,IAAInG,UAAAA,EAAY;AACdsC,gBAAAA,QAAAA,CAAS7B,iBAAAA,CAAkBvE,mBAAAA,CAAAA,CAAAA;YAC7B,CAAA,MAAO;gBACLoG,QAAAA,CAASgE,WAAAA,CAAAA;AACX,YAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAME,aAAAA,GAAgB,IAAA;QACpB,IAAI1J,KAAAA,CAAMM,mBAAmB,KAAK,IAAA,EAAM;AACtC,YAAA;AACF,QAAA;QACA,IAAIN,KAAAA,CAAMM,mBAAmB,KAAK,UAAA,EAAY;AAC5CgJ,YAAAA,iBAAAA,EAAAA;AACF,QAAA,CAAA,MAAO,IAAItJ,KAAAA,CAAMM,mBAAmB,KAAK,MAAA,EAAQ;YAC/C2B,QAAAA,CAAS;gBAAE/B,IAAAA,EAAM,SAAA;gBAAWE,OAAAA,EAAS;oBAAEC,wBAAAA,EAA0B;AAAK;AAAE,aAAA,CAAA;AAC1E,QAAA,CAAA,MAAO,IAAIL,KAAAA,CAAMM,mBAAmB,KAAK,OAAA,EAAS;YAChD+I,gBAAAA,CAAiB,IAAA,CAAA;AACnB,QAAA,CAAA,MAAO,IAAI,YAAA,IAAgBrJ,KAAAA,CAAMM,mBAAmB,EAAE;YACpD2B,QAAAA,CAAS;gBACP/B,IAAAA,EAAM,gBAAA;gBACNE,OAAAA,EAAS;AACPG,oBAAAA,QAAAA,EAAUP,MAAMM,mBAAmB;oBACnCD,wBAAAA,EAA0B,IAAA;AAC1BG,oBAAAA,cAAAA,EAAgBR,MAAMQ,cAAc;AACpCC,oBAAAA,iBAAAA,EAAmBT,MAAMS,iBAAiB;AAC1CC,oBAAAA,mBAAAA,EAAqBV,MAAMU,mBAAmB;AAC9CC,oBAAAA,kBAAAA,EAAoBX,MAAMW;AAC5B;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,qBACEgG,eAAA,CAAAgD,mBAAA,EAAA;;0BACEvG,cAAA,CAACwG,iBAAAA,EAAAA,EAAAA,CAAAA;AACD,0BAAAxG,cAAA,CAACyG,oBAAOjD,IAAI,EAAA;gBAACC,IAAAA,EAAM7G,KAAAA,CAAMM,mBAAmB,IAAI,IAAA;AAC9C,gBAAA,QAAA,gBAAA8C,cAAA,CAAC0G,yBAAAA,EAAAA;AACCC,oBAAAA,SAAAA,EAAW,IAAML,aAAAA,EAAAA;AACjBM,oBAAAA,QAAAA,EAAU,IAAM/H,QAAAA,CAAS;4BAAE/B,IAAAA,EAAM;AAAwB,yBAAA,CAAA;oBACzDuH,OAAAA,EAAQ,QAAA;8BAEPnC,aAAAA,CAAc;wBACbX,EAAAA,EAAI,oEAAA;wBACJ6C,cAAAA,EACE;AACJ,qBAAA;;;;;AAKV,CAAA;AAEA,MAAMjE,uBAAuB,CAAC,EAC5BzB,QAAQ,EACRwB,QAAQ,EAIT,GAAA;AACC,IAAA,MAAMrB,WAAWN,gBAAAA,CAAiB,cAAA,EAAgB,CAAC3B,KAAAA,GAAUA,MAAMiC,QAAQ,CAAA;AAC3E,IAAA,MAAMY,mBAAmBlB,gBAAAA,CAAiB,cAAA,EAAgB,CAAC3B,KAAAA,GAAUA,MAAM6C,gBAAgB,CAAA;AAE3F,IAAA,MAAM2G,cAAcrK,cAAAA,CAAemE,QAAAA,CAAAA;AAEnC,IAAA,IAAIT,qBAAqB,QAAA,EAAU;AACjC,QAAA,qBACEO,cAAA,CAAC6G,kBAAAA,EAAAA;YAAmBC,EAAAA,EAAIV,WAAAA;YAAahF,MAAAA,EAAO,QAAA;YAAS2F,GAAAA,EAAI,qBAAA;AACtDrI,YAAAA,QAAAA,EAAAA;;AAGP,IAAA;AAEA,IAAA,IAAIe,qBAAqB,MAAA,EAAQ;AAC/B,QAAA,qBAAOO,cAAA,CAAC6G,kBAAAA,EAAAA;YAAmBC,EAAAA,EAAIV,WAAAA;AAAc1H,YAAAA,QAAAA,EAAAA;;AAC/C,IAAA;AAEA,IAAA,qBACEsB,cAAA,CAACgH,gBAAAA,EAAAA;AACCzC,QAAAA,OAAAA,EAAS,IACP1F,QAAAA,CAAS;gBACP/B,IAAAA,EAAM,gBAAA;gBACNE,OAAAA,EAAS;oBAAEG,QAAAA,EAAU+C,QAAAA;oBAAUjD,wBAAAA,EAA0B;AAAM;AACjE,aAAA,CAAA;AAGDyB,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAEA,MAAMsI,gBAAAA,GAAmBpL,uBAAAA,CAAOqL,uBAAAA,CAAW;;;eAG5B,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,SAAS,CAAC,CAAA,CAAE,CAAC;;;;;;AAMnD,CAAC;AAED,MAAMN,kBAAAA,GAAqBjL,uBAAAA,CAAOwL,mBAAAA,CAAW;;aAEhC,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMC,SAAS,CAAC,CAAA,CAAE,CAAC;;;;;SAKxC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACC,UAAU,CAAC;;;;;WAKvC,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACE,UAAU,CAAC;;;AAGpD,CAAC;AAED;;;AAGC,IACD,MAAMf,iBAAAA,GAAoB,IAAA;IACxB,MAAM,EAAEtE,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMnG,sBAAsBuC,gBAAAA,CAC1B,mBAAA,EACA,CAAC3B,KAAAA,GAAUA,MAAMZ,mBAAmB,CAAA;AAEtC,IAAA,MAAM8D,aAAavB,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAMkD,UAAU,CAAA;AACpF,IAAA,MAAMF,kBAAkBrB,gBAAAA,CAAiB,mBAAA,EAAqB,CAAC3B,KAAAA,GAAUA,MAAMgD,eAAe,CAAA;IAC9F,MAAML,sBAAAA,GAAyBC,mCAAAA,CAAkBxD,mBAAAA,CAAoBM,KAAK,CAAA;AAC1E,IAAA,MAAMkL,UAAUC,wBAAAA,CAAa,mBAAA,EAAqB,CAAC7K,KAAAA,GAAUA,MAAM4K,OAAO,CAAA;AAE1E,IAAA,MAAM/G,gBAAgBX,UAAAA,GAClBF,eAAAA,CAAgB8C,oBAAoB,CAAC5C,UAAAA,CAAAA,GACrCF,gBAAgB8C,oBAAoB,EAAA;AAExC,IAAA,MAAM,EACJgF,WAAAA,GAAc,EAAE,EAChBC,SAAAA,EAAWC,oBAAoB,EAC/BC,KAAK,EACN,GAAGC,oBACFC,kBAAAA,CAAYC,GAAG,CAAC,CAACnL,UAAY;AAC3BA,YAAAA,MAAAA;AACAoL,YAAAA,OAAAA,EAASjM,oBAAoBM;SAC/B,CAAA,CAAA,CAAA;AAGF,IAAA,MAAMqL,YACJC,oBAAAA,IAAwBrI,sBAAAA,CAAuBoI,SAAS,IAAI/H,gBAAgB+H,SAAS;AAEvF,IAAA,IAAIA,SAAAA,IAAa,CAAC/H,eAAAA,CAAgBzC,QAAQ,EAAEZ,UAAAA,EAAY;AACtD,QAAA,qBACEyD,cAAA,CAACkI,mBAAAA,EAAAA;YAAOC,KAAK,EAAA,IAAA;sBACVjG,aAAAA,CAAc;gBACbX,EAAAA,EAAI,gDAAA;gBACJ6C,cAAAA,EAAgB;AAClB,aAAA;;AAGN,IAAA;IAEA,IACEyD,KAAAA,IACA,CAAC7L,mBAAAA,CAAoBM,KAAK,IAC1BiD,uBAAuBsI,KAAK,IAC3B,CAAC/H,UAAAA,IAAc,CAACF,eAAAA,CAAgBzC,QAAQ,IACxC,CAAC2C,UAAAA,IAAc,CAACF,eAAAA,CAAgBnD,IAAI,IACrC,CAACmD,eAAAA,CAAgB+C,MAAM,IACvB,CAAClC,aAAAA,EACD;AACA,QAAA,qBACET,cAAA,CAAC6D,iBAAAA,EAAAA;YAAKE,UAAAA,EAAW,QAAA;YAASqE,MAAAA,EAAO,MAAA;YAAOtE,cAAAA,EAAe,QAAA;AACrD,YAAA,QAAA,gBAAA9D,cAAA,CAACqI,6BAAAA,EAAAA;AACCC,gBAAAA,IAAAA,gBAAMtI,cAAA,CAACuI,mBAAAA,EAAAA;oBAAcvE,KAAAA,EAAM;;AAC3BwE,gBAAAA,OAAAA,EAAStG,aAAAA,CAAc;oBACrBX,EAAAA,EAAI,iBAAA;oBACJ6C,cAAAA,EAAgB;AAClB,iBAAA;;;AAIR,IAAA;IAEA,MAAMqE,aAAAA,GAAgB7I,gBAAgB8I,QAAQ,CAACnJ,uBAAuBG,IAAI,CAACC,QAAQ,CAACgJ,SAAS,CAAA;AAC7F,IAAA,MAAMC,oBAAAA,GAAuBhJ,eAAAA,CAAgB+C,MAAM,EAAEuC,SAAS2D,eAAAA,IAAmB,KAAA;AAEjF,IAAA,MAAMjK,KAAAA,GAAQ;QACZkK,SAAAA,EAAW,OAAA;AACX5M,QAAAA,cAAAA,EAAgBF,oBAAoBE,cAAc;AAClDI,QAAAA,KAAAA,EAAON,oBAAoBM,KAAK;AAChCC,QAAAA,UAAAA,EAAYP,oBAAoBO,UAAU;AAC1CY,QAAAA,QAAAA,EAAUyC,gBAAgBzC,QAAQ;AAClCV,QAAAA,IAAAA,EAAMmD,gBAAgBnD;AACxB,KAAA;AAEA,IAAA,qBACE8G,eAAA,CAACwF,yBAAAA,EAAAA;QAAarB,WAAAA,EAAaA,WAAAA;AAAapL,QAAAA,KAAAA,EAAON,oBAAoBM,KAAK;;0BACtEiH,eAAA,CAACM,iBAAAA,EAAAA;gBAAKE,UAAAA,EAAW,YAAA;gBAAaiF,SAAAA,EAAU,QAAA;gBAASpF,GAAAA,EAAK,CAAA;;kCACpDL,eAAA,CAACM,iBAAAA,EAAAA;wBAAKG,KAAAA,EAAM,MAAA;wBAAOF,cAAAA,EAAe,eAAA;wBAAgBF,GAAAA,EAAK,CAAA;;0CACrD5D,cAAA,CAAC0E,uBAAAA,EAAAA;gCAAWC,GAAAA,EAAI,IAAA;gCAAKN,OAAAA,EAAQ,OAAA;AAC1BoE,gCAAAA,QAAAA,EAAAA;;0CAEHzI,cAAA,CAAC6D,iBAAAA,EAAAA;gCAAKD,GAAAA,EAAK,CAAA;AACT,gCAAA,QAAA,gBAAA5D,cAAA,CAACiJ,wCAAAA,EAAAA;oCACCrK,KAAAA,EAAOA,KAAAA;oCACPsK,YAAAA,EACE1B,OAAO,CAAC,iBAAA,CAAkB,CAAC2B,IAAI,CAC/BC,kBAAkB,CAAC,gBAAA,CAAA;8CAEpB,CAACC,OAAAA,GAAAA;AACA,wCAAA,MAAMC,eAAAA,GAAkBD,OAAAA,CAAQ3H,MAAM,CAAC,CAAC7E,MAAAA,GAAAA;4CACtC,OAAO;AAACA,gDAAAA,MAAAA,CAAO0M;6CAAS,CAACC,IAAI,EAAA,CAAG5H,QAAQ,CAAC,gBAAA,CAAA;AAC3C,wCAAA,CAAA,CAAA;wCACA,MAAM,CAAC6H,aAAAA,EAAeC,eAAAA,CAAgB,GAAGJ,eAAAA;AAEzC,wCAAA,IAAI,CAACG,aAAAA,IAAiB,CAACC,eAAAA,EAAiB,OAAO,IAAA;;AAG/C,wCAAA,IAAID,iBAAiBC,eAAAA,EAAiB;4CACpC,qBACEnG,eAAA,CAAAgD,mBAAA,EAAA;;kEAEEvG,cAAA,CAAC2J,oCAAAA,EAAAA;AACE,wDAAA,GAAGD,eAAe;wDACnBrF,OAAAA,EAASqF,eAAAA,CAAgBrF,OAAO,IAAI;;kEAGtCrE,cAAA,CAAC2J,oCAAAA,EAAAA;AACE,wDAAA,GAAGF,aAAa;wDACjBpF,OAAAA,EAASoF,aAAAA,CAAcpF,OAAO,IAAI;;;;AAI1C,wCAAA;;AAGA,wCAAA,qBACErE,cAAA,CAAC2J,oCAAAA,EAAAA;AACE,4CAAA,GAAGF,aAAa;4CACjBpF,OAAAA,EAASoF,aAAAA,CAAcpF,OAAO,IAAI;;AAGxC,oCAAA;;;;;AAILuE,oBAAAA,oBAAAA,iBACC5I,cAAA,CAAC4J,gBAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAA5J,cAAA,CAAC6J,6BAAAA,EAAAA;4BAAevE,MAAAA,EAAQ1F,eAAAA,CAAgBzC,QAAQ,EAAEmI;;AAElD,qBAAA,CAAA,GAAA;;;0BAGNtF,cAAA,CAAC6D,iBAAAA,EAAAA;gBAAKiG,IAAAA,EAAM,CAAA;gBAAGC,QAAAA,EAAS,MAAA;gBAAOhG,UAAAA,EAAW,SAAA;gBAAUiG,UAAAA,EAAY,CAAA;AAC9D,gBAAA,QAAA,gBAAAhK,cAAA,CAAC4J,gBAAAA,EAAAA;oBAAIG,QAAAA,EAAS,MAAA;oBAAOD,IAAAA,EAAM,CAAA;AACzB,oBAAA,QAAA,gBAAA9J,cAAA,CAACiK,qBAAAA,EAAAA;wBACCC,MAAAA,EAAQ3K,sBAAAA,CAAuBG,IAAI,CAACwK,MAAM;wBAC1C/M,QAAAA,EAAUyC,eAAAA;wBACVuK,aAAAA,EAAe;;;;;;AAM3B,CAAA;;;;;;;;;;;"}
1
+ {"version":3,"file":"RelationModal.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n DescriptionComponentRenderer,\n Form as FormContext,\n useRBAC,\n useStrapiApp,\n createContext,\n useForm,\n useQueryParams,\n type StrapiAppContextValue,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Dialog,\n EmptyStateLayout,\n Flex,\n IconButton,\n Loader,\n Modal,\n Typography,\n TextButton,\n} from '@strapi/design-system';\nimport { ArrowLeft, ArrowsOut, WarningCircle } from '@strapi/icons';\nimport { generateNKeysBetween } from 'fractional-indexing';\nimport { useIntl } from 'react-intl';\nimport { Link as RouterLink, useLocation, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../../../constants/collections';\nimport { PERMISSIONS } from '../../../../../constants/plugin';\nimport { buildValidParams } from '../../../../../exports';\nimport { DocumentRBAC, useDocumentRBAC } from '../../../../../features/DocumentRBAC';\nimport { useDoc, useDocument, type UseDocument } from '../../../../../hooks/useDocument';\nimport { type DocumentMeta } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { useLazyGetDocumentQuery } from '../../../../../services/documents';\nimport { setIn } from '../../../../../utils/objects';\nimport { createYupSchema } from '../../../../../utils/validation';\nimport { DocumentActionButton } from '../../../components/DocumentActions';\nimport { DocumentStatus } from '../../DocumentStatus';\nimport { FormLayout, type FormLayoutProps } from '../../FormLayout';\nimport { ComponentProvider } from '../ComponentContext';\n\nimport type { RelationOpenMode } from '../../../../../../../shared/contracts/content-types';\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../../../../content-manager';\nimport type { AnyData } from '../../../utils/data';\n\nexport function getCollectionType(url: string) {\n const regex = new RegExp(`(${COLLECTION_TYPES}|${SINGLE_TYPES})`);\n const match = url.match(regex);\n return match ? match[1] : undefined;\n}\n\nconst StyledModalContent = styled(Modal.Content)`\n width: 90%;\n max-width: 100%;\n height: 90%;\n max-height: 100%;\n`;\n\nconst getFullPageUrl = (currentDocumentMeta: DocumentMeta): string => {\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const queryParams = currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : '';\n\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModalRenderer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * A local \"connect\" edit waiting to be applied to a document that isn't the modal's current one.\n * Needed because every level of a nested relation-on-the-fly chain (root document aside) shares\n * one Form instance whose values get wholesale-replaced by fresh initialValues on every\n * `documentHistory` navigation — writing the field directly while a different level is current\n * would land on the wrong document and then immediately be discarded. Instead the patch is stashed\n * here, keyed by the target document, and merged back into that document's initialValues once it\n * becomes current again (see `RelationModal`'s `initialValues` below).\n */\ninterface PendingConnectPatch {\n fieldToConnect: string;\n relationValue: AnyData;\n componentUIDPath?: string;\n componentUID?: string;\n}\n\nconst getDocumentHistoryKey = (meta: Pick<DocumentMeta, 'model' | 'documentId'>) =>\n `${meta.model}::${meta.documentId}`;\n\nconst EMPTY_PENDING_CONNECTS: PendingConnectPatch[] = [];\n\ninterface State {\n documentHistory: DocumentMeta[];\n confirmDialogIntent:\n | null // No dialog\n | 'close' // Close the modal\n | 'back' // Go back one document in the modal's history\n | 'navigate' // Open the document in the edit view instead of in the modal\n | DocumentMeta; // Open a specific document in the modal\n isModalOpen: boolean;\n hasUnsavedChanges: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n getParentFormValues?: () => AnyData;\n // Sets a field directly on the parent's own (live, unsaved) form state, so connecting a\n // newly-created relation doesn't require persisting the whole parent document to the server.\n setParentFormValue?: (path: string, value: unknown) => void;\n pendingConnects: Record<string, PendingConnectPatch[]>;\n}\n\ntype Action =\n | {\n type: 'GO_TO_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n getParentFormValues?: () => AnyData;\n setParentFormValue?: (path: string, value: unknown) => void;\n };\n }\n | {\n type: 'GO_BACK';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'GO_FULL_PAGE';\n }\n | {\n type: 'GO_TO_CREATED_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n // Present when the document being connected belongs to a NESTED parent (one still further\n // up `documentHistory`, not the root document) — see `pendingConnects` on `State`.\n connectPatch?: PendingConnectPatch;\n };\n }\n | {\n type: 'CANCEL_CONFIRM_DIALOG';\n }\n | {\n type: 'CLOSE_MODAL';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'SET_HAS_UNSAVED_CHANGES';\n payload: { hasUnsavedChanges: boolean };\n }\n | {\n type: 'CLEAR_PENDING_CONNECTS';\n payload: { documentMeta: Pick<DocumentMeta, 'model' | 'documentId'> };\n };\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'GO_TO_RELATION':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return {\n ...state,\n confirmDialogIntent: action.payload.document,\n fieldToConnect: action.payload.fieldToConnect,\n fieldToConnectUID: action.payload.fieldToConnectUID,\n getParentFormValues: action.payload.getParentFormValues,\n setParentFormValue: action.payload.setParentFormValue,\n };\n }\n\n const lastItemDocumentHistory = state.documentHistory.at(-1);\n const hasToResetDocumentHistory =\n lastItemDocumentHistory && !lastItemDocumentHistory.documentId;\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: hasToResetDocumentHistory\n ? [action.payload.document]\n : [...state.documentHistory, action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnect,\n fieldToConnectUID: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnectUID,\n getParentFormValues: hasToResetDocumentHistory\n ? undefined\n : action.payload.getParentFormValues,\n setParentFormValue: hasToResetDocumentHistory\n ? undefined\n : action.payload.setParentFormValue,\n };\n case 'GO_BACK':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'back' };\n }\n\n return {\n ...state,\n documentHistory: state.documentHistory.slice(0, -1),\n confirmDialogIntent: null,\n };\n case 'GO_FULL_PAGE':\n if (state.hasUnsavedChanges) {\n return { ...state, confirmDialogIntent: 'navigate' };\n }\n\n return {\n ...state,\n documentHistory: [],\n hasUnsavedChanges: false,\n isModalOpen: false,\n confirmDialogIntent: null,\n pendingConnects: {},\n };\n case 'GO_TO_CREATED_RELATION': {\n // Anything beyond the second-to-last history entry is a nested parent still open further up\n // the stack — the root document (outside documentHistory entirely) is handled directly via\n // setParentFormValue instead, since its Form never gets replaced by modal navigation.\n const nestedParentMeta =\n state.documentHistory.length >= 2 ? state.documentHistory.at(-2) : undefined;\n const pendingConnects =\n nestedParentMeta && action.payload.connectPatch\n ? {\n ...state.pendingConnects,\n [getDocumentHistoryKey(nestedParentMeta)]: [\n ...(state.pendingConnects[getDocumentHistoryKey(nestedParentMeta)] ?? []),\n action.payload.connectPatch,\n ],\n }\n : state.pendingConnects;\n\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: state.documentHistory\n ? [...state.documentHistory.slice(0, -1), action.payload.document]\n : [action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: undefined,\n fieldToConnectUID: undefined,\n getParentFormValues: undefined,\n setParentFormValue: undefined,\n pendingConnects,\n };\n }\n case 'CANCEL_CONFIRM_DIALOG':\n return {\n ...state,\n confirmDialogIntent: null,\n };\n case 'CLOSE_MODAL':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'close' };\n }\n\n return {\n ...state,\n documentHistory: [],\n confirmDialogIntent: null,\n hasUnsavedChanges: false,\n isModalOpen: false,\n fieldToConnect: undefined,\n fieldToConnectUID: undefined,\n getParentFormValues: undefined,\n setParentFormValue: undefined,\n pendingConnects: {},\n };\n case 'SET_HAS_UNSAVED_CHANGES':\n return {\n ...state,\n hasUnsavedChanges: action.payload.hasUnsavedChanges,\n };\n case 'CLEAR_PENDING_CONNECTS': {\n const key = getDocumentHistoryKey(action.payload.documentMeta);\n\n if (!(key in state.pendingConnects)) {\n return state;\n }\n\n const pendingConnects = { ...state.pendingConnects };\n delete pendingConnects[key];\n\n return { ...state, pendingConnects };\n }\n default:\n return state;\n }\n}\n\n/**\n * Whether any relation-on-the-fly modal is currently open, anywhere on the page.\n *\n * The modal's React context (`RelationModalProvider`, below) only reaches the modal's own subtree\n * (the relation field that renders it), so components mounted outside that subtree — like the\n * background entry's save/publish buttons in the side panel — can't read `state.isModalOpen` from\n * context. This module-level counter is the cross-tree signal those components use instead, so\n * they can tell a relation modal is open and suppress their own keyboard shortcuts while it is.\n */\nlet openRelationModalCount = 0;\n\nconst isAnyRelationModalOpen = () => openRelationModalCount > 0;\n\ninterface RelationModalContextValue {\n state: State;\n dispatch: React.Dispatch<Action>;\n rootDocumentMeta: DocumentMeta;\n currentDocumentMeta: DocumentMeta;\n currentDocument: ReturnType<UseDocument>;\n onPreview?: () => void;\n isCreating: boolean;\n relationOpenMode: RelationOpenMode;\n}\n\nconst [RelationModalProvider, useRelationModal] =\n createContext<RelationModalContextValue>('RelationModal');\n\nfunction isRenderProp(\n children: RelationModalRendererProps['children']\n): children is (props: {\n dispatch: (action: Action) => void;\n relationOpenMode: RelationOpenMode;\n}) => React.ReactNode {\n return typeof children === 'function';\n}\n\ntype RelationModalRendererProps =\n // Is editing\n | {\n relation: DocumentMeta;\n children: React.ReactNode;\n }\n // Is creating\n | {\n relation?: never;\n children: (props: {\n dispatch: (action: Action) => void;\n relationOpenMode: RelationOpenMode;\n }) => React.ReactNode;\n };\n\nconst RootRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n\n const [state, dispatch] = React.useReducer(reducer, {\n documentHistory: [],\n confirmDialogIntent: null,\n isModalOpen: false,\n hasUnsavedChanges: false,\n fieldToConnect: undefined,\n pendingConnects: {},\n });\n\n const rootDocument = useDoc();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query ?? {}), [query]);\n\n const rootDocumentMeta: DocumentMeta = {\n documentId: rootDocument.document?.documentId || '',\n model: rootDocument.model,\n collectionType: rootDocument.collectionType,\n params,\n };\n\n // Get the relationOpenMode setting from the current document's layout configuration\n const documentLayoutResponse = useDocumentLayout(rootDocument.model);\n const relationOpenMode: RelationOpenMode =\n documentLayoutResponse.edit?.settings?.relationOpenMode ?? 'modal';\n\n const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;\n const currentDocument = useDocument(currentDocumentMeta);\n // TODO: check if we can remove the single type check\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const isCreating = !currentDocumentMeta.documentId && !isSingleType;\n\n const { isModalOpen } = state;\n React.useEffect(() => {\n if (!isModalOpen) {\n return;\n }\n\n openRelationModalCount += 1;\n\n return () => {\n openRelationModalCount -= 1;\n };\n }, [isModalOpen]);\n\n /**\n * There is no parent relation, so the relation modal doesn't exist. Create it and set up all the\n * pieces that will be used by potential child relations: the context, header, form, and footer.\n */\n return (\n <RelationModalProvider\n state={state}\n dispatch={dispatch}\n rootDocumentMeta={rootDocumentMeta}\n currentDocumentMeta={currentDocumentMeta}\n currentDocument={currentDocument}\n isCreating={isCreating}\n relationOpenMode={relationOpenMode}\n >\n <RelationModal>\n {isRenderProp(children)\n ? children({ dispatch, relationOpenMode })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n )}\n </RelationModal>\n </RelationModalProvider>\n );\n};\n\nconst NestedRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n const dispatch = useRelationModal('NestedRelation', (state) => state.dispatch);\n const relationOpenMode = useRelationModal('NestedRelation', (state) => state.relationOpenMode);\n\n return isRenderProp(children)\n ? children({ dispatch, relationOpenMode })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n ); /* This is the trigger that will be rendered in the parent relation */\n};\n\n/**\n * Component responsible for rendering its children wrapped in a modal, form and context if needed\n */\nconst RelationModalRenderer = (props: RelationModalRendererProps) => {\n // We're in a nested relation if the relation modal context is not undefined\n const isNested = useRelationModal('RelationContextWrapper', (state) => state != undefined, false);\n\n return isNested ? <NestedRelationRenderer {...props} /> : <RootRelationRenderer {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModal\n * -----------------------------------------------------------------------------------------------*/\nconst generateCreateUrl = (currentDocumentMeta: DocumentMeta) => {\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}/create${\n currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : ''\n }`;\n};\n\n/**\n * Pre-fill the inverse relation with the parent that opened create-on-the-fly.\n * One-way relations have no inverse; unsaved parents have no documentId.\n */\nconst prefillParentRelation = ({\n initialValues,\n fieldToConnect,\n childSchema,\n parentDocument,\n parentModel,\n}: {\n initialValues?: AnyData;\n fieldToConnect?: string;\n childSchema?: { attributes?: Record<string, unknown> };\n parentDocument?: Record<string, unknown>;\n parentModel?: string;\n}): AnyData | undefined => {\n const documentId = parentDocument?.documentId;\n // mappedBy/inversedBy names a top-level attribute, not a component path.\n const parentFieldName = fieldToConnect;\n\n if (!initialValues || typeof documentId !== 'string' || !documentId || !parentFieldName) {\n return initialValues;\n }\n\n const inverseField = Object.entries(childSchema?.attributes ?? {}).find(([, attribute]) => {\n const relation = attribute as {\n type?: string;\n target?: string;\n inversedBy?: string;\n mappedBy?: string;\n };\n\n return (\n relation.type === 'relation' &&\n relation.target === parentModel &&\n (relation.inversedBy === parentFieldName || relation.mappedBy === parentFieldName)\n );\n })?.[0];\n\n if (!inverseField) {\n return initialValues;\n }\n\n const id = parentDocument.id ?? documentId;\n\n return {\n ...initialValues,\n [inverseField]: {\n connect: [\n {\n ...Object.fromEntries(\n Object.entries(parentDocument).filter(\n ([, value]) =>\n value === null || ['string', 'number', 'boolean'].includes(typeof value)\n )\n ),\n id,\n documentId,\n apiData: {\n id,\n documentId,\n locale: parentDocument.locale,\n isTemporary: true,\n },\n __temp_key__: generateNKeysBetween(null, null, 1)[0],\n },\n ],\n disconnect: [],\n },\n };\n};\n\nconst RelationModal = ({ children }: { children: React.ReactNode }) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n const rootDocumentMeta = useRelationModal('RelationModalForm', (state) => state.rootDocumentMeta);\n const parentDocumentMeta = state.documentHistory.at(-2) ?? rootDocumentMeta;\n const parentDocument = useDocument(parentDocumentMeta, {\n skip: !isCreating || !state.fieldToConnect,\n });\n\n const pendingConnectsForCurrent =\n useRelationModal(\n 'RelationModalForm',\n (state) => state.state.pendingConnects[getDocumentHistoryKey(currentDocumentMeta)],\n false\n ) ?? EMPTY_PENDING_CONNECTS;\n\n // Re-apply any local \"connect\" edits recorded for this document while a nested child was open,\n // since navigating here just replaced the Form's values with a fresh, patch-less snapshot.\n const initialValues = React.useMemo(() => {\n const baseInitialValues = prefillParentRelation({\n initialValues: currentDocument.getInitialFormValues(isCreating),\n fieldToConnect: isCreating ? state.fieldToConnect : undefined,\n childSchema: currentDocument.schema,\n parentDocument: parentDocument.document,\n parentModel: parentDocumentMeta.model,\n });\n\n // The document (and its default values) may still be loading, e.g. right after navigating\n // back to a document that now has a real documentId. Let the loading guard below handle it\n // instead of trying to patch a value that doesn't exist yet.\n if (!baseInitialValues) {\n return baseInitialValues;\n }\n\n return pendingConnectsForCurrent.reduce((values, patch) => {\n const withRelation = setIn(values, patch.fieldToConnect, patch.relationValue);\n\n return patch.componentUIDPath && patch.componentUID !== undefined\n ? setIn(withRelation, patch.componentUIDPath, patch.componentUID)\n : withRelation;\n }, baseInitialValues);\n }, [\n currentDocument,\n isCreating,\n state.fieldToConnect,\n parentDocument.document,\n parentDocumentMeta.model,\n pendingConnectsForCurrent,\n ]);\n\n /*\n * We must wrap the modal window with Component Provider with reset values\n * to avoid inheriting id and uid from the root document and having weird\n * behaviors with simple relationships..\n */\n return (\n <ComponentProvider id={undefined} level={-1} uid={undefined} type={undefined}>\n <Modal.Root\n open={state.isModalOpen}\n onOpenChange={(open) => {\n if (!open) {\n dispatch({\n type: 'CLOSE_MODAL',\n payload: { shouldBypassConfirmation: false },\n });\n }\n }}\n >\n {children}\n <StyledModalContent>\n <Modal.Header gap={2}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Flex gap={2}>\n <IconButton\n withTooltip={false}\n label={formatMessage({ id: 'global.back', defaultMessage: 'Back' })}\n variant=\"ghost\"\n disabled={state.documentHistory.length < 2}\n onClick={() => {\n dispatch({\n type: 'GO_BACK',\n payload: { shouldBypassConfirmation: false },\n });\n }}\n marginRight={1}\n >\n <ArrowLeft />\n </IconButton>\n <Typography tag=\"span\" fontWeight={600}>\n {isCreating\n ? formatMessage({\n id: 'content-manager.relation.create',\n defaultMessage: 'Create a relation',\n })\n : formatMessage({\n id: 'content-manager.components.RelationInputModal.modal-title',\n defaultMessage: 'Edit a relation',\n })}\n </Typography>\n </Flex>\n <IconButton\n onClick={() => {\n dispatch({\n type: 'GO_FULL_PAGE',\n });\n if (!state.hasUnsavedChanges) {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(getFullPageUrl(currentDocumentMeta));\n }\n }\n }}\n variant=\"tertiary\"\n label={formatMessage({\n id: 'content-manager.components.RelationInputModal.button-fullpage',\n defaultMessage: 'Go to entry',\n })}\n >\n <ArrowsOut />\n </IconButton>\n </Flex>\n </Modal.Header>\n <Modal.Body>\n <FormContext\n method={isCreating ? 'POST' : 'PUT'}\n initialValues={initialValues}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n currentDocument.schema?.attributes,\n currentDocument.components,\n {\n status: currentDocument.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n <RelationModalBody />\n </FormContext>\n </Modal.Body>\n </StyledModalContent>\n </Modal.Root>\n </ComponentProvider>\n );\n};\n/**\n * All the main content (not header and footer) of the relation modal, plus the confirmation dialog.\n * Will be wrapped in a Modal.Body by the RelationModal component.\n * Cannot be moved directly inside RelationModal because it needs access to the context via hooks.\n */\nconst RelationModalBody = () => {\n const navigate = useNavigate();\n const { pathname, search } = useLocation();\n const { formatMessage } = useIntl();\n\n const [triggerRefetchDocument] = useLazyGetDocumentQuery();\n\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const rootDocumentMeta = useRelationModal('RelationModalForm', (state) => state.rootDocumentMeta);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n\n /**\n * One-way sync the modified state from the form to the modal state.\n * It is needed because we need to consume state from the form context in order to lift it up\n * into the modal context. It is not possible otherwise because the modal needs the form state,\n * but it must be a parent of the form.\n */\n const modified = useForm('FormWatcher', (state) => state.modified);\n const isSubmitting = useForm('FormWatcher', (state) => state.isSubmitting);\n const hasUnsavedChanges = modified && !isSubmitting;\n React.useEffect(() => {\n dispatch({ type: 'SET_HAS_UNSAVED_CHANGES', payload: { hasUnsavedChanges } });\n }, [hasUnsavedChanges, dispatch]);\n\n const handleCloseModal = (shouldBypassConfirmation: boolean) => {\n dispatch({ type: 'CLOSE_MODAL', payload: { shouldBypassConfirmation } });\n\n if (shouldBypassConfirmation || !state.hasUnsavedChanges) {\n // TODO: check if we can avoid this by relying on RTK invalidatesTags.\n // If so we can delete this function and dispatch the events directly\n triggerRefetchDocument(\n // TODO check if params should be removed (as they were before)\n rootDocumentMeta,\n // Favor the cache\n true\n );\n }\n };\n\n const handleRedirection = () => {\n const editViewUrl = `${pathname}${search}`;\n const fullPageUrl = getFullPageUrl(currentDocumentMeta);\n const isRootDocumentUrl = editViewUrl.includes(fullPageUrl);\n\n if (isRootDocumentUrl) {\n handleCloseModal(true);\n } else {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(fullPageUrl);\n }\n }\n };\n\n const handleConfirm = () => {\n if (state.confirmDialogIntent === null) {\n return;\n }\n if (state.confirmDialogIntent === 'navigate') {\n handleRedirection();\n } else if (state.confirmDialogIntent === 'back') {\n dispatch({ type: 'GO_BACK', payload: { shouldBypassConfirmation: true } });\n } else if (state.confirmDialogIntent === 'close') {\n handleCloseModal(true);\n } else if ('documentId' in state.confirmDialogIntent) {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: {\n document: state.confirmDialogIntent,\n shouldBypassConfirmation: true,\n fieldToConnect: state.fieldToConnect,\n fieldToConnectUID: state.fieldToConnectUID,\n getParentFormValues: state.getParentFormValues,\n setParentFormValue: state.setParentFormValue,\n },\n });\n }\n };\n\n return (\n <>\n <RelationModalForm />\n <Dialog.Root open={state.confirmDialogIntent != null}>\n <ConfirmDialog\n onConfirm={() => handleConfirm()}\n onCancel={() => dispatch({ type: 'CANCEL_CONFIRM_DIALOG' })}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.confirmation-message',\n defaultMessage:\n 'Some changes were not saved. Are you sure you want to close this relation? All changes that were not saved will be lost.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </>\n );\n};\n\nconst RelationModalTrigger = ({\n children,\n relation,\n}: {\n children: React.ReactNode;\n relation: DocumentMeta;\n}) => {\n const dispatch = useRelationModal('ModalTrigger', (state) => state.dispatch);\n const relationOpenMode = useRelationModal('ModalTrigger', (state) => state.relationOpenMode);\n\n const fullPageUrl = getFullPageUrl(relation);\n\n if (relationOpenMode === 'newTab') {\n return (\n <StyledRelationLink to={fullPageUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </StyledRelationLink>\n );\n }\n\n if (relationOpenMode === 'page') {\n return <StyledRelationLink to={fullPageUrl}>{children}</StyledRelationLink>;\n }\n\n return (\n <StyledTextButton\n onClick={() =>\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: relation, shouldBypassConfirmation: false },\n })\n }\n >\n {children}\n </StyledTextButton>\n );\n};\n\nconst StyledTextButton = styled(TextButton)`\n max-width: 100%;\n & > span {\n font-size: ${({ theme }) => theme.fontSizes[2]};\n width: inherit;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n`;\n\nconst StyledRelationLink = styled(RouterLink)`\n max-width: 100%;\n font-size: ${({ theme }) => theme.fontSizes[2]};\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n display: block;\n color: ${({ theme }) => theme.colors.primary600};\n text-decoration: none;\n\n &:hover,\n &:focus {\n color: ${({ theme }) => theme.colors.primary700};\n text-decoration: underline;\n }\n`;\n\n/**\n * The mini edit view for a relation that is displayed inside a modal.\n * It's complete with its header, document actions and form layout.\n */\nconst RelationModalForm = () => {\n const { formatMessage } = useIntl();\n\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const documentLayoutResponse = useDocumentLayout(currentDocumentMeta.model);\n const plugins = useStrapiApp('RelationModalForm', (state) => state.plugins);\n\n const initialValues = isCreating\n ? currentDocument.getInitialFormValues(isCreating)\n : currentDocument.getInitialFormValues();\n\n const {\n permissions = [],\n isLoading: isLoadingPermissions,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: currentDocumentMeta.model,\n }))\n );\n\n const isLoading =\n isLoadingPermissions || documentLayoutResponse.isLoading || currentDocument.isLoading;\n\n if (isLoading && !currentDocument.document?.documentId) {\n return (\n <Loader small>\n {formatMessage({\n id: 'content-manager.ListViewTable.relation-loading',\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n );\n }\n\n if (\n error ||\n !currentDocumentMeta.model ||\n documentLayoutResponse.error ||\n (!isCreating && !currentDocument.document) ||\n (!isCreating && !currentDocument.meta) ||\n !currentDocument.schema ||\n !initialValues\n ) {\n return (\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n />\n </Flex>\n );\n }\n\n const documentTitle = currentDocument.getTitle(documentLayoutResponse.edit.settings.mainField);\n const hasDraftAndPublished = currentDocument.schema?.options?.draftAndPublish ?? false;\n\n const props = {\n activeTab: 'draft',\n collectionType: currentDocumentMeta.collectionType,\n model: currentDocumentMeta.model,\n documentId: currentDocumentMeta.documentId,\n document: currentDocument.document,\n meta: currentDocument.meta,\n } satisfies DocumentActionProps;\n\n return (\n <DocumentRBAC permissions={permissions} model={currentDocumentMeta.model}>\n <RelationModalFormBody\n currentDocument={currentDocument}\n documentTitle={documentTitle}\n hasDraftAndPublished={hasDraftAndPublished}\n layout={documentLayoutResponse.edit.layout}\n plugins={plugins}\n props={props}\n />\n </DocumentRBAC>\n );\n};\n\ninterface RelationModalFormBodyProps {\n currentDocument: ReturnType<UseDocument>;\n documentTitle: string;\n hasDraftAndPublished: boolean;\n layout: FormLayoutProps['layout'];\n plugins: StrapiAppContextValue['plugins'];\n props: DocumentActionProps;\n}\n\n/**\n * Rendered as the child of `DocumentRBAC` so it can wait on `useDocumentRBAC`'s `isLoading`\n * before showing the document actions and form — otherwise fields briefly render as\n * not-allowed while permissions are still resolving.\n */\nconst RelationModalFormBody = ({\n currentDocument,\n documentTitle,\n hasDraftAndPublished,\n layout,\n plugins,\n props,\n}: RelationModalFormBodyProps) => {\n const { formatMessage } = useIntl();\n const isLoadingActionsRBAC = useDocumentRBAC('RelationModalFormBody', (state) => state.isLoading);\n\n if (isLoadingActionsRBAC) {\n return (\n <Loader small>\n {formatMessage({\n id: 'content-manager.ListViewTable.relation-loading',\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n );\n }\n\n return (\n <>\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={2}>\n <Flex width=\"100%\" justifyContent=\"space-between\" gap={2}>\n <Typography tag=\"h2\" variant=\"alpha\">\n {documentTitle}\n </Typography>\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('relation-modal')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) => {\n return [action.position].flat().includes('relation-modal');\n });\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n {hasDraftAndPublished ? (\n <Box>\n <DocumentStatus status={currentDocument.document?.status} />\n </Box>\n ) : null}\n </Flex>\n\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\" paddingTop={7}>\n <Box overflow=\"auto\" flex={1}>\n <FormLayout layout={layout} document={currentDocument} hasBackground={false} />\n </Box>\n </Flex>\n </>\n );\n};\n\nexport {\n reducer,\n RelationModalRenderer,\n useRelationModal,\n isAnyRelationModalOpen,\n getFullPageUrl,\n generateCreateUrl,\n prefillParentRelation,\n RelationModalFormBody,\n};\nexport type { State, Action, RelationOpenMode, PendingConnectPatch, RelationModalFormBodyProps };\n"],"names":["getCollectionType","url","regex","RegExp","COLLECTION_TYPES","SINGLE_TYPES","match","undefined","StyledModalContent","styled","Modal","Content","getFullPageUrl","currentDocumentMeta","isSingleType","collectionType","queryParams","params","locale","model","documentId","getDocumentHistoryKey","meta","EMPTY_PENDING_CONNECTS","reducer","state","action","type","hasUnsavedChanges","payload","shouldBypassConfirmation","confirmDialogIntent","document","fieldToConnect","fieldToConnectUID","getParentFormValues","setParentFormValue","lastItemDocumentHistory","documentHistory","at","hasToResetDocumentHistory","isModalOpen","slice","pendingConnects","nestedParentMeta","length","connectPatch","key","documentMeta","openRelationModalCount","isAnyRelationModalOpen","RelationModalProvider","useRelationModal","createContext","isRenderProp","children","RootRelationRenderer","props","dispatch","React","useReducer","rootDocument","useDoc","query","useQueryParams","useMemo","buildValidParams","rootDocumentMeta","documentLayoutResponse","useDocumentLayout","relationOpenMode","edit","settings","currentDocument","useDocument","isCreating","useEffect","_jsx","RelationModal","relation","RelationModalTrigger","NestedRelationRenderer","RelationModalRenderer","isNested","generateCreateUrl","prefillParentRelation","initialValues","childSchema","parentDocument","parentModel","parentFieldName","inverseField","Object","entries","attributes","find","attribute","target","inversedBy","mappedBy","id","connect","fromEntries","filter","value","includes","apiData","isTemporary","__temp_key__","generateNKeysBetween","disconnect","formatMessage","useIntl","navigate","useNavigate","parentDocumentMeta","skip","pendingConnectsForCurrent","baseInitialValues","getInitialFormValues","schema","reduce","values","patch","withRelation","setIn","relationValue","componentUIDPath","componentUID","ComponentProvider","level","uid","_jsxs","Root","open","onOpenChange","Header","gap","Flex","justifyContent","alignItems","width","IconButton","withTooltip","label","defaultMessage","variant","disabled","onClick","marginRight","ArrowLeft","Typography","tag","fontWeight","ArrowsOut","Body","FormContext","method","validate","options","yupSchema","createYupSchema","components","status","abortEarly","RelationModalBody","pathname","search","useLocation","triggerRefetchDocument","useLazyGetDocumentQuery","modified","useForm","isSubmitting","handleCloseModal","handleRedirection","editViewUrl","fullPageUrl","isRootDocumentUrl","handleConfirm","_Fragment","RelationModalForm","Dialog","ConfirmDialog","onConfirm","onCancel","StyledRelationLink","to","rel","StyledTextButton","TextButton","theme","fontSizes","RouterLink","colors","primary600","primary700","plugins","useStrapiApp","permissions","isLoading","isLoadingPermissions","error","useRBAC","PERMISSIONS","map","subject","Loader","small","height","EmptyStateLayout","icon","WarningCircle","content","documentTitle","getTitle","mainField","hasDraftAndPublished","draftAndPublish","activeTab","DocumentRBAC","RelationModalFormBody","layout","isLoadingActionsRBAC","useDocumentRBAC","direction","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","actions","filteredActions","position","flat","primaryAction","secondaryAction","DocumentActionButton","Box","DocumentStatus","flex","overflow","paddingTop","FormLayout","hasBackground"],"mappings":"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"}
@@ -17,7 +17,7 @@ import '@strapi/admin/strapi-admin/ee';
17
17
  import '../../../../../preview/pages/Preview.mjs';
18
18
  import { useLazyGetDocumentQuery } from '../../../../../services/documents.mjs';
19
19
  import { useDocumentLayout } from '../../../../../hooks/useDocumentLayout.mjs';
20
- import { DocumentRBAC } from '../../../../../features/DocumentRBAC.mjs';
20
+ import { DocumentRBAC, useDocumentRBAC } from '../../../../../features/DocumentRBAC.mjs';
21
21
  import { setIn } from '../../../../../utils/objects.mjs';
22
22
  import { createYupSchema } from '../../../../../utils/validation.mjs';
23
23
  import { DocumentActionButton } from '../../DocumentActions.mjs';
@@ -698,9 +698,36 @@ const StyledRelationLink = styled(Link)`
698
698
  document: currentDocument.document,
699
699
  meta: currentDocument.meta
700
700
  };
701
- return /*#__PURE__*/ jsxs(DocumentRBAC, {
701
+ return /*#__PURE__*/ jsx(DocumentRBAC, {
702
702
  permissions: permissions,
703
703
  model: currentDocumentMeta.model,
704
+ children: /*#__PURE__*/ jsx(RelationModalFormBody, {
705
+ currentDocument: currentDocument,
706
+ documentTitle: documentTitle,
707
+ hasDraftAndPublished: hasDraftAndPublished,
708
+ layout: documentLayoutResponse.edit.layout,
709
+ plugins: plugins,
710
+ props: props
711
+ })
712
+ });
713
+ };
714
+ /**
715
+ * Rendered as the child of `DocumentRBAC` so it can wait on `useDocumentRBAC`'s `isLoading`
716
+ * before showing the document actions and form — otherwise fields briefly render as
717
+ * not-allowed while permissions are still resolving.
718
+ */ const RelationModalFormBody = ({ currentDocument, documentTitle, hasDraftAndPublished, layout, plugins, props })=>{
719
+ const { formatMessage } = useIntl();
720
+ const isLoadingActionsRBAC = useDocumentRBAC('RelationModalFormBody', (state)=>state.isLoading);
721
+ if (isLoadingActionsRBAC) {
722
+ return /*#__PURE__*/ jsx(Loader, {
723
+ small: true,
724
+ children: formatMessage({
725
+ id: 'content-manager.ListViewTable.relation-loading',
726
+ defaultMessage: 'Relations are loading'
727
+ })
728
+ });
729
+ }
730
+ return /*#__PURE__*/ jsxs(Fragment, {
704
731
  children: [
705
732
  /*#__PURE__*/ jsxs(Flex, {
706
733
  alignItems: "flex-start",
@@ -771,7 +798,7 @@ const StyledRelationLink = styled(Link)`
771
798
  overflow: "auto",
772
799
  flex: 1,
773
800
  children: /*#__PURE__*/ jsx(FormLayout, {
774
- layout: documentLayoutResponse.edit.layout,
801
+ layout: layout,
775
802
  document: currentDocument,
776
803
  hasBackground: false
777
804
  })
@@ -781,5 +808,5 @@ const StyledRelationLink = styled(Link)`
781
808
  });
782
809
  };
783
810
 
784
- export { RelationModalRenderer, generateCreateUrl, getCollectionType, getFullPageUrl, isAnyRelationModalOpen, prefillParentRelation, reducer, useRelationModal };
811
+ export { RelationModalFormBody, RelationModalRenderer, generateCreateUrl, getCollectionType, getFullPageUrl, isAnyRelationModalOpen, prefillParentRelation, reducer, useRelationModal };
785
812
  //# sourceMappingURL=RelationModal.mjs.map