@strapi/content-manager 0.0.0-next.76f429d63541aef387ea84c657c9345fe2e62d8d → 0.0.0-next.7899d7020477ed75611335b08da36306d04789a2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/ConfigurationForm/Fields.js +300 -204
- package/dist/admin/components/ConfigurationForm/Fields.js.map +1 -1
- package/dist/admin/components/ConfigurationForm/Fields.mjs +304 -209
- package/dist/admin/components/ConfigurationForm/Fields.mjs.map +1 -1
- package/dist/admin/components/LeftMenu.js +34 -30
- package/dist/admin/components/LeftMenu.js.map +1 -1
- package/dist/admin/components/LeftMenu.mjs +36 -32
- package/dist/admin/components/LeftMenu.mjs.map +1 -1
- package/dist/admin/components/Widgets.js +253 -0
- package/dist/admin/components/Widgets.js.map +1 -1
- package/dist/admin/components/Widgets.mjs +236 -3
- package/dist/admin/components/Widgets.mjs.map +1 -1
- package/dist/admin/history/components/VersionContent.js +24 -3
- package/dist/admin/history/components/VersionContent.js.map +1 -1
- package/dist/admin/history/components/VersionContent.mjs +25 -4
- package/dist/admin/history/components/VersionContent.mjs.map +1 -1
- package/dist/admin/history/components/VersionHeader.js +6 -0
- package/dist/admin/history/components/VersionHeader.js.map +1 -1
- package/dist/admin/history/components/VersionHeader.mjs +7 -1
- package/dist/admin/history/components/VersionHeader.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentActions.js +12 -4
- package/dist/admin/hooks/useDocumentActions.js.map +1 -1
- package/dist/admin/hooks/useDocumentActions.mjs +12 -4
- package/dist/admin/hooks/useDocumentActions.mjs.map +1 -1
- package/dist/admin/hooks/useDocumentContext.js.map +1 -1
- package/dist/admin/hooks/useDocumentContext.mjs.map +1 -1
- package/dist/admin/index.js +23 -5
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +22 -3
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.js +99 -75
- package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/pages/EditView/EditViewPage.mjs +101 -77
- package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.js +289 -91
- package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
- package/dist/admin/pages/EditView/components/DocumentActions.mjs +293 -95
- package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js +12 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs +12 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksContent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js +54 -14
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs +55 -15
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksEditor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +21 -35
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +21 -35
- package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js +12 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs +13 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/NonRepeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js +15 -2
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs +16 -3
- package/dist/admin/pages/EditView/components/FormInputs/Component/Repeatable.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js +18 -5
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs +20 -7
- package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/DynamicComponent.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +129 -55
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +129 -55
- package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +120 -32
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +124 -36
- package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.js +4 -2
- package/dist/admin/pages/EditView/components/FormInputs/UID.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs +4 -2
- package/dist/admin/pages/EditView/components/FormInputs/UID.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/Editor.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js +86 -118
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs +86 -118
- package/dist/admin/pages/EditView/components/FormInputs/Wysiwyg/WysiwygNav.mjs.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.js +47 -27
- package/dist/admin/pages/EditView/components/FormLayout.js.map +1 -1
- package/dist/admin/pages/EditView/components/FormLayout.mjs +47 -27
- package/dist/admin/pages/EditView/components/FormLayout.mjs.map +1 -1
- package/dist/admin/pages/EditView/utils/data.js +103 -0
- package/dist/admin/pages/EditView/utils/data.js.map +1 -1
- package/dist/admin/pages/EditView/utils/data.mjs +103 -1
- package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.js +227 -132
- package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
- package/dist/admin/pages/ListView/ListViewPage.mjs +229 -134
- package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js +2 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.js.map +1 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs +2 -1
- package/dist/admin/pages/ListView/components/BulkActions/ConfirmBulkActionDialog.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.js +1 -0
- package/dist/admin/pages/ListView/components/Filters.js.map +1 -1
- package/dist/admin/pages/ListView/components/Filters.mjs +1 -0
- package/dist/admin/pages/ListView/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.js +13 -3
- package/dist/admin/pages/ListView/components/TableActions.js.map +1 -1
- package/dist/admin/pages/ListView/components/TableActions.mjs +13 -3
- package/dist/admin/pages/ListView/components/TableActions.mjs.map +1 -1
- package/dist/admin/services/api.js +3 -1
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +3 -1
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/services/documents.js +32 -16
- package/dist/admin/services/documents.js.map +1 -1
- package/dist/admin/services/documents.mjs +32 -16
- package/dist/admin/services/documents.mjs.map +1 -1
- package/dist/admin/services/homepage.js +19 -6
- package/dist/admin/services/homepage.js.map +1 -1
- package/dist/admin/services/homepage.mjs +19 -7
- package/dist/admin/services/homepage.mjs.map +1 -1
- package/dist/admin/src/components/ConfigurationForm/Fields.d.ts +6 -4
- package/dist/admin/src/components/Widgets.d.ts +2 -1
- package/dist/admin/src/exports.d.ts +1 -0
- package/dist/admin/src/history/services/historyVersion.d.ts +1 -1
- package/dist/admin/src/hooks/useDocumentActions.d.ts +1 -0
- package/dist/admin/src/hooks/useDocumentContext.d.ts +1 -1
- package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +26 -5
- package/dist/admin/src/pages/EditView/components/FormInputs/UID.d.ts +1 -0
- package/dist/admin/src/pages/EditView/components/FormLayout.d.ts +7 -8
- package/dist/admin/src/pages/EditView/utils/data.d.ts +19 -1
- package/dist/admin/src/preview/services/preview.d.ts +1 -1
- package/dist/admin/src/services/api.d.ts +1 -1
- package/dist/admin/src/services/components.d.ts +2 -2
- package/dist/admin/src/services/contentTypes.d.ts +3 -3
- package/dist/admin/src/services/documents.d.ts +23 -17
- package/dist/admin/src/services/homepage.d.ts +6 -2
- package/dist/admin/src/services/init.d.ts +1 -1
- package/dist/admin/src/services/relations.d.ts +2 -2
- package/dist/admin/src/services/uid.d.ts +3 -3
- package/dist/admin/src/utils/validation.d.ts +1 -0
- package/dist/admin/translations/en.json.js +5 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +5 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +5 -2
- package/dist/admin/translations/es.json.js.map +1 -1
- package/dist/admin/translations/es.json.mjs +5 -2
- package/dist/admin/translations/es.json.mjs.map +1 -1
- package/dist/admin/translations/fr.json.js +10 -2
- package/dist/admin/translations/fr.json.js.map +1 -1
- package/dist/admin/translations/fr.json.mjs +10 -2
- package/dist/admin/translations/fr.json.mjs.map +1 -1
- package/dist/admin/translations/ru.json.js +235 -226
- package/dist/admin/translations/ru.json.js.map +1 -1
- package/dist/admin/translations/ru.json.mjs +230 -226
- package/dist/admin/translations/ru.json.mjs.map +1 -1
- package/dist/admin/utils/validation.js +17 -6
- package/dist/admin/utils/validation.js.map +1 -1
- package/dist/admin/utils/validation.mjs +17 -6
- package/dist/admin/utils/validation.mjs.map +1 -1
- package/dist/server/controllers/content-types.js +11 -1
- package/dist/server/controllers/content-types.js.map +1 -1
- package/dist/server/controllers/content-types.mjs +11 -1
- package/dist/server/controllers/content-types.mjs.map +1 -1
- package/dist/server/controllers/index.js +3 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs +3 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/relations.js +2 -2
- package/dist/server/controllers/relations.js.map +1 -1
- package/dist/server/controllers/relations.mjs +2 -2
- package/dist/server/controllers/relations.mjs.map +1 -1
- package/dist/server/controllers/validation/index.js +14 -2
- package/dist/server/controllers/validation/index.js.map +1 -1
- package/dist/server/controllers/validation/index.mjs +14 -2
- package/dist/server/controllers/validation/index.mjs.map +1 -1
- package/dist/server/history/services/lifecycles.js +3 -0
- package/dist/server/history/services/lifecycles.js.map +1 -1
- package/dist/server/history/services/lifecycles.mjs +3 -0
- package/dist/server/history/services/lifecycles.mjs.map +1 -1
- package/dist/server/homepage/controllers/homepage.js +62 -0
- package/dist/server/homepage/controllers/homepage.js.map +1 -0
- package/dist/server/homepage/controllers/homepage.mjs +41 -0
- package/dist/server/homepage/controllers/homepage.mjs.map +1 -0
- package/dist/server/homepage/controllers/index.js +10 -0
- package/dist/server/homepage/controllers/index.js.map +1 -0
- package/dist/server/homepage/controllers/index.mjs +8 -0
- package/dist/server/homepage/controllers/index.mjs.map +1 -0
- package/dist/server/homepage/index.js +14 -0
- package/dist/server/homepage/index.js.map +1 -0
- package/dist/server/homepage/index.mjs +12 -0
- package/dist/server/homepage/index.mjs.map +1 -0
- package/dist/server/homepage/routes/homepage.js +36 -0
- package/dist/server/homepage/routes/homepage.js.map +1 -0
- package/dist/server/homepage/routes/homepage.mjs +34 -0
- package/dist/server/homepage/routes/homepage.mjs.map +1 -0
- package/dist/server/homepage/routes/index.js +13 -0
- package/dist/server/homepage/routes/index.js.map +1 -0
- package/dist/server/homepage/routes/index.mjs +11 -0
- package/dist/server/homepage/routes/index.mjs.map +1 -0
- package/dist/server/homepage/services/homepage.js +197 -0
- package/dist/server/homepage/services/homepage.js.map +1 -0
- package/dist/server/homepage/services/homepage.mjs +195 -0
- package/dist/server/homepage/services/homepage.mjs.map +1 -0
- package/dist/server/homepage/services/index.js +10 -0
- package/dist/server/homepage/services/index.js.map +1 -0
- package/dist/server/homepage/services/index.mjs +8 -0
- package/dist/server/homepage/services/index.mjs.map +1 -0
- package/dist/server/preview/services/preview.js +0 -1
- package/dist/server/preview/services/preview.js.map +1 -1
- package/dist/server/preview/services/preview.mjs +0 -1
- package/dist/server/preview/services/preview.mjs.map +1 -1
- package/dist/server/routes/index.js +3 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs +3 -1
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/services/data-mapper.js +4 -1
- package/dist/server/services/data-mapper.js.map +1 -1
- package/dist/server/services/data-mapper.mjs +4 -1
- package/dist/server/services/data-mapper.mjs.map +1 -1
- package/dist/server/services/document-manager.js +8 -1
- package/dist/server/services/document-manager.js.map +1 -1
- package/dist/server/services/document-manager.mjs +8 -1
- package/dist/server/services/document-manager.mjs.map +1 -1
- package/dist/server/services/document-metadata.js +3 -1
- package/dist/server/services/document-metadata.js.map +1 -1
- package/dist/server/services/document-metadata.mjs +3 -1
- package/dist/server/services/document-metadata.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/utils/configuration/attributes.js +1 -1
- package/dist/server/services/utils/configuration/attributes.js.map +1 -1
- package/dist/server/services/utils/configuration/attributes.mjs +1 -1
- package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
- package/dist/server/services/utils/configuration/layouts.js +1 -1
- package/dist/server/services/utils/configuration/layouts.js.map +1 -1
- package/dist/server/services/utils/configuration/layouts.mjs +1 -1
- package/dist/server/services/utils/configuration/layouts.mjs.map +1 -1
- package/dist/server/services/utils/configuration/metadatas.js +8 -0
- package/dist/server/services/utils/configuration/metadatas.js.map +1 -1
- package/dist/server/services/utils/configuration/metadatas.mjs +8 -0
- package/dist/server/services/utils/configuration/metadatas.mjs.map +1 -1
- package/dist/server/services/utils/populate.js +11 -0
- package/dist/server/services/utils/populate.js.map +1 -1
- package/dist/server/services/utils/populate.mjs +11 -0
- package/dist/server/services/utils/populate.mjs.map +1 -1
- package/dist/server/src/controllers/content-types.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/index.d.ts +6 -1
- package/dist/server/src/controllers/validation/index.d.ts.map +1 -1
- package/dist/server/src/history/services/lifecycles.d.ts.map +1 -1
- package/dist/server/src/homepage/controllers/homepage.d.ts +8 -0
- package/dist/server/src/homepage/controllers/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/controllers/index.d.ts +2 -0
- package/dist/server/src/homepage/controllers/index.d.ts.map +1 -0
- package/dist/server/src/homepage/index.d.ts +23 -0
- package/dist/server/src/homepage/index.d.ts.map +1 -0
- package/dist/server/src/homepage/routes/homepage.d.ts +4 -0
- package/dist/server/src/homepage/routes/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/routes/index.d.ts +8 -0
- package/dist/server/src/homepage/routes/index.d.ts.map +1 -0
- package/dist/server/src/homepage/services/homepage.d.ts +14 -0
- package/dist/server/src/homepage/services/homepage.d.ts.map +1 -0
- package/dist/server/src/homepage/services/index.d.ts +16 -0
- package/dist/server/src/homepage/services/index.d.ts.map +1 -0
- package/dist/server/src/index.d.ts +15 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/preview/services/preview.d.ts.map +1 -1
- package/dist/server/src/routes/index.d.ts +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/data-mapper.d.ts +1 -0
- package/dist/server/src/services/data-mapper.d.ts.map +1 -1
- package/dist/server/src/services/document-manager.d.ts.map +1 -1
- package/dist/server/src/services/document-metadata.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +14 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/utils/configuration/metadatas.d.ts.map +1 -1
- package/dist/server/src/services/utils/populate.d.ts.map +1 -1
- package/dist/shared/contracts/collection-types.d.ts +0 -1
- package/dist/shared/contracts/collection-types.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +13 -0
- package/dist/shared/contracts/homepage.d.ts.map +1 -1
- package/package.json +11 -8
- package/dist/server/src/services/homepage.d.ts +0 -11
- package/dist/server/src/services/homepage.d.ts.map +0 -1
|
@@ -11,6 +11,7 @@ var styledComponents = require('styled-components');
|
|
|
11
11
|
var collections = require('../../../../../constants/collections.js');
|
|
12
12
|
var plugin = require('../../../../../constants/plugin.js');
|
|
13
13
|
var api = require('../../../../../utils/api.js');
|
|
14
|
+
require('date-fns');
|
|
14
15
|
var DocumentStatus = require('../../DocumentStatus.js');
|
|
15
16
|
var useDocument = require('../../../../../hooks/useDocument.js');
|
|
16
17
|
require('../../../../../preview/pages/Preview.js');
|
|
@@ -20,6 +21,7 @@ var DocumentRBAC = require('../../../../../features/DocumentRBAC.js');
|
|
|
20
21
|
var validation = require('../../../../../utils/validation.js');
|
|
21
22
|
var DocumentActions = require('../../DocumentActions.js');
|
|
22
23
|
var FormLayout = require('../../FormLayout.js');
|
|
24
|
+
var ComponentContext = require('../ComponentContext.js');
|
|
23
25
|
|
|
24
26
|
function _interopNamespaceDefault(e) {
|
|
25
27
|
var n = Object.create(null);
|
|
@@ -51,23 +53,37 @@ const StyledModalContent = styledComponents.styled(designSystem.Modal.Content)`
|
|
|
51
53
|
height: 90%;
|
|
52
54
|
max-height: 100%;
|
|
53
55
|
`;
|
|
56
|
+
const getFullPageUrl = (currentDocumentMeta)=>{
|
|
57
|
+
const isSingleType = currentDocumentMeta.collectionType === collections.SINGLE_TYPES;
|
|
58
|
+
const queryParams = currentDocumentMeta.params?.locale ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}` : '';
|
|
59
|
+
return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;
|
|
60
|
+
};
|
|
54
61
|
function reducer(state, action) {
|
|
55
62
|
switch(action.type){
|
|
56
63
|
case 'GO_TO_RELATION':
|
|
57
64
|
if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {
|
|
58
65
|
return {
|
|
59
66
|
...state,
|
|
60
|
-
confirmDialogIntent: action.payload.document
|
|
67
|
+
confirmDialogIntent: action.payload.document,
|
|
68
|
+
fieldToConnect: action.payload.fieldToConnect,
|
|
69
|
+
fieldToConnectUID: action.payload.fieldToConnectUID
|
|
61
70
|
};
|
|
62
71
|
}
|
|
72
|
+
const lastItemDocumentHistory = state.documentHistory.at(-1);
|
|
73
|
+
const hasToResetDocumentHistory = lastItemDocumentHistory && !lastItemDocumentHistory.documentId;
|
|
63
74
|
return {
|
|
64
75
|
...state,
|
|
65
|
-
|
|
76
|
+
// Reset document history if the last item has documentId undefined
|
|
77
|
+
documentHistory: hasToResetDocumentHistory ? [
|
|
78
|
+
action.payload.document
|
|
79
|
+
] : [
|
|
66
80
|
...state.documentHistory,
|
|
67
81
|
action.payload.document
|
|
68
82
|
],
|
|
69
83
|
confirmDialogIntent: null,
|
|
70
|
-
isModalOpen: true
|
|
84
|
+
isModalOpen: true,
|
|
85
|
+
fieldToConnect: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnect,
|
|
86
|
+
fieldToConnectUID: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnectUID
|
|
71
87
|
};
|
|
72
88
|
case 'GO_BACK':
|
|
73
89
|
if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {
|
|
@@ -95,6 +111,21 @@ function reducer(state, action) {
|
|
|
95
111
|
isModalOpen: false,
|
|
96
112
|
confirmDialogIntent: null
|
|
97
113
|
};
|
|
114
|
+
case 'GO_TO_CREATED_RELATION':
|
|
115
|
+
return {
|
|
116
|
+
...state,
|
|
117
|
+
// Reset document history if the last item has documentId undefined
|
|
118
|
+
documentHistory: state.documentHistory ? [
|
|
119
|
+
...state.documentHistory.slice(0, -1),
|
|
120
|
+
action.payload.document
|
|
121
|
+
] : [
|
|
122
|
+
action.payload.document
|
|
123
|
+
],
|
|
124
|
+
confirmDialogIntent: null,
|
|
125
|
+
isModalOpen: true,
|
|
126
|
+
fieldToConnect: undefined,
|
|
127
|
+
fieldToConnectUID: undefined
|
|
128
|
+
};
|
|
98
129
|
case 'CANCEL_CONFIRM_DIALOG':
|
|
99
130
|
return {
|
|
100
131
|
...state,
|
|
@@ -124,21 +155,17 @@ function reducer(state, action) {
|
|
|
124
155
|
}
|
|
125
156
|
}
|
|
126
157
|
const [RelationModalProvider, useRelationModal] = strapiAdmin.createContext('RelationModal');
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
};
|
|
132
|
-
/**
|
|
133
|
-
* Component responsible of rendering its children wrapped in a modal, form and context if needed
|
|
134
|
-
*/ const RelationModalRenderer = ({ children, trigger, relation })=>{
|
|
135
|
-
const { formatMessage } = reactIntl.useIntl();
|
|
136
|
-
const navigate = reactRouterDom.useNavigate();
|
|
158
|
+
function isRenderProp(children) {
|
|
159
|
+
return typeof children === 'function';
|
|
160
|
+
}
|
|
161
|
+
const RootRelationRenderer = (props)=>{
|
|
162
|
+
const { children } = props;
|
|
137
163
|
const [state, dispatch] = React__namespace.useReducer(reducer, {
|
|
138
164
|
documentHistory: [],
|
|
139
165
|
confirmDialogIntent: null,
|
|
140
166
|
isModalOpen: false,
|
|
141
|
-
hasUnsavedChanges: false
|
|
167
|
+
hasUnsavedChanges: false,
|
|
168
|
+
fieldToConnect: undefined
|
|
142
169
|
});
|
|
143
170
|
const rootDocument = useDocument.useDoc();
|
|
144
171
|
const [{ query }] = strapiAdmin.useQueryParams();
|
|
@@ -153,11 +180,9 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
153
180
|
};
|
|
154
181
|
const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;
|
|
155
182
|
const currentDocument = useDocument.useDocument(currentDocumentMeta);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
return trigger;
|
|
160
|
-
}
|
|
183
|
+
// TODO: check if we can remove the single type check
|
|
184
|
+
const isSingleType = currentDocumentMeta.collectionType === collections.SINGLE_TYPES;
|
|
185
|
+
const isCreating = !currentDocumentMeta.documentId && !isSingleType;
|
|
161
186
|
/**
|
|
162
187
|
* There is no parent relation, so the relation modal doesn't exist. Create it and set up all the
|
|
163
188
|
* pieces that will be used by potential child relations: the context, header, form, and footer.
|
|
@@ -167,18 +192,64 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
167
192
|
rootDocumentMeta: rootDocumentMeta,
|
|
168
193
|
currentDocumentMeta: currentDocumentMeta,
|
|
169
194
|
currentDocument: currentDocument,
|
|
195
|
+
isCreating: isCreating,
|
|
196
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(RelationModal, {
|
|
197
|
+
children: isRenderProp(children) ? children({
|
|
198
|
+
dispatch
|
|
199
|
+
}) : props.relation && /*#__PURE__*/ jsxRuntime.jsx(RelationModalTrigger, {
|
|
200
|
+
relation: props.relation,
|
|
201
|
+
children: children
|
|
202
|
+
})
|
|
203
|
+
})
|
|
204
|
+
});
|
|
205
|
+
};
|
|
206
|
+
const NestedRelationRenderer = (props)=>{
|
|
207
|
+
const { children } = props;
|
|
208
|
+
const dispatch = useRelationModal('NestedRelation', (state)=>state.dispatch);
|
|
209
|
+
return isRenderProp(children) ? children({
|
|
210
|
+
dispatch
|
|
211
|
+
}) : props.relation && /*#__PURE__*/ jsxRuntime.jsx(RelationModalTrigger, {
|
|
212
|
+
relation: props.relation,
|
|
213
|
+
children: children
|
|
214
|
+
}); /* This is the trigger that will be rendered in the parent relation */
|
|
215
|
+
};
|
|
216
|
+
/**
|
|
217
|
+
* Component responsible for rendering its children wrapped in a modal, form and context if needed
|
|
218
|
+
*/ const RelationModalRenderer = (props)=>{
|
|
219
|
+
// We're in a nested relation if the relation modal context is not undefined
|
|
220
|
+
const isNested = useRelationModal('RelationContextWrapper', (state)=>state != undefined, false);
|
|
221
|
+
return isNested ? /*#__PURE__*/ jsxRuntime.jsx(NestedRelationRenderer, {
|
|
222
|
+
...props
|
|
223
|
+
}) : /*#__PURE__*/ jsxRuntime.jsx(RootRelationRenderer, {
|
|
224
|
+
...props
|
|
225
|
+
});
|
|
226
|
+
};
|
|
227
|
+
/* -------------------------------------------------------------------------------------------------
|
|
228
|
+
* RelationModal
|
|
229
|
+
* -----------------------------------------------------------------------------------------------*/ const generateCreateUrl = (currentDocumentMeta)=>{
|
|
230
|
+
return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}/create${currentDocumentMeta.params?.locale ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}` : ''}`;
|
|
231
|
+
};
|
|
232
|
+
const RelationModal = ({ children })=>{
|
|
233
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
234
|
+
const navigate = reactRouterDom.useNavigate();
|
|
235
|
+
const state = useRelationModal('RelationModalForm', (state)=>state.state);
|
|
236
|
+
const dispatch = useRelationModal('RelationModalForm', (state)=>state.dispatch);
|
|
237
|
+
const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
|
|
238
|
+
const currentDocument = useRelationModal('RelationModalForm', (state)=>state.currentDocument);
|
|
239
|
+
const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
|
|
240
|
+
/*
|
|
241
|
+
* We must wrap the modal window with Component Provider with reset values
|
|
242
|
+
* to avoid inheriting id and uid from the root document and having weird
|
|
243
|
+
* behaviors with simple relationships..
|
|
244
|
+
*/ return /*#__PURE__*/ jsxRuntime.jsx(ComponentContext.ComponentProvider, {
|
|
245
|
+
id: undefined,
|
|
246
|
+
level: -1,
|
|
247
|
+
uid: undefined,
|
|
248
|
+
type: undefined,
|
|
170
249
|
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Modal.Root, {
|
|
171
250
|
open: state.isModalOpen,
|
|
172
251
|
onOpenChange: (open)=>{
|
|
173
|
-
if (open) {
|
|
174
|
-
dispatch({
|
|
175
|
-
type: 'GO_TO_RELATION',
|
|
176
|
-
payload: {
|
|
177
|
-
document: relation,
|
|
178
|
-
shouldBypassConfirmation: false
|
|
179
|
-
}
|
|
180
|
-
});
|
|
181
|
-
} else {
|
|
252
|
+
if (!open) {
|
|
182
253
|
dispatch({
|
|
183
254
|
type: 'CLOSE_MODAL',
|
|
184
255
|
payload: {
|
|
@@ -188,7 +259,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
188
259
|
}
|
|
189
260
|
},
|
|
190
261
|
children: [
|
|
191
|
-
|
|
262
|
+
children,
|
|
192
263
|
/*#__PURE__*/ jsxRuntime.jsxs(StyledModalContent, {
|
|
193
264
|
children: [
|
|
194
265
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Header, {
|
|
@@ -223,7 +294,10 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
223
294
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
224
295
|
tag: "span",
|
|
225
296
|
fontWeight: 600,
|
|
226
|
-
children: formatMessage({
|
|
297
|
+
children: isCreating ? formatMessage({
|
|
298
|
+
id: 'content-manager.relation.create',
|
|
299
|
+
defaultMessage: 'Create a relation'
|
|
300
|
+
}) : formatMessage({
|
|
227
301
|
id: 'content-manager.components.RelationInputModal.modal-title',
|
|
228
302
|
defaultMessage: 'Edit a relation'
|
|
229
303
|
})
|
|
@@ -236,7 +310,11 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
236
310
|
type: 'GO_FULL_PAGE'
|
|
237
311
|
});
|
|
238
312
|
if (!state.hasUnsavedChanges) {
|
|
239
|
-
|
|
313
|
+
if (isCreating) {
|
|
314
|
+
navigate(generateCreateUrl(currentDocumentMeta));
|
|
315
|
+
} else {
|
|
316
|
+
navigate(getFullPageUrl(currentDocumentMeta));
|
|
317
|
+
}
|
|
240
318
|
}
|
|
241
319
|
},
|
|
242
320
|
variant: "tertiary",
|
|
@@ -251,8 +329,8 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
251
329
|
}),
|
|
252
330
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Modal.Body, {
|
|
253
331
|
children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Form, {
|
|
254
|
-
method:
|
|
255
|
-
initialValues: currentDocument.getInitialFormValues(),
|
|
332
|
+
method: isCreating ? 'POST' : 'PUT',
|
|
333
|
+
initialValues: currentDocument.getInitialFormValues(isCreating),
|
|
256
334
|
validate: (values, options)=>{
|
|
257
335
|
const yupSchema = validation.createYupSchema(currentDocument.schema?.attributes, currentDocument.components, {
|
|
258
336
|
status: currentDocument.document?.status,
|
|
@@ -262,7 +340,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
262
340
|
abortEarly: false
|
|
263
341
|
});
|
|
264
342
|
},
|
|
265
|
-
children:
|
|
343
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(RelationModalBody, {})
|
|
266
344
|
})
|
|
267
345
|
})
|
|
268
346
|
]
|
|
@@ -273,7 +351,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
273
351
|
};
|
|
274
352
|
/**
|
|
275
353
|
* All the main content (not header and footer) of the relation modal, plus the confirmation dialog.
|
|
276
|
-
* Will be wrapped in a Modal.Body by the
|
|
354
|
+
* Will be wrapped in a Modal.Body by the RelationModal component.
|
|
277
355
|
* Cannot be moved directly inside RelationModal because it needs access to the context via hooks.
|
|
278
356
|
*/ const RelationModalBody = ()=>{
|
|
279
357
|
const navigate = reactRouterDom.useNavigate();
|
|
@@ -284,6 +362,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
284
362
|
const dispatch = useRelationModal('RelationModalForm', (state)=>state.dispatch);
|
|
285
363
|
const rootDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.rootDocumentMeta);
|
|
286
364
|
const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
|
|
365
|
+
const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
|
|
287
366
|
/**
|
|
288
367
|
* One-way sync the modified state from the form to the modal state.
|
|
289
368
|
* It is needed because we need to consume state from the form context in order to lift it up
|
|
@@ -325,7 +404,11 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
325
404
|
if (isRootDocumentUrl) {
|
|
326
405
|
handleCloseModal(true);
|
|
327
406
|
} else {
|
|
328
|
-
|
|
407
|
+
if (isCreating) {
|
|
408
|
+
navigate(generateCreateUrl(currentDocumentMeta));
|
|
409
|
+
} else {
|
|
410
|
+
navigate(fullPageUrl);
|
|
411
|
+
}
|
|
329
412
|
}
|
|
330
413
|
};
|
|
331
414
|
const handleConfirm = ()=>{
|
|
@@ -355,7 +438,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
355
438
|
};
|
|
356
439
|
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
357
440
|
children: [
|
|
358
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
|
441
|
+
/*#__PURE__*/ jsxRuntime.jsx(RelationModalForm, {}),
|
|
359
442
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Dialog.Root, {
|
|
360
443
|
open: state.confirmDialogIntent != null,
|
|
361
444
|
children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.ConfirmDialog, {
|
|
@@ -373,7 +456,7 @@ const getFullPageUrl = (currentDocumentMeta)=>{
|
|
|
373
456
|
]
|
|
374
457
|
});
|
|
375
458
|
};
|
|
376
|
-
const
|
|
459
|
+
const RelationModalTrigger = ({ children, relation })=>{
|
|
377
460
|
const dispatch = useRelationModal('ModalTrigger', (state)=>state.dispatch);
|
|
378
461
|
return /*#__PURE__*/ jsxRuntime.jsx(StyledTextButton, {
|
|
379
462
|
onClick: ()=>{
|
|
@@ -388,16 +471,6 @@ const ModalTrigger = ({ children, relation })=>{
|
|
|
388
471
|
children: children
|
|
389
472
|
});
|
|
390
473
|
};
|
|
391
|
-
const RelationModal = /*#__PURE__*/ React__namespace.memo(({ relation, children })=>{
|
|
392
|
-
return /*#__PURE__*/ jsxRuntime.jsx(RelationModalRenderer, {
|
|
393
|
-
relation: relation,
|
|
394
|
-
trigger: /*#__PURE__*/ jsxRuntime.jsx(ModalTrigger, {
|
|
395
|
-
relation: relation,
|
|
396
|
-
children: children
|
|
397
|
-
}),
|
|
398
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(RelationModalBody, {})
|
|
399
|
-
});
|
|
400
|
-
});
|
|
401
474
|
const StyledTextButton = styledComponents.styled(designSystem.TextButton)`
|
|
402
475
|
max-width: 100%;
|
|
403
476
|
& > span {
|
|
@@ -411,13 +484,14 @@ const StyledTextButton = styledComponents.styled(designSystem.TextButton)`
|
|
|
411
484
|
/**
|
|
412
485
|
* The mini edit view for a relation that is displayed inside a modal.
|
|
413
486
|
* It's complete with its header, document actions and form layout.
|
|
414
|
-
*/ const
|
|
487
|
+
*/ const RelationModalForm = ()=>{
|
|
415
488
|
const { formatMessage } = reactIntl.useIntl();
|
|
416
|
-
const currentDocumentMeta = useRelationModal('
|
|
417
|
-
const
|
|
489
|
+
const currentDocumentMeta = useRelationModal('RelationModalForm', (state)=>state.currentDocumentMeta);
|
|
490
|
+
const isCreating = useRelationModal('RelationModalForm', (state)=>state.isCreating);
|
|
491
|
+
const currentDocument = useRelationModal('RelationModalForm', (state)=>state.currentDocument);
|
|
418
492
|
const documentLayoutResponse = useDocumentLayout.useDocumentLayout(currentDocumentMeta.model);
|
|
419
|
-
const plugins = strapiAdmin.useStrapiApp('
|
|
420
|
-
const initialValues = currentDocument.getInitialFormValues();
|
|
493
|
+
const plugins = strapiAdmin.useStrapiApp('RelationModalForm', (state)=>state.plugins);
|
|
494
|
+
const initialValues = isCreating ? currentDocument.getInitialFormValues(isCreating) : currentDocument.getInitialFormValues();
|
|
421
495
|
const { permissions = [], isLoading: isLoadingPermissions, error } = strapiAdmin.useRBAC(plugin.PERMISSIONS.map((action)=>({
|
|
422
496
|
action,
|
|
423
497
|
subject: currentDocumentMeta.model
|
|
@@ -432,7 +506,7 @@ const StyledTextButton = styledComponents.styled(designSystem.TextButton)`
|
|
|
432
506
|
})
|
|
433
507
|
});
|
|
434
508
|
}
|
|
435
|
-
if (error || !currentDocumentMeta.model || documentLayoutResponse.error || !currentDocument.document || !currentDocument.meta || !currentDocument.schema || !initialValues) {
|
|
509
|
+
if (error || !currentDocumentMeta.model || documentLayoutResponse.error || !isCreating && !currentDocument.document || !isCreating && !currentDocument.meta || !currentDocument.schema || !initialValues) {
|
|
436
510
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
437
511
|
alignItems: "center",
|
|
438
512
|
height: "100%",
|
|
@@ -541,7 +615,7 @@ const StyledTextButton = styledComponents.styled(designSystem.TextButton)`
|
|
|
541
615
|
});
|
|
542
616
|
};
|
|
543
617
|
|
|
544
|
-
exports.
|
|
618
|
+
exports.RelationModalRenderer = RelationModalRenderer;
|
|
545
619
|
exports.getCollectionType = getCollectionType;
|
|
546
620
|
exports.reducer = reducer;
|
|
547
621
|
exports.useRelationModal = useRelationModal;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationModal.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n DescriptionComponentRenderer,\n Form as FormContext,\n useRBAC,\n useStrapiApp,\n createContext,\n useForm,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Dialog,\n EmptyStateLayout,\n Flex,\n IconButton,\n Loader,\n Modal,\n Typography,\n TextButton,\n} from '@strapi/design-system';\nimport { ArrowLeft, ArrowsOut, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../../../constants/collections';\nimport { PERMISSIONS } from '../../../../../constants/plugin';\nimport { buildValidParams } from '../../../../../exports';\nimport { DocumentRBAC } from '../../../../../features/DocumentRBAC';\nimport { useDoc, useDocument, type UseDocument } from '../../../../../hooks/useDocument';\nimport { type DocumentMeta } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { useLazyGetDocumentQuery } from '../../../../../services/documents';\nimport { createYupSchema } from '../../../../../utils/validation';\nimport { DocumentActionButton } from '../../../components/DocumentActions';\nimport { DocumentStatus } from '../../DocumentStatus';\nimport { FormLayout } from '../../FormLayout';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../../../../content-manager';\n\nexport function getCollectionType(url: string) {\n const regex = new RegExp(`(${COLLECTION_TYPES}|${SINGLE_TYPES})`);\n const match = url.match(regex);\n return match ? match[1] : undefined;\n}\n\nconst StyledModalContent = styled(Modal.Content)`\n width: 90%;\n max-width: 100%;\n height: 90%;\n max-height: 100%;\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * RelationContextWrapper\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n documentHistory: DocumentMeta[];\n confirmDialogIntent:\n | null // No dialog\n | 'close' // Close the modal\n | 'back' // Go back one document in the modal's history\n | 'navigate' // Open the document in the edit view instead of in the modal\n | DocumentMeta; // Open a specific document in the modal\n isModalOpen: boolean;\n hasUnsavedChanges: boolean;\n}\n\ntype Action =\n | {\n type: 'GO_TO_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n };\n }\n | {\n type: 'GO_BACK';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'GO_FULL_PAGE';\n }\n | {\n type: 'CANCEL_CONFIRM_DIALOG';\n }\n | {\n type: 'CLOSE_MODAL';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'SET_HAS_UNSAVED_CHANGES';\n payload: { hasUnsavedChanges: boolean };\n };\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'GO_TO_RELATION':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: action.payload.document };\n }\n\n return {\n ...state,\n documentHistory: [...state.documentHistory, action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n };\n case 'GO_BACK':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'back' };\n }\n\n return {\n ...state,\n documentHistory: state.documentHistory.slice(0, -1),\n confirmDialogIntent: null,\n };\n case 'GO_FULL_PAGE':\n if (state.hasUnsavedChanges) {\n return { ...state, confirmDialogIntent: 'navigate' };\n }\n\n return {\n ...state,\n documentHistory: [],\n hasUnsavedChanges: false,\n isModalOpen: false,\n confirmDialogIntent: null,\n };\n case 'CANCEL_CONFIRM_DIALOG':\n return {\n ...state,\n confirmDialogIntent: null,\n };\n case 'CLOSE_MODAL':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'close' };\n }\n\n return {\n ...state,\n documentHistory: [],\n confirmDialogIntent: null,\n hasUnsavedChanges: false,\n isModalOpen: false,\n };\n case 'SET_HAS_UNSAVED_CHANGES':\n return {\n ...state,\n hasUnsavedChanges: action.payload.hasUnsavedChanges,\n };\n default:\n return state;\n }\n}\n\ninterface RelationModalContextValue {\n state: State;\n dispatch: React.Dispatch<Action>;\n rootDocumentMeta: DocumentMeta;\n currentDocumentMeta: DocumentMeta;\n currentDocument: ReturnType<UseDocument>;\n onPreview?: () => void;\n}\n\nconst [RelationModalProvider, useRelationModal] =\n createContext<RelationModalContextValue>('RelationModal');\n\nconst getFullPageUrl = (currentDocumentMeta: DocumentMeta): string => {\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const queryParams = currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : '';\n\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;\n};\n\n/**\n * Component responsible of rendering its children wrapped in a modal, form and context if needed\n */\nconst RelationModalRenderer = ({\n children,\n trigger,\n relation,\n}: {\n children: React.ReactNode;\n trigger: React.ReactNode;\n relation: DocumentMeta;\n}) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n\n const [state, dispatch] = React.useReducer(reducer, {\n documentHistory: [],\n confirmDialogIntent: null,\n isModalOpen: false,\n hasUnsavedChanges: false,\n });\n\n const rootDocument = useDoc();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query ?? {}), [query]);\n\n const rootDocumentMeta: DocumentMeta = {\n documentId: rootDocument.document?.documentId || '',\n model: rootDocument.model,\n collectionType: rootDocument.collectionType,\n params,\n };\n\n const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;\n const currentDocument = useDocument(currentDocumentMeta);\n\n const parentContextValue = useRelationModal('RelationContextWrapper', (state) => state, false);\n\n // A parent relation is already rendering a modal. In this case simply render the trigger\n if (parentContextValue) {\n return trigger;\n }\n\n /**\n * There is no parent relation, so the relation modal doesn't exist. Create it and set up all the\n * pieces that will be used by potential child relations: the context, header, form, and footer.\n */\n return (\n <RelationModalProvider\n state={state}\n dispatch={dispatch}\n rootDocumentMeta={rootDocumentMeta}\n currentDocumentMeta={currentDocumentMeta}\n currentDocument={currentDocument}\n >\n <Modal.Root\n open={state.isModalOpen}\n onOpenChange={(open) => {\n if (open) {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: relation, shouldBypassConfirmation: false },\n });\n } else {\n dispatch({\n type: 'CLOSE_MODAL',\n payload: { shouldBypassConfirmation: false },\n });\n }\n }}\n >\n {trigger}\n <StyledModalContent>\n <Modal.Header gap={2}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Flex gap={2}>\n <IconButton\n withTooltip={false}\n label={formatMessage({ id: 'global.back', defaultMessage: 'Back' })}\n variant=\"ghost\"\n disabled={state.documentHistory.length < 2}\n onClick={() => {\n dispatch({\n type: 'GO_BACK',\n payload: { shouldBypassConfirmation: false },\n });\n }}\n marginRight={1}\n >\n <ArrowLeft />\n </IconButton>\n <Typography tag=\"span\" fontWeight={600}>\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.modal-title',\n defaultMessage: 'Edit a relation',\n })}\n </Typography>\n </Flex>\n <IconButton\n onClick={() => {\n dispatch({\n type: 'GO_FULL_PAGE',\n });\n if (!state.hasUnsavedChanges) {\n navigate(getFullPageUrl(currentDocumentMeta));\n }\n }}\n variant=\"tertiary\"\n label={formatMessage({\n id: 'content-manager.components.RelationInputModal.button-fullpage',\n defaultMessage: 'Go to entry',\n })}\n >\n <ArrowsOut />\n </IconButton>\n </Flex>\n </Modal.Header>\n <Modal.Body>\n <FormContext\n method=\"PUT\"\n initialValues={currentDocument.getInitialFormValues()}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n currentDocument.schema?.attributes,\n currentDocument.components,\n {\n status: currentDocument.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n {children}\n </FormContext>\n </Modal.Body>\n </StyledModalContent>\n </Modal.Root>\n </RelationModalProvider>\n );\n};\n\n/**\n * All the main content (not header and footer) of the relation modal, plus the confirmation dialog.\n * Will be wrapped in a Modal.Body by the RelationModalRenderer.\n * Cannot be moved directly inside RelationModal because it needs access to the context via hooks.\n */\nconst RelationModalBody = () => {\n const navigate = useNavigate();\n const { pathname, search } = useLocation();\n const { formatMessage } = useIntl();\n\n const [triggerRefetchDocument] = useLazyGetDocumentQuery();\n\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const rootDocumentMeta = useRelationModal('RelationModalForm', (state) => state.rootDocumentMeta);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n\n /**\n * One-way sync the modified state from the form to the modal state.\n * It is needed because we need to consume state from the form context in order to lift it up\n * into the modal context. It is not possible otherwise because the modal needs the form state,\n * but it must be a parent of the form.\n */\n const modified = useForm('FormWatcher', (state) => state.modified);\n const isSubmitting = useForm('FormWatcher', (state) => state.isSubmitting);\n const hasUnsavedChanges = modified && !isSubmitting;\n React.useEffect(() => {\n dispatch({ type: 'SET_HAS_UNSAVED_CHANGES', payload: { hasUnsavedChanges } });\n }, [hasUnsavedChanges, dispatch]);\n\n const handleCloseModal = (shouldBypassConfirmation: boolean) => {\n dispatch({ type: 'CLOSE_MODAL', payload: { shouldBypassConfirmation } });\n\n if (shouldBypassConfirmation || !state.hasUnsavedChanges) {\n // TODO: check if we can avoid this by relying on RTK invalidatesTags.\n // If so we can delete this function and dispatch the events directly\n triggerRefetchDocument(\n // TODO check if params should be removed (as they were before)\n rootDocumentMeta,\n // Favor the cache\n true\n );\n }\n };\n\n const handleRedirection = () => {\n const editViewUrl = `${pathname}${search}`;\n const fullPageUrl = getFullPageUrl(currentDocumentMeta);\n const isRootDocumentUrl = editViewUrl.includes(fullPageUrl);\n\n if (isRootDocumentUrl) {\n handleCloseModal(true);\n } else {\n navigate(fullPageUrl);\n }\n };\n\n const handleConfirm = () => {\n if (state.confirmDialogIntent === null) {\n return;\n }\n if (state.confirmDialogIntent === 'navigate') {\n handleRedirection();\n } else if (state.confirmDialogIntent === 'back') {\n dispatch({ type: 'GO_BACK', payload: { shouldBypassConfirmation: true } });\n } else if (state.confirmDialogIntent === 'close') {\n handleCloseModal(true);\n } else if ('documentId' in state.confirmDialogIntent) {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: state.confirmDialogIntent, shouldBypassConfirmation: true },\n });\n }\n };\n\n return (\n <>\n <RelationEditView />\n <Dialog.Root open={state.confirmDialogIntent != null}>\n <ConfirmDialog\n onConfirm={() => handleConfirm()}\n onCancel={() => dispatch({ type: 'CANCEL_CONFIRM_DIALOG' })}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.confirmation-message',\n defaultMessage:\n 'Some changes were not saved. Are you sure you want to close this relation? All changes that were not saved will be lost.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </>\n );\n};\n\nconst ModalTrigger = ({\n children,\n relation,\n}: {\n children: React.ReactNode;\n relation: DocumentMeta;\n}) => {\n const dispatch = useRelationModal('ModalTrigger', (state) => state.dispatch);\n\n return (\n <StyledTextButton\n onClick={() => {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: relation, shouldBypassConfirmation: false },\n });\n }}\n >\n {children}\n </StyledTextButton>\n );\n};\n\ninterface RelationModalProps {\n children: React.ReactNode;\n relation: DocumentMeta;\n}\n\nconst RelationModal = React.memo(({ relation, children }: RelationModalProps) => {\n return (\n <RelationModalRenderer\n relation={relation}\n trigger={<ModalTrigger relation={relation}>{children}</ModalTrigger>}\n >\n <RelationModalBody />\n </RelationModalRenderer>\n );\n});\n\nconst StyledTextButton = styled(TextButton)`\n max-width: 100%;\n & > span {\n font-size: ${({ theme }) => theme.fontSizes[2]};\n width: inherit;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n`;\n\n/**\n * The mini edit view for a relation that is displayed inside a modal.\n * It's complete with its header, document actions and form layout.\n */\nconst RelationEditView = () => {\n const { formatMessage } = useIntl();\n\n const currentDocumentMeta = useRelationModal(\n 'RelationModalBody',\n (state) => state.currentDocumentMeta\n );\n const currentDocument = useRelationModal('RelationModalBody', (state) => state.currentDocument);\n const documentLayoutResponse = useDocumentLayout(currentDocumentMeta.model);\n const plugins = useStrapiApp('RelationModalBody', (state) => state.plugins);\n\n const initialValues = currentDocument.getInitialFormValues();\n\n const {\n permissions = [],\n isLoading: isLoadingPermissions,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: currentDocumentMeta.model,\n }))\n );\n\n const isLoading =\n isLoadingPermissions || documentLayoutResponse.isLoading || currentDocument.isLoading;\n\n if (isLoading && !currentDocument.document?.documentId) {\n return (\n <Loader small>\n {formatMessage({\n id: 'content-manager.ListViewTable.relation-loading',\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n );\n }\n\n if (\n error ||\n !currentDocumentMeta.model ||\n documentLayoutResponse.error ||\n !currentDocument.document ||\n !currentDocument.meta ||\n !currentDocument.schema ||\n !initialValues\n ) {\n return (\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n />\n </Flex>\n );\n }\n\n const documentTitle = currentDocument.getTitle(documentLayoutResponse.edit.settings.mainField);\n const hasDraftAndPublished = currentDocument.schema?.options?.draftAndPublish ?? false;\n\n const props = {\n activeTab: 'draft',\n collectionType: currentDocumentMeta.collectionType,\n model: currentDocumentMeta.model,\n documentId: currentDocumentMeta.documentId,\n document: currentDocument.document,\n meta: currentDocument.meta,\n } satisfies DocumentActionProps;\n\n return (\n <DocumentRBAC permissions={permissions} model={currentDocumentMeta.model}>\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={2}>\n <Flex width=\"100%\" justifyContent=\"space-between\" gap={2}>\n <Typography tag=\"h2\" variant=\"alpha\">\n {documentTitle}\n </Typography>\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('relation-modal')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) => {\n return [action.position].flat().includes('relation-modal');\n });\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n {hasDraftAndPublished ? (\n <Box>\n <DocumentStatus status={currentDocument.document?.status} />\n </Box>\n ) : null}\n </Flex>\n\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\" paddingTop={7}>\n <Box overflow=\"auto\" flex={1}>\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={currentDocument}\n hasBackground={false}\n />\n </Box>\n </Flex>\n </DocumentRBAC>\n );\n};\n\nexport { RelationModal, reducer, useRelationModal };\nexport type { State, Action };\n"],"names":["getCollectionType","url","regex","RegExp","COLLECTION_TYPES","SINGLE_TYPES","match","undefined","StyledModalContent","styled","Modal","Content","reducer","state","action","type","hasUnsavedChanges","payload","shouldBypassConfirmation","confirmDialogIntent","document","documentHistory","isModalOpen","slice","RelationModalProvider","useRelationModal","createContext","getFullPageUrl","currentDocumentMeta","isSingleType","collectionType","queryParams","params","locale","model","documentId","RelationModalRenderer","children","trigger","relation","formatMessage","useIntl","navigate","useNavigate","dispatch","React","useReducer","rootDocument","useDoc","query","useQueryParams","useMemo","buildValidParams","rootDocumentMeta","at","currentDocument","useDocument","parentContextValue","_jsx","_jsxs","Root","open","onOpenChange","Header","gap","Flex","justifyContent","alignItems","width","IconButton","withTooltip","label","id","defaultMessage","variant","disabled","length","onClick","marginRight","ArrowLeft","Typography","tag","fontWeight","ArrowsOut","Body","FormContext","method","initialValues","getInitialFormValues","validate","values","options","yupSchema","createYupSchema","schema","attributes","components","status","abortEarly","RelationModalBody","pathname","search","useLocation","triggerRefetchDocument","useLazyGetDocumentQuery","modified","useForm","isSubmitting","useEffect","handleCloseModal","handleRedirection","editViewUrl","fullPageUrl","isRootDocumentUrl","includes","handleConfirm","_Fragment","RelationEditView","Dialog","ConfirmDialog","onConfirm","onCancel","ModalTrigger","StyledTextButton","RelationModal","memo","TextButton","theme","fontSizes","documentLayoutResponse","useDocumentLayout","plugins","useStrapiApp","permissions","isLoading","isLoadingPermissions","error","useRBAC","PERMISSIONS","map","subject","Loader","small","meta","height","EmptyStateLayout","icon","WarningCircle","content","documentTitle","getTitle","edit","settings","mainField","hasDraftAndPublished","draftAndPublish","props","activeTab","DocumentRBAC","direction","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","actions","filteredActions","filter","position","flat","primaryAction","secondaryAction","DocumentActionButton","Box","DocumentStatus","flex","overflow","paddingTop","FormLayout","layout","hasBackground"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RelationModal.js","sources":["../../../../../../../admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n ConfirmDialog,\n DescriptionComponentRenderer,\n Form as FormContext,\n useRBAC,\n useStrapiApp,\n createContext,\n useForm,\n useQueryParams,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Dialog,\n EmptyStateLayout,\n Flex,\n IconButton,\n Loader,\n Modal,\n Typography,\n TextButton,\n} from '@strapi/design-system';\nimport { ArrowLeft, ArrowsOut, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { COLLECTION_TYPES, SINGLE_TYPES } from '../../../../../constants/collections';\nimport { PERMISSIONS } from '../../../../../constants/plugin';\nimport { buildValidParams } from '../../../../../exports';\nimport { DocumentRBAC } from '../../../../../features/DocumentRBAC';\nimport { useDoc, useDocument, type UseDocument } from '../../../../../hooks/useDocument';\nimport { type DocumentMeta } from '../../../../../hooks/useDocumentContext';\nimport { useDocumentLayout } from '../../../../../hooks/useDocumentLayout';\nimport { useLazyGetDocumentQuery } from '../../../../../services/documents';\nimport { createYupSchema } from '../../../../../utils/validation';\nimport { DocumentActionButton } from '../../../components/DocumentActions';\nimport { DocumentStatus } from '../../DocumentStatus';\nimport { FormLayout } from '../../FormLayout';\nimport { ComponentProvider } from '../ComponentContext';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../../../../content-manager';\n\nexport function getCollectionType(url: string) {\n const regex = new RegExp(`(${COLLECTION_TYPES}|${SINGLE_TYPES})`);\n const match = url.match(regex);\n return match ? match[1] : undefined;\n}\n\nconst StyledModalContent = styled(Modal.Content)`\n width: 90%;\n max-width: 100%;\n height: 90%;\n max-height: 100%;\n`;\n\nconst getFullPageUrl = (currentDocumentMeta: DocumentMeta): string => {\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const queryParams = currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : '';\n\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}${isSingleType ? '' : '/' + currentDocumentMeta.documentId}${queryParams}`;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModalRenderer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface State {\n documentHistory: DocumentMeta[];\n confirmDialogIntent:\n | null // No dialog\n | 'close' // Close the modal\n | 'back' // Go back one document in the modal's history\n | 'navigate' // Open the document in the edit view instead of in the modal\n | DocumentMeta; // Open a specific document in the modal\n isModalOpen: boolean;\n hasUnsavedChanges: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n}\n\ntype Action =\n | {\n type: 'GO_TO_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n };\n }\n | {\n type: 'GO_BACK';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'GO_FULL_PAGE';\n }\n | {\n type: 'GO_TO_CREATED_RELATION';\n payload: {\n document: DocumentMeta;\n shouldBypassConfirmation: boolean;\n fieldToConnect?: string;\n fieldToConnectUID?: string;\n };\n }\n | {\n type: 'CANCEL_CONFIRM_DIALOG';\n }\n | {\n type: 'CLOSE_MODAL';\n payload: { shouldBypassConfirmation: boolean };\n }\n | {\n type: 'SET_HAS_UNSAVED_CHANGES';\n payload: { hasUnsavedChanges: boolean };\n };\n\nfunction reducer(state: State, action: Action): State {\n switch (action.type) {\n case 'GO_TO_RELATION':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return {\n ...state,\n confirmDialogIntent: action.payload.document,\n fieldToConnect: action.payload.fieldToConnect,\n fieldToConnectUID: action.payload.fieldToConnectUID,\n };\n }\n\n const lastItemDocumentHistory = state.documentHistory.at(-1);\n const hasToResetDocumentHistory =\n lastItemDocumentHistory && !lastItemDocumentHistory.documentId;\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: hasToResetDocumentHistory\n ? [action.payload.document]\n : [...state.documentHistory, action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnect,\n fieldToConnectUID: hasToResetDocumentHistory ? undefined : action.payload.fieldToConnectUID,\n };\n case 'GO_BACK':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'back' };\n }\n\n return {\n ...state,\n documentHistory: state.documentHistory.slice(0, -1),\n confirmDialogIntent: null,\n };\n case 'GO_FULL_PAGE':\n if (state.hasUnsavedChanges) {\n return { ...state, confirmDialogIntent: 'navigate' };\n }\n\n return {\n ...state,\n documentHistory: [],\n hasUnsavedChanges: false,\n isModalOpen: false,\n confirmDialogIntent: null,\n };\n case 'GO_TO_CREATED_RELATION':\n return {\n ...state,\n // Reset document history if the last item has documentId undefined\n documentHistory: state.documentHistory\n ? [...state.documentHistory.slice(0, -1), action.payload.document]\n : [action.payload.document],\n confirmDialogIntent: null,\n isModalOpen: true,\n fieldToConnect: undefined,\n fieldToConnectUID: undefined,\n };\n case 'CANCEL_CONFIRM_DIALOG':\n return {\n ...state,\n confirmDialogIntent: null,\n };\n case 'CLOSE_MODAL':\n if (state.hasUnsavedChanges && !action.payload.shouldBypassConfirmation) {\n return { ...state, confirmDialogIntent: 'close' };\n }\n\n return {\n ...state,\n documentHistory: [],\n confirmDialogIntent: null,\n hasUnsavedChanges: false,\n isModalOpen: false,\n };\n case 'SET_HAS_UNSAVED_CHANGES':\n return {\n ...state,\n hasUnsavedChanges: action.payload.hasUnsavedChanges,\n };\n default:\n return state;\n }\n}\n\ninterface RelationModalContextValue {\n state: State;\n dispatch: React.Dispatch<Action>;\n rootDocumentMeta: DocumentMeta;\n currentDocumentMeta: DocumentMeta;\n currentDocument: ReturnType<UseDocument>;\n onPreview?: () => void;\n isCreating: boolean;\n}\n\nconst [RelationModalProvider, useRelationModal] =\n createContext<RelationModalContextValue>('RelationModal');\n\nfunction isRenderProp(\n children: RelationModalRendererProps['children']\n): children is (props: { dispatch: (action: Action) => void }) => React.ReactNode {\n return typeof children === 'function';\n}\n\ntype RelationModalRendererProps =\n // Is editing\n | {\n relation: DocumentMeta;\n children: React.ReactNode;\n }\n // Is creating\n | {\n relation?: never;\n children: (props: { dispatch: (action: Action) => void }) => React.ReactNode;\n };\n\nconst RootRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n\n const [state, dispatch] = React.useReducer(reducer, {\n documentHistory: [],\n confirmDialogIntent: null,\n isModalOpen: false,\n hasUnsavedChanges: false,\n fieldToConnect: undefined,\n });\n\n const rootDocument = useDoc();\n const [{ query }] = useQueryParams();\n const params = React.useMemo(() => buildValidParams(query ?? {}), [query]);\n\n const rootDocumentMeta: DocumentMeta = {\n documentId: rootDocument.document?.documentId || '',\n model: rootDocument.model,\n collectionType: rootDocument.collectionType,\n params,\n };\n\n const currentDocumentMeta = state.documentHistory.at(-1) ?? rootDocumentMeta;\n const currentDocument = useDocument(currentDocumentMeta);\n // TODO: check if we can remove the single type check\n const isSingleType = currentDocumentMeta.collectionType === SINGLE_TYPES;\n const isCreating = !currentDocumentMeta.documentId && !isSingleType;\n /**\n * There is no parent relation, so the relation modal doesn't exist. Create it and set up all the\n * pieces that will be used by potential child relations: the context, header, form, and footer.\n */\n return (\n <RelationModalProvider\n state={state}\n dispatch={dispatch}\n rootDocumentMeta={rootDocumentMeta}\n currentDocumentMeta={currentDocumentMeta}\n currentDocument={currentDocument}\n isCreating={isCreating}\n >\n <RelationModal>\n {isRenderProp(children)\n ? children({ dispatch })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n )}\n </RelationModal>\n </RelationModalProvider>\n );\n};\n\nconst NestedRelationRenderer = (props: RelationModalRendererProps) => {\n const { children } = props;\n const dispatch = useRelationModal('NestedRelation', (state) => state.dispatch);\n\n return isRenderProp(children)\n ? children({ dispatch })\n : props.relation && (\n <RelationModalTrigger relation={props.relation}>{children}</RelationModalTrigger>\n ); /* This is the trigger that will be rendered in the parent relation */\n};\n\n/**\n * Component responsible for rendering its children wrapped in a modal, form and context if needed\n */\nconst RelationModalRenderer = (props: RelationModalRendererProps) => {\n // We're in a nested relation if the relation modal context is not undefined\n const isNested = useRelationModal('RelationContextWrapper', (state) => state != undefined, false);\n\n return isNested ? <NestedRelationRenderer {...props} /> : <RootRelationRenderer {...props} />;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * RelationModal\n * -----------------------------------------------------------------------------------------------*/\nconst generateCreateUrl = (currentDocumentMeta: DocumentMeta) => {\n return `/content-manager/${currentDocumentMeta.collectionType}/${currentDocumentMeta.model}/create${\n currentDocumentMeta.params?.locale\n ? `?plugins[i18n][locale]=${currentDocumentMeta.params.locale}`\n : ''\n }`;\n};\n\nconst RelationModal = ({ children }: { children: React.ReactNode }) => {\n const { formatMessage } = useIntl();\n const navigate = useNavigate();\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n\n /*\n * We must wrap the modal window with Component Provider with reset values\n * to avoid inheriting id and uid from the root document and having weird\n * behaviors with simple relationships..\n */\n return (\n <ComponentProvider id={undefined} level={-1} uid={undefined} type={undefined}>\n <Modal.Root\n open={state.isModalOpen}\n onOpenChange={(open) => {\n if (!open) {\n dispatch({\n type: 'CLOSE_MODAL',\n payload: { shouldBypassConfirmation: false },\n });\n }\n }}\n >\n {children}\n <StyledModalContent>\n <Modal.Header gap={2}>\n <Flex justifyContent=\"space-between\" alignItems=\"center\" width=\"100%\">\n <Flex gap={2}>\n <IconButton\n withTooltip={false}\n label={formatMessage({ id: 'global.back', defaultMessage: 'Back' })}\n variant=\"ghost\"\n disabled={state.documentHistory.length < 2}\n onClick={() => {\n dispatch({\n type: 'GO_BACK',\n payload: { shouldBypassConfirmation: false },\n });\n }}\n marginRight={1}\n >\n <ArrowLeft />\n </IconButton>\n <Typography tag=\"span\" fontWeight={600}>\n {isCreating\n ? formatMessage({\n id: 'content-manager.relation.create',\n defaultMessage: 'Create a relation',\n })\n : formatMessage({\n id: 'content-manager.components.RelationInputModal.modal-title',\n defaultMessage: 'Edit a relation',\n })}\n </Typography>\n </Flex>\n <IconButton\n onClick={() => {\n dispatch({\n type: 'GO_FULL_PAGE',\n });\n if (!state.hasUnsavedChanges) {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(getFullPageUrl(currentDocumentMeta));\n }\n }\n }}\n variant=\"tertiary\"\n label={formatMessage({\n id: 'content-manager.components.RelationInputModal.button-fullpage',\n defaultMessage: 'Go to entry',\n })}\n >\n <ArrowsOut />\n </IconButton>\n </Flex>\n </Modal.Header>\n <Modal.Body>\n <FormContext\n method={isCreating ? 'POST' : 'PUT'}\n initialValues={currentDocument.getInitialFormValues(isCreating)}\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const yupSchema = createYupSchema(\n currentDocument.schema?.attributes,\n currentDocument.components,\n {\n status: currentDocument.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n <RelationModalBody />\n </FormContext>\n </Modal.Body>\n </StyledModalContent>\n </Modal.Root>\n </ComponentProvider>\n );\n};\n/**\n * All the main content (not header and footer) of the relation modal, plus the confirmation dialog.\n * Will be wrapped in a Modal.Body by the RelationModal component.\n * Cannot be moved directly inside RelationModal because it needs access to the context via hooks.\n */\nconst RelationModalBody = () => {\n const navigate = useNavigate();\n const { pathname, search } = useLocation();\n const { formatMessage } = useIntl();\n\n const [triggerRefetchDocument] = useLazyGetDocumentQuery();\n\n const state = useRelationModal('RelationModalForm', (state) => state.state);\n const dispatch = useRelationModal('RelationModalForm', (state) => state.dispatch);\n const rootDocumentMeta = useRelationModal('RelationModalForm', (state) => state.rootDocumentMeta);\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n\n /**\n * One-way sync the modified state from the form to the modal state.\n * It is needed because we need to consume state from the form context in order to lift it up\n * into the modal context. It is not possible otherwise because the modal needs the form state,\n * but it must be a parent of the form.\n */\n const modified = useForm('FormWatcher', (state) => state.modified);\n const isSubmitting = useForm('FormWatcher', (state) => state.isSubmitting);\n const hasUnsavedChanges = modified && !isSubmitting;\n React.useEffect(() => {\n dispatch({ type: 'SET_HAS_UNSAVED_CHANGES', payload: { hasUnsavedChanges } });\n }, [hasUnsavedChanges, dispatch]);\n\n const handleCloseModal = (shouldBypassConfirmation: boolean) => {\n dispatch({ type: 'CLOSE_MODAL', payload: { shouldBypassConfirmation } });\n\n if (shouldBypassConfirmation || !state.hasUnsavedChanges) {\n // TODO: check if we can avoid this by relying on RTK invalidatesTags.\n // If so we can delete this function and dispatch the events directly\n triggerRefetchDocument(\n // TODO check if params should be removed (as they were before)\n rootDocumentMeta,\n // Favor the cache\n true\n );\n }\n };\n\n const handleRedirection = () => {\n const editViewUrl = `${pathname}${search}`;\n const fullPageUrl = getFullPageUrl(currentDocumentMeta);\n const isRootDocumentUrl = editViewUrl.includes(fullPageUrl);\n\n if (isRootDocumentUrl) {\n handleCloseModal(true);\n } else {\n if (isCreating) {\n navigate(generateCreateUrl(currentDocumentMeta));\n } else {\n navigate(fullPageUrl);\n }\n }\n };\n\n const handleConfirm = () => {\n if (state.confirmDialogIntent === null) {\n return;\n }\n if (state.confirmDialogIntent === 'navigate') {\n handleRedirection();\n } else if (state.confirmDialogIntent === 'back') {\n dispatch({ type: 'GO_BACK', payload: { shouldBypassConfirmation: true } });\n } else if (state.confirmDialogIntent === 'close') {\n handleCloseModal(true);\n } else if ('documentId' in state.confirmDialogIntent) {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: state.confirmDialogIntent, shouldBypassConfirmation: true },\n });\n }\n };\n\n return (\n <>\n <RelationModalForm />\n <Dialog.Root open={state.confirmDialogIntent != null}>\n <ConfirmDialog\n onConfirm={() => handleConfirm()}\n onCancel={() => dispatch({ type: 'CANCEL_CONFIRM_DIALOG' })}\n variant=\"danger\"\n >\n {formatMessage({\n id: 'content-manager.components.RelationInputModal.confirmation-message',\n defaultMessage:\n 'Some changes were not saved. Are you sure you want to close this relation? All changes that were not saved will be lost.',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n </>\n );\n};\n\nconst RelationModalTrigger = ({\n children,\n relation,\n}: {\n children: React.ReactNode;\n relation: DocumentMeta;\n}) => {\n const dispatch = useRelationModal('ModalTrigger', (state) => state.dispatch);\n\n return (\n <StyledTextButton\n onClick={() => {\n dispatch({\n type: 'GO_TO_RELATION',\n payload: { document: relation, shouldBypassConfirmation: false },\n });\n }}\n >\n {children}\n </StyledTextButton>\n );\n};\n\nconst StyledTextButton = styled(TextButton)`\n max-width: 100%;\n & > span {\n font-size: ${({ theme }) => theme.fontSizes[2]};\n width: inherit;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n`;\n\n/**\n * The mini edit view for a relation that is displayed inside a modal.\n * It's complete with its header, document actions and form layout.\n */\nconst RelationModalForm = () => {\n const { formatMessage } = useIntl();\n\n const currentDocumentMeta = useRelationModal(\n 'RelationModalForm',\n (state) => state.currentDocumentMeta\n );\n const isCreating = useRelationModal('RelationModalForm', (state) => state.isCreating);\n const currentDocument = useRelationModal('RelationModalForm', (state) => state.currentDocument);\n const documentLayoutResponse = useDocumentLayout(currentDocumentMeta.model);\n const plugins = useStrapiApp('RelationModalForm', (state) => state.plugins);\n\n const initialValues = isCreating\n ? currentDocument.getInitialFormValues(isCreating)\n : currentDocument.getInitialFormValues();\n\n const {\n permissions = [],\n isLoading: isLoadingPermissions,\n error,\n } = useRBAC(\n PERMISSIONS.map((action) => ({\n action,\n subject: currentDocumentMeta.model,\n }))\n );\n\n const isLoading =\n isLoadingPermissions || documentLayoutResponse.isLoading || currentDocument.isLoading;\n\n if (isLoading && !currentDocument.document?.documentId) {\n return (\n <Loader small>\n {formatMessage({\n id: 'content-manager.ListViewTable.relation-loading',\n defaultMessage: 'Relations are loading',\n })}\n </Loader>\n );\n }\n\n if (\n error ||\n !currentDocumentMeta.model ||\n documentLayoutResponse.error ||\n (!isCreating && !currentDocument.document) ||\n (!isCreating && !currentDocument.meta) ||\n !currentDocument.schema ||\n !initialValues\n ) {\n return (\n <Flex alignItems=\"center\" height=\"100%\" justifyContent=\"center\">\n <EmptyStateLayout\n icon={<WarningCircle width=\"16rem\" />}\n content={formatMessage({\n id: 'anErrorOccurred',\n defaultMessage: 'Whoops! Something went wrong. Please, try again.',\n })}\n />\n </Flex>\n );\n }\n\n const documentTitle = currentDocument.getTitle(documentLayoutResponse.edit.settings.mainField);\n const hasDraftAndPublished = currentDocument.schema?.options?.draftAndPublish ?? false;\n\n const props = {\n activeTab: 'draft',\n collectionType: currentDocumentMeta.collectionType,\n model: currentDocumentMeta.model,\n documentId: currentDocumentMeta.documentId,\n document: currentDocument.document,\n meta: currentDocument.meta,\n } satisfies DocumentActionProps;\n\n return (\n <DocumentRBAC permissions={permissions} model={currentDocumentMeta.model}>\n <Flex alignItems=\"flex-start\" direction=\"column\" gap={2}>\n <Flex width=\"100%\" justifyContent=\"space-between\" gap={2}>\n <Typography tag=\"h2\" variant=\"alpha\">\n {documentTitle}\n </Typography>\n <Flex gap={2}>\n <DescriptionComponentRenderer\n props={props}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('relation-modal')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) => {\n return [action.position].flat().includes('relation-modal');\n });\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n {hasDraftAndPublished ? (\n <Box>\n <DocumentStatus status={currentDocument.document?.status} />\n </Box>\n ) : null}\n </Flex>\n\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\" paddingTop={7}>\n <Box overflow=\"auto\" flex={1}>\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={currentDocument}\n hasBackground={false}\n />\n </Box>\n </Flex>\n </DocumentRBAC>\n );\n};\n\nexport { reducer, RelationModalRenderer, useRelationModal };\nexport type { State, Action };\n"],"names":["getCollectionType","url","regex","RegExp","COLLECTION_TYPES","SINGLE_TYPES","match","undefined","StyledModalContent","styled","Modal","Content","getFullPageUrl","currentDocumentMeta","isSingleType","collectionType","queryParams","params","locale","model","documentId","reducer","state","action","type","hasUnsavedChanges","payload","shouldBypassConfirmation","confirmDialogIntent","document","fieldToConnect","fieldToConnectUID","lastItemDocumentHistory","documentHistory","at","hasToResetDocumentHistory","isModalOpen","slice","RelationModalProvider","useRelationModal","createContext","isRenderProp","children","RootRelationRenderer","props","dispatch","React","useReducer","rootDocument","useDoc","query","useQueryParams","useMemo","buildValidParams","rootDocumentMeta","currentDocument","useDocument","isCreating","_jsx","RelationModal","relation","RelationModalTrigger","NestedRelationRenderer","RelationModalRenderer","isNested","generateCreateUrl","formatMessage","useIntl","navigate","useNavigate","ComponentProvider","id","level","uid","_jsxs","Root","open","onOpenChange","Header","gap","Flex","justifyContent","alignItems","width","IconButton","withTooltip","label","defaultMessage","variant","disabled","length","onClick","marginRight","ArrowLeft","Typography","tag","fontWeight","ArrowsOut","Body","FormContext","method","initialValues","getInitialFormValues","validate","values","options","yupSchema","createYupSchema","schema","attributes","components","status","abortEarly","RelationModalBody","pathname","search","useLocation","triggerRefetchDocument","useLazyGetDocumentQuery","modified","useForm","isSubmitting","useEffect","handleCloseModal","handleRedirection","editViewUrl","fullPageUrl","isRootDocumentUrl","includes","handleConfirm","_Fragment","RelationModalForm","Dialog","ConfirmDialog","onConfirm","onCancel","StyledTextButton","TextButton","theme","fontSizes","documentLayoutResponse","useDocumentLayout","plugins","useStrapiApp","permissions","isLoading","isLoadingPermissions","error","useRBAC","PERMISSIONS","map","subject","Loader","small","meta","height","EmptyStateLayout","icon","WarningCircle","content","documentTitle","getTitle","edit","settings","mainField","hasDraftAndPublished","draftAndPublish","activeTab","DocumentRBAC","direction","DescriptionComponentRenderer","descriptions","apis","getDocumentActions","actions","filteredActions","filter","position","flat","primaryAction","secondaryAction","DocumentActionButton","Box","DocumentStatus","flex","overflow","paddingTop","FormLayout","layout","hasBackground"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CO,SAASA,kBAAkBC,GAAW,EAAA;IAC3C,MAAMC,KAAAA,GAAQ,IAAIC,MAAAA,CAAO,CAAC,CAAC,EAAEC,4BAAAA,CAAiB,CAAC,EAAEC,wBAAa,CAAA,CAAC,CAAC,CAAA;IAChE,MAAMC,KAAAA,GAAQL,GAAIK,CAAAA,KAAK,CAACJ,KAAAA,CAAAA;AACxB,IAAA,OAAOI,KAAQA,GAAAA,KAAK,CAAC,CAAA,CAAE,GAAGC,SAAAA;AAC5B;AAEA,MAAMC,kBAAqBC,GAAAA,uBAAAA,CAAOC,kBAAMC,CAAAA,OAAO,CAAC;;;;;AAKhD,CAAC;AAED,MAAMC,iBAAiB,CAACC,mBAAAA,GAAAA;IACtB,MAAMC,YAAAA,GAAeD,mBAAoBE,CAAAA,cAAc,KAAKV,wBAAAA;AAC5D,IAAA,MAAMW,WAAcH,GAAAA,mBAAAA,CAAoBI,MAAM,EAAEC,SAC5C,CAAC,uBAAuB,EAAEL,mBAAAA,CAAoBI,MAAM,CAACC,MAAM,CAAC,CAAC,GAC7D,EAAA;IAEJ,OAAO,CAAC,iBAAiB,EAAEL,mBAAAA,CAAoBE,cAAc,CAAC,CAAC,EAAEF,mBAAoBM,CAAAA,KAAK,CAAC,EAAEL,YAAAA,GAAe,KAAK,GAAMD,GAAAA,mBAAAA,CAAoBO,UAAU,CAAC,EAAEJ,YAAY,CAAC;AACvK,CAAA;AA0DA,SAASK,OAAAA,CAAQC,KAAY,EAAEC,MAAc,EAAA;AAC3C,IAAA,OAAQA,OAAOC,IAAI;QACjB,KAAK,gBAAA;YACH,IAAIF,KAAAA,CAAMG,iBAAiB,IAAI,CAACF,OAAOG,OAAO,CAACC,wBAAwB,EAAE;gBACvE,OAAO;AACL,oBAAA,GAAGL,KAAK;oBACRM,mBAAqBL,EAAAA,MAAAA,CAAOG,OAAO,CAACG,QAAQ;oBAC5CC,cAAgBP,EAAAA,MAAAA,CAAOG,OAAO,CAACI,cAAc;oBAC7CC,iBAAmBR,EAAAA,MAAAA,CAAOG,OAAO,CAACK;AACpC,iBAAA;AACF;AAEA,YAAA,MAAMC,0BAA0BV,KAAMW,CAAAA,eAAe,CAACC,EAAE,CAAC,CAAC,CAAA,CAAA;AAC1D,YAAA,MAAMC,yBACJH,GAAAA,uBAAAA,IAA2B,CAACA,uBAAAA,CAAwBZ,UAAU;YAChE,OAAO;AACL,gBAAA,GAAGE,KAAK;;AAERW,gBAAAA,eAAAA,EAAiBE,yBACb,GAAA;oBAACZ,MAAOG,CAAAA,OAAO,CAACG;iBAAS,GACzB;AAAIP,oBAAAA,GAAAA,KAAAA,CAAMW,eAAe;oBAAEV,MAAOG,CAAAA,OAAO,CAACG;AAAS,iBAAA;gBACvDD,mBAAqB,EAAA,IAAA;gBACrBQ,WAAa,EAAA,IAAA;AACbN,gBAAAA,cAAAA,EAAgBK,yBAA4B5B,GAAAA,SAAAA,GAAYgB,MAAOG,CAAAA,OAAO,CAACI,cAAc;AACrFC,gBAAAA,iBAAAA,EAAmBI,yBAA4B5B,GAAAA,SAAAA,GAAYgB,MAAOG,CAAAA,OAAO,CAACK;AAC5E,aAAA;QACF,KAAK,SAAA;YACH,IAAIT,KAAAA,CAAMG,iBAAiB,IAAI,CAACF,OAAOG,OAAO,CAACC,wBAAwB,EAAE;gBACvE,OAAO;AAAE,oBAAA,GAAGL,KAAK;oBAAEM,mBAAqB,EAAA;AAAO,iBAAA;AACjD;YAEA,OAAO;AACL,gBAAA,GAAGN,KAAK;AACRW,gBAAAA,eAAAA,EAAiBX,MAAMW,eAAe,CAACI,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA;gBACjDT,mBAAqB,EAAA;AACvB,aAAA;QACF,KAAK,cAAA;YACH,IAAIN,KAAAA,CAAMG,iBAAiB,EAAE;gBAC3B,OAAO;AAAE,oBAAA,GAAGH,KAAK;oBAAEM,mBAAqB,EAAA;AAAW,iBAAA;AACrD;YAEA,OAAO;AACL,gBAAA,GAAGN,KAAK;AACRW,gBAAAA,eAAAA,EAAiB,EAAE;gBACnBR,iBAAmB,EAAA,KAAA;gBACnBW,WAAa,EAAA,KAAA;gBACbR,mBAAqB,EAAA;AACvB,aAAA;QACF,KAAK,wBAAA;YACH,OAAO;AACL,gBAAA,GAAGN,KAAK;;gBAERW,eAAiBX,EAAAA,KAAAA,CAAMW,eAAe,GAClC;AAAIX,oBAAAA,GAAAA,KAAAA,CAAMW,eAAe,CAACI,KAAK,CAAC,GAAG,CAAC,CAAA,CAAA;oBAAId,MAAOG,CAAAA,OAAO,CAACG;iBAAS,GAChE;oBAACN,MAAOG,CAAAA,OAAO,CAACG;AAAS,iBAAA;gBAC7BD,mBAAqB,EAAA,IAAA;gBACrBQ,WAAa,EAAA,IAAA;gBACbN,cAAgBvB,EAAAA,SAAAA;gBAChBwB,iBAAmBxB,EAAAA;AACrB,aAAA;QACF,KAAK,uBAAA;YACH,OAAO;AACL,gBAAA,GAAGe,KAAK;gBACRM,mBAAqB,EAAA;AACvB,aAAA;QACF,KAAK,aAAA;YACH,IAAIN,KAAAA,CAAMG,iBAAiB,IAAI,CAACF,OAAOG,OAAO,CAACC,wBAAwB,EAAE;gBACvE,OAAO;AAAE,oBAAA,GAAGL,KAAK;oBAAEM,mBAAqB,EAAA;AAAQ,iBAAA;AAClD;YAEA,OAAO;AACL,gBAAA,GAAGN,KAAK;AACRW,gBAAAA,eAAAA,EAAiB,EAAE;gBACnBL,mBAAqB,EAAA,IAAA;gBACrBH,iBAAmB,EAAA,KAAA;gBACnBW,WAAa,EAAA;AACf,aAAA;QACF,KAAK,yBAAA;YACH,OAAO;AACL,gBAAA,GAAGd,KAAK;gBACRG,iBAAmBF,EAAAA,MAAAA,CAAOG,OAAO,CAACD;AACpC,aAAA;AACF,QAAA;YACE,OAAOH,KAAAA;AACX;AACF;AAYA,MAAM,CAACgB,qBAAAA,EAAuBC,gBAAiB,CAAA,GAC7CC,yBAAyC,CAAA,eAAA;AAE3C,SAASC,aACPC,QAAgD,EAAA;AAEhD,IAAA,OAAO,OAAOA,QAAa,KAAA,UAAA;AAC7B;AAcA,MAAMC,uBAAuB,CAACC,KAAAA,GAAAA;IAC5B,MAAM,EAAEF,QAAQ,EAAE,GAAGE,KAAAA;AAErB,IAAA,MAAM,CAACtB,KAAOuB,EAAAA,QAAAA,CAAS,GAAGC,gBAAMC,CAAAA,UAAU,CAAC1B,OAAS,EAAA;AAClDY,QAAAA,eAAAA,EAAiB,EAAE;QACnBL,mBAAqB,EAAA,IAAA;QACrBQ,WAAa,EAAA,KAAA;QACbX,iBAAmB,EAAA,KAAA;QACnBK,cAAgBvB,EAAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAMyC,YAAeC,GAAAA,kBAAAA,EAAAA;AACrB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;IACpB,MAAMlC,MAAAA,GAAS6B,iBAAMM,OAAO,CAAC,IAAMC,oBAAiBH,CAAAA,KAAAA,IAAS,EAAK,CAAA,EAAA;AAACA,QAAAA;AAAM,KAAA,CAAA;AAEzE,IAAA,MAAMI,gBAAiC,GAAA;QACrClC,UAAY4B,EAAAA,YAAAA,CAAanB,QAAQ,EAAET,UAAc,IAAA,EAAA;AACjDD,QAAAA,KAAAA,EAAO6B,aAAa7B,KAAK;AACzBJ,QAAAA,cAAAA,EAAgBiC,aAAajC,cAAc;AAC3CE,QAAAA;AACF,KAAA;AAEA,IAAA,MAAMJ,sBAAsBS,KAAMW,CAAAA,eAAe,CAACC,EAAE,CAAC,CAAC,CAAMoB,CAAAA,IAAAA,gBAAAA;AAC5D,IAAA,MAAMC,kBAAkBC,uBAAY3C,CAAAA,mBAAAA,CAAAA;;IAEpC,MAAMC,YAAAA,GAAeD,mBAAoBE,CAAAA,cAAc,KAAKV,wBAAAA;AAC5D,IAAA,MAAMoD,UAAa,GAAA,CAAC5C,mBAAoBO,CAAAA,UAAU,IAAI,CAACN,YAAAA;AACvD;;;AAGC,MACD,qBACE4C,cAACpB,CAAAA,qBAAAA,EAAAA;QACChB,KAAOA,EAAAA,KAAAA;QACPuB,QAAUA,EAAAA,QAAAA;QACVS,gBAAkBA,EAAAA,gBAAAA;QAClBzC,mBAAqBA,EAAAA,mBAAAA;QACrB0C,eAAiBA,EAAAA,eAAAA;QACjBE,UAAYA,EAAAA,UAAAA;AAEZ,QAAA,QAAA,gBAAAC,cAACC,CAAAA,aAAAA,EAAAA;AACElB,YAAAA,QAAAA,EAAAA,YAAAA,CAAaC,YACVA,QAAS,CAAA;AAAEG,gBAAAA;aACXD,CAAAA,GAAAA,KAAAA,CAAMgB,QAAQ,kBACZF,cAACG,CAAAA,oBAAAA,EAAAA;AAAqBD,gBAAAA,QAAAA,EAAUhB,MAAMgB,QAAQ;AAAGlB,gBAAAA,QAAAA,EAAAA;;;;AAK/D,CAAA;AAEA,MAAMoB,yBAAyB,CAAClB,KAAAA,GAAAA;IAC9B,MAAM,EAAEF,QAAQ,EAAE,GAAGE,KAAAA;AACrB,IAAA,MAAMC,WAAWN,gBAAiB,CAAA,gBAAA,EAAkB,CAACjB,KAAAA,GAAUA,MAAMuB,QAAQ,CAAA;IAE7E,OAAOJ,YAAAA,CAAaC,YAChBA,QAAS,CAAA;AAAEG,QAAAA;KACXD,CAAAA,GAAAA,KAAAA,CAAMgB,QAAQ,kBACZF,cAACG,CAAAA,oBAAAA,EAAAA;AAAqBD,QAAAA,QAAAA,EAAUhB,MAAMgB,QAAQ;AAAGlB,QAAAA,QAAAA,EAAAA;;AAEzD,CAAA;AAEA;;IAGA,MAAMqB,wBAAwB,CAACnB,KAAAA,GAAAA;;AAE7B,IAAA,MAAMoB,WAAWzB,gBAAiB,CAAA,wBAAA,EAA0B,CAACjB,KAAAA,GAAUA,SAASf,SAAW,EAAA,KAAA,CAAA;AAE3F,IAAA,OAAOyD,yBAAWN,cAACI,CAAAA,sBAAAA,EAAAA;AAAwB,QAAA,GAAGlB;uBAAYc,cAACf,CAAAA,oBAAAA,EAAAA;AAAsB,QAAA,GAAGC;;AACtF;AAEA;;qGAGA,MAAMqB,oBAAoB,CAACpD,mBAAAA,GAAAA;AACzB,IAAA,OAAO,CAAC,iBAAiB,EAAEA,mBAAAA,CAAoBE,cAAc,CAAC,CAAC,EAAEF,mBAAoBM,CAAAA,KAAK,CAAC,OAAO,EAChGN,mBAAAA,CAAoBI,MAAM,EAAEC,MACxB,GAAA,CAAC,uBAAuB,EAAEL,mBAAoBI,CAAAA,MAAM,CAACC,MAAM,CAAC,CAAC,GAC7D,EAAA,CACL,CAAC;AACJ,CAAA;AAEA,MAAMyC,aAAgB,GAAA,CAAC,EAAEjB,QAAQ,EAAiC,GAAA;IAChE,MAAM,EAAEwB,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAWC,GAAAA,0BAAAA,EAAAA;AACjB,IAAA,MAAM/C,QAAQiB,gBAAiB,CAAA,mBAAA,EAAqB,CAACjB,KAAAA,GAAUA,MAAMA,KAAK,CAAA;AAC1E,IAAA,MAAMuB,WAAWN,gBAAiB,CAAA,mBAAA,EAAqB,CAACjB,KAAAA,GAAUA,MAAMuB,QAAQ,CAAA;AAChF,IAAA,MAAMhC,sBAAsB0B,gBAC1B,CAAA,mBAAA,EACA,CAACjB,KAAAA,GAAUA,MAAMT,mBAAmB,CAAA;AAEtC,IAAA,MAAM0C,kBAAkBhB,gBAAiB,CAAA,mBAAA,EAAqB,CAACjB,KAAAA,GAAUA,MAAMiC,eAAe,CAAA;AAC9F,IAAA,MAAME,aAAalB,gBAAiB,CAAA,mBAAA,EAAqB,CAACjB,KAAAA,GAAUA,MAAMmC,UAAU,CAAA;AAEpF;;;;AAIC,MACD,qBACEC,cAACY,CAAAA,kCAAAA,EAAAA;QAAkBC,EAAIhE,EAAAA,SAAAA;AAAWiE,QAAAA,KAAAA,EAAO,CAAC,CAAA;QAAGC,GAAKlE,EAAAA,SAAAA;QAAWiB,IAAMjB,EAAAA,SAAAA;gCACjEmE,eAAA,CAAChE,mBAAMiE,IAAI,EAAA;AACTC,YAAAA,IAAAA,EAAMtD,MAAMc,WAAW;AACvByC,YAAAA,YAAAA,EAAc,CAACD,IAAAA,GAAAA;AACb,gBAAA,IAAI,CAACA,IAAM,EAAA;oBACT/B,QAAS,CAAA;wBACPrB,IAAM,EAAA,aAAA;wBACNE,OAAS,EAAA;4BAAEC,wBAA0B,EAAA;AAAM;AAC7C,qBAAA,CAAA;AACF;AACF,aAAA;;AAECe,gBAAAA,QAAAA;8BACDgC,eAAClE,CAAAA,kBAAAA,EAAAA;;AACC,sCAAAkD,cAAA,CAAChD,mBAAMoE,MAAM,EAAA;4BAACC,GAAK,EAAA,CAAA;AACjB,4BAAA,QAAA,gBAAAL,eAACM,CAAAA,iBAAAA,EAAAA;gCAAKC,cAAe,EAAA,eAAA;gCAAgBC,UAAW,EAAA,QAAA;gCAASC,KAAM,EAAA,MAAA;;kDAC7DT,eAACM,CAAAA,iBAAAA,EAAAA;wCAAKD,GAAK,EAAA,CAAA;;0DACTrB,cAAC0B,CAAAA,uBAAAA,EAAAA;gDACCC,WAAa,EAAA,KAAA;AACbC,gDAAAA,KAAAA,EAAOpB,aAAc,CAAA;oDAAEK,EAAI,EAAA,aAAA;oDAAegB,cAAgB,EAAA;AAAO,iDAAA,CAAA;gDACjEC,OAAQ,EAAA,OAAA;AACRC,gDAAAA,QAAAA,EAAUnE,KAAMW,CAAAA,eAAe,CAACyD,MAAM,GAAG,CAAA;gDACzCC,OAAS,EAAA,IAAA;oDACP9C,QAAS,CAAA;wDACPrB,IAAM,EAAA,SAAA;wDACNE,OAAS,EAAA;4DAAEC,wBAA0B,EAAA;AAAM;AAC7C,qDAAA,CAAA;AACF,iDAAA;gDACAiE,WAAa,EAAA,CAAA;AAEb,gDAAA,QAAA,gBAAAlC,cAACmC,CAAAA,eAAAA,EAAAA,EAAAA;;0DAEHnC,cAACoC,CAAAA,uBAAAA,EAAAA;gDAAWC,GAAI,EAAA,MAAA;gDAAOC,UAAY,EAAA,GAAA;AAChCvC,gDAAAA,QAAAA,EAAAA,UAAAA,GACGS,aAAc,CAAA;oDACZK,EAAI,EAAA,iCAAA;oDACJgB,cAAgB,EAAA;AAClB,iDAAA,CAAA,GACArB,aAAc,CAAA;oDACZK,EAAI,EAAA,2DAAA;oDACJgB,cAAgB,EAAA;AAClB,iDAAA;;;;kDAGR7B,cAAC0B,CAAAA,uBAAAA,EAAAA;wCACCO,OAAS,EAAA,IAAA;4CACP9C,QAAS,CAAA;gDACPrB,IAAM,EAAA;AACR,6CAAA,CAAA;4CACA,IAAI,CAACF,KAAMG,CAAAA,iBAAiB,EAAE;AAC5B,gDAAA,IAAIgC,UAAY,EAAA;AACdW,oDAAAA,QAAAA,CAASH,iBAAkBpD,CAAAA,mBAAAA,CAAAA,CAAAA;iDACtB,MAAA;AACLuD,oDAAAA,QAAAA,CAASxD,cAAeC,CAAAA,mBAAAA,CAAAA,CAAAA;AAC1B;AACF;AACF,yCAAA;wCACA2E,OAAQ,EAAA,UAAA;AACRF,wCAAAA,KAAAA,EAAOpB,aAAc,CAAA;4CACnBK,EAAI,EAAA,+DAAA;4CACJgB,cAAgB,EAAA;AAClB,yCAAA,CAAA;AAEA,wCAAA,QAAA,gBAAA7B,cAACuC,CAAAA,eAAAA,EAAAA,EAAAA;;;;;AAIP,sCAAAvC,cAAA,CAAChD,mBAAMwF,IAAI,EAAA;AACT,4BAAA,QAAA,gBAAAxC,cAACyC,CAAAA,gBAAAA,EAAAA;AACCC,gCAAAA,MAAAA,EAAQ3C,aAAa,MAAS,GAAA,KAAA;gCAC9B4C,aAAe9C,EAAAA,eAAAA,CAAgB+C,oBAAoB,CAAC7C,UAAAA,CAAAA;AACpD8C,gCAAAA,QAAAA,EAAU,CAACC,MAAiCC,EAAAA,OAAAA,GAAAA;oCAC1C,MAAMC,SAAAA,GAAYC,2BAChBpD,eAAgBqD,CAAAA,MAAM,EAAEC,UACxBtD,EAAAA,eAAAA,CAAgBuD,UAAU,EAC1B;wCACEC,MAAQxD,EAAAA,eAAAA,CAAgB1B,QAAQ,EAAEkF,MAAAA;AAClC,wCAAA,GAAGN;AACL,qCAAA,CAAA;oCAGF,OAAOC,SAAAA,CAAUH,QAAQ,CAACC,MAAQ,EAAA;wCAAEQ,UAAY,EAAA;AAAM,qCAAA,CAAA;AACxD,iCAAA;AAEA,gCAAA,QAAA,gBAAAtD,cAACuD,CAAAA,iBAAAA,EAAAA,EAAAA;;;;;;;;AAOf,CAAA;AACA;;;;AAIC,IACD,MAAMA,iBAAoB,GAAA,IAAA;AACxB,IAAA,MAAM7C,QAAWC,GAAAA,0BAAAA,EAAAA;AACjB,IAAA,MAAM,EAAE6C,QAAQ,EAAEC,MAAM,EAAE,GAAGC,0BAAAA,EAAAA;IAC7B,MAAM,EAAElD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,MAAM,CAACkD,uBAAuB,GAAGC,iCAAAA,EAAAA;AAEjC,IAAA,MAAMhG,QAAQiB,gBAAiB,CAAA,mBAAA,EAAqB,CAACjB,KAAAA,GAAUA,MAAMA,KAAK,CAAA;AAC1E,IAAA,MAAMuB,WAAWN,gBAAiB,CAAA,mBAAA,EAAqB,CAACjB,KAAAA,GAAUA,MAAMuB,QAAQ,CAAA;AAChF,IAAA,MAAMS,mBAAmBf,gBAAiB,CAAA,mBAAA,EAAqB,CAACjB,KAAAA,GAAUA,MAAMgC,gBAAgB,CAAA;AAChG,IAAA,MAAMzC,sBAAsB0B,gBAC1B,CAAA,mBAAA,EACA,CAACjB,KAAAA,GAAUA,MAAMT,mBAAmB,CAAA;AAEtC,IAAA,MAAM4C,aAAalB,gBAAiB,CAAA,mBAAA,EAAqB,CAACjB,KAAAA,GAAUA,MAAMmC,UAAU,CAAA;AAEpF;;;;;AAKC,MACD,MAAM8D,QAAWC,GAAAA,mBAAAA,CAAQ,eAAe,CAAClG,KAAAA,GAAUA,MAAMiG,QAAQ,CAAA;AACjE,IAAA,MAAME,eAAeD,mBAAQ,CAAA,aAAA,EAAe,CAAClG,KAAAA,GAAUA,MAAMmG,YAAY,CAAA;IACzE,MAAMhG,iBAAAA,GAAoB8F,YAAY,CAACE,YAAAA;AACvC3E,IAAAA,gBAAAA,CAAM4E,SAAS,CAAC,IAAA;QACd7E,QAAS,CAAA;YAAErB,IAAM,EAAA,yBAAA;YAA2BE,OAAS,EAAA;AAAED,gBAAAA;AAAkB;AAAE,SAAA,CAAA;KAC1E,EAAA;AAACA,QAAAA,iBAAAA;AAAmBoB,QAAAA;AAAS,KAAA,CAAA;AAEhC,IAAA,MAAM8E,mBAAmB,CAAChG,wBAAAA,GAAAA;QACxBkB,QAAS,CAAA;YAAErB,IAAM,EAAA,aAAA;YAAeE,OAAS,EAAA;AAAEC,gBAAAA;AAAyB;AAAE,SAAA,CAAA;AAEtE,QAA0D;;;AAGxD0F,YAAAA,sBAAAA;AAEE/D,YAAAA,gBAAAA;AAEA,YAAA,IAAA,CAAA;AAEJ;AACF,KAAA;AAEA,IAAA,MAAMsE,iBAAoB,GAAA,IAAA;AACxB,QAAA,MAAMC,cAAc,CAAC,EAAEX,QAAS,CAAA,EAAEC,OAAO,CAAC;AAC1C,QAAA,MAAMW,cAAclH,cAAeC,CAAAA,mBAAAA,CAAAA;QACnC,MAAMkH,iBAAAA,GAAoBF,WAAYG,CAAAA,QAAQ,CAACF,WAAAA,CAAAA;AAE/C,QAAA,IAAIC,iBAAmB,EAAA;YACrBJ,gBAAiB,CAAA,IAAA,CAAA;SACZ,MAAA;AACL,YAAA,IAAIlE,UAAY,EAAA;AACdW,gBAAAA,QAAAA,CAASH,iBAAkBpD,CAAAA,mBAAAA,CAAAA,CAAAA;aACtB,MAAA;gBACLuD,QAAS0D,CAAAA,WAAAA,CAAAA;AACX;AACF;AACF,KAAA;AAEA,IAAA,MAAMG,aAAgB,GAAA,IAAA;QACpB,IAAI3G,KAAAA,CAAMM,mBAAmB,KAAK,IAAM,EAAA;AACtC,YAAA;AACF;QACA,IAAIN,KAAAA,CAAMM,mBAAmB,KAAK,UAAY,EAAA;AAC5CgG,YAAAA,iBAAAA,EAAAA;AACF,SAAA,MAAO,IAAItG,KAAAA,CAAMM,mBAAmB,KAAK,MAAQ,EAAA;YAC/CiB,QAAS,CAAA;gBAAErB,IAAM,EAAA,SAAA;gBAAWE,OAAS,EAAA;oBAAEC,wBAA0B,EAAA;AAAK;AAAE,aAAA,CAAA;AAC1E,SAAA,MAAO,IAAIL,KAAAA,CAAMM,mBAAmB,KAAK,OAAS,EAAA;YAChD+F,gBAAiB,CAAA,IAAA,CAAA;AACnB,SAAA,MAAO,IAAI,YAAA,IAAgBrG,KAAMM,CAAAA,mBAAmB,EAAE;YACpDiB,QAAS,CAAA;gBACPrB,IAAM,EAAA,gBAAA;gBACNE,OAAS,EAAA;AAAEG,oBAAAA,QAAAA,EAAUP,MAAMM,mBAAmB;oBAAED,wBAA0B,EAAA;AAAK;AACjF,aAAA,CAAA;AACF;AACF,KAAA;IAEA,qBACE+C,eAAA,CAAAwD,mBAAA,EAAA;;0BACExE,cAACyE,CAAAA,iBAAAA,EAAAA,EAAAA,CAAAA;AACD,0BAAAzE,cAAA,CAAC0E,oBAAOzD,IAAI,EAAA;gBAACC,IAAMtD,EAAAA,KAAAA,CAAMM,mBAAmB,IAAI,IAAA;AAC9C,gBAAA,QAAA,gBAAA8B,cAAC2E,CAAAA,yBAAAA,EAAAA;AACCC,oBAAAA,SAAAA,EAAW,IAAML,aAAAA,EAAAA;AACjBM,oBAAAA,QAAAA,EAAU,IAAM1F,QAAS,CAAA;4BAAErB,IAAM,EAAA;AAAwB,yBAAA,CAAA;oBACzDgE,OAAQ,EAAA,QAAA;8BAEPtB,aAAc,CAAA;wBACbK,EAAI,EAAA,oEAAA;wBACJgB,cACE,EAAA;AACJ,qBAAA;;;;;AAKV,CAAA;AAEA,MAAM1B,uBAAuB,CAAC,EAC5BnB,QAAQ,EACRkB,QAAQ,EAIT,GAAA;AACC,IAAA,MAAMf,WAAWN,gBAAiB,CAAA,cAAA,EAAgB,CAACjB,KAAAA,GAAUA,MAAMuB,QAAQ,CAAA;AAE3E,IAAA,qBACEa,cAAC8E,CAAAA,gBAAAA,EAAAA;QACC7C,OAAS,EAAA,IAAA;YACP9C,QAAS,CAAA;gBACPrB,IAAM,EAAA,gBAAA;gBACNE,OAAS,EAAA;oBAAEG,QAAU+B,EAAAA,QAAAA;oBAAUjC,wBAA0B,EAAA;AAAM;AACjE,aAAA,CAAA;AACF,SAAA;AAECe,QAAAA,QAAAA,EAAAA;;AAGP,CAAA;AAEA,MAAM8F,gBAAAA,GAAmB/H,uBAAOgI,CAAAA,uBAAAA,CAAW;;;eAG5B,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAC;;;;;;AAMnD,CAAC;AAED;;;AAGC,IACD,MAAMR,iBAAoB,GAAA,IAAA;IACxB,MAAM,EAAEjE,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,MAAMtD,sBAAsB0B,gBAC1B,CAAA,mBAAA,EACA,CAACjB,KAAAA,GAAUA,MAAMT,mBAAmB,CAAA;AAEtC,IAAA,MAAM4C,aAAalB,gBAAiB,CAAA,mBAAA,EAAqB,CAACjB,KAAAA,GAAUA,MAAMmC,UAAU,CAAA;AACpF,IAAA,MAAMF,kBAAkBhB,gBAAiB,CAAA,mBAAA,EAAqB,CAACjB,KAAAA,GAAUA,MAAMiC,eAAe,CAAA;IAC9F,MAAMqF,sBAAAA,GAAyBC,mCAAkBhI,CAAAA,mBAAAA,CAAoBM,KAAK,CAAA;AAC1E,IAAA,MAAM2H,UAAUC,wBAAa,CAAA,mBAAA,EAAqB,CAACzH,KAAAA,GAAUA,MAAMwH,OAAO,CAAA;AAE1E,IAAA,MAAMzC,gBAAgB5C,UAClBF,GAAAA,eAAAA,CAAgB+C,oBAAoB,CAAC7C,UAAAA,CAAAA,GACrCF,gBAAgB+C,oBAAoB,EAAA;AAExC,IAAA,MAAM,EACJ0C,WAAc,GAAA,EAAE,EAChBC,SAAAA,EAAWC,oBAAoB,EAC/BC,KAAK,EACN,GAAGC,oBACFC,kBAAYC,CAAAA,GAAG,CAAC,CAAC/H,UAAY;AAC3BA,YAAAA,MAAAA;AACAgI,YAAAA,OAAAA,EAAS1I,oBAAoBM;SAC/B,CAAA,CAAA,CAAA;AAGF,IAAA,MAAM8H,YACJC,oBAAwBN,IAAAA,sBAAAA,CAAuBK,SAAS,IAAI1F,gBAAgB0F,SAAS;AAEvF,IAAA,IAAIA,SAAa,IAAA,CAAC1F,eAAgB1B,CAAAA,QAAQ,EAAET,UAAY,EAAA;AACtD,QAAA,qBACEsC,cAAC8F,CAAAA,mBAAAA,EAAAA;YAAOC,KAAK,EAAA,IAAA;sBACVvF,aAAc,CAAA;gBACbK,EAAI,EAAA,gDAAA;gBACJgB,cAAgB,EAAA;AAClB,aAAA;;AAGN;IAEA,IACE4D,KAAAA,IACA,CAACtI,mBAAAA,CAAoBM,KAAK,IAC1ByH,uBAAuBO,KAAK,IAC3B,CAAC1F,UAAAA,IAAc,CAACF,eAAAA,CAAgB1B,QAAQ,IACxC,CAAC4B,UAAc,IAAA,CAACF,eAAgBmG,CAAAA,IAAI,IACrC,CAACnG,eAAgBqD,CAAAA,MAAM,IACvB,CAACP,aACD,EAAA;AACA,QAAA,qBACE3C,cAACsB,CAAAA,iBAAAA,EAAAA;YAAKE,UAAW,EAAA,QAAA;YAASyE,MAAO,EAAA,MAAA;YAAO1E,cAAe,EAAA,QAAA;AACrD,YAAA,QAAA,gBAAAvB,cAACkG,CAAAA,6BAAAA,EAAAA;AACCC,gBAAAA,IAAAA,gBAAMnG,cAACoG,CAAAA,mBAAAA,EAAAA;oBAAc3E,KAAM,EAAA;;AAC3B4E,gBAAAA,OAAAA,EAAS7F,aAAc,CAAA;oBACrBK,EAAI,EAAA,iBAAA;oBACJgB,cAAgB,EAAA;AAClB,iBAAA;;;AAIR;IAEA,MAAMyE,aAAAA,GAAgBzG,gBAAgB0G,QAAQ,CAACrB,uBAAuBsB,IAAI,CAACC,QAAQ,CAACC,SAAS,CAAA;AAC7F,IAAA,MAAMC,oBAAuB9G,GAAAA,eAAAA,CAAgBqD,MAAM,EAAEH,SAAS6D,eAAmB,IAAA,KAAA;AAEjF,IAAA,MAAM1H,KAAQ,GAAA;QACZ2H,SAAW,EAAA,OAAA;AACXxJ,QAAAA,cAAAA,EAAgBF,oBAAoBE,cAAc;AAClDI,QAAAA,KAAAA,EAAON,oBAAoBM,KAAK;AAChCC,QAAAA,UAAAA,EAAYP,oBAAoBO,UAAU;AAC1CS,QAAAA,QAAAA,EAAU0B,gBAAgB1B,QAAQ;AAClC6H,QAAAA,IAAAA,EAAMnG,gBAAgBmG;AACxB,KAAA;AAEA,IAAA,qBACEhF,eAAC8F,CAAAA,yBAAAA,EAAAA;QAAaxB,WAAaA,EAAAA,WAAAA;AAAa7H,QAAAA,KAAAA,EAAON,oBAAoBM,KAAK;;0BACtEuD,eAACM,CAAAA,iBAAAA,EAAAA;gBAAKE,UAAW,EAAA,YAAA;gBAAauF,SAAU,EAAA,QAAA;gBAAS1F,GAAK,EAAA,CAAA;;kCACpDL,eAACM,CAAAA,iBAAAA,EAAAA;wBAAKG,KAAM,EAAA,MAAA;wBAAOF,cAAe,EAAA,eAAA;wBAAgBF,GAAK,EAAA,CAAA;;0CACrDrB,cAACoC,CAAAA,uBAAAA,EAAAA;gCAAWC,GAAI,EAAA,IAAA;gCAAKP,OAAQ,EAAA,OAAA;AAC1BwE,gCAAAA,QAAAA,EAAAA;;0CAEHtG,cAACsB,CAAAA,iBAAAA,EAAAA;gCAAKD,GAAK,EAAA,CAAA;AACT,gCAAA,QAAA,gBAAArB,cAACgH,CAAAA,wCAAAA,EAAAA;oCACC9H,KAAOA,EAAAA,KAAAA;oCACP+H,YAAc,EACZ7B,OAAO,CAAC,iBAAA,CAAkB,CAAC8B,IAAI,CAC/BC,kBAAkB,CAAC,gBAAA,CAAA;8CAEpB,CAACC,OAAAA,GAAAA;AACA,wCAAA,MAAMC,eAAkBD,GAAAA,OAAAA,CAAQE,MAAM,CAAC,CAACzJ,MAAAA,GAAAA;4CACtC,OAAO;AAACA,gDAAAA,MAAAA,CAAO0J;6CAAS,CAACC,IAAI,EAAGlD,CAAAA,QAAQ,CAAC,gBAAA,CAAA;AAC3C,yCAAA,CAAA;wCACA,MAAM,CAACmD,aAAeC,EAAAA,eAAAA,CAAgB,GAAGL,eAAAA;AAEzC,wCAAA,IAAI,CAACI,aAAAA,IAAiB,CAACC,eAAAA,EAAiB,OAAO,IAAA;;AAG/C,wCAAA,IAAID,iBAAiBC,eAAiB,EAAA;4CACpC,qBACE1G,eAAA,CAAAwD,mBAAA,EAAA;;kEAEExE,cAAC2H,CAAAA,oCAAAA,EAAAA;AACE,wDAAA,GAAGD,eAAe;wDACnB5F,OAAS4F,EAAAA,eAAAA,CAAgB5F,OAAO,IAAI;;kEAGtC9B,cAAC2H,CAAAA,oCAAAA,EAAAA;AACE,wDAAA,GAAGF,aAAa;wDACjB3F,OAAS2F,EAAAA,aAAAA,CAAc3F,OAAO,IAAI;;;;AAI1C;;AAGA,wCAAA,qBACE9B,cAAC2H,CAAAA,oCAAAA,EAAAA;AACE,4CAAA,GAAGF,aAAa;4CACjB3F,OAAS2F,EAAAA,aAAAA,CAAc3F,OAAO,IAAI;;AAGxC;;;;;AAIL6E,oBAAAA,oBAAAA,iBACC3G,cAAC4H,CAAAA,gBAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAA5H,cAAC6H,CAAAA,6BAAAA,EAAAA;4BAAexE,MAAQxD,EAAAA,eAAAA,CAAgB1B,QAAQ,EAAEkF;;AAElD,qBAAA,CAAA,GAAA;;;0BAGNrD,cAACsB,CAAAA,iBAAAA,EAAAA;gBAAKwG,IAAM,EAAA,CAAA;gBAAGC,QAAS,EAAA,MAAA;gBAAOvG,UAAW,EAAA,SAAA;gBAAUwG,UAAY,EAAA,CAAA;AAC9D,gBAAA,QAAA,gBAAAhI,cAAC4H,CAAAA,gBAAAA,EAAAA;oBAAIG,QAAS,EAAA,MAAA;oBAAOD,IAAM,EAAA,CAAA;AACzB,oBAAA,QAAA,gBAAA9H,cAACiI,CAAAA,qBAAAA,EAAAA;wBACCC,MAAQhD,EAAAA,sBAAAA,CAAuBsB,IAAI,CAAC0B,MAAM;wBAC1C/J,QAAU0B,EAAAA,eAAAA;wBACVsI,aAAe,EAAA;;;;;;AAM3B,CAAA;;;;;;;"}
|