@strapi/content-manager 5.22.0 → 5.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/Widgets.js +11 -5
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/components/Widgets.mjs +11 -5
- package/dist/admin/components/Widgets.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +8 -5
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +8 -5
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +16 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +17 -2
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +6 -2
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +6 -2
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/preview/utils/previewScript.js +178 -3
- package/dist/admin/preview/utils/previewScript.js.map +1 -1
- package/dist/admin/preview/utils/previewScript.mjs +178 -3
- package/dist/admin/preview/utils/previewScript.mjs.map +1 -1
- package/dist/admin/services/documents.js +0 -1
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +0 -1
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/src/preview/utils/previewScript.d.ts +2 -0
- package/dist/server/homepage/services/homepage.js +2 -2
- package/dist/server/homepage/services/homepage.js.map +1 -1
- package/dist/server/homepage/services/homepage.mjs +2 -2
- package/dist/server/homepage/services/homepage.mjs.map +1 -1
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -1
- package/package.json +5 -5
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EditViewPage.mjs","sources":["../../../../admin/src/pages/EditView/EditViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Blocker,\n Form,\n useForm,\n useRBAC,\n useNotification,\n useQueryParams,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport { Grid, Main, Tabs, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc, type UseDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useOnce } from '../../hooks/useOnce';\nimport { getTranslation } from '../../utils/translations';\nimport { createYupSchema } from '../../utils/validation';\n\nimport { FormLayout } from './components/FormLayout';\nimport { Header } from './components/Header';\nimport { Panels } from './components/Panels';\nimport { handleInvisibleAttributes } from './utils/data';\n\n/* -------------------------------------------------------------------------------------------------\n * EditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\n// Needs to be wrapped in a component to have access to the form context via a hook.\n// Using the Form component's render prop instead would cause unnecessary re-renders of Form children\nconst BlockerWrapper = () => {\n const resetForm = useForm('BlockerWrapper', (state) => state.resetForm);\n\n // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284\n return <Blocker onProceed={resetForm} />;\n};\n\nconst EditViewPage = () => {\n const location = useLocation();\n const [\n {\n query: { status },\n },\n setQuery,\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const doc = useDoc();\n const {\n document,\n meta,\n isLoading: isLoadingDocument,\n schema,\n components,\n collectionType,\n id,\n model,\n hasError,\n getTitle,\n getInitialFormValues,\n } = doc;\n\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n useOnce(() => {\n /**\n * We only ever want to fire the notification once otherwise\n * whenever the app re-renders it'll pop up regardless of\n * what we do because the state comes from react-router-dom\n */\n if (location?.state && 'error' in location.state) {\n toggleNotification({\n type: 'danger',\n message: location.state.error,\n timeout: 5000,\n });\n }\n });\n\n const isLoadingActionsRBAC = useDocumentRBAC('EditViewPage', (state) => state.isLoading);\n\n const isSingleType = collectionType === SINGLE_TYPES;\n\n /**\n * single-types don't current have an id, but because they're a singleton\n * we can simply use the update operation to continuously update the same\n * document with varying params.\n */\n const isCreatingDocument = !id && !isSingleType;\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { mainField },\n },\n } = useDocumentLayout(model);\n const pageTitle = getTitle(mainField);\n\n const { isLazyLoading } = useLazyComponents([]);\n\n const isLoading = isLoadingActionsRBAC || isLoadingDocument || isLoadingLayout || isLazyLoading;\n\n const initialValues = getInitialFormValues(isCreatingDocument);\n\n if (isLoading && !document?.documentId) {\n return <Page.Loading />;\n }\n\n if (!initialValues || hasError) {\n return <Page.Error />;\n }\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n ...options,\n });\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n return (\n <Main paddingLeft={10} paddingRight={10}>\n <Page.Title>{pageTitle}</Page.Title>\n {isSingleType && (\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n )}\n <Form\n disabled={hasDraftAndPublished && status === 'published'}\n initialValues={initialValues}\n method={isCreatingDocument ? 'POST' : 'PUT'}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n // removes hidden fields from the validation\n // this is necessary because the yup schema doesn't know about the visibility conditions\n // and we don't want to validate fields that are not visible\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema,\n initialValues,\n components,\n });\n\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n removedAttributes,\n ...options,\n });\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n >\n <>\n <Header\n isCreating={isCreatingDocument}\n status={hasDraftAndPublished ? getDocumentStatus(document, meta) : undefined}\n title={pageTitle}\n />\n <Tabs.Root variant=\"simple\" value={status} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTranslation('containers.edit.tabs.label'),\n defaultMessage: 'Document status',\n })}\n >\n {hasDraftAndPublished ? (\n <>\n <StatusTab value=\"draft\">\n {formatMessage({\n id: getTranslation('containers.edit.tabs.draft'),\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab\n disabled={!meta || meta.availableStatus.length === 0}\n value=\"published\"\n >\n {formatMessage({\n id: getTranslation('containers.edit.tabs.published'),\n defaultMessage: 'published',\n })}\n </StatusTab>\n </>\n ) : null}\n </Tabs.List>\n <Grid.Root paddingTop={8} gap={4}>\n <Grid.Item col={9} s={12} direction=\"column\" alignItems=\"stretch\">\n <tours.contentManager.Fields>\n <Tabs.Content value=\"draft\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </tours.contentManager.Fields>\n <Tabs.Content value=\"published\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </Grid.Item>\n <Grid.Item col={3} s={12} direction=\"column\" alignItems=\"stretch\">\n <Panels />\n </Grid.Item>\n </Grid.Root>\n </Tabs.Root>\n <BlockerWrapper />\n </>\n </Form>\n </Main>\n );\n};\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\n/**\n * @internal\n * @description Returns the status of the document where its latest state takes priority,\n * this typically will be \"published\" unless a user has edited their draft in which we should\n * display \"modified\".\n */\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <EditViewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { EditViewPage, ProtectedEditViewPage, getDocumentStatus };\n"],"names":["BlockerWrapper","resetForm","useForm","state","_jsx","Blocker","onProceed","EditViewPage","location","useLocation","query","status","setQuery","useQueryParams","formatMessage","useIntl","toggleNotification","useNotification","doc","useDoc","document","meta","isLoading","isLoadingDocument","schema","components","collectionType","id","model","hasError","getTitle","getInitialFormValues","hasDraftAndPublished","options","draftAndPublish","useOnce","type","message","error","timeout","isLoadingActionsRBAC","useDocumentRBAC","isSingleType","SINGLE_TYPES","isCreatingDocument","isLoadingLayout","edit","layout","settings","mainField","useDocumentLayout","pageTitle","isLazyLoading","useLazyComponents","initialValues","documentId","Page","Loading","Error","handleTabChange","validateSync","values","yupSchema","createYupSchema","attributes","abortEarly","_jsxs","Main","paddingLeft","paddingRight","Title","tours","contentManager","Introduction","Box","Form","disabled","method","validate","data","cleanedValues","removedAttributes","handleInvisibleAttributes","initialErrors","forceValidation","_Fragment","Header","isCreating","getDocumentStatus","undefined","title","Tabs","Root","variant","value","onValueChange","List","aria-label","getTranslation","defaultMessage","StatusTab","availableStatus","length","Grid","paddingTop","gap","Item","col","s","direction","alignItems","Fields","Content","FormLayout","Panels","styled","Trigger","docStatus","statuses","find","publishedAt","ProtectedEditViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","map","action","subject","Protect","DocumentRBAC"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"EditViewPage.mjs","sources":["../../../../admin/src/pages/EditView/EditViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n Blocker,\n Form,\n useForm,\n useRBAC,\n useNotification,\n useQueryParams,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport { Grid, Main, Tabs, Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { SINGLE_TYPES } from '../../constants/collections';\nimport { PERMISSIONS } from '../../constants/plugin';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { useDoc, type UseDocument } from '../../hooks/useDocument';\nimport { useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { useLazyComponents } from '../../hooks/useLazyComponents';\nimport { useOnce } from '../../hooks/useOnce';\nimport { getTranslation } from '../../utils/translations';\nimport { createYupSchema } from '../../utils/validation';\n\nimport { FormLayout } from './components/FormLayout';\nimport { Header } from './components/Header';\nimport { Panels } from './components/Panels';\nimport { handleInvisibleAttributes } from './utils/data';\n\n/* -------------------------------------------------------------------------------------------------\n * EditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\n// Needs to be wrapped in a component to have access to the form context via a hook.\n// Using the Form component's render prop instead would cause unnecessary re-renders of Form children\nconst BlockerWrapper = () => {\n const resetForm = useForm('BlockerWrapper', (state) => state.resetForm);\n\n // We reset the form to the published version to avoid errors like – https://strapi-inc.atlassian.net/browse/CONTENT-2284\n return <Blocker onProceed={resetForm} />;\n};\n\nconst EditViewPage = () => {\n const location = useLocation();\n const [\n {\n query: { status },\n },\n setQuery,\n ] = useQueryParams<{ status: 'draft' | 'published' }>({\n status: 'draft',\n });\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n\n const doc = useDoc();\n const {\n document,\n meta,\n isLoading: isLoadingDocument,\n schema,\n components,\n collectionType,\n id,\n model,\n hasError,\n getTitle,\n getInitialFormValues,\n } = doc;\n\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n useOnce(() => {\n /**\n * We only ever want to fire the notification once otherwise\n * whenever the app re-renders it'll pop up regardless of\n * what we do because the state comes from react-router-dom\n */\n if (location?.state && 'error' in location.state) {\n toggleNotification({\n type: 'danger',\n message: location.state.error,\n timeout: 5000,\n });\n }\n });\n\n const isLoadingActionsRBAC = useDocumentRBAC('EditViewPage', (state) => state.isLoading);\n\n const isSingleType = collectionType === SINGLE_TYPES;\n\n /**\n * single-types don't current have an id, but because they're a singleton\n * we can simply use the update operation to continuously update the same\n * document with varying params.\n */\n const isCreatingDocument = !id && !isSingleType;\n\n const {\n isLoading: isLoadingLayout,\n edit: {\n layout,\n settings: { mainField },\n },\n } = useDocumentLayout(model);\n const pageTitle = getTitle(mainField);\n\n const { isLazyLoading } = useLazyComponents([]);\n\n const isLoading = isLoadingActionsRBAC || isLoadingDocument || isLoadingLayout || isLazyLoading;\n\n const initialValues = getInitialFormValues(isCreatingDocument);\n\n if (isLoading && !document?.documentId) {\n return <Page.Loading />;\n }\n\n if (!initialValues || hasError) {\n return <Page.Error />;\n }\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n ...options,\n });\n\n return yupSchema.validateSync(values, { abortEarly: false });\n };\n\n return (\n <Main paddingLeft={10} paddingRight={10}>\n <Page.Title>{pageTitle}</Page.Title>\n {isSingleType && (\n <tours.contentManager.Introduction>\n {/* Invisible Anchor */}\n <Box />\n </tours.contentManager.Introduction>\n )}\n <Form\n disabled={hasDraftAndPublished && status === 'published'}\n initialValues={initialValues}\n method={isCreatingDocument ? 'POST' : 'PUT'}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n // removes hidden fields from the validation\n // this is necessary because the yup schema doesn't know about the visibility conditions\n // and we don't want to validate fields that are not visible\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema,\n initialValues,\n components,\n });\n\n const yupSchema = createYupSchema(schema?.attributes, components, {\n status,\n removedAttributes,\n ...options,\n });\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n >\n <>\n <Header\n isCreating={isCreatingDocument}\n status={hasDraftAndPublished ? getDocumentStatus(document, meta) : undefined}\n title={pageTitle}\n />\n <Tabs.Root variant=\"simple\" value={status} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTranslation('containers.edit.tabs.label'),\n defaultMessage: 'Document status',\n })}\n >\n {hasDraftAndPublished ? (\n <>\n <StatusTab value=\"draft\">\n {formatMessage({\n id: getTranslation('containers.edit.tabs.draft'),\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab\n disabled={!meta || meta.availableStatus.length === 0}\n value=\"published\"\n >\n {formatMessage({\n id: getTranslation('containers.edit.tabs.published'),\n defaultMessage: 'published',\n })}\n </StatusTab>\n </>\n ) : null}\n </Tabs.List>\n <Grid.Root paddingTop={8} gap={4}>\n <Grid.Item col={9} s={12} direction=\"column\" alignItems=\"stretch\">\n <Tabs.Content value=\"draft\">\n <tours.contentManager.Fields>\n <Box />\n </tours.contentManager.Fields>\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n <Tabs.Content value=\"published\">\n <FormLayout layout={layout} document={doc} />\n </Tabs.Content>\n </Grid.Item>\n <Grid.Item col={3} s={12} direction=\"column\" alignItems=\"stretch\">\n <Panels />\n </Grid.Item>\n </Grid.Root>\n </Tabs.Root>\n <BlockerWrapper />\n </>\n </Form>\n </Main>\n );\n};\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\n/**\n * @internal\n * @description Returns the status of the document where its latest state takes priority,\n * this typically will be \"published\" unless a user has edited their draft in which we should\n * display \"modified\".\n */\nconst getDocumentStatus = (\n document: ReturnType<UseDocument>['document'],\n meta: ReturnType<UseDocument>['meta']\n): 'draft' | 'published' | 'modified' => {\n const docStatus = document?.status;\n const statuses = meta?.availableStatus ?? [];\n\n /**\n * Creating an entry\n */\n if (!docStatus) {\n return 'draft';\n }\n\n /**\n * We're viewing a draft, but the document could have a published version\n */\n if (docStatus === 'draft' && statuses.find((doc) => doc.publishedAt !== null)) {\n return 'published';\n }\n\n return docStatus;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditViewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditViewPage = () => {\n const { slug = '' } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: slug,\n }))\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !slug) {\n return <Page.Error />;\n }\n\n return (\n <Page.Protect permissions={permissions}>\n {({ permissions }) => (\n <DocumentRBAC permissions={permissions}>\n <EditViewPage />\n </DocumentRBAC>\n )}\n </Page.Protect>\n );\n};\n\nexport { EditViewPage, ProtectedEditViewPage, getDocumentStatus };\n"],"names":["BlockerWrapper","resetForm","useForm","state","_jsx","Blocker","onProceed","EditViewPage","location","useLocation","query","status","setQuery","useQueryParams","formatMessage","useIntl","toggleNotification","useNotification","doc","useDoc","document","meta","isLoading","isLoadingDocument","schema","components","collectionType","id","model","hasError","getTitle","getInitialFormValues","hasDraftAndPublished","options","draftAndPublish","useOnce","type","message","error","timeout","isLoadingActionsRBAC","useDocumentRBAC","isSingleType","SINGLE_TYPES","isCreatingDocument","isLoadingLayout","edit","layout","settings","mainField","useDocumentLayout","pageTitle","isLazyLoading","useLazyComponents","initialValues","documentId","Page","Loading","Error","handleTabChange","validateSync","values","yupSchema","createYupSchema","attributes","abortEarly","_jsxs","Main","paddingLeft","paddingRight","Title","tours","contentManager","Introduction","Box","Form","disabled","method","validate","data","cleanedValues","removedAttributes","handleInvisibleAttributes","initialErrors","forceValidation","_Fragment","Header","isCreating","getDocumentStatus","undefined","title","Tabs","Root","variant","value","onValueChange","List","aria-label","getTranslation","defaultMessage","StatusTab","availableStatus","length","Grid","paddingTop","gap","Item","col","s","direction","alignItems","Content","Fields","FormLayout","Panels","styled","Trigger","docStatus","statuses","find","publishedAt","ProtectedEditViewPage","slug","useParams","permissions","useRBAC","PERMISSIONS","map","action","subject","Protect","DocumentRBAC"],"mappings":"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"}
|
@@ -416,6 +416,7 @@ const transformData = (data)=>{
|
|
416
416
|
const fieldToConnectUID = RelationModal.useRelationModal('PublishAction', (state)=>state.state.fieldToConnectUID, false);
|
417
417
|
const documentHistory = RelationModal.useRelationModal('PublishAction', (state)=>state.state.documentHistory, false);
|
418
418
|
const rootDocumentMeta = RelationModal.useRelationModal('PublishAction', (state)=>state.rootDocumentMeta);
|
419
|
+
const dispatchGuidedTour = strapiAdmin.useGuidedTour('PublishAction', (s)=>s.dispatch);
|
419
420
|
const { currentDocumentMeta } = useDocumentContext.useDocumentContext('PublishAction');
|
420
421
|
const [updateDocumentMutation] = documents.useUpdateDocumentMutation();
|
421
422
|
const { _unstableFormatAPIError: formatAPIError } = strapiAdmin.useAPIErrorHandler();
|
@@ -559,6 +560,12 @@ const transformData = (data)=>{
|
|
559
560
|
// Reset form if successful
|
560
561
|
if ('data' in res) {
|
561
562
|
resetForm();
|
563
|
+
dispatchGuidedTour({
|
564
|
+
type: 'set_completed_actions',
|
565
|
+
payload: [
|
566
|
+
strapiAdmin.GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent
|
567
|
+
]
|
568
|
+
});
|
562
569
|
}
|
563
570
|
if ('data' in res && collectionType !== collections.SINGLE_TYPES) {
|
564
571
|
/**
|
@@ -682,6 +689,7 @@ PublishAction.position = [
|
|
682
689
|
'relation-modal'
|
683
690
|
];
|
684
691
|
const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
692
|
+
const dispatchGuidedTour = strapiAdmin.useGuidedTour('UpdateAction', (s)=>s.dispatch);
|
685
693
|
const navigate = reactRouterDom.useNavigate();
|
686
694
|
const { toggleNotification } = strapiAdmin.useNotification();
|
687
695
|
const { _unstableFormatValidationErrors: formatValidationErrors } = strapiAdmin.useAPIErrorHandler();
|
@@ -849,6 +857,12 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
849
857
|
}
|
850
858
|
}
|
851
859
|
} finally{
|
860
|
+
dispatchGuidedTour({
|
861
|
+
type: 'set_completed_actions',
|
862
|
+
payload: [
|
863
|
+
strapiAdmin.GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent
|
864
|
+
]
|
865
|
+
});
|
852
866
|
setSubmitting(false);
|
853
867
|
if (onPreview) {
|
854
868
|
onPreview();
|
@@ -889,7 +903,8 @@ const UpdateAction = ({ activeTab, documentId, model, collectionType })=>{
|
|
889
903
|
initialValues,
|
890
904
|
schema,
|
891
905
|
components,
|
892
|
-
relationalModalSchema
|
906
|
+
relationalModalSchema,
|
907
|
+
dispatchGuidedTour
|
893
908
|
]);
|
894
909
|
// Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux
|
895
910
|
React__namespace.useEffect(()=>{
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DocumentActions.js","sources":["../../../../../admin/src/pages/EditView/components/DocumentActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useForm,\n useNotification,\n NotificationConfig,\n useAPIErrorHandler,\n useQueryParams,\n tours,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n VisuallyHidden,\n Menu,\n ButtonProps,\n} from '@strapi/design-system';\nimport { Cross, More, WarningCircle } from '@strapi/icons';\nimport mapValues from 'lodash/fp/mapValues';\nimport get from 'lodash/get';\nimport merge from 'lodash/merge';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { Create, Publish } from '../../../../../shared/contracts/collection-types';\nimport { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc, useDocument } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { usePreviewContext } from '../../../preview/pages/Preview';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport {\n useGetDraftRelationCountQuery,\n useUpdateDocumentMutation,\n} from '../../../services/documents';\nimport { isBaseQueryError, buildValidParams } from '../../../utils/api';\nimport { getTranslation } from '../../../utils/translations';\nimport { AnyData, handleInvisibleAttributes } from '../utils/data';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { RelationsFormValue } from './FormInputs/Relations/Relations';\nimport type { DocumentActionComponent } from '../../../content-manager';\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row' | 'preview' | 'relation-modal';\n\ninterface DocumentActionDescription {\n label: string;\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n icon?: React.ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default 'panel'\n * @description Where the action should be rendered.\n */\n position?: DocumentActionPosition | DocumentActionPosition[];\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n /**\n * @default 'secondary'\n */\n variant?: ButtonProps['variant'];\n loading?: ButtonProps['loading'];\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n variant?: ButtonProps['variant'];\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n footer?: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n id: string;\n}\n\ninterface DocumentActionsProps {\n actions: Action[];\n}\n\nconst connectRelationToParent = (\n parentDataToUpdate: AnyData | undefined,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n fieldToConnectUID?: string\n) => {\n /*\n * Check if the fieldToConnect is already present in the parentDataToUpdate.\n * This happens in particular when in the parentDocument you have created\n * a new component without saving.\n */\n const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);\n const fieldToConnectPath = isFieldPresent\n ? fieldToConnect\n : // Compute the path to the parent object\n fieldToConnect.split('.').slice(0, -1).join('.');\n const fieldToConnectValue = isFieldPresent\n ? {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n }\n : {\n [fieldToConnect.split('.').pop()!]: {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n disconnect: [],\n },\n // In case the object was not present you need to pass the componentUID of the parent document\n __component: fieldToConnectUID,\n };\n const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);\n return merge(parentDataToUpdate, objectToConnect);\n};\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n const { formatMessage } = useIntl();\n const [primaryAction, secondaryAction, ...restActions] = actions.filter((action) => {\n if (action.position === undefined) {\n return true;\n }\n\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('panel');\n });\n\n if (!primaryAction) {\n return null;\n }\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\" width=\"100%\">\n <tours.contentManager.Publish>\n <Flex gap={2}>\n {primaryAction.label === 'Publish' ? (\n <DocumentActionButton {...primaryAction} variant={primaryAction.variant || 'default'} />\n ) : (\n <DocumentActionButton {...primaryAction} variant={primaryAction.variant || 'default'} />\n )}\n\n {restActions.length > 0 ? (\n <DocumentActionsMenu\n actions={restActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n />\n ) : null}\n </Flex>\n </tours.contentManager.Publish>\n {secondaryAction ? (\n secondaryAction.label === 'Publish' ? (\n <tours.contentManager.Publish>\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n </tours.contentManager.Publish>\n ) : (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n )\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Action {}\n\nconst DocumentActionButton = (action: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: Action) => async (e: React.MouseEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <>\n <Button\n flex=\"auto\"\n startIcon={action.icon}\n disabled={action.disabled}\n onClick={handleClick(action)}\n justifyContent=\"center\"\n variant={action.variant || 'default'}\n paddingTop=\"7px\"\n paddingBottom=\"7px\"\n loading={action.loading}\n >\n {action.label}\n </Button>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.dialog?.variant ?? action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionMenu\n * -----------------------------------------------------------------------------------------------*/\ninterface DocumentActionsMenuProps {\n actions: Action[];\n children?: React.ReactNode;\n label?: string;\n variant?: 'ghost' | 'tertiary';\n}\n\nconst DocumentActionsMenu = ({\n actions,\n children,\n label,\n variant = 'tertiary',\n}: DocumentActionsMenuProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const isDisabled = actions.every((action) => action.disabled) || actions.length === 0;\n\n const handleClick = (action: Action) => async (e: React.SyntheticEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n setIsOpen(false);\n };\n\n return (\n <Menu.Root open={isOpen} onOpenChange={setIsOpen}>\n <Menu.Trigger\n disabled={isDisabled}\n size=\"S\"\n endIcon={null}\n paddingTop=\"4px\"\n paddingLeft=\"7px\"\n paddingRight=\"7px\"\n variant={variant}\n >\n <More aria-hidden focusable={false} />\n <VisuallyHidden tag=\"span\">\n {label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n </VisuallyHidden>\n </Menu.Trigger>\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\">\n {actions.map((action) => {\n return (\n <Menu.Item\n disabled={action.disabled}\n /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n onSelect={handleClick(action)}\n display=\"block\"\n key={action.id}\n variant={action.variant === 'danger' ? action.variant : 'default'}\n startIcon={action.icon}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex gap={2} tag=\"span\">\n {action.label}\n </Flex>\n </Flex>\n </Menu.Item>\n );\n })}\n {children}\n </Menu.Content>\n {actions.map((action) => {\n return (\n <React.Fragment key={action.id}>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </React.Fragment>\n );\n })}\n </Menu.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps extends DialogOptions, Pick<Action, 'variant'> {\n onClose: () => void;\n isOpen: Dialog.Props['open'];\n loading?: ButtonProps['loading'];\n}\n\nconst DocumentActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n isOpen,\n variant = 'secondary',\n loading,\n}: DocumentActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{content}</Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button onClick={handleConfirm} variant={variant} fullWidth loading={loading}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content: Content,\n onModalClose,\n}: DocumentActionModalProps) => {\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n {typeof Content === 'function' ? (\n <Content onClose={handleClose} />\n ) : (\n <Modal.Body>{Content}</Modal.Body>\n )}\n {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst transformData = (data: Record<string, any>): any => {\n if (Array.isArray(data)) {\n return data.map(transformData);\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return mapValues(transformData)(data);\n }\n\n return data;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n meta,\n document,\n}) => {\n const {\n currentDocument: { schema },\n } = useDocumentContext('PublishAction');\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const isListView = useMatch(LIST_PATH) !== null;\n const isCloning = useMatch(CLONE_PATH) !== null;\n const { id } = useParams();\n const { formatMessage } = useIntl();\n const { canPublish, canReadFields } = useDocumentRBAC(\n 'PublishAction',\n ({ canPublish, canReadFields }) => ({ canPublish, canReadFields })\n );\n const { publish, isLoading } = useDocumentActions();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const [\n countDraftRelations,\n { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations },\n ] = useGetDraftRelationCountQuery();\n const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);\n const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);\n\n const [{ rawQuery }] = useQueryParams();\n\n const modified = useForm('PublishAction', ({ modified }) => modified);\n const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n const validate = useForm('PublishAction', (state) => state.validate);\n const setErrors = useForm('PublishAction', (state) => state.setErrors);\n const formValues = useForm('PublishAction', ({ values }) => values);\n const resetForm = useForm('PublishAction', ({ resetForm }) => resetForm);\n const {\n currentDocument: { components },\n } = useDocumentContext('PublishAction');\n\n // need to discriminate if the publish is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('PublishAction', () => true, false);\n const fromRelationModal = relationContext != undefined;\n\n const dispatch = useRelationModal('PublishAction', (state) => state.dispatch);\n const fieldToConnect = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'PublishAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('PublishAction', (state) => state.rootDocumentMeta);\n\n const { currentDocumentMeta } = useDocumentContext('PublishAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const idToPublish = currentDocumentMeta.documentId || id;\n\n React.useEffect(() => {\n if (isErrorDraftRelations) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('error.records.fetch-draft-relatons'),\n defaultMessage: 'An error occurred while fetching draft relations on this document.',\n }),\n });\n }\n }, [isErrorDraftRelations, toggleNotification, formatMessage]);\n\n React.useEffect(() => {\n const localDraftRelations = new Set();\n\n /**\n * Extracts draft relations from the provided data object.\n * It checks for a connect array of relations.\n * If a relation has a status of 'draft', its id is added to the localDraftRelations set.\n */\n const extractDraftRelations = (data: Omit<RelationsFormValue, 'disconnect'>) => {\n const relations = data.connect || [];\n relations.forEach((relation) => {\n if (relation.status === 'draft') {\n localDraftRelations.add(relation.id);\n }\n });\n };\n\n /**\n * Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.\n * If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.\n * It recursively calls itself for any non-null objects it contains.\n */\n const traverseAndExtract = (data: { [field: string]: any }) => {\n Object.entries(data).forEach(([key, value]) => {\n if (key === 'connect' && Array.isArray(value)) {\n extractDraftRelations({ connect: value });\n } else if (typeof value === 'object' && value !== null) {\n traverseAndExtract(value);\n }\n });\n };\n\n if (!documentId || modified) {\n traverseAndExtract(formValues);\n setLocalCountOfDraftRelations(localDraftRelations.size);\n }\n }, [documentId, modified, formValues, setLocalCountOfDraftRelations]);\n\n React.useEffect(() => {\n if (!document || !document.documentId || isListView) {\n return;\n }\n\n const fetchDraftRelationsCount = async () => {\n const { data, error } = await countDraftRelations({\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n });\n\n if (error) {\n throw error;\n }\n\n if (data) {\n setServerCountOfDraftRelations(data.data);\n }\n };\n\n fetchDraftRelationsCount();\n }, [\n isListView,\n document,\n documentId,\n countDraftRelations,\n collectionType,\n model,\n currentDocumentMeta.params,\n ]);\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { getInitialFormValues } = useDoc();\n\n const isDocumentPublished =\n (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||\n meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) &&\n document?.status !== 'modified';\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n const { errors } = await validate(true, {\n status: 'published',\n });\n if (errors) {\n const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName) => {\n const attribute = schema.attributes[fieldName];\n\n return attribute?.required && !(canReadFields ?? []).includes(fieldName);\n });\n\n if (hasUnreadableRequiredField) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error.unreadable-required-field',\n defaultMessage:\n 'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.',\n }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n }\n return;\n }\n const { data } = handleInvisibleAttributes(transformData(formValues), {\n schema,\n components,\n });\n const res = await publish(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n // Reset form if successful\n if ('data' in res) {\n resetForm();\n }\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n /**\n * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n */\n if (idToPublish === 'create' && !fromRelationModal) {\n navigate({\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n });\n } else if (fromRelationModal) {\n const newRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: metaDocumentToUpdate.collectionType,\n model: metaDocumentToUpdate.model,\n documentId:\n metaDocumentToUpdate.collectionType !== SINGLE_TYPES\n ? metaDocumentToUpdate.documentId\n : undefined,\n params: metaDocumentToUpdate.params,\n data: dataToUpdate,\n });\n\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: newRelation, shouldBypassConfirmation: true },\n });\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } finally {\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\n\n const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n const hasDraftRelations = enableDraftRelationsCount && totalDraftRelations > 0;\n\n return {\n loading: isLoading,\n position: ['panel', 'preview', 'relation-modal'],\n /**\n * Disabled when:\n * - currently if you're cloning a document we don't support publish & clone at the same time.\n * - the form is submitting\n * - the active tab is the published tab\n * - the document is already published & not modified\n * - the document is being created & not modified\n * - the user doesn't have the permission to publish\n */\n disabled:\n isCloning ||\n isSubmitting ||\n isLoadingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (hasDraftRelations) {\n // In this case we need to show the user a confirmation dialog.\n // Return from the onClick and let the dialog handle the process.\n return;\n }\n\n await performPublish();\n },\n dialog: hasDraftRelations\n ? {\n type: 'dialog',\n variant: 'danger',\n footer: null,\n title: formatMessage({\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),\n defaultMessage: 'Confirmation',\n }),\n content: formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app.',\n },\n {\n count: totalDraftRelations,\n }\n ),\n onConfirm: async () => {\n await performPublish();\n },\n }\n : undefined,\n };\n};\n\nPublishAction.type = 'publish';\nPublishAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UpdateAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n}) => {\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const cloneMatch = useMatch(CLONE_PATH);\n const isCloning = cloneMatch !== null;\n const { formatMessage } = useIntl();\n const { create, update, clone, isLoading } = useDocumentActions();\n const {\n currentDocument: { components },\n } = useDocumentContext('UpdateAction');\n const [{ rawQuery }] = useQueryParams();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const { getInitialFormValues } = useDoc();\n\n const isSubmitting = useForm('UpdateAction', ({ isSubmitting }) => isSubmitting);\n const modified = useForm('UpdateAction', ({ modified }) => modified);\n const setSubmitting = useForm('UpdateAction', ({ setSubmitting }) => setSubmitting);\n const initialValues = useForm('UpdateAction', ({ initialValues }) => initialValues);\n const document = useForm('UpdateAction', ({ values }) => values);\n const validate = useForm('UpdateAction', (state) => state.validate);\n const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n const resetForm = useForm('UpdateAction', ({ resetForm }) => resetForm);\n\n const dispatch = useRelationModal('UpdateAction', (state) => state.dispatch);\n\n // need to discriminate if the update is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('UpdateAction', () => true, false);\n const relationalModalSchema = useRelationModal(\n 'UpdateAction',\n (state) => state.currentDocument.schema,\n false\n );\n const fieldToConnect = useRelationModal(\n 'UpdateAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'UpdateAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('UpdateAction', (state) => state.rootDocumentMeta);\n const fromRelationModal = relationContext != undefined;\n\n const { currentDocumentMeta } = useDocumentContext('UpdateAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { schema } = useDoc();\n\n const handleUpdate = React.useCallback(async () => {\n setSubmitting(true);\n\n try {\n if (!modified) {\n return;\n }\n\n const { errors } = await validate(true, {\n status: 'draft',\n });\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params: currentDocumentMeta.params,\n },\n transformData(document)\n );\n\n if ('data' in res) {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { relative: 'path' }\n );\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } else if (documentId || collectionType === SINGLE_TYPES) {\n const { data } = handleInvisibleAttributes(transformData(document), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await update(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else {\n resetForm();\n }\n } else {\n const { data } = handleInvisibleAttributes(transformData(document), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await create(\n {\n model,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n if (fromRelationModal) {\n const createdRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: parentDocumentMetaToUpdate.collectionType,\n model: parentDocumentMetaToUpdate.model,\n documentId:\n parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES\n ? parentDocumentMetaToUpdate.documentId\n : undefined,\n params: parentDocumentMetaToUpdate.params,\n data: {\n ...dataToUpdate,\n },\n });\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: createdRelation, shouldBypassConfirmation: true },\n });\n } else {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { replace: true, relative: 'path' }\n );\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n }\n } finally {\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n }, [\n setSubmitting,\n modified,\n validate,\n isCloning,\n documentId,\n collectionType,\n toggleNotification,\n formatMessage,\n clone,\n model,\n cloneMatch?.params.origin,\n currentDocumentMeta.params,\n document,\n navigate,\n rawQuery,\n setErrors,\n formatValidationErrors,\n update,\n resetForm,\n create,\n fromRelationModal,\n fieldToConnect,\n documentHistory,\n parentDocumentMetaToUpdate,\n dispatch,\n getInitialFormValues,\n parentDocumentData,\n fieldToConnectUID,\n updateDocumentMutation,\n formatAPIError,\n onPreview,\n initialValues,\n schema,\n components,\n relationalModalSchema,\n ]);\n\n // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n handleUpdate();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleUpdate]);\n\n return {\n loading: isLoading,\n /**\n * Disabled when:\n * - the form is submitting\n * - the document is not modified & we're not cloning (you can save a clone entity straight away)\n * - the active tab is the published tab\n */\n disabled: isSubmitting || (!modified && !isCloning) || activeTab === 'published',\n label: formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n }),\n onClick: handleUpdate,\n position: ['panel', 'preview', 'relation-modal'],\n };\n};\n\nUpdateAction.type = 'update';\nUpdateAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UNPUBLISH_DRAFT_OPTIONS = {\n KEEP: 'keep',\n DISCARD: 'discard',\n};\n\nconst UnpublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canPublish = useDocumentRBAC('UnpublishAction', ({ canPublish }) => canPublish);\n const { unpublish } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { toggleNotification } = useNotification();\n const [shouldKeepDraft, setShouldKeepDraft] = React.useState(true);\n\n const isDocumentModified = document?.status === 'modified';\n\n const handleChange = (value: string) => {\n setShouldKeepDraft(value === UNPUBLISH_DRAFT_OPTIONS.KEEP);\n };\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled:\n !canPublish ||\n activeTab === 'published' ||\n (document?.status !== 'published' && document?.status !== 'modified'),\n label: formatMessage({\n id: 'app.utils.unpublish',\n defaultMessage: 'Unpublish',\n }),\n icon: <Cross />,\n onClick: async () => {\n /**\n * return if there's no id & we're in a collection type, or the status modified\n * for either collection type because we use a dialog to handle the process in\n * the latter case.\n */\n if ((!documentId && collectionType !== SINGLE_TYPES) || isDocumentModified) {\n if (!documentId) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n return;\n }\n\n await unpublish({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n dialog: isDocumentModified\n ? {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={6}>\n <Flex width=\"100%\" direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n <Radio.Group\n defaultValue={UNPUBLISH_DRAFT_OPTIONS.KEEP}\n name=\"discard-options\"\n aria-label={formatMessage({\n id: 'content-manager.actions.unpublish.dialog.radio-label',\n defaultMessage: 'Choose an option to unpublish the document.',\n })}\n onValueChange={handleChange}\n >\n <Radio.Item checked={shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.KEEP}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.keep-draft',\n defaultMessage: 'Keep draft',\n })}\n </Radio.Item>\n <Radio.Item checked={!shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.DISCARD}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.replace-draft',\n defaultMessage: 'Replace draft',\n })}\n </Radio.Item>\n </Radio.Group>\n </Flex>\n ),\n onConfirm: async () => {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n await unpublish(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n !shouldKeepDraft\n );\n },\n }\n : undefined,\n variant: 'danger',\n position: ['panel', 'table-row'],\n };\n};\n\nUnpublishAction.type = 'unpublish';\nUnpublishAction.position = 'panel';\n\nconst DiscardAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canUpdate = useDocumentRBAC('DiscardAction', ({ canUpdate }) => canUpdate);\n const { discard, isLoading } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled: !canUpdate || activeTab === 'published' || document?.status !== 'modified',\n label: formatMessage({\n id: 'content-manager.actions.discard.label',\n defaultMessage: 'Discard changes',\n }),\n icon: <Cross />,\n position: ['panel', 'table-row'],\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.discard.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n await discard({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n },\n };\n};\n\nDiscardAction.type = 'discard';\nDiscardAction.position = 'panel';\n\nconst DEFAULT_ACTIONS = [PublishAction, UpdateAction, UnpublishAction, DiscardAction];\n\nexport { DocumentActions, DocumentActionsMenu, DocumentActionButton, DEFAULT_ACTIONS };\nexport type {\n DocumentActionDescription,\n DocumentActionPosition,\n DialogOptions,\n NotificationOptions,\n ModalOptions,\n};\n"],"names":["connectRelationToParent","parentDataToUpdate","fieldToConnect","data","fieldToConnectUID","isFieldPresent","get","fieldToConnectPath","split","slice","join","fieldToConnectValue","connect","id","documentId","locale","pop","disconnect","__component","objectToConnect","set","merge","DocumentActions","actions","formatMessage","useIntl","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","_jsxs","Flex","direction","gap","alignItems","width","_jsx","tours","contentManager","Publish","label","DocumentActionButton","variant","length","DocumentActionsMenu","defaultMessage","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","type","title","message","content","status","timeout","onClose","preventDefault","handleClose","_Fragment","Button","flex","startIcon","icon","disabled","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","children","setIsOpen","isDisabled","every","Menu","Root","open","onOpenChange","Trigger","size","endIcon","paddingLeft","paddingRight","More","aria-hidden","focusable","VisuallyHidden","tag","Content","maxHeight","popoverPlacement","map","Item","onSelect","display","Fragment","onCancel","onConfirm","handleConfirm","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","apiData","mapValues","PublishAction","activeTab","model","collectionType","meta","document","currentDocument","schema","useDocumentContext","navigate","useNavigate","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isListView","useMatch","LIST_PATH","isCloning","CLONE_PATH","useParams","canPublish","canReadFields","useDocumentRBAC","publish","isLoading","useDocumentActions","onPreview","usePreviewContext","state","countDraftRelations","isLoadingDraftRelations","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localCountOfDraftRelations","setLocalCountOfDraftRelations","serverCountOfDraftRelations","setServerCountOfDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","formValues","values","resetForm","components","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","options","draftAndPublish","performPublish","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","required","handleInvisibleAttributes","res","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","payload","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","count","UpdateAction","cloneMatch","create","update","clone","initialValues","relationalModalSchema","handleUpdate","useCallback","origin","relative","createdRelation","replace","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","UNPUBLISH_DRAFT_OPTIONS","KEEP","DISCARD","UnpublishAction","unpublish","query","useMemo","buildValidParams","shouldKeepDraft","setShouldKeepDraft","isDocumentModified","handleChange","Cross","console","WarningCircle","height","fill","Typography","textAlign","Radio","Group","defaultValue","aria-label","onValueChange","checked","DiscardAction","canUpdate","discard","DEFAULT_ACTIONS"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"DocumentActions.js","sources":["../../../../../admin/src/pages/EditView/components/DocumentActions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useForm,\n useNotification,\n NotificationConfig,\n useAPIErrorHandler,\n useQueryParams,\n tours,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n} from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n Modal,\n Radio,\n Typography,\n VisuallyHidden,\n Menu,\n ButtonProps,\n} from '@strapi/design-system';\nimport { Cross, More, WarningCircle } from '@strapi/icons';\nimport mapValues from 'lodash/fp/mapValues';\nimport get from 'lodash/get';\nimport merge from 'lodash/merge';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useNavigate, useParams } from 'react-router-dom';\n\nimport { Create, Publish } from '../../../../../shared/contracts/collection-types';\nimport { PUBLISHED_AT_ATTRIBUTE_NAME } from '../../../constants/attributes';\nimport { SINGLE_TYPES } from '../../../constants/collections';\nimport { useDocumentRBAC } from '../../../features/DocumentRBAC';\nimport { useDoc, useDocument } from '../../../hooks/useDocument';\nimport { useDocumentActions } from '../../../hooks/useDocumentActions';\nimport { useDocumentContext } from '../../../hooks/useDocumentContext';\nimport { usePreviewContext } from '../../../preview/pages/Preview';\nimport { CLONE_PATH, LIST_PATH } from '../../../router';\nimport {\n useGetDraftRelationCountQuery,\n useUpdateDocumentMutation,\n} from '../../../services/documents';\nimport { isBaseQueryError, buildValidParams } from '../../../utils/api';\nimport { getTranslation } from '../../../utils/translations';\nimport { AnyData, handleInvisibleAttributes } from '../utils/data';\n\nimport { useRelationModal } from './FormInputs/Relations/RelationModal';\n\nimport type { RelationsFormValue } from './FormInputs/Relations/Relations';\nimport type { DocumentActionComponent } from '../../../content-manager';\n/* -------------------------------------------------------------------------------------------------\n * Types\n * -----------------------------------------------------------------------------------------------*/\ntype DocumentActionPosition = 'panel' | 'header' | 'table-row' | 'preview' | 'relation-modal';\n\ninterface DocumentActionDescription {\n label: string;\n onClick?: (event: React.SyntheticEvent) => Promise<boolean | void> | boolean | void;\n icon?: React.ReactNode;\n /**\n * @default false\n */\n disabled?: boolean;\n /**\n * @default 'panel'\n * @description Where the action should be rendered.\n */\n position?: DocumentActionPosition | DocumentActionPosition[];\n dialog?: DialogOptions | NotificationOptions | ModalOptions;\n /**\n * @default 'secondary'\n */\n variant?: ButtonProps['variant'];\n loading?: ButtonProps['loading'];\n}\n\ninterface DialogOptions {\n type: 'dialog';\n title: string;\n content?: React.ReactNode;\n variant?: ButtonProps['variant'];\n onConfirm?: () => void | Promise<void>;\n onCancel?: () => void | Promise<void>;\n}\n\ninterface NotificationOptions {\n type: 'notification';\n title: string;\n link?: {\n label: string;\n url: string;\n target?: string;\n };\n content?: string;\n onClose?: () => void;\n status?: NotificationConfig['type'];\n timeout?: number;\n}\n\ninterface ModalOptions {\n type: 'modal';\n title: string;\n content: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n footer?: React.ComponentType<{ onClose: () => void }> | React.ReactNode;\n onClose?: () => void;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActions\n * -----------------------------------------------------------------------------------------------*/\n\ninterface Action extends DocumentActionDescription {\n id: string;\n}\n\ninterface DocumentActionsProps {\n actions: Action[];\n}\n\nconst connectRelationToParent = (\n parentDataToUpdate: AnyData | undefined,\n fieldToConnect: string,\n data: Create.Response['data'] | Publish.Response['data'],\n fieldToConnectUID?: string\n) => {\n /*\n * Check if the fieldToConnect is already present in the parentDataToUpdate.\n * This happens in particular when in the parentDocument you have created\n * a new component without saving.\n */\n const isFieldPresent = !!get(parentDataToUpdate, fieldToConnect);\n const fieldToConnectPath = isFieldPresent\n ? fieldToConnect\n : // Compute the path to the parent object\n fieldToConnect.split('.').slice(0, -1).join('.');\n const fieldToConnectValue = isFieldPresent\n ? {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n }\n : {\n [fieldToConnect.split('.').pop()!]: {\n connect: [\n {\n id: data.documentId,\n documentId: data.documentId,\n locale: data.locale,\n },\n ],\n disconnect: [],\n },\n // In case the object was not present you need to pass the componentUID of the parent document\n __component: fieldToConnectUID,\n };\n const objectToConnect = set({}, fieldToConnectPath, fieldToConnectValue);\n return merge(parentDataToUpdate, objectToConnect);\n};\n\nconst DocumentActions = ({ actions }: DocumentActionsProps) => {\n const { formatMessage } = useIntl();\n const [primaryAction, secondaryAction, ...restActions] = actions.filter((action) => {\n if (action.position === undefined) {\n return true;\n }\n\n const positions = Array.isArray(action.position) ? action.position : [action.position];\n return positions.includes('panel');\n });\n\n if (!primaryAction) {\n return null;\n }\n\n return (\n <Flex direction=\"column\" gap={2} alignItems=\"stretch\" width=\"100%\">\n <tours.contentManager.Publish>\n <Flex gap={2}>\n {primaryAction.label === 'Publish' ? (\n <DocumentActionButton {...primaryAction} variant={primaryAction.variant || 'default'} />\n ) : (\n <DocumentActionButton {...primaryAction} variant={primaryAction.variant || 'default'} />\n )}\n\n {restActions.length > 0 ? (\n <DocumentActionsMenu\n actions={restActions}\n label={formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n />\n ) : null}\n </Flex>\n </tours.contentManager.Publish>\n {secondaryAction ? (\n secondaryAction.label === 'Publish' ? (\n <tours.contentManager.Publish>\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n </tours.contentManager.Publish>\n ) : (\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n )\n ) : null}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionButton\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionButtonProps extends Action {}\n\nconst DocumentActionButton = (action: DocumentActionButtonProps) => {\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { toggleNotification } = useNotification();\n\n const handleClick = (action: Action) => async (e: React.MouseEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n e.preventDefault();\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n };\n\n return (\n <>\n <Button\n flex=\"auto\"\n startIcon={action.icon}\n disabled={action.disabled}\n onClick={handleClick(action)}\n justifyContent=\"center\"\n variant={action.variant || 'default'}\n paddingTop=\"7px\"\n paddingBottom=\"7px\"\n loading={action.loading}\n >\n {action.label}\n </Button>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.dialog?.variant ?? action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionMenu\n * -----------------------------------------------------------------------------------------------*/\ninterface DocumentActionsMenuProps {\n actions: Action[];\n children?: React.ReactNode;\n label?: string;\n variant?: 'ghost' | 'tertiary';\n}\n\nconst DocumentActionsMenu = ({\n actions,\n children,\n label,\n variant = 'tertiary',\n}: DocumentActionsMenuProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [dialogId, setDialogId] = React.useState<string | null>(null);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const isDisabled = actions.every((action) => action.disabled) || actions.length === 0;\n\n const handleClick = (action: Action) => async (e: React.SyntheticEvent) => {\n const { onClick = () => false, dialog, id } = action;\n\n const muteDialog = await onClick(e);\n\n if (dialog && !muteDialog) {\n switch (dialog.type) {\n case 'notification':\n toggleNotification({\n title: dialog.title,\n message: dialog.content,\n type: dialog.status,\n timeout: dialog.timeout,\n onClose: dialog.onClose,\n });\n break;\n case 'dialog':\n case 'modal':\n setDialogId(id);\n }\n }\n };\n\n const handleClose = () => {\n setDialogId(null);\n setIsOpen(false);\n };\n\n return (\n <Menu.Root open={isOpen} onOpenChange={setIsOpen}>\n <Menu.Trigger\n disabled={isDisabled}\n size=\"S\"\n endIcon={null}\n paddingTop=\"4px\"\n paddingLeft=\"7px\"\n paddingRight=\"7px\"\n variant={variant}\n >\n <More aria-hidden focusable={false} />\n <VisuallyHidden tag=\"span\">\n {label ||\n formatMessage({\n id: 'content-manager.containers.edit.panels.default.more-actions',\n defaultMessage: 'More document actions',\n })}\n </VisuallyHidden>\n </Menu.Trigger>\n <Menu.Content maxHeight={undefined} popoverPlacement=\"bottom-end\">\n {actions.map((action) => {\n return (\n <Menu.Item\n disabled={action.disabled}\n /* @ts-expect-error – TODO: this is an error in the DS where it is most likely a synthetic event, not regular. */\n onSelect={handleClick(action)}\n display=\"block\"\n key={action.id}\n variant={action.variant === 'danger' ? action.variant : 'default'}\n startIcon={action.icon}\n >\n <Flex justifyContent=\"space-between\" gap={4}>\n <Flex gap={2} tag=\"span\">\n {action.label}\n </Flex>\n </Flex>\n </Menu.Item>\n );\n })}\n {children}\n </Menu.Content>\n {actions.map((action) => {\n return (\n <React.Fragment key={action.id}>\n {action.dialog?.type === 'dialog' ? (\n <DocumentActionConfirmDialog\n {...action.dialog}\n variant={action.variant}\n isOpen={dialogId === action.id}\n onClose={handleClose}\n />\n ) : null}\n {action.dialog?.type === 'modal' ? (\n <DocumentActionModal\n {...action.dialog}\n onModalClose={handleClose}\n isOpen={dialogId === action.id}\n />\n ) : null}\n </React.Fragment>\n );\n })}\n </Menu.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionConfirmDialog\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionConfirmDialogProps extends DialogOptions, Pick<Action, 'variant'> {\n onClose: () => void;\n isOpen: Dialog.Props['open'];\n loading?: ButtonProps['loading'];\n}\n\nconst DocumentActionConfirmDialog = ({\n onClose,\n onCancel,\n onConfirm,\n title,\n content,\n isOpen,\n variant = 'secondary',\n loading,\n}: DocumentActionConfirmDialogProps) => {\n const { formatMessage } = useIntl();\n\n const handleClose = async () => {\n if (onCancel) {\n await onCancel();\n }\n\n onClose();\n };\n\n const handleConfirm = async () => {\n if (onConfirm) {\n await onConfirm();\n }\n\n onClose();\n };\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={handleClose}>\n <Dialog.Content>\n <Dialog.Header>{title}</Dialog.Header>\n <Dialog.Body>{content}</Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Button>\n </Dialog.Cancel>\n <Button onClick={handleConfirm} variant={variant} fullWidth loading={loading}>\n {formatMessage({\n id: 'app.components.Button.confirm',\n defaultMessage: 'Confirm',\n })}\n </Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DocumentActionModalProps extends ModalOptions {\n onModalClose: () => void;\n isOpen?: boolean;\n}\n\nconst DocumentActionModal = ({\n isOpen,\n title,\n onClose,\n footer: Footer,\n content: Content,\n onModalClose,\n}: DocumentActionModalProps) => {\n const handleClose = () => {\n if (onClose) {\n onClose();\n }\n\n onModalClose();\n };\n\n return (\n <Modal.Root open={isOpen} onOpenChange={handleClose}>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n {typeof Content === 'function' ? (\n <Content onClose={handleClose} />\n ) : (\n <Modal.Body>{Content}</Modal.Body>\n )}\n {typeof Footer === 'function' ? <Footer onClose={handleClose} /> : Footer}\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst transformData = (data: Record<string, any>): any => {\n if (Array.isArray(data)) {\n return data.map(transformData);\n }\n\n if (typeof data === 'object' && data !== null) {\n if ('apiData' in data) {\n return data.apiData;\n }\n\n return mapValues(transformData)(data);\n }\n\n return data;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DocumentActionComponents\n * -----------------------------------------------------------------------------------------------*/\n\nconst PublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n meta,\n document,\n}) => {\n const {\n currentDocument: { schema },\n } = useDocumentContext('PublishAction');\n\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const isListView = useMatch(LIST_PATH) !== null;\n const isCloning = useMatch(CLONE_PATH) !== null;\n const { id } = useParams();\n const { formatMessage } = useIntl();\n const { canPublish, canReadFields } = useDocumentRBAC(\n 'PublishAction',\n ({ canPublish, canReadFields }) => ({ canPublish, canReadFields })\n );\n const { publish, isLoading } = useDocumentActions();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const [\n countDraftRelations,\n { isLoading: isLoadingDraftRelations, isError: isErrorDraftRelations },\n ] = useGetDraftRelationCountQuery();\n const [localCountOfDraftRelations, setLocalCountOfDraftRelations] = React.useState(0);\n const [serverCountOfDraftRelations, setServerCountOfDraftRelations] = React.useState(0);\n\n const [{ rawQuery }] = useQueryParams();\n\n const modified = useForm('PublishAction', ({ modified }) => modified);\n const setSubmitting = useForm('PublishAction', ({ setSubmitting }) => setSubmitting);\n const isSubmitting = useForm('PublishAction', ({ isSubmitting }) => isSubmitting);\n const validate = useForm('PublishAction', (state) => state.validate);\n const setErrors = useForm('PublishAction', (state) => state.setErrors);\n const formValues = useForm('PublishAction', ({ values }) => values);\n const resetForm = useForm('PublishAction', ({ resetForm }) => resetForm);\n const {\n currentDocument: { components },\n } = useDocumentContext('PublishAction');\n\n // need to discriminate if the publish is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('PublishAction', () => true, false);\n const fromRelationModal = relationContext != undefined;\n\n const dispatch = useRelationModal('PublishAction', (state) => state.dispatch);\n const fieldToConnect = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'PublishAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('PublishAction', (state) => state.rootDocumentMeta);\n\n const dispatchGuidedTour = useGuidedTour('PublishAction', (s) => s.dispatch);\n\n const { currentDocumentMeta } = useDocumentContext('PublishAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const idToPublish = currentDocumentMeta.documentId || id;\n\n React.useEffect(() => {\n if (isErrorDraftRelations) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslation('error.records.fetch-draft-relatons'),\n defaultMessage: 'An error occurred while fetching draft relations on this document.',\n }),\n });\n }\n }, [isErrorDraftRelations, toggleNotification, formatMessage]);\n\n React.useEffect(() => {\n const localDraftRelations = new Set();\n\n /**\n * Extracts draft relations from the provided data object.\n * It checks for a connect array of relations.\n * If a relation has a status of 'draft', its id is added to the localDraftRelations set.\n */\n const extractDraftRelations = (data: Omit<RelationsFormValue, 'disconnect'>) => {\n const relations = data.connect || [];\n relations.forEach((relation) => {\n if (relation.status === 'draft') {\n localDraftRelations.add(relation.id);\n }\n });\n };\n\n /**\n * Recursively traverses the provided data object to extract draft relations from arrays within 'connect' keys.\n * If the data is an object, it looks for 'connect' keys to pass their array values to extractDraftRelations.\n * It recursively calls itself for any non-null objects it contains.\n */\n const traverseAndExtract = (data: { [field: string]: any }) => {\n Object.entries(data).forEach(([key, value]) => {\n if (key === 'connect' && Array.isArray(value)) {\n extractDraftRelations({ connect: value });\n } else if (typeof value === 'object' && value !== null) {\n traverseAndExtract(value);\n }\n });\n };\n\n if (!documentId || modified) {\n traverseAndExtract(formValues);\n setLocalCountOfDraftRelations(localDraftRelations.size);\n }\n }, [documentId, modified, formValues, setLocalCountOfDraftRelations]);\n\n React.useEffect(() => {\n if (!document || !document.documentId || isListView) {\n return;\n }\n\n const fetchDraftRelationsCount = async () => {\n const { data, error } = await countDraftRelations({\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n });\n\n if (error) {\n throw error;\n }\n\n if (data) {\n setServerCountOfDraftRelations(data.data);\n }\n };\n\n fetchDraftRelationsCount();\n }, [\n isListView,\n document,\n documentId,\n countDraftRelations,\n collectionType,\n model,\n currentDocumentMeta.params,\n ]);\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { getInitialFormValues } = useDoc();\n\n const isDocumentPublished =\n (document?.[PUBLISHED_AT_ATTRIBUTE_NAME] ||\n meta?.availableStatus.some((doc) => doc[PUBLISHED_AT_ATTRIBUTE_NAME] !== null)) &&\n document?.status !== 'modified';\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n const performPublish = async () => {\n setSubmitting(true);\n\n try {\n const { errors } = await validate(true, {\n status: 'published',\n });\n if (errors) {\n const hasUnreadableRequiredField = Object.keys(schema.attributes).some((fieldName) => {\n const attribute = schema.attributes[fieldName];\n\n return attribute?.required && !(canReadFields ?? []).includes(fieldName);\n });\n\n if (hasUnreadableRequiredField) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error.unreadable-required-field',\n defaultMessage:\n 'Your current permissions prevent access to certain required fields. Please request access from an administrator to proceed.',\n }),\n });\n } else {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n }\n return;\n }\n const { data } = handleInvisibleAttributes(transformData(formValues), {\n schema,\n components,\n });\n const res = await publish(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n // Reset form if successful\n if ('data' in res) {\n resetForm();\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n }\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n /**\n * TODO: refactor the router so we can just do `../${res.data.documentId}` instead of this.\n */\n if (idToPublish === 'create' && !fromRelationModal) {\n navigate({\n pathname: `../${collectionType}/${model}/${res.data.documentId}`,\n search: rawQuery,\n });\n } else if (fromRelationModal) {\n const newRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n const metaDocumentToUpdate = documentHistory.at(-2) ?? rootDocumentMeta;\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: metaDocumentToUpdate.collectionType,\n model: metaDocumentToUpdate.model,\n documentId:\n metaDocumentToUpdate.collectionType !== SINGLE_TYPES\n ? metaDocumentToUpdate.documentId\n : undefined,\n params: metaDocumentToUpdate.params,\n data: dataToUpdate,\n });\n\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: newRelation, shouldBypassConfirmation: true },\n });\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } finally {\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n };\n\n const totalDraftRelations = localCountOfDraftRelations + serverCountOfDraftRelations;\n // TODO skipping this for now as there is a bug with the draft relation count that will be worked on separately\n // see RFC \"Count draft relations\" in Notion\n const enableDraftRelationsCount = false;\n const hasDraftRelations = enableDraftRelationsCount && totalDraftRelations > 0;\n\n return {\n loading: isLoading,\n position: ['panel', 'preview', 'relation-modal'],\n /**\n * Disabled when:\n * - currently if you're cloning a document we don't support publish & clone at the same time.\n * - the form is submitting\n * - the active tab is the published tab\n * - the document is already published & not modified\n * - the document is being created & not modified\n * - the user doesn't have the permission to publish\n */\n disabled:\n isCloning ||\n isSubmitting ||\n isLoadingDraftRelations ||\n activeTab === 'published' ||\n (!modified && isDocumentPublished) ||\n (!modified && !document?.documentId) ||\n !canPublish,\n label: formatMessage({\n id: 'app.utils.publish',\n defaultMessage: 'Publish',\n }),\n onClick: async () => {\n if (hasDraftRelations) {\n // In this case we need to show the user a confirmation dialog.\n // Return from the onClick and let the dialog handle the process.\n return;\n }\n\n await performPublish();\n },\n dialog: hasDraftRelations\n ? {\n type: 'dialog',\n variant: 'danger',\n footer: null,\n title: formatMessage({\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.title`),\n defaultMessage: 'Confirmation',\n }),\n content: formatMessage(\n {\n id: getTranslation(`popUpwarning.warning.bulk-has-draft-relations.message`),\n defaultMessage:\n 'This entry is related to {count, plural, one {# draft entry} other {# draft entries}}. Publishing it could leave broken links in your app.',\n },\n {\n count: totalDraftRelations,\n }\n ),\n onConfirm: async () => {\n await performPublish();\n },\n }\n : undefined,\n };\n};\n\nPublishAction.type = 'publish';\nPublishAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UpdateAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n}) => {\n const dispatchGuidedTour = useGuidedTour('UpdateAction', (s) => s.dispatch);\n const navigate = useNavigate();\n const { toggleNotification } = useNotification();\n const { _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();\n const cloneMatch = useMatch(CLONE_PATH);\n const isCloning = cloneMatch !== null;\n const { formatMessage } = useIntl();\n const { create, update, clone, isLoading } = useDocumentActions();\n const {\n currentDocument: { components },\n } = useDocumentContext('UpdateAction');\n const [{ rawQuery }] = useQueryParams();\n const onPreview = usePreviewContext('UpdateAction', (state) => state.onPreview, false);\n const { getInitialFormValues } = useDoc();\n\n const isSubmitting = useForm('UpdateAction', ({ isSubmitting }) => isSubmitting);\n const modified = useForm('UpdateAction', ({ modified }) => modified);\n const setSubmitting = useForm('UpdateAction', ({ setSubmitting }) => setSubmitting);\n const initialValues = useForm('UpdateAction', ({ initialValues }) => initialValues);\n const document = useForm('UpdateAction', ({ values }) => values);\n const validate = useForm('UpdateAction', (state) => state.validate);\n const setErrors = useForm('UpdateAction', (state) => state.setErrors);\n const resetForm = useForm('UpdateAction', ({ resetForm }) => resetForm);\n\n const dispatch = useRelationModal('UpdateAction', (state) => state.dispatch);\n\n // need to discriminate if the update is coming from a relation modal or in the edit view\n const relationContext = useRelationModal('UpdateAction', () => true, false);\n const relationalModalSchema = useRelationModal(\n 'UpdateAction',\n (state) => state.currentDocument.schema,\n false\n );\n const fieldToConnect = useRelationModal(\n 'UpdateAction',\n (state) => state.state.fieldToConnect,\n false\n );\n const fieldToConnectUID = useRelationModal(\n 'PublishAction',\n (state) => state.state.fieldToConnectUID,\n false\n );\n const documentHistory = useRelationModal(\n 'UpdateAction',\n (state) => state.state.documentHistory,\n false\n );\n const rootDocumentMeta = useRelationModal('UpdateAction', (state) => state.rootDocumentMeta);\n const fromRelationModal = relationContext != undefined;\n\n const { currentDocumentMeta } = useDocumentContext('UpdateAction');\n const [updateDocumentMutation] = useUpdateDocumentMutation();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n const parentDocumentMetaToUpdate = documentHistory?.at(-2) ?? rootDocumentMeta;\n const parentDocumentData = useDocument(\n {\n documentId: parentDocumentMetaToUpdate?.documentId,\n model: parentDocumentMetaToUpdate?.model,\n collectionType: parentDocumentMetaToUpdate?.collectionType,\n params: parentDocumentMetaToUpdate?.params,\n },\n { skip: !parentDocumentMetaToUpdate }\n );\n const { schema } = useDoc();\n\n const handleUpdate = React.useCallback(async () => {\n setSubmitting(true);\n\n try {\n if (!modified) {\n return;\n }\n\n const { errors } = await validate(true, {\n status: 'draft',\n });\n\n if (errors) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.validation.error',\n defaultMessage:\n 'There are validation errors in your document. Please fix them before saving.',\n }),\n });\n\n return;\n }\n if (isCloning) {\n const res = await clone(\n {\n model,\n documentId: cloneMatch.params.origin!,\n params: currentDocumentMeta.params,\n },\n transformData(document)\n );\n\n if ('data' in res) {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { relative: 'path' }\n );\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n } else if (documentId || collectionType === SINGLE_TYPES) {\n const { data } = handleInvisibleAttributes(transformData(document), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await update(\n {\n collectionType,\n model,\n documentId,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('error' in res && isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n setErrors(formatValidationErrors(res.error));\n } else {\n resetForm();\n }\n } else {\n const { data } = handleInvisibleAttributes(transformData(document), {\n schema: fromRelationModal ? relationalModalSchema : schema,\n initialValues,\n components,\n });\n const res = await create(\n {\n model,\n params: currentDocumentMeta.params,\n },\n data\n );\n\n if ('data' in res && collectionType !== SINGLE_TYPES) {\n if (fromRelationModal) {\n const createdRelation = {\n documentId: res.data.documentId,\n collectionType,\n model,\n params: currentDocumentMeta.params,\n };\n /*\n * Update, if needed, the parent relation with the newly published document.\n * Check if in history we have the parent relation otherwise use the\n * rootDocument\n */\n if (\n fieldToConnect &&\n documentHistory &&\n (parentDocumentMetaToUpdate.documentId ||\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES)\n ) {\n const parentDataToUpdate =\n parentDocumentMetaToUpdate.collectionType === SINGLE_TYPES\n ? getInitialFormValues()\n : parentDocumentData.getInitialFormValues();\n\n const dataToUpdate = connectRelationToParent(\n parentDataToUpdate,\n fieldToConnect,\n res.data,\n fieldToConnectUID\n );\n\n try {\n const updateRes = await updateDocumentMutation({\n collectionType: parentDocumentMetaToUpdate.collectionType,\n model: parentDocumentMetaToUpdate.model,\n documentId:\n parentDocumentMetaToUpdate.collectionType !== SINGLE_TYPES\n ? parentDocumentMetaToUpdate.documentId\n : undefined,\n params: parentDocumentMetaToUpdate.params,\n data: {\n ...dataToUpdate,\n },\n });\n if ('error' in updateRes) {\n toggleNotification({ type: 'danger', message: formatAPIError(updateRes.error) });\n return;\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n }),\n });\n\n throw err;\n }\n }\n\n dispatch({\n type: 'GO_TO_CREATED_RELATION',\n payload: { document: createdRelation, shouldBypassConfirmation: true },\n });\n } else {\n navigate(\n {\n pathname: `../${res.data.documentId}`,\n search: rawQuery,\n },\n { replace: true, relative: 'path' }\n );\n }\n } else if (\n 'error' in res &&\n isBaseQueryError(res.error) &&\n res.error.name === 'ValidationError'\n ) {\n setErrors(formatValidationErrors(res.error));\n }\n }\n } finally {\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentManager.createContent],\n });\n setSubmitting(false);\n if (onPreview) {\n onPreview();\n }\n }\n }, [\n setSubmitting,\n modified,\n validate,\n isCloning,\n documentId,\n collectionType,\n toggleNotification,\n formatMessage,\n clone,\n model,\n cloneMatch?.params.origin,\n currentDocumentMeta.params,\n document,\n navigate,\n rawQuery,\n setErrors,\n formatValidationErrors,\n update,\n resetForm,\n create,\n fromRelationModal,\n fieldToConnect,\n documentHistory,\n parentDocumentMetaToUpdate,\n dispatch,\n getInitialFormValues,\n parentDocumentData,\n fieldToConnectUID,\n updateDocumentMutation,\n formatAPIError,\n onPreview,\n initialValues,\n schema,\n components,\n relationalModalSchema,\n dispatchGuidedTour,\n ]);\n\n // Auto-save on CMD+S or CMD+Enter on macOS, and CTRL+S or CTRL+Enter on Windows/Linux\n React.useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && (e.metaKey || e.ctrlKey)) {\n e.preventDefault();\n handleUpdate();\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleUpdate]);\n\n return {\n loading: isLoading,\n /**\n * Disabled when:\n * - the form is submitting\n * - the document is not modified & we're not cloning (you can save a clone entity straight away)\n * - the active tab is the published tab\n */\n disabled: isSubmitting || (!modified && !isCloning) || activeTab === 'published',\n label: formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n }),\n onClick: handleUpdate,\n position: ['panel', 'preview', 'relation-modal'],\n };\n};\n\nUpdateAction.type = 'update';\nUpdateAction.position = ['panel', 'preview', 'relation-modal'];\n\nconst UNPUBLISH_DRAFT_OPTIONS = {\n KEEP: 'keep',\n DISCARD: 'discard',\n};\n\nconst UnpublishAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canPublish = useDocumentRBAC('UnpublishAction', ({ canPublish }) => canPublish);\n const { unpublish } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n const { toggleNotification } = useNotification();\n const [shouldKeepDraft, setShouldKeepDraft] = React.useState(true);\n\n const isDocumentModified = document?.status === 'modified';\n\n const handleChange = (value: string) => {\n setShouldKeepDraft(value === UNPUBLISH_DRAFT_OPTIONS.KEEP);\n };\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled:\n !canPublish ||\n activeTab === 'published' ||\n (document?.status !== 'published' && document?.status !== 'modified'),\n label: formatMessage({\n id: 'app.utils.unpublish',\n defaultMessage: 'Unpublish',\n }),\n icon: <Cross />,\n onClick: async () => {\n /**\n * return if there's no id & we're in a collection type, or the status modified\n * for either collection type because we use a dialog to handle the process in\n * the latter case.\n */\n if ((!documentId && collectionType !== SINGLE_TYPES) || isDocumentModified) {\n if (!documentId) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n return;\n }\n\n await unpublish({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n dialog: isDocumentModified\n ? {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={6}>\n <Flex width=\"100%\" direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n <Radio.Group\n defaultValue={UNPUBLISH_DRAFT_OPTIONS.KEEP}\n name=\"discard-options\"\n aria-label={formatMessage({\n id: 'content-manager.actions.unpublish.dialog.radio-label',\n defaultMessage: 'Choose an option to unpublish the document.',\n })}\n onValueChange={handleChange}\n >\n <Radio.Item checked={shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.KEEP}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.keep-draft',\n defaultMessage: 'Keep draft',\n })}\n </Radio.Item>\n <Radio.Item checked={!shouldKeepDraft} value={UNPUBLISH_DRAFT_OPTIONS.DISCARD}>\n {formatMessage({\n id: 'content-manager.actions.unpublish.dialog.option.replace-draft',\n defaultMessage: 'Replace draft',\n })}\n </Radio.Item>\n </Radio.Group>\n </Flex>\n ),\n onConfirm: async () => {\n if (!documentId && collectionType !== SINGLE_TYPES) {\n // This should never, ever, happen.\n console.error(\n \"You're trying to unpublish a document without an id, this is likely a bug with Strapi. Please open an issue.\"\n );\n\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.actions.unpublish.error',\n defaultMessage: 'An error occurred while trying to unpublish the document.',\n }),\n type: 'danger',\n });\n }\n\n await unpublish(\n {\n collectionType,\n model,\n documentId,\n params,\n },\n !shouldKeepDraft\n );\n },\n }\n : undefined,\n variant: 'danger',\n position: ['panel', 'table-row'],\n };\n};\n\nUnpublishAction.type = 'unpublish';\nUnpublishAction.position = 'panel';\n\nconst DiscardAction: DocumentActionComponent = ({\n activeTab,\n documentId,\n model,\n collectionType,\n document,\n}) => {\n const { formatMessage } = useIntl();\n const { schema } = useDoc();\n const canUpdate = useDocumentRBAC('DiscardAction', ({ canUpdate }) => canUpdate);\n const { discard, isLoading } = useDocumentActions();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n if (!schema?.options?.draftAndPublish) {\n return null;\n }\n\n return {\n disabled: !canUpdate || activeTab === 'published' || document?.status !== 'modified',\n label: formatMessage({\n id: 'content-manager.actions.discard.label',\n defaultMessage: 'Discard changes',\n }),\n icon: <Cross />,\n position: ['panel', 'table-row'],\n variant: 'danger',\n dialog: {\n type: 'dialog',\n title: formatMessage({\n id: 'app.components.ConfirmDialog.title',\n defaultMessage: 'Confirmation',\n }),\n content: (\n <Flex direction=\"column\" gap={2}>\n <WarningCircle width=\"24px\" height=\"24px\" fill=\"danger600\" />\n <Typography tag=\"p\" variant=\"omega\" textAlign=\"center\">\n {formatMessage({\n id: 'content-manager.actions.discard.dialog.body',\n defaultMessage: 'Are you sure?',\n })}\n </Typography>\n </Flex>\n ),\n loading: isLoading,\n onConfirm: async () => {\n await discard({\n collectionType,\n model,\n documentId,\n params,\n });\n },\n },\n };\n};\n\nDiscardAction.type = 'discard';\nDiscardAction.position = 'panel';\n\nconst DEFAULT_ACTIONS = [PublishAction, UpdateAction, UnpublishAction, DiscardAction];\n\nexport { DocumentActions, DocumentActionsMenu, DocumentActionButton, DEFAULT_ACTIONS };\nexport type {\n DocumentActionDescription,\n DocumentActionPosition,\n DialogOptions,\n NotificationOptions,\n ModalOptions,\n};\n"],"names":["connectRelationToParent","parentDataToUpdate","fieldToConnect","data","fieldToConnectUID","isFieldPresent","get","fieldToConnectPath","split","slice","join","fieldToConnectValue","connect","id","documentId","locale","pop","disconnect","__component","objectToConnect","set","merge","DocumentActions","actions","formatMessage","useIntl","primaryAction","secondaryAction","restActions","filter","action","position","undefined","positions","Array","isArray","includes","_jsxs","Flex","direction","gap","alignItems","width","_jsx","tours","contentManager","Publish","label","DocumentActionButton","variant","length","DocumentActionsMenu","defaultMessage","dialogId","setDialogId","React","useState","toggleNotification","useNotification","handleClick","e","onClick","dialog","muteDialog","type","title","message","content","status","timeout","onClose","preventDefault","handleClose","_Fragment","Button","flex","startIcon","icon","disabled","justifyContent","paddingTop","paddingBottom","loading","DocumentActionConfirmDialog","isOpen","DocumentActionModal","onModalClose","children","setIsOpen","isDisabled","every","Menu","Root","open","onOpenChange","Trigger","size","endIcon","paddingLeft","paddingRight","More","aria-hidden","focusable","VisuallyHidden","tag","Content","maxHeight","popoverPlacement","map","Item","onSelect","display","Fragment","onCancel","onConfirm","handleConfirm","Dialog","Header","Body","Footer","Cancel","fullWidth","footer","Modal","Title","transformData","apiData","mapValues","PublishAction","activeTab","model","collectionType","meta","document","currentDocument","schema","useDocumentContext","navigate","useNavigate","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","isListView","useMatch","LIST_PATH","isCloning","CLONE_PATH","useParams","canPublish","canReadFields","useDocumentRBAC","publish","isLoading","useDocumentActions","onPreview","usePreviewContext","state","countDraftRelations","isLoadingDraftRelations","isError","isErrorDraftRelations","useGetDraftRelationCountQuery","localCountOfDraftRelations","setLocalCountOfDraftRelations","serverCountOfDraftRelations","setServerCountOfDraftRelations","rawQuery","useQueryParams","modified","useForm","setSubmitting","isSubmitting","validate","setErrors","formValues","values","resetForm","components","relationContext","useRelationModal","fromRelationModal","dispatch","documentHistory","rootDocumentMeta","dispatchGuidedTour","useGuidedTour","s","currentDocumentMeta","updateDocumentMutation","useUpdateDocumentMutation","_unstableFormatAPIError","formatAPIError","idToPublish","useEffect","getTranslation","localDraftRelations","Set","extractDraftRelations","relations","forEach","relation","add","traverseAndExtract","Object","entries","key","value","fetchDraftRelationsCount","error","params","parentDocumentMetaToUpdate","at","parentDocumentData","useDocument","skip","getInitialFormValues","useDoc","isDocumentPublished","PUBLISHED_AT_ATTRIBUTE_NAME","availableStatus","some","doc","options","draftAndPublish","performPublish","errors","hasUnreadableRequiredField","keys","attributes","fieldName","attribute","required","handleInvisibleAttributes","res","payload","GUIDED_TOUR_REQUIRED_ACTIONS","createContent","SINGLE_TYPES","pathname","search","newRelation","metaDocumentToUpdate","dataToUpdate","updateRes","err","shouldBypassConfirmation","isBaseQueryError","name","totalDraftRelations","enableDraftRelationsCount","hasDraftRelations","count","UpdateAction","cloneMatch","create","update","clone","initialValues","relationalModalSchema","handleUpdate","useCallback","origin","relative","createdRelation","replace","handleKeyDown","metaKey","ctrlKey","window","addEventListener","removeEventListener","UNPUBLISH_DRAFT_OPTIONS","KEEP","DISCARD","UnpublishAction","unpublish","query","useMemo","buildValidParams","shouldKeepDraft","setShouldKeepDraft","isDocumentModified","handleChange","Cross","console","WarningCircle","height","fill","Typography","textAlign","Radio","Group","defaultValue","aria-label","onValueChange","checked","DiscardAction","canUpdate","discard","DEFAULT_ACTIONS"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyHA,MAAMA,uBAA0B,GAAA,CAC9BC,kBACAC,EAAAA,cAAAA,EACAC,IACAC,EAAAA,iBAAAA,GAAAA;AAEA;;;;AAIC,MACD,MAAMC,cAAAA,GAAiB,CAAC,CAACC,IAAIL,kBAAoBC,EAAAA,cAAAA,CAAAA;AACjD,IAAA,MAAMK,kBAAqBF,GAAAA,cAAAA,GACvBH,cAEAA,GAAAA,cAAAA,CAAeM,KAAK,CAAC,GAAKC,CAAAA,CAAAA,KAAK,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA,CAAGC,IAAI,CAAC,GAAA,CAAA;AAChD,IAAA,MAAMC,sBAAsBN,cACxB,GAAA;QACEO,OAAS,EAAA;AACP,YAAA;AACEC,gBAAAA,EAAAA,EAAIV,KAAKW,UAAU;AACnBA,gBAAAA,UAAAA,EAAYX,KAAKW,UAAU;AAC3BC,gBAAAA,MAAAA,EAAQZ,KAAKY;AACf;AACD;KAEH,GAAA;AACE,QAAA,CAACb,eAAeM,KAAK,CAAC,GAAKQ,CAAAA,CAAAA,GAAG,KAAM;YAClCJ,OAAS,EAAA;AACP,gBAAA;AACEC,oBAAAA,EAAAA,EAAIV,KAAKW,UAAU;AACnBA,oBAAAA,UAAAA,EAAYX,KAAKW,UAAU;AAC3BC,oBAAAA,MAAAA,EAAQZ,KAAKY;AACf;AACD,aAAA;AACDE,YAAAA,UAAAA,EAAY;AACd,SAAA;;QAEAC,WAAad,EAAAA;AACf,KAAA;AACJ,IAAA,MAAMe,eAAkBC,GAAAA,GAAAA,CAAI,EAAC,EAAGb,kBAAoBI,EAAAA,mBAAAA,CAAAA;AACpD,IAAA,OAAOU,MAAMpB,kBAAoBkB,EAAAA,eAAAA,CAAAA;AACnC,CAAA;AAEA,MAAMG,eAAkB,GAAA,CAAC,EAAEC,OAAO,EAAwB,GAAA;IACxD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,CAACC,eAAeC,eAAiB,EAAA,GAAGC,YAAY,GAAGL,OAAAA,CAAQM,MAAM,CAAC,CAACC,MAAAA,GAAAA;QACvE,IAAIA,MAAAA,CAAOC,QAAQ,KAAKC,SAAW,EAAA;YACjC,OAAO,IAAA;AACT;QAEA,MAAMC,SAAAA,GAAYC,MAAMC,OAAO,CAACL,OAAOC,QAAQ,CAAA,GAAID,MAAOC,CAAAA,QAAQ,GAAG;AAACD,YAAAA,MAAAA,CAAOC;AAAS,SAAA;QACtF,OAAOE,SAAAA,CAAUG,QAAQ,CAAC,OAAA,CAAA;AAC5B,KAAA,CAAA;AAEA,IAAA,IAAI,CAACV,aAAe,EAAA;QAClB,OAAO,IAAA;AACT;AAEA,IAAA,qBACEW,eAACC,CAAAA,iBAAAA,EAAAA;QAAKC,SAAU,EAAA,QAAA;QAASC,GAAK,EAAA,CAAA;QAAGC,UAAW,EAAA,SAAA;QAAUC,KAAM,EAAA,MAAA;;0BAC1DC,cAACC,CAAAA,iBAAAA,CAAMC,cAAc,CAACC,OAAO,EAAA;AAC3B,gBAAA,QAAA,gBAAAT,eAACC,CAAAA,iBAAAA,EAAAA;oBAAKE,GAAK,EAAA,CAAA;;wBACRd,aAAcqB,CAAAA,KAAK,KAAK,SAAA,iBACvBJ,cAACK,CAAAA,oBAAAA,EAAAA;AAAsB,4BAAA,GAAGtB,aAAa;4BAAEuB,OAASvB,EAAAA,aAAAA,CAAcuB,OAAO,IAAI;2CAE3EN,cAACK,CAAAA,oBAAAA,EAAAA;AAAsB,4BAAA,GAAGtB,aAAa;4BAAEuB,OAASvB,EAAAA,aAAAA,CAAcuB,OAAO,IAAI;;wBAG5ErB,WAAYsB,CAAAA,MAAM,GAAG,CAAA,iBACpBP,cAACQ,CAAAA,mBAAAA,EAAAA;4BACC5B,OAASK,EAAAA,WAAAA;AACTmB,4BAAAA,KAAAA,EAAOvB,aAAc,CAAA;gCACnBX,EAAI,EAAA,6DAAA;gCACJuC,cAAgB,EAAA;AAClB,6BAAA;AAEA,yBAAA,CAAA,GAAA;;;;YAGPzB,eACCA,GAAAA,eAAAA,CAAgBoB,KAAK,KAAK,SAAA,iBACxBJ,eAACC,iBAAMC,CAAAA,cAAc,CAACC,OAAO,EAAA;AAC3B,gBAAA,QAAA,gBAAAH,cAACK,CAAAA,oBAAAA,EAAAA;AACE,oBAAA,GAAGrB,eAAe;oBACnBsB,OAAStB,EAAAA,eAAAA,CAAgBsB,OAAO,IAAI;;+BAIxCN,cAACK,CAAAA,oBAAAA,EAAAA;AACE,gBAAA,GAAGrB,eAAe;gBACnBsB,OAAStB,EAAAA,eAAAA,CAAgBsB,OAAO,IAAI;AAGtC,aAAA,CAAA,GAAA;;;AAGV;AAQA,MAAMD,uBAAuB,CAAClB,MAAAA,GAAAA;AAC5B,IAAA,MAAM,CAACuB,QAAUC,EAAAA,WAAAA,CAAY,GAAGC,gBAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAC9D,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;IAE/B,MAAMC,WAAAA,GAAc,CAAC7B,MAAAA,GAAmB,OAAO8B,CAAAA,GAAAA;YAC7C,MAAM,EAAEC,UAAU,IAAM,KAAK,EAAEC,MAAM,EAAEjD,EAAE,EAAE,GAAGiB,MAAAA;YAE9C,MAAMiC,UAAAA,GAAa,MAAMF,OAAQD,CAAAA,CAAAA,CAAAA;YAEjC,IAAIE,MAAAA,IAAU,CAACC,UAAY,EAAA;AACzB,gBAAA,OAAQD,OAAOE,IAAI;oBACjB,KAAK,cAAA;wBACHP,kBAAmB,CAAA;AACjBQ,4BAAAA,KAAAA,EAAOH,OAAOG,KAAK;AACnBC,4BAAAA,OAAAA,EAASJ,OAAOK,OAAO;AACvBH,4BAAAA,IAAAA,EAAMF,OAAOM,MAAM;AACnBC,4BAAAA,OAAAA,EAASP,OAAOO,OAAO;AACvBC,4BAAAA,OAAAA,EAASR,OAAOQ;AAClB,yBAAA,CAAA;AACA,wBAAA;oBACF,KAAK,QAAA;oBACL,KAAK,OAAA;AACHV,wBAAAA,CAAAA,CAAEW,cAAc,EAAA;wBAChBjB,WAAYzC,CAAAA,EAAAA,CAAAA;AAChB;AACF;AACF,SAAA;AAEA,IAAA,MAAM2D,WAAc,GAAA,IAAA;QAClBlB,WAAY,CAAA,IAAA,CAAA;AACd,KAAA;IAEA,qBACEjB,eAAA,CAAAoC,mBAAA,EAAA;;0BACE9B,cAAC+B,CAAAA,mBAAAA,EAAAA;gBACCC,IAAK,EAAA,MAAA;AACLC,gBAAAA,SAAAA,EAAW9C,OAAO+C,IAAI;AACtBC,gBAAAA,QAAAA,EAAUhD,OAAOgD,QAAQ;AACzBjB,gBAAAA,OAAAA,EAASF,WAAY7B,CAAAA,MAAAA,CAAAA;gBACrBiD,cAAe,EAAA,QAAA;gBACf9B,OAASnB,EAAAA,MAAAA,CAAOmB,OAAO,IAAI,SAAA;gBAC3B+B,UAAW,EAAA,KAAA;gBACXC,aAAc,EAAA,KAAA;AACdC,gBAAAA,OAAAA,EAASpD,OAAOoD,OAAO;AAEtBpD,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOiB;;AAETjB,YAAAA,MAAAA,CAAOgC,MAAM,EAAEE,IAAS,KAAA,QAAA,iBACvBrB,cAACwC,CAAAA,2BAAAA,EAAAA;AACE,gBAAA,GAAGrD,OAAOgC,MAAM;AACjBb,gBAAAA,OAAAA,EAASnB,MAAOgC,CAAAA,MAAM,EAAEb,OAAAA,IAAWnB,OAAOmB,OAAO;gBACjDmC,MAAQ/B,EAAAA,QAAAA,KAAavB,OAAOjB,EAAE;gBAC9ByD,OAASE,EAAAA;AAET,aAAA,CAAA,GAAA,IAAA;AACH1C,YAAAA,MAAAA,CAAOgC,MAAM,EAAEE,IAAS,KAAA,OAAA,iBACvBrB,cAAC0C,CAAAA,mBAAAA,EAAAA;AACE,gBAAA,GAAGvD,OAAOgC,MAAM;gBACjBwB,YAAcd,EAAAA,WAAAA;gBACdY,MAAQ/B,EAAAA,QAAAA,KAAavB,OAAOjB;AAE5B,aAAA,CAAA,GAAA;;;AAGV;AAYMsC,MAAAA,mBAAAA,GAAsB,CAAC,EAC3B5B,OAAO,EACPgE,QAAQ,EACRxC,KAAK,EACLE,OAAU,GAAA,UAAU,EACK,GAAA;AACzB,IAAA,MAAM,CAACmC,MAAQI,EAAAA,SAAAA,CAAU,GAAGjC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAC3C,IAAA,MAAM,CAACH,QAAUC,EAAAA,WAAAA,CAAY,GAAGC,gBAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAC9D,MAAM,EAAEhC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEgC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;IAC/B,MAAM+B,UAAAA,GAAalE,OAAQmE,CAAAA,KAAK,CAAC,CAAC5D,MAAWA,GAAAA,MAAAA,CAAOgD,QAAQ,CAAA,IAAKvD,OAAQ2B,CAAAA,MAAM,KAAK,CAAA;IAEpF,MAAMS,WAAAA,GAAc,CAAC7B,MAAAA,GAAmB,OAAO8B,CAAAA,GAAAA;YAC7C,MAAM,EAAEC,UAAU,IAAM,KAAK,EAAEC,MAAM,EAAEjD,EAAE,EAAE,GAAGiB,MAAAA;YAE9C,MAAMiC,UAAAA,GAAa,MAAMF,OAAQD,CAAAA,CAAAA,CAAAA;YAEjC,IAAIE,MAAAA,IAAU,CAACC,UAAY,EAAA;AACzB,gBAAA,OAAQD,OAAOE,IAAI;oBACjB,KAAK,cAAA;wBACHP,kBAAmB,CAAA;AACjBQ,4BAAAA,KAAAA,EAAOH,OAAOG,KAAK;AACnBC,4BAAAA,OAAAA,EAASJ,OAAOK,OAAO;AACvBH,4BAAAA,IAAAA,EAAMF,OAAOM,MAAM;AACnBC,4BAAAA,OAAAA,EAASP,OAAOO,OAAO;AACvBC,4BAAAA,OAAAA,EAASR,OAAOQ;AAClB,yBAAA,CAAA;AACA,wBAAA;oBACF,KAAK,QAAA;oBACL,KAAK,OAAA;wBACHhB,WAAYzC,CAAAA,EAAAA,CAAAA;AAChB;AACF;AACF,SAAA;AAEA,IAAA,MAAM2D,WAAc,GAAA,IAAA;QAClBlB,WAAY,CAAA,IAAA,CAAA;QACZkC,SAAU,CAAA,KAAA,CAAA;AACZ,KAAA;IAEA,qBACEnD,eAAA,CAACsD,kBAAKC,IAAI,EAAA;QAACC,IAAMT,EAAAA,MAAAA;QAAQU,YAAcN,EAAAA,SAAAA;;AACrC,0BAAAnD,eAAA,CAACsD,kBAAKI,OAAO,EAAA;gBACXjB,QAAUW,EAAAA,UAAAA;gBACVO,IAAK,EAAA,GAAA;gBACLC,OAAS,EAAA,IAAA;gBACTjB,UAAW,EAAA,KAAA;gBACXkB,WAAY,EAAA,KAAA;gBACZC,YAAa,EAAA,KAAA;gBACblD,OAASA,EAAAA,OAAAA;;kCAETN,cAACyD,CAAAA,UAAAA,EAAAA;wBAAKC,aAAW,EAAA,IAAA;wBAACC,SAAW,EAAA;;kCAC7B3D,cAAC4D,CAAAA,2BAAAA,EAAAA;wBAAeC,GAAI,EAAA,MAAA;AACjBzD,wBAAAA,QAAAA,EAAAA,KAAAA,IACCvB,aAAc,CAAA;4BACZX,EAAI,EAAA,6DAAA;4BACJuC,cAAgB,EAAA;AAClB,yBAAA;;;;AAGN,0BAAAf,eAAA,CAACsD,kBAAKc,OAAO,EAAA;gBAACC,SAAW1E,EAAAA,SAAAA;gBAAW2E,gBAAiB,EAAA,YAAA;;oBAClDpF,OAAQqF,CAAAA,GAAG,CAAC,CAAC9E,MAAAA,GAAAA;wBACZ,qBACEa,cAAA,CAACgD,kBAAKkB,IAAI,EAAA;AACR/B,4BAAAA,QAAAA,EAAUhD,OAAOgD,QAAQ;8IAEzBgC,UAAUnD,WAAY7B,CAAAA,MAAAA,CAAAA;4BACtBiF,OAAQ,EAAA,OAAA;AAER9D,4BAAAA,OAAAA,EAASnB,OAAOmB,OAAO,KAAK,QAAWnB,GAAAA,MAAAA,CAAOmB,OAAO,GAAG,SAAA;AACxD2B,4BAAAA,SAAAA,EAAW9C,OAAO+C,IAAI;AAEtB,4BAAA,QAAA,gBAAAlC,cAACL,CAAAA,iBAAAA,EAAAA;gCAAKyC,cAAe,EAAA,eAAA;gCAAgBvC,GAAK,EAAA,CAAA;AACxC,gCAAA,QAAA,gBAAAG,cAACL,CAAAA,iBAAAA,EAAAA;oCAAKE,GAAK,EAAA,CAAA;oCAAGgE,GAAI,EAAA,MAAA;AACf1E,oCAAAA,QAAAA,EAAAA,MAAAA,CAAOiB;;;AANPjB,yBAAAA,EAAAA,MAAAA,CAAOjB,EAAE,CAAA;AAWpB,qBAAA,CAAA;AACC0E,oBAAAA;;;YAEFhE,OAAQqF,CAAAA,GAAG,CAAC,CAAC9E,MAAAA,GAAAA;gBACZ,qBACEO,eAAA,CAACkB,iBAAMyD,QAAQ,EAAA;;AACZlF,wBAAAA,MAAAA,CAAOgC,MAAM,EAAEE,IAAS,KAAA,QAAA,iBACvBrB,cAACwC,CAAAA,2BAAAA,EAAAA;AACE,4BAAA,GAAGrD,OAAOgC,MAAM;AACjBb,4BAAAA,OAAAA,EAASnB,OAAOmB,OAAO;4BACvBmC,MAAQ/B,EAAAA,QAAAA,KAAavB,OAAOjB,EAAE;4BAC9ByD,OAASE,EAAAA;AAET,yBAAA,CAAA,GAAA,IAAA;AACH1C,wBAAAA,MAAAA,CAAOgC,MAAM,EAAEE,IAAS,KAAA,OAAA,iBACvBrB,cAAC0C,CAAAA,mBAAAA,EAAAA;AACE,4BAAA,GAAGvD,OAAOgC,MAAM;4BACjBwB,YAAcd,EAAAA,WAAAA;4BACdY,MAAQ/B,EAAAA,QAAAA,KAAavB,OAAOjB;AAE5B,yBAAA,CAAA,GAAA;;AAfeiB,iBAAAA,EAAAA,MAAAA,CAAOjB,EAAE,CAAA;AAkBlC,aAAA;;;AAGN;AAYA,MAAMsE,8BAA8B,CAAC,EACnCb,OAAO,EACP2C,QAAQ,EACRC,SAAS,EACTjD,KAAK,EACLE,OAAO,EACPiB,MAAM,EACNnC,UAAU,WAAW,EACrBiC,OAAO,EAC0B,GAAA;IACjC,MAAM,EAAE1D,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAM+C,WAAc,GAAA,UAAA;AAClB,QAAA,IAAIyC,QAAU,EAAA;YACZ,MAAMA,QAAAA,EAAAA;AACR;AAEA3C,QAAAA,OAAAA,EAAAA;AACF,KAAA;AAEA,IAAA,MAAM6C,aAAgB,GAAA,UAAA;AACpB,QAAA,IAAID,SAAW,EAAA;YACb,MAAMA,SAAAA,EAAAA;AACR;AAEA5C,QAAAA,OAAAA,EAAAA;AACF,KAAA;IAEA,qBACE3B,cAAA,CAACyE,oBAAOxB,IAAI,EAAA;QAACC,IAAMT,EAAAA,MAAAA;QAAQU,YAActB,EAAAA,WAAAA;gCACvCnC,eAAA,CAAC+E,oBAAOX,OAAO,EAAA;;AACb,8BAAA9D,cAAA,CAACyE,oBAAOC,MAAM,EAAA;AAAEpD,oBAAAA,QAAAA,EAAAA;;AAChB,8BAAAtB,cAAA,CAACyE,oBAAOE,IAAI,EAAA;AAAEnD,oBAAAA,QAAAA,EAAAA;;AACd,8BAAA9B,eAAA,CAAC+E,oBAAOG,MAAM,EAAA;;AACZ,sCAAA5E,cAAA,CAACyE,oBAAOI,MAAM,EAAA;AACZ,4BAAA,QAAA,gBAAA7E,cAAC+B,CAAAA,mBAAAA,EAAAA;gCAAOzB,OAAQ,EAAA,UAAA;gCAAWwE,SAAS,EAAA,IAAA;0CACjCjG,aAAc,CAAA;oCACbX,EAAI,EAAA,8BAAA;oCACJuC,cAAgB,EAAA;AAClB,iCAAA;;;sCAGJT,cAAC+B,CAAAA,mBAAAA,EAAAA;4BAAOb,OAASsD,EAAAA,aAAAA;4BAAelE,OAASA,EAAAA,OAAAA;4BAASwE,SAAS,EAAA,IAAA;4BAACvC,OAASA,EAAAA,OAAAA;sCAClE1D,aAAc,CAAA;gCACbX,EAAI,EAAA,+BAAA;gCACJuC,cAAgB,EAAA;AAClB,6BAAA;;;;;;;AAMZ,CAAA;AAWA,MAAMiC,sBAAsB,CAAC,EAC3BD,MAAM,EACNnB,KAAK,EACLK,OAAO,EACPoD,MAAAA,EAAQH,MAAM,EACdpD,OAAAA,EAASsC,OAAO,EAChBnB,YAAY,EACa,GAAA;AACzB,IAAA,MAAMd,WAAc,GAAA,IAAA;AAClB,QAAA,IAAIF,OAAS,EAAA;AACXA,YAAAA,OAAAA,EAAAA;AACF;AAEAgB,QAAAA,YAAAA,EAAAA;AACF,KAAA;IAEA,qBACE3C,cAAA,CAACgF,mBAAM/B,IAAI,EAAA;QAACC,IAAMT,EAAAA,MAAAA;QAAQU,YAActB,EAAAA,WAAAA;gCACtCnC,eAAA,CAACsF,mBAAMlB,OAAO,EAAA;;AACZ,8BAAA9D,cAAA,CAACgF,mBAAMN,MAAM,EAAA;4CACX1E,cAAA,CAACgF,mBAAMC,KAAK,EAAA;AAAE3D,wBAAAA,QAAAA,EAAAA;;;gBAEf,OAAOwC,OAAAA,KAAY,2BAClB9D,cAAC8D,CAAAA,OAAAA,EAAAA;oBAAQnC,OAASE,EAAAA;AAElB,iBAAA,CAAA,iBAAA7B,cAAA,CAACgF,mBAAML,IAAI,EAAA;AAAEb,oBAAAA,QAAAA,EAAAA;;gBAEd,OAAOc,MAAAA,KAAW,2BAAa5E,cAAC4E,CAAAA,MAAAA,EAAAA;oBAAOjD,OAASE,EAAAA;AAAkB+C,iBAAAA,CAAAA,GAAAA;;;;AAI3E,CAAA;AAEA,MAAMM,gBAAgB,CAAC1H,IAAAA,GAAAA;IACrB,IAAI+B,KAAAA,CAAMC,OAAO,CAAChC,IAAO,CAAA,EAAA;QACvB,OAAOA,IAAAA,CAAKyG,GAAG,CAACiB,aAAAA,CAAAA;AAClB;AAEA,IAAA,IAAI,OAAO1H,IAAAA,KAAS,QAAYA,IAAAA,IAAAA,KAAS,IAAM,EAAA;AAC7C,QAAA,IAAI,aAAaA,IAAM,EAAA;AACrB,YAAA,OAAOA,KAAK2H,OAAO;AACrB;AAEA,QAAA,OAAOC,UAAUF,aAAe1H,CAAAA,CAAAA,IAAAA,CAAAA;AAClC;IAEA,OAAOA,IAAAA;AACT,CAAA;AAEA;;AAEkG,qGAElG,MAAM6H,aAAAA,GAAyC,CAAC,EAC9CC,SAAS,EACTnH,UAAU,EACVoH,KAAK,EACLC,cAAc,EACdC,IAAI,EACJC,QAAQ,EACT,GAAA;AACC,IAAA,MAAM,EACJC,eAAiB,EAAA,EAAEC,MAAM,EAAE,EAC5B,GAAGC,qCAAmB,CAAA,eAAA,CAAA;AAEvB,IAAA,MAAMC,QAAWC,GAAAA,0BAAAA,EAAAA;IACjB,MAAM,EAAEjF,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEiF,+BAAAA,EAAiCC,sBAAsB,EAAE,GAAGC,8BAAAA,EAAAA;IACpE,MAAMC,UAAAA,GAAaC,wBAASC,gBAAe,CAAA,KAAA,IAAA;IAC3C,MAAMC,SAAAA,GAAYF,wBAASG,iBAAgB,CAAA,KAAA,IAAA;IAC3C,MAAM,EAAErI,EAAE,EAAE,GAAGsI,wBAAAA,EAAAA;IACf,MAAM,EAAE3H,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAE2H,UAAU,EAAEC,aAAa,EAAE,GAAGC,4BAAAA,CACpC,eACA,EAAA,CAAC,EAAEF,UAAU,EAAEC,aAAa,EAAE,IAAM;AAAED,YAAAA,UAAAA;AAAYC,YAAAA;SAAc,CAAA,CAAA;AAElE,IAAA,MAAM,EAAEE,OAAO,EAAEC,SAAS,EAAE,GAAGC,qCAAAA,EAAAA;AAC/B,IAAA,MAAMC,YAAYC,yBAAkB,CAAA,cAAA,EAAgB,CAACC,KAAUA,GAAAA,KAAAA,CAAMF,SAAS,EAAE,KAAA,CAAA;IAChF,MAAM,CACJG,mBACA,EAAA,EAAEL,SAAWM,EAAAA,uBAAuB,EAAEC,OAASC,EAAAA,qBAAqB,EAAE,CACvE,GAAGC,uCAAAA,EAAAA;AACJ,IAAA,MAAM,CAACC,0BAA4BC,EAAAA,6BAAAA,CAA8B,GAAG5G,gBAAAA,CAAMC,QAAQ,CAAC,CAAA,CAAA;AACnF,IAAA,MAAM,CAAC4G,2BAA6BC,EAAAA,8BAAAA,CAA+B,GAAG9G,gBAAAA,CAAMC,QAAQ,CAAC,CAAA,CAAA;AAErF,IAAA,MAAM,CAAC,EAAE8G,QAAQ,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AAEvB,IAAA,MAAMC,WAAWC,mBAAQ,CAAA,eAAA,EAAiB,CAAC,EAAED,QAAQ,EAAE,GAAKA,QAAAA,CAAAA;AAC5D,IAAA,MAAME,gBAAgBD,mBAAQ,CAAA,eAAA,EAAiB,CAAC,EAAEC,aAAa,EAAE,GAAKA,aAAAA,CAAAA;AACtE,IAAA,MAAMC,eAAeF,mBAAQ,CAAA,eAAA,EAAiB,CAAC,EAAEE,YAAY,EAAE,GAAKA,YAAAA,CAAAA;AACpE,IAAA,MAAMC,WAAWH,mBAAQ,CAAA,eAAA,EAAiB,CAACb,KAAAA,GAAUA,MAAMgB,QAAQ,CAAA;AACnE,IAAA,MAAMC,YAAYJ,mBAAQ,CAAA,eAAA,EAAiB,CAACb,KAAAA,GAAUA,MAAMiB,SAAS,CAAA;AACrE,IAAA,MAAMC,aAAaL,mBAAQ,CAAA,eAAA,EAAiB,CAAC,EAAEM,MAAM,EAAE,GAAKA,MAAAA,CAAAA;AAC5D,IAAA,MAAMC,YAAYP,mBAAQ,CAAA,eAAA,EAAiB,CAAC,EAAEO,SAAS,EAAE,GAAKA,SAAAA,CAAAA;AAC9D,IAAA,MAAM,EACJ1C,eAAiB,EAAA,EAAE2C,UAAU,EAAE,EAChC,GAAGzC,qCAAmB,CAAA,eAAA,CAAA;;AAGvB,IAAA,MAAM0C,eAAkBC,GAAAA,8BAAAA,CAAiB,eAAiB,EAAA,IAAM,IAAM,EAAA,KAAA,CAAA;AACtE,IAAA,MAAMC,oBAAoBF,eAAmBlJ,IAAAA,SAAAA;AAE7C,IAAA,MAAMqJ,WAAWF,8BAAiB,CAAA,eAAA,EAAiB,CAACvB,KAAAA,GAAUA,MAAMyB,QAAQ,CAAA;IAC5E,MAAMnL,cAAAA,GAAiBiL,+BACrB,eACA,EAAA,CAACvB,QAAUA,KAAMA,CAAAA,KAAK,CAAC1J,cAAc,EACrC,KAAA,CAAA;IAEF,MAAME,iBAAAA,GAAoB+K,+BACxB,eACA,EAAA,CAACvB,QAAUA,KAAMA,CAAAA,KAAK,CAACxJ,iBAAiB,EACxC,KAAA,CAAA;IAEF,MAAMkL,eAAAA,GAAkBH,+BACtB,eACA,EAAA,CAACvB,QAAUA,KAAMA,CAAAA,KAAK,CAAC0B,eAAe,EACtC,KAAA,CAAA;AAEF,IAAA,MAAMC,mBAAmBJ,8BAAiB,CAAA,eAAA,EAAiB,CAACvB,KAAAA,GAAUA,MAAM2B,gBAAgB,CAAA;AAE5F,IAAA,MAAMC,qBAAqBC,yBAAc,CAAA,eAAA,EAAiB,CAACC,CAAAA,GAAMA,EAAEL,QAAQ,CAAA;AAE3E,IAAA,MAAM,EAAEM,mBAAmB,EAAE,GAAGnD,qCAAmB,CAAA,eAAA,CAAA;IACnD,MAAM,CAACoD,uBAAuB,GAAGC,mCAAAA,EAAAA;AACjC,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGlD,8BAAAA,EAAAA;IAEpD,MAAMmD,WAAAA,GAAcL,mBAAoB7K,CAAAA,UAAU,IAAID,EAAAA;AAEtD0C,IAAAA,gBAAAA,CAAM0I,SAAS,CAAC,IAAA;AACd,QAAA,IAAIjC,qBAAuB,EAAA;YACzBvG,kBAAmB,CAAA;gBACjBO,IAAM,EAAA,QAAA;AACNE,gBAAAA,OAAAA,EAAS1C,aAAc,CAAA;AACrBX,oBAAAA,EAAAA,EAAIqL,2BAAe,CAAA,oCAAA,CAAA;oBACnB9I,cAAgB,EAAA;AAClB,iBAAA;AACF,aAAA,CAAA;AACF;KACC,EAAA;AAAC4G,QAAAA,qBAAAA;AAAuBvG,QAAAA,kBAAAA;AAAoBjC,QAAAA;AAAc,KAAA,CAAA;AAE7D+B,IAAAA,gBAAAA,CAAM0I,SAAS,CAAC,IAAA;AACd,QAAA,MAAME,sBAAsB,IAAIC,GAAAA,EAAAA;AAEhC;;;;QAKA,MAAMC,wBAAwB,CAAClM,IAAAA,GAAAA;AAC7B,YAAA,MAAMmM,SAAYnM,GAAAA,IAAAA,CAAKS,OAAO,IAAI,EAAE;YACpC0L,SAAUC,CAAAA,OAAO,CAAC,CAACC,QAAAA,GAAAA;gBACjB,IAAIA,QAAAA,CAASpI,MAAM,KAAK,OAAS,EAAA;oBAC/B+H,mBAAoBM,CAAAA,GAAG,CAACD,QAAAA,CAAS3L,EAAE,CAAA;AACrC;AACF,aAAA,CAAA;AACF,SAAA;AAEA;;;;QAKA,MAAM6L,qBAAqB,CAACvM,IAAAA,GAAAA;YAC1BwM,MAAOC,CAAAA,OAAO,CAACzM,IAAMoM,CAAAA,CAAAA,OAAO,CAAC,CAAC,CAACM,KAAKC,KAAM,CAAA,GAAA;AACxC,gBAAA,IAAID,GAAQ,KAAA,SAAA,IAAa3K,KAAMC,CAAAA,OAAO,CAAC2K,KAAQ,CAAA,EAAA;oBAC7CT,qBAAsB,CAAA;wBAAEzL,OAASkM,EAAAA;AAAM,qBAAA,CAAA;AACzC,iBAAA,MAAO,IAAI,OAAOA,KAAU,KAAA,QAAA,IAAYA,UAAU,IAAM,EAAA;oBACtDJ,kBAAmBI,CAAAA,KAAAA,CAAAA;AACrB;AACF,aAAA,CAAA;AACF,SAAA;QAEA,IAAI,CAAChM,cAAc0J,QAAU,EAAA;YAC3BkC,kBAAmB5B,CAAAA,UAAAA,CAAAA;AACnBX,YAAAA,6BAAAA,CAA8BgC,oBAAoBnG,IAAI,CAAA;AACxD;KACC,EAAA;AAAClF,QAAAA,UAAAA;AAAY0J,QAAAA,QAAAA;AAAUM,QAAAA,UAAAA;AAAYX,QAAAA;AAA8B,KAAA,CAAA;AAEpE5G,IAAAA,gBAAAA,CAAM0I,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAAC5D,QAAY,IAAA,CAACA,QAASvH,CAAAA,UAAU,IAAIgI,UAAY,EAAA;AACnD,YAAA;AACF;AAEA,QAAA,MAAMiE,wBAA2B,GAAA,UAAA;AAC/B,YAAA,MAAM,EAAE5M,IAAI,EAAE6M,KAAK,EAAE,GAAG,MAAMnD,mBAAoB,CAAA;AAChD1B,gBAAAA,cAAAA;AACAD,gBAAAA,KAAAA;AACApH,gBAAAA,UAAAA;AACAmM,gBAAAA,MAAAA,EAAQtB,oBAAoBsB;AAC9B,aAAA,CAAA;AAEA,YAAA,IAAID,KAAO,EAAA;gBACT,MAAMA,KAAAA;AACR;AAEA,YAAA,IAAI7M,IAAM,EAAA;AACRkK,gBAAAA,8BAAAA,CAA+BlK,KAAKA,IAAI,CAAA;AAC1C;AACF,SAAA;AAEA4M,QAAAA,wBAAAA,EAAAA;KACC,EAAA;AACDjE,QAAAA,UAAAA;AACAT,QAAAA,QAAAA;AACAvH,QAAAA,UAAAA;AACA+I,QAAAA,mBAAAA;AACA1B,QAAAA,cAAAA;AACAD,QAAAA,KAAAA;AACAyD,QAAAA,mBAAAA,CAAoBsB;AACrB,KAAA,CAAA;AACD,IAAA,MAAMC,0BAA6B5B,GAAAA,eAAAA,EAAiB6B,EAAG,CAAA,CAAC,CAAM5B,CAAAA,IAAAA,gBAAAA;AAC9D,IAAA,MAAM6B,qBAAqBC,uBACzB,CAAA;AACEvM,QAAAA,UAAAA,EAAYoM,0BAA4BpM,EAAAA,UAAAA;AACxCoH,QAAAA,KAAAA,EAAOgF,0BAA4BhF,EAAAA,KAAAA;AACnCC,QAAAA,cAAAA,EAAgB+E,0BAA4B/E,EAAAA,cAAAA;AAC5C8E,QAAAA,MAAAA,EAAQC,0BAA4BD,EAAAA;KAEtC,EAAA;AAAEK,QAAAA,IAAAA,EAAM,CAACJ;AAA2B,KAAA,CAAA;IAEtC,MAAM,EAAEK,oBAAoB,EAAE,GAAGC,kBAAAA,EAAAA;AAEjC,IAAA,MAAMC,sBACJ,CAACpF,WAAWqF,sCAAAA,CAA4B,IACtCtF,IAAMuF,EAAAA,eAAAA,CAAgBC,KAAK,CAACC,GAAAA,GAAQA,GAAG,CAACH,sCAAAA,CAA4B,KAAK,IAAI,CAAA,KAC/ErF,UAAUjE,MAAW,KAAA,UAAA;IAEvB,IAAI,CAACmE,MAAQuF,EAAAA,OAAAA,EAASC,eAAiB,EAAA;QACrC,OAAO,IAAA;AACT;AAEA,IAAA,MAAMC,cAAiB,GAAA,UAAA;QACrBtD,aAAc,CAAA,IAAA,CAAA;QAEd,IAAI;AACF,YAAA,MAAM,EAAEuD,MAAM,EAAE,GAAG,MAAMrD,SAAS,IAAM,EAAA;gBACtCxG,MAAQ,EAAA;AACV,aAAA,CAAA;AACA,YAAA,IAAI6J,MAAQ,EAAA;gBACV,MAAMC,0BAAAA,GAA6BvB,OAAOwB,IAAI,CAAC5F,OAAO6F,UAAU,CAAA,CAAER,IAAI,CAAC,CAACS,SAAAA,GAAAA;AACtE,oBAAA,MAAMC,SAAY/F,GAAAA,MAAAA,CAAO6F,UAAU,CAACC,SAAU,CAAA;oBAE9C,OAAOC,SAAAA,EAAWC,QAAY,IAAA,CAAC,CAAClF,iBAAiB,EAAC,EAAGjH,QAAQ,CAACiM,SAAAA,CAAAA;AAChE,iBAAA,CAAA;AAEA,gBAAA,IAAIH,0BAA4B,EAAA;oBAC9BzK,kBAAmB,CAAA;wBACjBO,IAAM,EAAA,QAAA;AACNE,wBAAAA,OAAAA,EAAS1C,aAAc,CAAA;4BACrBX,EAAI,EAAA,4DAAA;4BACJuC,cACE,EAAA;AACJ,yBAAA;AACF,qBAAA,CAAA;iBACK,MAAA;oBACLK,kBAAmB,CAAA;wBACjBO,IAAM,EAAA,QAAA;AACNE,wBAAAA,OAAAA,EAAS1C,aAAc,CAAA;4BACrBX,EAAI,EAAA,kCAAA;4BACJuC,cACE,EAAA;AACJ,yBAAA;AACF,qBAAA,CAAA;AACF;AACA,gBAAA;AACF;AACA,YAAA,MAAM,QAAEjD,MAAI,EAAE,GAAGqO,8BAAAA,CAA0B3G,cAAciD,UAAa,CAAA,EAAA;AACpEvC,gBAAAA,MAAAA;AACA0C,gBAAAA;AACF,aAAA,CAAA;YACA,MAAMwD,GAAAA,GAAM,MAAMlF,OAChB,CAAA;AACEpB,gBAAAA,cAAAA;AACAD,gBAAAA,KAAAA;AACApH,gBAAAA,UAAAA;AACAmM,gBAAAA,MAAAA,EAAQtB,oBAAoBsB;aAE9B9M,EAAAA,MAAAA,CAAAA;;AAIF,YAAA,IAAI,UAAUsO,GAAK,EAAA;AACjBzD,gBAAAA,SAAAA,EAAAA;gBACAQ,kBAAmB,CAAA;oBACjBxH,IAAM,EAAA,uBAAA;oBACN0K,OAAS,EAAA;wBAACC,wCAA6B9L,CAAAA,cAAc,CAAC+L;AAAc;AACtE,iBAAA,CAAA;AACF;YAEA,IAAI,MAAA,IAAUH,GAAOtG,IAAAA,cAAAA,KAAmB0G,wBAAc,EAAA;AACpD;;AAEC,YACD,IAAI7C,WAAAA,KAAgB,QAAY,IAAA,CAACZ,iBAAmB,EAAA;oBAClD3C,QAAS,CAAA;AACPqG,wBAAAA,QAAAA,EAAU,CAAC,GAAG,EAAE3G,cAAAA,CAAe,CAAC,EAAED,KAAAA,CAAM,CAAC,EAAEuG,GAAItO,CAAAA,IAAI,CAACW,UAAU,CAAC,CAAC;wBAChEiO,MAAQzE,EAAAA;AACV,qBAAA,CAAA;AACF,iBAAA,MAAO,IAAIc,iBAAmB,EAAA;AAC5B,oBAAA,MAAM4D,WAAc,GAAA;wBAClBlO,UAAY2N,EAAAA,GAAAA,CAAItO,IAAI,CAACW,UAAU;AAC/BqH,wBAAAA,cAAAA;AACAD,wBAAAA,KAAAA;AACA+E,wBAAAA,MAAAA,EAAQtB,oBAAoBsB;AAC9B,qBAAA;AAEA;;;;cAKA,IACE/M,cACAoL,IAAAA,eAAAA,KACC4B,0BAAAA,CAA2BpM,UAAU,IACpCoM,0BAA2B/E,CAAAA,cAAc,KAAK0G,wBAAW,CAC3D,EAAA;AACA,wBAAA,MAAM5O,qBACJiN,0BAA2B/E,CAAAA,cAAc,KAAK0G,wBAC1CtB,GAAAA,oBAAAA,EAAAA,GACAH,mBAAmBG,oBAAoB,EAAA;AAC7C,wBAAA,MAAM0B,oBAAuB3D,GAAAA,eAAAA,CAAgB6B,EAAE,CAAC,CAAC,CAAM5B,CAAAA,IAAAA,gBAAAA;AAEvD,wBAAA,MAAM2D,eAAelP,uBACnBC,CAAAA,kBAAAA,EACAC,cACAuO,EAAAA,GAAAA,CAAItO,IAAI,EACRC,iBAAAA,CAAAA;wBAGF,IAAI;4BACF,MAAM+O,SAAAA,GAAY,MAAMvD,sBAAuB,CAAA;AAC7CzD,gCAAAA,cAAAA,EAAgB8G,qBAAqB9G,cAAc;AACnDD,gCAAAA,KAAAA,EAAO+G,qBAAqB/G,KAAK;AACjCpH,gCAAAA,UAAAA,EACEmO,qBAAqB9G,cAAc,KAAK0G,wBACpCI,GAAAA,oBAAAA,CAAqBnO,UAAU,GAC/BkB,SAAAA;AACNiL,gCAAAA,MAAAA,EAAQgC,qBAAqBhC,MAAM;gCACnC9M,IAAM+O,EAAAA;AACR,6BAAA,CAAA;AAEA,4BAAA,IAAI,WAAWC,SAAW,EAAA;gCACxB1L,kBAAmB,CAAA;oCAAEO,IAAM,EAAA,QAAA;oCAAUE,OAAS6H,EAAAA,cAAAA,CAAeoD,UAAUnC,KAAK;AAAE,iCAAA,CAAA;AAC9E,gCAAA;AACF;AACF,yBAAA,CAAE,OAAOoC,GAAK,EAAA;4BACZ3L,kBAAmB,CAAA;gCACjBO,IAAM,EAAA,QAAA;AACNE,gCAAAA,OAAAA,EAAS1C,aAAc,CAAA;oCACrBX,EAAI,EAAA,oBAAA;oCACJuC,cAAgB,EAAA;AAClB,iCAAA;AACF,6BAAA,CAAA;4BAEA,MAAMgM,GAAAA;AACR;AACF;oBAEA/D,QAAS,CAAA;wBACPrH,IAAM,EAAA,wBAAA;wBACN0K,OAAS,EAAA;4BAAErG,QAAU2G,EAAAA,WAAAA;4BAAaK,wBAA0B,EAAA;AAAK;AACnE,qBAAA,CAAA;AACF;AACF,aAAA,MAAO,IACL,OAAA,IAAWZ,GACXa,IAAAA,oBAAAA,CAAiBb,GAAIzB,CAAAA,KAAK,CAC1ByB,IAAAA,GAAAA,CAAIzB,KAAK,CAACuC,IAAI,KAAK,iBACnB,EAAA;gBACA1E,SAAUjC,CAAAA,sBAAAA,CAAuB6F,IAAIzB,KAAK,CAAA,CAAA;AAC5C;SACQ,QAAA;YACRtC,aAAc,CAAA,KAAA,CAAA;AACd,YAAA,IAAIhB,SAAW,EAAA;AACbA,gBAAAA,SAAAA,EAAAA;AACF;AACF;AACF,KAAA;AAEA,IAAA,MAAM8F,sBAAsBtF,0BAA6BE,GAAAA,2BAAAA;;;AAGzD,IAAA,MAAMqF,yBAA4B,GAAA,KAAA;IAClC,MAAMC,iBAAAA,GAAoBD,yBAAmD;IAE7E,OAAO;QACLvK,OAASsE,EAAAA,SAAAA;QACTzH,QAAU,EAAA;AAAC,YAAA,OAAA;AAAS,YAAA,SAAA;AAAW,YAAA;AAAiB,SAAA;AAChD;;;;;;;;AAQC,QACD+C,QACEmE,EAAAA,SAAAA,IACA0B,YACAb,IAAAA,uBAAAA,IACA7B,cAAc,WACb,IAAA,CAACuC,QAAYiD,IAAAA,mBAAAA,IACb,CAACjD,QAAAA,IAAY,CAACnC,QAAAA,EAAUvH,cACzB,CAACsI,UAAAA;AACHrG,QAAAA,KAAAA,EAAOvB,aAAc,CAAA;YACnBX,EAAI,EAAA,mBAAA;YACJuC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAS,OAAS,EAAA,UAAA;YAOP,MAAMmK,cAAAA,EAAAA;AACR,SAAA;AACAlK,QAAAA,MAAAA,EAAQ4L,iBACJ,GAAA;YACE1L,IAAM,EAAA,QAAA;YACNf,OAAS,EAAA,QAAA;YACTyE,MAAQ,EAAA,IAAA;AACRzD,YAAAA,KAAAA,EAAOzC,aAAc,CAAA;gBACnBX,EAAIqL,EAAAA,2BAAAA,CAAe,CAAC,mDAAmD,CAAC,CAAA;gBACxE9I,cAAgB,EAAA;AAClB,aAAA,CAAA;AACAe,YAAAA,OAAAA,EAAS3C,aACP,CAAA;gBACEX,EAAIqL,EAAAA,2BAAAA,CAAe,CAAC,qDAAqD,CAAC,CAAA;gBAC1E9I,cACE,EAAA;aAEJ,EAAA;gBACEuM,KAAOH,EAAAA;AACT,aAAA,CAAA;YAEFtI,SAAW,EAAA,UAAA;gBACT,MAAM8G,cAAAA,EAAAA;AACR;SAEFhM,GAAAA;AACN,KAAA;AACF,CAAA;AAEAgG,aAAAA,CAAchE,IAAI,GAAG,SAAA;AACrBgE,aAAAA,CAAcjG,QAAQ,GAAG;AAAC,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAiB,CAAA;AAE/D,MAAM6N,YAAAA,GAAwC,CAAC,EAC7C3H,SAAS,EACTnH,UAAU,EACVoH,KAAK,EACLC,cAAc,EACf,GAAA;AACC,IAAA,MAAMqD,qBAAqBC,yBAAc,CAAA,cAAA,EAAgB,CAACC,CAAAA,GAAMA,EAAEL,QAAQ,CAAA;AAC1E,IAAA,MAAM5C,QAAWC,GAAAA,0BAAAA,EAAAA;IACjB,MAAM,EAAEjF,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEiF,+BAAAA,EAAiCC,sBAAsB,EAAE,GAAGC,8BAAAA,EAAAA;AACpE,IAAA,MAAMgH,aAAa9G,uBAASG,CAAAA,iBAAAA,CAAAA;AAC5B,IAAA,MAAMD,YAAY4G,UAAe,KAAA,IAAA;IACjC,MAAM,EAAErO,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEqO,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAExG,SAAS,EAAE,GAAGC,qCAAAA,EAAAA;AAC7C,IAAA,MAAM,EACJnB,eAAiB,EAAA,EAAE2C,UAAU,EAAE,EAChC,GAAGzC,qCAAmB,CAAA,cAAA,CAAA;AACvB,IAAA,MAAM,CAAC,EAAE8B,QAAQ,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AACvB,IAAA,MAAMb,YAAYC,yBAAkB,CAAA,cAAA,EAAgB,CAACC,KAAUA,GAAAA,KAAAA,CAAMF,SAAS,EAAE,KAAA,CAAA;IAChF,MAAM,EAAE6D,oBAAoB,EAAE,GAAGC,kBAAAA,EAAAA;AAEjC,IAAA,MAAM7C,eAAeF,mBAAQ,CAAA,cAAA,EAAgB,CAAC,EAAEE,YAAY,EAAE,GAAKA,YAAAA,CAAAA;AACnE,IAAA,MAAMH,WAAWC,mBAAQ,CAAA,cAAA,EAAgB,CAAC,EAAED,QAAQ,EAAE,GAAKA,QAAAA,CAAAA;AAC3D,IAAA,MAAME,gBAAgBD,mBAAQ,CAAA,cAAA,EAAgB,CAAC,EAAEC,aAAa,EAAE,GAAKA,aAAAA,CAAAA;AACrE,IAAA,MAAMuF,gBAAgBxF,mBAAQ,CAAA,cAAA,EAAgB,CAAC,EAAEwF,aAAa,EAAE,GAAKA,aAAAA,CAAAA;AACrE,IAAA,MAAM5H,WAAWoC,mBAAQ,CAAA,cAAA,EAAgB,CAAC,EAAEM,MAAM,EAAE,GAAKA,MAAAA,CAAAA;AACzD,IAAA,MAAMH,WAAWH,mBAAQ,CAAA,cAAA,EAAgB,CAACb,KAAAA,GAAUA,MAAMgB,QAAQ,CAAA;AAClE,IAAA,MAAMC,YAAYJ,mBAAQ,CAAA,cAAA,EAAgB,CAACb,KAAAA,GAAUA,MAAMiB,SAAS,CAAA;AACpE,IAAA,MAAMG,YAAYP,mBAAQ,CAAA,cAAA,EAAgB,CAAC,EAAEO,SAAS,EAAE,GAAKA,SAAAA,CAAAA;AAE7D,IAAA,MAAMK,WAAWF,8BAAiB,CAAA,cAAA,EAAgB,CAACvB,KAAAA,GAAUA,MAAMyB,QAAQ,CAAA;;AAG3E,IAAA,MAAMH,eAAkBC,GAAAA,8BAAAA,CAAiB,cAAgB,EAAA,IAAM,IAAM,EAAA,KAAA,CAAA;IACrE,MAAM+E,qBAAAA,GAAwB/E,+BAC5B,cACA,EAAA,CAACvB,QAAUA,KAAMtB,CAAAA,eAAe,CAACC,MAAM,EACvC,KAAA,CAAA;IAEF,MAAMrI,cAAAA,GAAiBiL,+BACrB,cACA,EAAA,CAACvB,QAAUA,KAAMA,CAAAA,KAAK,CAAC1J,cAAc,EACrC,KAAA,CAAA;IAEF,MAAME,iBAAAA,GAAoB+K,+BACxB,eACA,EAAA,CAACvB,QAAUA,KAAMA,CAAAA,KAAK,CAACxJ,iBAAiB,EACxC,KAAA,CAAA;IAEF,MAAMkL,eAAAA,GAAkBH,+BACtB,cACA,EAAA,CAACvB,QAAUA,KAAMA,CAAAA,KAAK,CAAC0B,eAAe,EACtC,KAAA,CAAA;AAEF,IAAA,MAAMC,mBAAmBJ,8BAAiB,CAAA,cAAA,EAAgB,CAACvB,KAAAA,GAAUA,MAAM2B,gBAAgB,CAAA;AAC3F,IAAA,MAAMH,oBAAoBF,eAAmBlJ,IAAAA,SAAAA;AAE7C,IAAA,MAAM,EAAE2J,mBAAmB,EAAE,GAAGnD,qCAAmB,CAAA,cAAA,CAAA;IACnD,MAAM,CAACoD,uBAAuB,GAAGC,mCAAAA,EAAAA;AACjC,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGlD,8BAAAA,EAAAA;AACpD,IAAA,MAAMqE,0BAA6B5B,GAAAA,eAAAA,EAAiB6B,EAAG,CAAA,CAAC,CAAM5B,CAAAA,IAAAA,gBAAAA;AAC9D,IAAA,MAAM6B,qBAAqBC,uBACzB,CAAA;AACEvM,QAAAA,UAAAA,EAAYoM,0BAA4BpM,EAAAA,UAAAA;AACxCoH,QAAAA,KAAAA,EAAOgF,0BAA4BhF,EAAAA,KAAAA;AACnCC,QAAAA,cAAAA,EAAgB+E,0BAA4B/E,EAAAA,cAAAA;AAC5C8E,QAAAA,MAAAA,EAAQC,0BAA4BD,EAAAA;KAEtC,EAAA;AAAEK,QAAAA,IAAAA,EAAM,CAACJ;AAA2B,KAAA,CAAA;IAEtC,MAAM,EAAE3E,MAAM,EAAE,GAAGiF,kBAAAA,EAAAA;IAEnB,MAAM2C,YAAAA,GAAe5M,gBAAM6M,CAAAA,WAAW,CAAC,UAAA;QACrC1F,aAAc,CAAA,IAAA,CAAA;QAEd,IAAI;AACF,YAAA,IAAI,CAACF,QAAU,EAAA;AACb,gBAAA;AACF;AAEA,YAAA,MAAM,EAAEyD,MAAM,EAAE,GAAG,MAAMrD,SAAS,IAAM,EAAA;gBACtCxG,MAAQ,EAAA;AACV,aAAA,CAAA;AAEA,YAAA,IAAI6J,MAAQ,EAAA;gBACVxK,kBAAmB,CAAA;oBACjBO,IAAM,EAAA,QAAA;AACNE,oBAAAA,OAAAA,EAAS1C,aAAc,CAAA;wBACrBX,EAAI,EAAA,kCAAA;wBACJuC,cACE,EAAA;AACJ,qBAAA;AACF,iBAAA,CAAA;AAEA,gBAAA;AACF;AACA,YAAA,IAAI6F,SAAW,EAAA;gBACb,MAAMwF,GAAAA,GAAM,MAAMuB,KAChB,CAAA;AACE9H,oBAAAA,KAAAA;oBACApH,UAAY+O,EAAAA,UAAAA,CAAW5C,MAAM,CAACoD,MAAM;AACpCpD,oBAAAA,MAAAA,EAAQtB,oBAAoBsB;AAC9B,iBAAA,EACApF,aAAcQ,CAAAA,QAAAA,CAAAA,CAAAA;AAGhB,gBAAA,IAAI,UAAUoG,GAAK,EAAA;oBACjBhG,QACE,CAAA;wBACEqG,QAAU,EAAA,CAAC,GAAG,EAAEL,GAAAA,CAAItO,IAAI,CAACW,UAAU,CAAC,CAAC;wBACrCiO,MAAQzE,EAAAA;qBAEV,EAAA;wBAAEgG,QAAU,EAAA;AAAO,qBAAA,CAAA;AAEvB,iBAAA,MAAO,IACL,OAAA,IAAW7B,GACXa,IAAAA,oBAAAA,CAAiBb,GAAIzB,CAAAA,KAAK,CAC1ByB,IAAAA,GAAAA,CAAIzB,KAAK,CAACuC,IAAI,KAAK,iBACnB,EAAA;oBACA1E,SAAUjC,CAAAA,sBAAAA,CAAuB6F,IAAIzB,KAAK,CAAA,CAAA;AAC5C;aACK,MAAA,IAAIlM,UAAcqH,IAAAA,cAAAA,KAAmB0G,wBAAc,EAAA;AACxD,gBAAA,MAAM,QAAE1O,MAAI,EAAE,GAAGqO,8BAAAA,CAA0B3G,cAAcQ,QAAW,CAAA,EAAA;AAClEE,oBAAAA,MAAAA,EAAQ6C,oBAAoB8E,qBAAwB3H,GAAAA,MAAAA;AACpD0H,oBAAAA,aAAAA;AACAhF,oBAAAA;AACF,iBAAA,CAAA;gBACA,MAAMwD,GAAAA,GAAM,MAAMsB,MAChB,CAAA;AACE5H,oBAAAA,cAAAA;AACAD,oBAAAA,KAAAA;AACApH,oBAAAA,UAAAA;AACAmM,oBAAAA,MAAAA,EAAQtB,oBAAoBsB;iBAE9B9M,EAAAA,MAAAA,CAAAA;gBAGF,IAAI,OAAA,IAAWsO,GAAOa,IAAAA,oBAAAA,CAAiBb,GAAIzB,CAAAA,KAAK,CAAKyB,IAAAA,GAAAA,CAAIzB,KAAK,CAACuC,IAAI,KAAK,iBAAmB,EAAA;oBACzF1E,SAAUjC,CAAAA,sBAAAA,CAAuB6F,IAAIzB,KAAK,CAAA,CAAA;iBACrC,MAAA;AACLhC,oBAAAA,SAAAA,EAAAA;AACF;aACK,MAAA;AACL,gBAAA,MAAM,QAAE7K,MAAI,EAAE,GAAGqO,8BAAAA,CAA0B3G,cAAcQ,QAAW,CAAA,EAAA;AAClEE,oBAAAA,MAAAA,EAAQ6C,oBAAoB8E,qBAAwB3H,GAAAA,MAAAA;AACpD0H,oBAAAA,aAAAA;AACAhF,oBAAAA;AACF,iBAAA,CAAA;gBACA,MAAMwD,GAAAA,GAAM,MAAMqB,MAChB,CAAA;AACE5H,oBAAAA,KAAAA;AACA+E,oBAAAA,MAAAA,EAAQtB,oBAAoBsB;iBAE9B9M,EAAAA,MAAAA,CAAAA;gBAGF,IAAI,MAAA,IAAUsO,GAAOtG,IAAAA,cAAAA,KAAmB0G,wBAAc,EAAA;AACpD,oBAAA,IAAIzD,iBAAmB,EAAA;AACrB,wBAAA,MAAMmF,eAAkB,GAAA;4BACtBzP,UAAY2N,EAAAA,GAAAA,CAAItO,IAAI,CAACW,UAAU;AAC/BqH,4BAAAA,cAAAA;AACAD,4BAAAA,KAAAA;AACA+E,4BAAAA,MAAAA,EAAQtB,oBAAoBsB;AAC9B,yBAAA;AACA;;;;gBAKA,IACE/M,cACAoL,IAAAA,eAAAA,KACC4B,0BAAAA,CAA2BpM,UAAU,IACpCoM,0BAA2B/E,CAAAA,cAAc,KAAK0G,wBAAW,CAC3D,EAAA;AACA,4BAAA,MAAM5O,qBACJiN,0BAA2B/E,CAAAA,cAAc,KAAK0G,wBAC1CtB,GAAAA,oBAAAA,EAAAA,GACAH,mBAAmBG,oBAAoB,EAAA;AAE7C,4BAAA,MAAM2B,eAAelP,uBACnBC,CAAAA,kBAAAA,EACAC,cACAuO,EAAAA,GAAAA,CAAItO,IAAI,EACRC,iBAAAA,CAAAA;4BAGF,IAAI;gCACF,MAAM+O,SAAAA,GAAY,MAAMvD,sBAAuB,CAAA;AAC7CzD,oCAAAA,cAAAA,EAAgB+E,2BAA2B/E,cAAc;AACzDD,oCAAAA,KAAAA,EAAOgF,2BAA2BhF,KAAK;AACvCpH,oCAAAA,UAAAA,EACEoM,2BAA2B/E,cAAc,KAAK0G,wBAC1C3B,GAAAA,0BAAAA,CAA2BpM,UAAU,GACrCkB,SAAAA;AACNiL,oCAAAA,MAAAA,EAAQC,2BAA2BD,MAAM;oCACzC9M,IAAM,EAAA;AACJ,wCAAA,GAAG+O;AACL;AACF,iCAAA,CAAA;AACA,gCAAA,IAAI,WAAWC,SAAW,EAAA;oCACxB1L,kBAAmB,CAAA;wCAAEO,IAAM,EAAA,QAAA;wCAAUE,OAAS6H,EAAAA,cAAAA,CAAeoD,UAAUnC,KAAK;AAAE,qCAAA,CAAA;AAC9E,oCAAA;AACF;AACF,6BAAA,CAAE,OAAOoC,GAAK,EAAA;gCACZ3L,kBAAmB,CAAA;oCACjBO,IAAM,EAAA,QAAA;AACNE,oCAAAA,OAAAA,EAAS1C,aAAc,CAAA;wCACrBX,EAAI,EAAA,oBAAA;wCACJuC,cAAgB,EAAA;AAClB,qCAAA;AACF,iCAAA,CAAA;gCAEA,MAAMgM,GAAAA;AACR;AACF;wBAEA/D,QAAS,CAAA;4BACPrH,IAAM,EAAA,wBAAA;4BACN0K,OAAS,EAAA;gCAAErG,QAAUkI,EAAAA,eAAAA;gCAAiBlB,wBAA0B,EAAA;AAAK;AACvE,yBAAA,CAAA;qBACK,MAAA;wBACL5G,QACE,CAAA;4BACEqG,QAAU,EAAA,CAAC,GAAG,EAAEL,GAAAA,CAAItO,IAAI,CAACW,UAAU,CAAC,CAAC;4BACrCiO,MAAQzE,EAAAA;yBAEV,EAAA;4BAAEkG,OAAS,EAAA,IAAA;4BAAMF,QAAU,EAAA;AAAO,yBAAA,CAAA;AAEtC;AACF,iBAAA,MAAO,IACL,OAAA,IAAW7B,GACXa,IAAAA,oBAAAA,CAAiBb,GAAIzB,CAAAA,KAAK,CAC1ByB,IAAAA,GAAAA,CAAIzB,KAAK,CAACuC,IAAI,KAAK,iBACnB,EAAA;oBACA1E,SAAUjC,CAAAA,sBAAAA,CAAuB6F,IAAIzB,KAAK,CAAA,CAAA;AAC5C;AACF;SACQ,QAAA;YACRxB,kBAAmB,CAAA;gBACjBxH,IAAM,EAAA,uBAAA;gBACN0K,OAAS,EAAA;oBAACC,wCAA6B9L,CAAAA,cAAc,CAAC+L;AAAc;AACtE,aAAA,CAAA;YACAlE,aAAc,CAAA,KAAA,CAAA;AACd,YAAA,IAAIhB,SAAW,EAAA;AACbA,gBAAAA,SAAAA,EAAAA;AACF;AACF;KACC,EAAA;AACDgB,QAAAA,aAAAA;AACAF,QAAAA,QAAAA;AACAI,QAAAA,QAAAA;AACA3B,QAAAA,SAAAA;AACAnI,QAAAA,UAAAA;AACAqH,QAAAA,cAAAA;AACA1E,QAAAA,kBAAAA;AACAjC,QAAAA,aAAAA;AACAwO,QAAAA,KAAAA;AACA9H,QAAAA,KAAAA;AACA2H,QAAAA,UAAAA,EAAY5C,MAAOoD,CAAAA,MAAAA;AACnB1E,QAAAA,mBAAAA,CAAoBsB,MAAM;AAC1B5E,QAAAA,QAAAA;AACAI,QAAAA,QAAAA;AACA6B,QAAAA,QAAAA;AACAO,QAAAA,SAAAA;AACAjC,QAAAA,sBAAAA;AACAmH,QAAAA,MAAAA;AACA/E,QAAAA,SAAAA;AACA8E,QAAAA,MAAAA;AACA1E,QAAAA,iBAAAA;AACAlL,QAAAA,cAAAA;AACAoL,QAAAA,eAAAA;AACA4B,QAAAA,0BAAAA;AACA7B,QAAAA,QAAAA;AACAkC,QAAAA,oBAAAA;AACAH,QAAAA,kBAAAA;AACAhN,QAAAA,iBAAAA;AACAwL,QAAAA,sBAAAA;AACAG,QAAAA,cAAAA;AACArC,QAAAA,SAAAA;AACAuG,QAAAA,aAAAA;AACA1H,QAAAA,MAAAA;AACA0C,QAAAA,UAAAA;AACAiF,QAAAA,qBAAAA;AACA1E,QAAAA;AACD,KAAA,CAAA;;AAGDjI,IAAAA,gBAAAA,CAAM0I,SAAS,CAAC,IAAA;AACd,QAAA,MAAMwE,gBAAgB,CAAC7M,CAAAA,GAAAA;YACrB,IAAIA,CAAAA,CAAEiJ,GAAG,KAAK,OAAYjJ,KAAAA,CAAE8M,CAAAA,OAAO,IAAI9M,CAAAA,CAAE+M,OAAM,CAAI,EAAA;AACjD/M,gBAAAA,CAAAA,CAAEW,cAAc,EAAA;AAChB4L,gBAAAA,YAAAA,EAAAA;AACF;AACF,SAAA;QAEAS,MAAOC,CAAAA,gBAAgB,CAAC,SAAWJ,EAAAA,aAAAA,CAAAA;QAEnC,OAAO,IAAA;YACLG,MAAOE,CAAAA,mBAAmB,CAAC,SAAWL,EAAAA,aAAAA,CAAAA;AACxC,SAAA;KACC,EAAA;AAACN,QAAAA;AAAa,KAAA,CAAA;IAEjB,OAAO;QACLjL,OAASsE,EAAAA,SAAAA;AACT;;;;;AAKC,QACD1E,UAAU6F,YAAiB,IAAA,CAACH,QAAY,IAAA,CAACvB,aAAchB,SAAc,KAAA,WAAA;AACrElF,QAAAA,KAAAA,EAAOvB,aAAc,CAAA;YACnBX,EAAI,EAAA,aAAA;YACJuC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAS,OAASsM,EAAAA,YAAAA;QACTpO,QAAU,EAAA;AAAC,YAAA,OAAA;AAAS,YAAA,SAAA;AAAW,YAAA;AAAiB;AAClD,KAAA;AACF,CAAA;AAEA6N,YAAAA,CAAa5L,IAAI,GAAG,QAAA;AACpB4L,YAAAA,CAAa7N,QAAQ,GAAG;AAAC,IAAA,OAAA;AAAS,IAAA,SAAA;AAAW,IAAA;AAAiB,CAAA;AAE9D,MAAMgP,uBAA0B,GAAA;IAC9BC,IAAM,EAAA,MAAA;IACNC,OAAS,EAAA;AACX,CAAA;AAEA,MAAMC,eAA2C,GAAA,CAAC,EAChDjJ,SAAS,EACTnH,UAAU,EACVoH,KAAK,EACLC,cAAc,EACdE,QAAQ,EACT,GAAA;IACC,MAAM,EAAE7G,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAE8G,MAAM,EAAE,GAAGiF,kBAAAA,EAAAA;AACnB,IAAA,MAAMpE,aAAaE,4BAAgB,CAAA,iBAAA,EAAmB,CAAC,EAAEF,UAAU,EAAE,GAAKA,UAAAA,CAAAA;IAC1E,MAAM,EAAE+H,SAAS,EAAE,GAAG1H,qCAAAA,EAAAA;AACtB,IAAA,MAAM,CAAC,EAAE2H,KAAK,EAAE,CAAC,GAAG7G,0BAAAA,EAAAA;AACpB,IAAA,MAAM0C,SAAS1J,gBAAM8N,CAAAA,OAAO,CAAC,IAAMC,qBAAiBF,KAAQ,CAAA,EAAA;AAACA,QAAAA;AAAM,KAAA,CAAA;IACnE,MAAM,EAAE3N,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAC/B,IAAA,MAAM,CAAC6N,eAAiBC,EAAAA,kBAAAA,CAAmB,GAAGjO,gBAAAA,CAAMC,QAAQ,CAAC,IAAA,CAAA;IAE7D,MAAMiO,kBAAAA,GAAqBpJ,UAAUjE,MAAW,KAAA,UAAA;AAEhD,IAAA,MAAMsN,eAAe,CAAC5E,KAAAA,GAAAA;QACpB0E,kBAAmB1E,CAAAA,KAAAA,KAAUiE,wBAAwBC,IAAI,CAAA;AAC3D,KAAA;IAEA,IAAI,CAACzI,MAAQuF,EAAAA,OAAAA,EAASC,eAAiB,EAAA;QACrC,OAAO,IAAA;AACT;IAEA,OAAO;QACLjJ,QACE,EAAA,CAACsE,cACDnB,SAAc,KAAA,WAAA,IACbI,UAAUjE,MAAW,KAAA,WAAA,IAAeiE,UAAUjE,MAAW,KAAA,UAAA;AAC5DrB,QAAAA,KAAAA,EAAOvB,aAAc,CAAA;YACnBX,EAAI,EAAA,qBAAA;YACJuC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAyB,QAAAA,IAAAA,gBAAMlC,cAACgP,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;QACP9N,OAAS,EAAA,UAAA;AACP;;;;AAIC,UACD,IAAI,CAAE/C,UAAcqH,IAAAA,cAAAA,KAAmB0G,4BAAiB4C,kBAAoB,EAAA;AAC1E,gBAAA,IAAI,CAAC3Q,UAAY,EAAA;;AAEf8Q,oBAAAA,OAAAA,CAAQ5E,KAAK,CACX,8GAAA,CAAA;oBAGFvJ,kBAAmB,CAAA;AACjBS,wBAAAA,OAAAA,EAAS1C,aAAc,CAAA;4BACrBX,EAAI,EAAA,yCAAA;4BACJuC,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAY,IAAM,EAAA;AACR,qBAAA,CAAA;AACF;AAEA,gBAAA;AACF;AAEA,YAAA,MAAMmN,SAAU,CAAA;AACdhJ,gBAAAA,cAAAA;AACAD,gBAAAA,KAAAA;AACApH,gBAAAA,UAAAA;AACAmM,gBAAAA;AACF,aAAA,CAAA;AACF,SAAA;AACAnJ,QAAAA,MAAAA,EAAQ2N,kBACJ,GAAA;YACEzN,IAAM,EAAA,QAAA;AACNC,YAAAA,KAAAA,EAAOzC,aAAc,CAAA;gBACnBX,EAAI,EAAA,oCAAA;gBACJuC,cAAgB,EAAA;AAClB,aAAA,CAAA;AACAe,YAAAA,OAAAA,gBACE9B,eAACC,CAAAA,iBAAAA,EAAAA;gBAAKG,UAAW,EAAA,YAAA;gBAAaF,SAAU,EAAA,QAAA;gBAASC,GAAK,EAAA,CAAA;;kCACpDH,eAACC,CAAAA,iBAAAA,EAAAA;wBAAKI,KAAM,EAAA,MAAA;wBAAOH,SAAU,EAAA,QAAA;wBAASC,GAAK,EAAA,CAAA;;0CACzCG,cAACkP,CAAAA,mBAAAA,EAAAA;gCAAcnP,KAAM,EAAA,MAAA;gCAAOoP,MAAO,EAAA,MAAA;gCAAOC,IAAK,EAAA;;0CAC/CpP,cAACqP,CAAAA,uBAAAA,EAAAA;gCAAWxL,GAAI,EAAA,GAAA;gCAAIvD,OAAQ,EAAA,OAAA;gCAAQgP,SAAU,EAAA,QAAA;0CAC3CzQ,aAAc,CAAA;oCACbX,EAAI,EAAA,+CAAA;oCACJuC,cAAgB,EAAA;AAClB,iCAAA;;;;AAGJ,kCAAAf,eAAA,CAAC6P,mBAAMC,KAAK,EAAA;AACVC,wBAAAA,YAAAA,EAAcrB,wBAAwBC,IAAI;wBAC1CzB,IAAK,EAAA,iBAAA;AACL8C,wBAAAA,YAAAA,EAAY7Q,aAAc,CAAA;4BACxBX,EAAI,EAAA,sDAAA;4BACJuC,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAkP,aAAeZ,EAAAA,YAAAA;;AAEf,0CAAA/O,cAAA,CAACuP,mBAAMrL,IAAI,EAAA;gCAAC0L,OAAShB,EAAAA,eAAAA;AAAiBzE,gCAAAA,KAAAA,EAAOiE,wBAAwBC,IAAI;0CACtExP,aAAc,CAAA;oCACbX,EAAI,EAAA,4DAAA;oCACJuC,cAAgB,EAAA;AAClB,iCAAA;;AAEF,0CAAAT,cAAA,CAACuP,mBAAMrL,IAAI,EAAA;AAAC0L,gCAAAA,OAAAA,EAAS,CAAChB,eAAAA;AAAiBzE,gCAAAA,KAAAA,EAAOiE,wBAAwBE,OAAO;0CAC1EzP,aAAc,CAAA;oCACbX,EAAI,EAAA,+DAAA;oCACJuC,cAAgB,EAAA;AAClB,iCAAA;;;;;;YAKR8D,SAAW,EAAA,UAAA;gBACT,IAAI,CAACpG,UAAcqH,IAAAA,cAAAA,KAAmB0G,wBAAc,EAAA;;AAElD+C,oBAAAA,OAAAA,CAAQ5E,KAAK,CACX,8GAAA,CAAA;oBAGFvJ,kBAAmB,CAAA;AACjBS,wBAAAA,OAAAA,EAAS1C,aAAc,CAAA;4BACrBX,EAAI,EAAA,yCAAA;4BACJuC,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAY,IAAM,EAAA;AACR,qBAAA,CAAA;AACF;AAEA,gBAAA,MAAMmN,SACJ,CAAA;AACEhJ,oBAAAA,cAAAA;AACAD,oBAAAA,KAAAA;AACApH,oBAAAA,UAAAA;AACAmM,oBAAAA;AACF,iBAAA,EACA,CAACsE,eAAAA,CAAAA;AAEL;SAEFvP,GAAAA,SAAAA;QACJiB,OAAS,EAAA,QAAA;QACTlB,QAAU,EAAA;AAAC,YAAA,OAAA;AAAS,YAAA;AAAY;AAClC,KAAA;AACF,CAAA;AAEAmP,eAAAA,CAAgBlN,IAAI,GAAG,WAAA;AACvBkN,eAAAA,CAAgBnP,QAAQ,GAAG,OAAA;AAE3B,MAAMyQ,aAAyC,GAAA,CAAC,EAC9CvK,SAAS,EACTnH,UAAU,EACVoH,KAAK,EACLC,cAAc,EACdE,QAAQ,EACT,GAAA;IACC,MAAM,EAAE7G,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAE8G,MAAM,EAAE,GAAGiF,kBAAAA,EAAAA;AACnB,IAAA,MAAMiF,YAAYnJ,4BAAgB,CAAA,eAAA,EAAiB,CAAC,EAAEmJ,SAAS,EAAE,GAAKA,SAAAA,CAAAA;AACtE,IAAA,MAAM,EAAEC,OAAO,EAAElJ,SAAS,EAAE,GAAGC,qCAAAA,EAAAA;AAC/B,IAAA,MAAM,CAAC,EAAE2H,KAAK,EAAE,CAAC,GAAG7G,0BAAAA,EAAAA;AACpB,IAAA,MAAM0C,SAAS1J,gBAAM8N,CAAAA,OAAO,CAAC,IAAMC,qBAAiBF,KAAQ,CAAA,EAAA;AAACA,QAAAA;AAAM,KAAA,CAAA;IAEnE,IAAI,CAAC7I,MAAQuF,EAAAA,OAAAA,EAASC,eAAiB,EAAA;QACrC,OAAO,IAAA;AACT;IAEA,OAAO;AACLjJ,QAAAA,QAAAA,EAAU,CAAC2N,SAAAA,IAAaxK,SAAc,KAAA,WAAA,IAAeI,UAAUjE,MAAW,KAAA,UAAA;AAC1ErB,QAAAA,KAAAA,EAAOvB,aAAc,CAAA;YACnBX,EAAI,EAAA,uCAAA;YACJuC,cAAgB,EAAA;AAClB,SAAA,CAAA;AACAyB,QAAAA,IAAAA,gBAAMlC,cAACgP,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;QACP5P,QAAU,EAAA;AAAC,YAAA,OAAA;AAAS,YAAA;AAAY,SAAA;QAChCkB,OAAS,EAAA,QAAA;QACTa,MAAQ,EAAA;YACNE,IAAM,EAAA,QAAA;AACNC,YAAAA,KAAAA,EAAOzC,aAAc,CAAA;gBACnBX,EAAI,EAAA,oCAAA;gBACJuC,cAAgB,EAAA;AAClB,aAAA,CAAA;AACAe,YAAAA,OAAAA,gBACE9B,eAACC,CAAAA,iBAAAA,EAAAA;gBAAKC,SAAU,EAAA,QAAA;gBAASC,GAAK,EAAA,CAAA;;kCAC5BG,cAACkP,CAAAA,mBAAAA,EAAAA;wBAAcnP,KAAM,EAAA,MAAA;wBAAOoP,MAAO,EAAA,MAAA;wBAAOC,IAAK,EAAA;;kCAC/CpP,cAACqP,CAAAA,uBAAAA,EAAAA;wBAAWxL,GAAI,EAAA,GAAA;wBAAIvD,OAAQ,EAAA,OAAA;wBAAQgP,SAAU,EAAA,QAAA;kCAC3CzQ,aAAc,CAAA;4BACbX,EAAI,EAAA,6CAAA;4BACJuC,cAAgB,EAAA;AAClB,yBAAA;;;;YAIN8B,OAASsE,EAAAA,SAAAA;YACTtC,SAAW,EAAA,UAAA;AACT,gBAAA,MAAMwL,OAAQ,CAAA;AACZvK,oBAAAA,cAAAA;AACAD,oBAAAA,KAAAA;AACApH,oBAAAA,UAAAA;AACAmM,oBAAAA;AACF,iBAAA,CAAA;AACF;AACF;AACF,KAAA;AACF,CAAA;AAEAuF,aAAAA,CAAcxO,IAAI,GAAG,SAAA;AACrBwO,aAAAA,CAAczQ,QAAQ,GAAG,OAAA;AAEzB,MAAM4Q,eAAkB,GAAA;AAAC3K,IAAAA,aAAAA;AAAe4H,IAAAA,YAAAA;AAAcsB,IAAAA,eAAAA;AAAiBsB,IAAAA;AAAc;;;;;;;"}
|