@strapi/content-type-builder 5.10.4 → 5.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1327,7 +1327,7 @@ function __variableDynamicImportRuntime1__(path) {
1327
1327
  case './translations/sv.json': return import('./sv-Bbam7IDm.mjs');
1328
1328
  case './translations/th.json': return import('./th-hfS0Wmk_.mjs');
1329
1329
  case './translations/tr.json': return import('./tr-DS7DBOhC.mjs');
1330
- case './translations/uk.json': return import('./uk-Cj8-BKeu.mjs');
1330
+ case './translations/uk.json': return import('./uk-CjzmJyt1.mjs');
1331
1331
  case './translations/zh-Hans.json': return import('./zh-Hans-BElOnuRb.mjs');
1332
1332
  case './translations/zh.json': return import('./zh-BUVXH75-.mjs');
1333
1333
  default: return new Promise(function(resolve, reject) {
@@ -1349,7 +1349,7 @@ var index = {
1349
1349
  defaultMessage: 'Content-Type Builder'
1350
1350
  },
1351
1351
  permissions: PERMISSIONS.main,
1352
- Component: ()=>import('./index-Cr5tfW7U.mjs').then(function (n) { return n.i; }),
1352
+ Component: ()=>import('./index-Cb2nsEPf.mjs').then(function (n) { return n.i; }),
1353
1353
  position: 5
1354
1354
  });
1355
1355
  app.registerPlugin({
@@ -1381,4 +1381,4 @@ var index = {
1381
1381
  };
1382
1382
 
1383
1383
  export { AutoReloadOverlayBlockerProvider as A, MAX_COMPONENT_DEPTH as M, PERMISSIONS as P, actions as a, createUid as b, createComponentUid as c, initialState$1 as d, actions$1 as e, index as f, getRelationType as g, initialState as i, makeUnique as m, nameToSlug as n, pluginId as p, retrieveComponentsFromSchema as r, useAutoReloadOverlayBlocker as u };
1384
- //# sourceMappingURL=index-BhX2euW0.mjs.map
1384
+ //# sourceMappingURL=index-M9EIbHI9.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-BhX2euW0.mjs","sources":["../../../admin/src/constants.ts","../../../admin/src/pluginId.ts","../../../admin/src/utils/getRelationType.ts","../../../admin/src/utils/makeUnique.ts","../../../admin/src/components/DataManagerProvider/utils/retrieveComponentsFromSchema.ts","../../../admin/src/components/DataManagerProvider/reducer.ts","../../../admin/src/utils/nameToSlug.ts","../../../admin/src/components/FormModal/utils/createUid.ts","../../../admin/src/components/FormModal/utils/customFieldDefaultOptionsReducer.ts","../../../admin/src/components/FormModal/utils/relations.ts","../../../admin/src/components/FormModal/reducer.ts","../../../admin/src/reducers.ts","../../../admin/src/utils/formAPI.ts","../../../admin/src/utils/prefixPluginTranslations.ts","../../../admin/src/components/AutoReloadOverlayBlocker.tsx","../../../admin/src/index.ts"],"sourcesContent":["export const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n main: [{ action: 'plugin::content-type-builder.read', subject: null }],\n};\n\nexport const MAX_COMPONENT_DEPTH = 6;\n","export const pluginId = 'content-type-builder';\n","import type { Schema } from '@strapi/types';\n\n/**\n *\n * Retrieves the relation type\n */\nexport const getRelationType = (\n relation: Schema.Attribute.RelationKind.WithTarget | undefined,\n targetAttribute?: string | null\n) => {\n const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;\n\n if (relation === 'oneToOne' && hasNotTargetAttribute) {\n return 'oneWay';\n }\n\n if (relation === 'oneToMany' && hasNotTargetAttribute) {\n return 'manyWay';\n }\n\n return relation;\n};\n","const makeUnique = <T extends string>(array: T[]): T[] => [...new Set(array)];\n\nexport { makeUnique };\n","import get from 'lodash/get';\n\nimport { makeUnique } from '../../../utils/makeUnique';\n\nimport type { AttributeType, Components } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nconst retrieveComponentsFromSchema = (\n attributes: AttributeType[],\n allComponentsData: Components\n): Internal.UID.Component[] => {\n const allComponents: Internal.UID.Component[] = attributes.reduce((acc: any, current) => {\n const type = current.type;\n if (type === 'component') {\n const currentComponentName = current.component;\n // Push the existing compo\n acc.push(currentComponentName);\n\n const currentComponentAttributes = get(\n allComponentsData,\n [currentComponentName, 'schema', 'attributes'],\n []\n );\n\n // Retrieve the nested ones\n acc.push(...retrieveComponentsFromSchema(currentComponentAttributes, allComponentsData));\n }\n\n if (type === 'dynamiczone') {\n const dynamicZoneComponents = current.components;\n const componentsFromDZComponents = dynamicZoneComponents.reduce((acc2: any, currentUid) => {\n const compoAttrs = get(allComponentsData, [currentUid, 'schema', 'attributes'], []);\n\n return [...acc2, ...retrieveComponentsFromSchema(compoAttrs, allComponentsData)];\n }, []);\n\n return [...acc, ...dynamicZoneComponents, ...componentsFromDZComponents];\n }\n\n return acc;\n }, []);\n\n return makeUnique<Internal.UID.Component>(allComponents);\n};\n\nexport { retrieveComponentsFromSchema };\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { current } from 'immer';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { makeUnique } from '../../utils/makeUnique';\n\nimport { retrieveComponentsFromSchema } from './utils/retrieveComponentsFromSchema';\n\nimport type { DataManagerStateType, ContentType, AttributeType, Component } from '../../types';\nimport type { Internal, Schema } from '@strapi/types';\n\ntype Target = 'component' | 'components' | 'contentType' | 'contentTypes';\n\n// TODO: Define all possible actions based on type\nexport type Action<T = any> = {\n type: T;\n uid?: string;\n mainDataKey: Target;\n schemaType: 'component' | 'contentType';\n attributeToRemoveName?: string;\n [key: string]: any;\n};\n\nconst DEFAULT_MODIFIED_DATA = {\n components: {},\n contentTypes: {},\n};\n\nconst initialState: DataManagerStateType = {\n components: {},\n contentTypes: {},\n initialComponents: {},\n initialContentTypes: {},\n initialData: {},\n modifiedData: {\n ...DEFAULT_MODIFIED_DATA,\n },\n reservedNames: {},\n isLoading: true,\n};\n\nconst ONE_SIDE_RELATIONS = ['oneWay', 'manyWay'];\n\nconst getOppositeRelation = (originalRelation?: Schema.Attribute.RelationKind.WithTarget) => {\n if (originalRelation === 'manyToOne') {\n return 'oneToMany';\n }\n\n if (originalRelation === 'oneToMany') {\n return 'manyToOne';\n }\n\n return originalRelation;\n};\n\nconst findAttributeIndex = (schema: any, attributeToFind?: string) => {\n return schema.schema.attributes.findIndex(\n ({ name }: { name: string }) => name === attributeToFind\n );\n};\n\ntype InitPayload = {\n components: Record<string, Component>;\n contentTypes: Record<string, ContentType>;\n reservedNames: Record<string, string>;\n};\n\ntype AddAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Target;\n targetUid: string;\n shouldAddComponentToData: boolean;\n};\n\ntype AddCreateComponentToDynamicZonePayload = {\n dynamicZoneTarget: string;\n componentsToAdd: Internal.UID.Component[];\n};\n\ntype AddCustomFieldAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Target;\n targetUid: string;\n};\n\ntype ChangeDynamicZoneComponentsPayload = {\n dynamicZoneTarget: string;\n newComponents: Internal.UID.Component[];\n};\n\ntype CreateComponentSchemaPayload = {\n uid: string;\n data: any;\n componentCategory: string;\n shouldAddComponentToData: boolean;\n};\n\ntype CreateSchemaPayload = {\n uid: string;\n data: any;\n};\n\ntype EditAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Target;\n targetUid: string;\n initialAttribute: Record<string, any>;\n};\n\ntype EditCustomFieldAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Target;\n targetUid: string;\n initialAttribute: Record<string, any>;\n};\n\ntype RemoveComponentFromDynamicZonePayload = {\n dzName: string;\n componentToRemoveIndex: number;\n};\n\ntype RemoveFieldPayload = {\n mainDataKey: Target;\n attributeToRemoveName: string;\n};\n\ntype RemoveFieldFromDisplayedComponentPayload = {\n attributeToRemoveName: string;\n componentUid: string;\n};\n\ntype SetModifiedDataPayload = {\n schemaToSet: Partial<DataManagerStateType['modifiedData']>;\n hasJustCreatedSchema: boolean;\n};\n\ntype UpdateSchemaPayload =\n | {\n data: Record<string, any>;\n schemaType: 'component';\n uid: string;\n }\n | {\n data: Record<string, any>;\n schemaType: 'contentType';\n };\n\nconst slice = createSlice({\n name: 'data-manager',\n initialState,\n reducers: {\n init: (state, action: PayloadAction<InitPayload>) => {\n const { components, contentTypes, reservedNames } = action.payload;\n\n state.components = components;\n state.initialComponents = components;\n state.initialContentTypes = contentTypes;\n state.contentTypes = contentTypes;\n state.reservedNames = reservedNames;\n state.isLoading = false;\n\n state.modifiedData = {\n ...DEFAULT_MODIFIED_DATA,\n component: state.modifiedData.component\n ? components[state.modifiedData.component.uid]\n : undefined,\n contentType: state.modifiedData.contentType\n ? contentTypes[state.modifiedData.contentType.uid]\n : undefined,\n components: state.modifiedData.components\n ? Object.keys(state.modifiedData.components).reduce(\n (acc, key) => {\n acc[key] = components[key];\n return acc;\n },\n {} as Record<string, Component>\n )\n : {},\n contentTypes: state.modifiedData.contentTypes\n ? Object.keys(state.modifiedData.contentTypes).reduce(\n (acc, key) => {\n acc[key] = contentTypes[key];\n return acc;\n },\n {} as Record<string, ContentType>\n )\n : {},\n };\n state.initialData = state.modifiedData;\n },\n addAttribute: (state, action: PayloadAction<AddAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid, shouldAddComponentToData } = action.payload;\n const { name, ...rest } = attributeToSet;\n\n delete rest.createComponent;\n\n const pathToDataToEdit = ['component', 'contentType'].includes(forTarget)\n ? [forTarget]\n : [forTarget, targetUid];\n\n const currentAttributes = get(\n state,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'],\n []\n ).slice();\n\n // Add the createdAttribute\n const updatedAttributes = [...currentAttributes, { ...rest, name }];\n\n set(state, ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'], updatedAttributes);\n\n if (shouldAddComponentToData) {\n const componentToAddUID = rest.component;\n const componentToAdd = state.components[componentToAddUID];\n const isTemporaryComponent = componentToAdd?.isTemporary;\n const hasComponentAlreadyBeenAdded =\n state.modifiedData.components?.[componentToAddUID] !== undefined;\n\n if (isTemporaryComponent || hasComponentAlreadyBeenAdded) {\n return;\n }\n\n // Initialize modifiedData.components if it is undefined\n if (!state.modifiedData.components) {\n state.modifiedData.components = {};\n }\n\n // Add the added component to the modifiedData.components\n state.modifiedData.components[componentToAddUID] = componentToAdd;\n\n const nestedComponents = retrieveComponentsFromSchema(\n componentToAdd.schema.attributes as AttributeType[],\n state.components\n );\n\n // We dont' need to set the already added components otherwise all modifications will be lost so we need to only add the not modified ones\n const nestedComponentsToAddInModifiedData = nestedComponents.filter(\n (compoUID: Internal.UID.Component) => {\n return get(state, ['modifiedData', 'components', compoUID]) === undefined;\n }\n );\n\n nestedComponentsToAddInModifiedData.forEach((compoUID: Internal.UID.Component) => {\n const compoSchema = get(state, ['components', compoUID], {}) as Component;\n const isTemporary = compoSchema.isTemporary || false;\n\n // If the nested component has not been saved we don't need to add them as they are already in the state\n if (!isTemporary) {\n if (!state.modifiedData.components) {\n state.modifiedData.components = {};\n }\n\n state.modifiedData.components[compoUID] = compoSchema;\n }\n });\n\n return;\n }\n\n const isCreatingRelationAttribute = rest.type === 'relation';\n\n if (isCreatingRelationAttribute) {\n const target = rest.target;\n const targetAttribute = rest.targetAttribute || null;\n const relation = rest.relation;\n const relationType = getRelationType(relation, targetAttribute);\n const currentUid = get(state, ['modifiedData', ...pathToDataToEdit, 'uid']);\n\n // When the user in creating a relation with the same content type we need to create another attribute\n // that is the opposite of the created one\n if (\n rest.type === 'relation' &&\n relationType !== 'oneWay' &&\n relationType !== 'manyWay' &&\n target === currentUid\n ) {\n const oppositeAttribute = {\n name: targetAttribute,\n relation: getOppositeRelation(relationType),\n target,\n targetAttribute: name,\n type: 'relation',\n } as AttributeType;\n\n if (rest.private) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n oppositeAttribute.private = rest.private;\n }\n\n const attributesToSet = [...updatedAttributes, oppositeAttribute];\n\n set(\n state,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'],\n attributesToSet\n );\n }\n }\n },\n addCreatedComponentToDynamicZone: (\n state,\n action: PayloadAction<AddCreateComponentToDynamicZonePayload>\n ) => {\n const { dynamicZoneTarget, componentsToAdd } = action.payload;\n\n const dzAttributeIndex = findAttributeIndex(\n state.modifiedData.contentType,\n dynamicZoneTarget\n );\n\n componentsToAdd.forEach((componentUid: Internal.UID.Component) => {\n if (!state.modifiedData.contentType) {\n return;\n }\n\n if (!state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components) {\n state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components = [];\n }\n state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components.push(\n componentUid\n );\n });\n },\n addCustomFieldAttribute: (state, action: PayloadAction<AddCustomFieldAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n const { name, ...rest } = attributeToSet;\n\n const pathToDataToEdit = ['component', 'contentType'].includes(forTarget)\n ? [forTarget]\n : [forTarget, targetUid];\n\n const currentAttributes = get(\n state,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'],\n []\n ).slice();\n\n // Add the createdAttribute\n const updatedAttributes = [...currentAttributes, { ...rest, name }];\n\n set(state, ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'], updatedAttributes);\n },\n changeDynamicZoneComponents: (\n state,\n action: PayloadAction<ChangeDynamicZoneComponentsPayload>\n ) => {\n const { dynamicZoneTarget, newComponents } = action.payload;\n\n const dzAttributeIndex = findAttributeIndex(\n state.modifiedData.contentType,\n dynamicZoneTarget\n );\n\n const currentDZComponents =\n (state.modifiedData.contentType?.schema.attributes[dzAttributeIndex]).components;\n\n const updatedComponents = makeUnique([...currentDZComponents, ...newComponents]);\n\n (state.modifiedData.contentType?.schema.attributes[dzAttributeIndex]).components =\n updatedComponents;\n\n // Retrieve all the components that needs to be added to the modifiedData.components\n const nestedComponents = retrieveComponentsFromSchema(\n current(state.modifiedData.contentType?.schema.attributes),\n state.components\n );\n\n // We dont' need to set the already added components otherwise all modifications will be lost so we need to only add the not modified ones\n const nestedComponentsToAddInModifiedData = nestedComponents.filter((compoUID) => {\n return get(state, ['modifiedData', 'components', compoUID]) === undefined;\n });\n\n nestedComponentsToAddInModifiedData.forEach((compoUID: Internal.UID.Component) => {\n const compoSchema = get(state, ['components', compoUID], {}) as Component;\n const isTemporary = compoSchema.isTemporary || false;\n\n // If the nested component has not been saved we don't need to add them as they are already in the state\n if (!isTemporary) {\n if (!state.modifiedData.components) {\n state.modifiedData.components = {};\n }\n state.modifiedData.components[compoUID] = compoSchema;\n }\n });\n },\n createComponentSchema: (state, action: PayloadAction<CreateComponentSchemaPayload>) => {\n const { uid, data, componentCategory, shouldAddComponentToData } = action.payload;\n\n const newSchema: Component = {\n uid: uid as Internal.UID.Component,\n isTemporary: true,\n category: componentCategory,\n schema: {\n ...data,\n attributes: [],\n },\n };\n\n state.components[uid as string] = newSchema;\n\n if (shouldAddComponentToData) {\n state.modifiedData.components[uid as string] = newSchema;\n }\n },\n createSchema: (state, action: PayloadAction<CreateSchemaPayload>) => {\n const { uid, data } = action.payload;\n\n const newSchema: ContentType = {\n uid: uid as Internal.UID.ContentType,\n isTemporary: true,\n schema: {\n ...data,\n attributes: [],\n },\n };\n\n state.contentTypes[uid] = newSchema;\n },\n editAttribute: (state, action: PayloadAction<EditAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid, initialAttribute } = action.payload;\n const { name, ...rest } = attributeToSet;\n\n const initialAttributeName = initialAttribute.name;\n const pathToDataToEdit = ['component', 'contentType'].includes(forTarget)\n ? [forTarget]\n : [forTarget, targetUid];\n\n const initialAttributeIndex = findAttributeIndex(\n get(state, ['modifiedData', ...pathToDataToEdit]),\n initialAttributeName\n );\n\n const isEditingRelation = rest.type === 'relation';\n\n if (!isEditingRelation) {\n set(\n state,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes', initialAttributeIndex],\n attributeToSet\n );\n\n return;\n }\n\n const updatedAttributes: AttributeType[] = get(state, [\n 'modifiedData',\n ...pathToDataToEdit,\n 'schema',\n 'attributes',\n ]).slice();\n\n // First create the current relation attribute updated\n const toSet = {\n name,\n relation: rest.relation,\n target: rest.target,\n targetAttribute: rest.targetAttribute,\n type: 'relation',\n } as AttributeType;\n\n if (rest.private) {\n toSet.private = rest.private;\n }\n\n if (rest.pluginOptions) {\n toSet.pluginOptions = rest.pluginOptions;\n }\n\n const currentAttributeIndex = updatedAttributes.findIndex((value: AttributeType) => {\n return value.name !== undefined && value.name === initialAttribute.name;\n });\n\n // First set it in the updatedAttributes\n if (currentAttributeIndex !== -1) {\n updatedAttributes.splice(currentAttributeIndex, 1, toSet);\n }\n\n let oppositeAttributeNameToRemove: string | null = null;\n let oppositeAttributeNameToUpdate: string | null = null;\n let oppositeAttributeToCreate: AttributeType | null = null;\n let initialOppositeAttribute = null;\n\n const currentUid = get(state, ['modifiedData', ...pathToDataToEdit, 'uid']);\n const didChangeTargetRelation = initialAttribute.target !== rest.target;\n const didCreateInternalRelation = rest.target === currentUid;\n const relationType = getRelationType(rest.relation, rest.targetAttribute);\n const initialRelationType = getRelationType(\n initialAttribute.relation,\n initialAttribute.targetAttribute\n );\n const hadInternalRelation = initialAttribute.target === currentUid;\n const didChangeRelationType = initialRelationType !== relationType;\n const shouldRemoveOppositeAttributeBecauseOfTargetChange =\n didChangeTargetRelation &&\n !didCreateInternalRelation &&\n hadInternalRelation &&\n isEditingRelation;\n const shouldRemoveOppositeAttributeBecauseOfRelationTypeChange =\n didChangeRelationType &&\n hadInternalRelation &&\n ['oneWay', 'manyWay'].includes(relationType!) &&\n isEditingRelation;\n const shouldUpdateOppositeAttributeBecauseOfRelationTypeChange =\n !ONE_SIDE_RELATIONS.includes(initialRelationType!) &&\n !ONE_SIDE_RELATIONS.includes(relationType!) &&\n hadInternalRelation &&\n didCreateInternalRelation &&\n isEditingRelation;\n const shouldCreateOppositeAttributeBecauseOfRelationTypeChange =\n ONE_SIDE_RELATIONS.includes(initialRelationType!) &&\n !ONE_SIDE_RELATIONS.includes(relationType!) &&\n hadInternalRelation &&\n didCreateInternalRelation &&\n isEditingRelation;\n const shouldCreateOppositeAttributeBecauseOfTargetChange =\n didChangeTargetRelation &&\n didCreateInternalRelation &&\n !ONE_SIDE_RELATIONS.includes(relationType!);\n\n // Store opposite attribute name to remove at the end of the loop\n if (\n shouldRemoveOppositeAttributeBecauseOfTargetChange ||\n shouldRemoveOppositeAttributeBecauseOfRelationTypeChange\n ) {\n oppositeAttributeNameToRemove = initialAttribute.targetAttribute;\n }\n\n // In case of oneWay or manyWay relation there isn't an opposite attribute\n if (oppositeAttributeNameToRemove) {\n const indexToRemove = updatedAttributes.findIndex(\n (value) => value.name === oppositeAttributeNameToRemove\n );\n\n updatedAttributes.splice(indexToRemove, 1);\n }\n\n // In order to preserve plugin options need to get the initial opposite attribute settings\n if (!shouldRemoveOppositeAttributeBecauseOfTargetChange) {\n const initialTargetContentType = get(state, [\n 'initialContentTypes',\n initialAttribute.target,\n ]);\n\n if (initialTargetContentType) {\n const oppositeAttributeIndex = findAttributeIndex(\n initialTargetContentType,\n initialAttribute.targetAttribute\n );\n\n initialOppositeAttribute = get(state, [\n 'initialContentTypes',\n initialAttribute.target,\n 'schema',\n 'attributes',\n oppositeAttributeIndex,\n ]);\n }\n }\n\n // Create the opposite attribute\n if (\n shouldCreateOppositeAttributeBecauseOfRelationTypeChange ||\n shouldCreateOppositeAttributeBecauseOfTargetChange\n ) {\n oppositeAttributeToCreate = {\n name: rest.targetAttribute,\n relation: getOppositeRelation(relationType),\n target: rest.target,\n targetAttribute: name,\n type: 'relation',\n } as AttributeType;\n\n if (rest.private) {\n oppositeAttributeToCreate.private = rest.private;\n }\n\n if (initialOppositeAttribute && initialOppositeAttribute.pluginOptions) {\n oppositeAttributeToCreate.pluginOptions = initialOppositeAttribute.pluginOptions;\n }\n\n const indexOfInitialAttribute = updatedAttributes.findIndex(\n ({ name }) => name === initialAttribute.name\n );\n const indexOfUpdatedAttribute = updatedAttributes.findIndex(\n ({ name: attrName }) => name === attrName\n );\n\n const indexToInsert =\n (indexOfInitialAttribute === -1 ? indexOfUpdatedAttribute : indexOfInitialAttribute) + 1;\n\n updatedAttributes.splice(indexToInsert, 0, oppositeAttributeToCreate);\n }\n\n if (shouldUpdateOppositeAttributeBecauseOfRelationTypeChange) {\n oppositeAttributeNameToUpdate = initialAttribute.targetAttribute;\n\n oppositeAttributeToCreate = {\n name: rest.targetAttribute,\n relation: getOppositeRelation(relationType),\n target: rest.target,\n targetAttribute: name,\n type: 'relation',\n } as AttributeType;\n\n if (rest.private) {\n oppositeAttributeToCreate.private = rest.private;\n }\n\n if (initialOppositeAttribute && initialOppositeAttribute.pluginOptions) {\n oppositeAttributeToCreate.pluginOptions = initialOppositeAttribute.pluginOptions;\n }\n\n if (oppositeAttributeNameToUpdate) {\n const indexToUpdate = updatedAttributes.findIndex(\n ({ name }) => name === oppositeAttributeNameToUpdate\n );\n\n updatedAttributes.splice(indexToUpdate, 1, oppositeAttributeToCreate);\n }\n }\n\n set(state, ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'], updatedAttributes);\n },\n editCustomFieldAttribute: (state, action: PayloadAction<EditCustomFieldAttributePayload>) => {\n const { forTarget, targetUid, initialAttribute, attributeToSet } = action.payload;\n\n const initialAttributeName = initialAttribute.name;\n const pathToDataToEdit = ['component', 'contentType'].includes(forTarget)\n ? [forTarget]\n : [forTarget, targetUid];\n\n const initialAttributeIndex = findAttributeIndex(\n get(state, ['modifiedData', ...pathToDataToEdit]),\n initialAttributeName\n );\n\n set(\n state,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes', initialAttributeIndex],\n attributeToSet\n );\n },\n updateInitialState: (state) => {\n state.initialData = state.modifiedData;\n },\n deleteNotSavedType: (state) => {\n // Doing so will also reset the modified and the initial data\n state.contentTypes = state.initialContentTypes;\n state.components = state.initialComponents;\n },\n reloadPlugin: () => {\n return initialState;\n },\n removeComponentFromDynamicZone: (\n state,\n action: PayloadAction<RemoveComponentFromDynamicZonePayload>\n ) => {\n const { dzName, componentToRemoveIndex } = action.payload;\n\n const dzAttributeIndex = findAttributeIndex(state.modifiedData.contentType, dzName);\n\n if (state.modifiedData.contentType) {\n state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components.splice(\n componentToRemoveIndex,\n 1\n );\n }\n },\n removeField: (state, action: PayloadAction<RemoveFieldPayload>) => {\n const { mainDataKey, attributeToRemoveName } = action.payload;\n const pathToAttributes = ['modifiedData', mainDataKey, 'schema', 'attributes'];\n const attributeToRemoveIndex = findAttributeIndex(\n state.modifiedData[mainDataKey],\n attributeToRemoveName\n );\n\n const pathToAttributeToRemove = [...pathToAttributes, attributeToRemoveIndex];\n const attributeToRemoveData = get(state, pathToAttributeToRemove);\n const isRemovingRelationAttribute = attributeToRemoveData.type === 'relation';\n // Only content types can have relations with themselves since\n // components can only have oneWay or manyWay relations\n const canTheAttributeToRemoveHaveARelationWithItself = mainDataKey === 'contentType';\n\n if (isRemovingRelationAttribute && canTheAttributeToRemoveHaveARelationWithItself) {\n const { target, relation, targetAttribute } = attributeToRemoveData;\n const relationType = getRelationType(relation, targetAttribute);\n\n const uid = state.modifiedData.contentType?.uid;\n const shouldRemoveOppositeAttribute =\n target === uid && !ONE_SIDE_RELATIONS.includes(relationType!);\n\n if (shouldRemoveOppositeAttribute) {\n const attributes: AttributeType[] =\n state.modifiedData[mainDataKey]?.schema.attributes.slice();\n const nextAttributes = attributes.filter((attribute) => {\n if (attribute.name === attributeToRemoveName) {\n return false;\n }\n\n if (attribute.target === uid && attribute.targetAttribute === attributeToRemoveName) {\n return false;\n }\n\n return true;\n });\n\n const schema = state.modifiedData[mainDataKey];\n if (schema) {\n schema.schema.attributes = nextAttributes;\n }\n\n return;\n }\n }\n\n // Find all uid fields that have the targetField set to the field we are removing\n\n const uidFieldsToUpdate: string[] = state.modifiedData[\n mainDataKey\n ]!.schema.attributes.slice().reduce((acc: string[], current: AttributeType) => {\n if (current.type !== 'uid') {\n return acc;\n }\n\n if (current.targetField !== attributeToRemoveName) {\n return acc;\n }\n\n acc.push(current.name as string);\n\n return acc;\n }, []);\n\n uidFieldsToUpdate.forEach((fieldName) => {\n const fieldIndex = findAttributeIndex(state.modifiedData[mainDataKey], fieldName);\n\n delete state.modifiedData[mainDataKey]?.schema.attributes[fieldIndex].targetField;\n });\n\n state.modifiedData[mainDataKey]?.schema.attributes.splice(attributeToRemoveIndex, 1);\n },\n removeFieldFromDisplayedComponent: (\n state,\n action: PayloadAction<RemoveFieldFromDisplayedComponentPayload>\n ) => {\n const { attributeToRemoveName, componentUid } = action.payload;\n\n const attributeToRemoveIndex = findAttributeIndex(\n state.modifiedData.components?.[componentUid],\n attributeToRemoveName\n );\n\n state.modifiedData.components?.[componentUid]?.schema?.attributes?.splice(\n attributeToRemoveIndex,\n 1\n );\n },\n setModifiedData: (state, action: PayloadAction<SetModifiedDataPayload>) => {\n const { schemaToSet, hasJustCreatedSchema } = action.payload;\n\n const schema = {\n ...DEFAULT_MODIFIED_DATA,\n ...schemaToSet,\n };\n\n state.initialData = schema;\n state.modifiedData = schema;\n\n // Reset the state with the initial data\n // All created components and content types will be lost\n if (!hasJustCreatedSchema) {\n state.components = state.initialComponents;\n state.contentTypes = state.initialContentTypes;\n }\n },\n updateSchema: (state, action: PayloadAction<UpdateSchemaPayload>) => {\n const { data, schemaType } = action.payload;\n\n const schema = state.modifiedData[schemaType];\n if (!schema) {\n return;\n }\n\n schema.schema.displayName = data.displayName;\n\n if (schemaType === 'component') {\n const { uid } = action.payload;\n\n schema.category = data.category;\n schema.schema.icon = data.icon;\n const addedComponent = current(schema);\n state.components[uid] = addedComponent as Component;\n } else {\n schema.schema.kind = data.kind;\n }\n },\n },\n});\n\nexport const { reducer, actions } = slice;\nexport { initialState };\n","import slugify from '@sindresorhus/slugify';\n\nexport const nameToSlug = (name: string) => slugify(name, { separator: '-' });\n","import { nameToSlug } from '../../../utils/nameToSlug';\n\nimport type { Internal } from '@strapi/types';\n\nconst createUid = (name: string): Internal.UID.ContentType => {\n const modelName = nameToSlug(name);\n return `api::${modelName}.${modelName}`;\n};\n\n// From `content-type-builder/services/Components/createComponentUid`\nconst createComponentUid = (name: string, category: string): Internal.UID.Component => {\n return `${nameToSlug(category)}.${nameToSlug(name)}`;\n};\n\nexport { createComponentUid, createUid };\n","export const customFieldDefaultOptionsReducer = (acc: any, option: any) => {\n if (option.items) {\n return option.items.reduce(customFieldDefaultOptionsReducer, acc);\n }\n\n if ('defaultValue' in option) {\n const { name, defaultValue } = option;\n acc.push({ name, defaultValue });\n }\n\n return acc;\n};\n","/* eslint-disable no-confusing-arrow */\n\nimport type { Schema } from '@strapi/types';\n\nconst shouldPluralizeName = (nature: Schema.Attribute.RelationKind.Any) =>\n ['manyToMany', 'oneToMany', 'manyWay'].includes(nature) ? 2 : 1;\n\nconst shouldPluralizeTargetAttribute = (nature: Schema.Attribute.RelationKind.Any) =>\n ['manyToMany', 'manyToOne'].includes(nature) ? 2 : 1;\n\nexport { shouldPluralizeName, shouldPluralizeTargetAttribute };\n","import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema } from '@strapi/types';\n\ntype State = {\n formErrors: Record<string, any>;\n modifiedData: Record<string, any>;\n initialData: Record<string, any>;\n componentToCreate: Record<string, any>;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: any;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n options?: Record<string, any>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n options?: Record<string, any>;\n};\n\ntype SetDataToEditPayload = {\n data: Record<string, any>;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: Record<string, any>;\n }\n | {\n isEditing?: false;\n modifiedDataToSetForEditing: Record<string, any>;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, any>;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: Record<string, any>;\n }\n | {\n isEditing?: false;\n modifiedDataToSetForEditing: Record<string, any>;\n customField: Record<string, any>;\n options?: Record<string, any>;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: Record<string, any>;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, any>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = Boolean(obj.default);\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name;\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n if (isEditing) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n if (isEditing) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = action.payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }: { name: string; defaultValue: string }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n","import { reducer as dataManagerProviderReducer } from './components/DataManagerProvider/reducer';\nimport { reducer as formModalReducer } from './components/FormModal/reducer';\nimport { pluginId } from './pluginId';\n\nexport const reducers = {\n [`${pluginId}_formModal`]: formModalReducer,\n [`${pluginId}_dataManagerProvider`]: dataManagerProviderReducer,\n};\n","import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport * as yup from 'yup';\n// TODO V5 Convert any into real types\nexport const formsAPI: any = {\n components: {\n inputs: {} as Record<string, any>,\n add({ id, component }: { id: string; component: any }) {\n if (!this.inputs[id]) {\n this.inputs[id] = component;\n }\n },\n },\n types: {\n attribute: {\n // test: {\n // validators: [],\n // form: {\n // advanced: [\n // /* cb */\n // ],\n // base: [\n // /* cb */\n // ],\n // },\n // },\n },\n contentType: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n component: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n },\n contentTypeSchemaMutations: [],\n addContentTypeSchemaMutation(cb: any) {\n this.contentTypeSchemaMutations.push(cb);\n },\n extendContentType({ validator, form: { advanced, base } }: any) {\n const { contentType } = this.types;\n\n if (validator) {\n contentType.validators.push(validator);\n }\n contentType.form.advanced.push(advanced);\n contentType.form.base.push(base);\n },\n extendFields(fields: any, { validator, form: { advanced, base } }: any) {\n const formType = this.types.attribute;\n\n fields.forEach((field: any) => {\n if (!formType[field]) {\n formType[field] = {\n validators: [],\n form: {\n advanced: [\n /* cb */\n ],\n base: [\n /* cb */\n ],\n },\n };\n }\n\n if (validator) {\n formType[field].validators.push(validator);\n }\n formType[field].form.advanced.push(advanced);\n formType[field].form.base.push(base);\n });\n },\n\n getAdvancedForm(target: any, props = null) {\n const sectionsToAdd = get(this.types, [...target, 'form', 'advanced'], []).reduce(\n (acc: any, current: any) => {\n const sections = current(props);\n\n return [...acc, ...sections];\n },\n []\n );\n\n return sectionsToAdd;\n },\n\n makeCustomFieldValidator(attributeShape: any, validator: any, ...validatorArgs: any) {\n // When no validator, return the attribute shape\n if (!validator) return attributeShape;\n\n // Otherwise extend the shape with the provided validator\n return attributeShape.shape({ options: yup.object().shape(validator(validatorArgs)) });\n },\n\n makeValidator(target: any, initShape: any, ...args: any) {\n const validators = get(this.types, [...target, 'validators'], []);\n\n const pluginOptionsShape = validators.reduce((acc: any, current: any) => {\n const pluginOptionShape = current(args);\n\n return { ...acc, ...pluginOptionShape };\n }, {});\n\n return initShape.shape({ pluginOptions: yup.object().shape(pluginOptionsShape) });\n },\n mutateContentTypeSchema(data: Record<string, unknown>, initialData: Record<string, unknown>) {\n let enhancedData: any = cloneDeep(data);\n\n const refData: any = cloneDeep(initialData);\n\n this.contentTypeSchemaMutations.forEach((cb: any) => {\n enhancedData = cb(enhancedData, refData);\n });\n\n return enhancedData;\n },\n};\n","type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n","import * as React from 'react';\n\nimport { Box, Flex, Typography, Link } from '@strapi/design-system';\nimport { Clock, ArrowClockwise } from '@strapi/icons';\nimport { createPortal } from 'react-dom';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\n/**\n * TODO: realistically a lot of this logic is isolated to the `core/admin` package.\n * However, we want to expose the `useAutoReloadOverlayBlocker` hook to the plugins.\n *\n * Therefore, in V5 we should move this logic back to the `core/admin` package & export\n * the hook from that package and re-export here. For now, let's keep it all together\n * because it's easier to diagnose and we're not using a million refs because we don't\n * understand what's going on.\n */\nexport interface AutoReloadOverlayBlockerConfig {\n title?: string;\n description?: string;\n icon?: 'reload' | 'time';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerContextValue {\n lockAppWithAutoreload?: (config?: AutoReloadOverlayBlockerConfig) => void;\n unlockAppWithAutoreload?: () => void;\n}\n\nconst AutoReloadOverlayBlockerContext = React.createContext<AutoReloadOverlayBlockerContextValue>(\n {}\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerProviderProps {\n children: React.ReactNode;\n}\n\nconst MAX_ELAPSED_TIME = 30 * 1000;\n\nconst AutoReloadOverlayBlockerProvider = ({ children }: AutoReloadOverlayBlockerProviderProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [config, setConfig] = React.useState<AutoReloadOverlayBlockerConfig>({});\n const [failed, setFailed] = React.useState(false);\n\n const lockAppWithAutoreload = React.useCallback((config: AutoReloadOverlayBlockerConfig = {}) => {\n setIsOpen(true);\n setConfig(config);\n }, []);\n\n const unlockAppWithAutoreload = React.useCallback(() => {\n setIsOpen(false);\n setConfig({});\n }, []);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (isOpen) {\n const timeout = setTimeout(() => {\n setFailed(true);\n }, MAX_ELAPSED_TIME);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen]);\n\n let displayedIcon = config?.icon || 'reload';\n\n let description = {\n id: config?.description || 'components.OverlayBlocker.description',\n defaultMessage:\n \"You're using a feature that needs the server to restart. The page will reload automatically.\",\n };\n\n let title = {\n id: config?.title || 'components.OverlayBlocker.title',\n defaultMessage: 'Waiting for restart',\n };\n\n if (failed) {\n displayedIcon = 'time';\n\n description = {\n id: 'components.OverlayBlocker.description.serverError',\n defaultMessage: 'The server should have restarted, please check your logs in the terminal.',\n };\n\n title = {\n id: 'components.OverlayBlocker.title.serverError',\n defaultMessage: 'The restart is taking longer than expected',\n };\n }\n\n const autoReloadValue = React.useMemo(\n () => ({\n lockAppWithAutoreload,\n unlockAppWithAutoreload,\n }),\n [lockAppWithAutoreload, unlockAppWithAutoreload]\n );\n\n return (\n <AutoReloadOverlayBlockerContext.Provider value={autoReloadValue}>\n <Blocker\n displayedIcon={displayedIcon}\n isOpen={isOpen}\n description={description}\n title={title}\n />\n {children}\n </AutoReloadOverlayBlockerContext.Provider>\n );\n};\n\ninterface BlockerProps {\n displayedIcon: string;\n description: MessageDescriptor;\n isOpen: boolean;\n title: MessageDescriptor;\n}\n\nconst Blocker = ({ displayedIcon, description, title, isOpen }: BlockerProps) => {\n const { formatMessage } = useIntl();\n\n // eslint-disable-next-line no-undef\n return isOpen && globalThis?.document?.body\n ? createPortal(\n <Overlay id=\"autoReloadOverlayBlocker\" direction=\"column\" alignItems=\"center\" gap={6}>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage(title)}\n </Typography>\n <Typography tag=\"h2\" textColor=\"neutral600\" fontSize={4} fontWeight=\"regular\">\n {formatMessage(description)}\n </Typography>\n </Flex>\n {displayedIcon === 'reload' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <LoaderReload width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n {displayedIcon === 'time' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <Clock width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n <Box marginTop={2}>\n <Link href=\"https://docs.strapi.io\" isExternal>\n {formatMessage({\n id: 'global.documentation',\n defaultMessage: 'Read the documentation',\n })}\n </Link>\n </Box>\n </Overlay>,\n // eslint-disable-next-line no-undef\n globalThis.document.body\n )\n : null;\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n `;\n\nconst LoaderReload = styled(ArrowClockwise)`\n animation: ${rotation} 1s infinite linear;\n`;\n\nconst Overlay = styled(Flex)`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n /* TODO: set this up in the theme for consistence z-index values */\n z-index: 1140;\n padding-top: 16rem;\n\n & > * {\n position: relative;\n z-index: 1;\n }\n\n &:before {\n content: '';\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: ${({ theme }) => theme.colors.neutral0};\n opacity: 0.9;\n }\n`;\n\nconst IconBox = styled(Box)`\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n > path {\n fill: ${({ theme }) => theme.colors.primary600} !important;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\nconst useAutoReloadOverlayBlocker = () => React.useContext(AutoReloadOverlayBlockerContext);\n\nexport { AutoReloadOverlayBlockerProvider, useAutoReloadOverlayBlocker };\n","import { Layout } from '@strapi/icons';\n\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { reducers } from './reducers';\nimport { formsAPI } from './utils/formAPI';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: StrapiApp) {\n app.addReducers(reducers);\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: Layout,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content-Type Builder',\n },\n permissions: PERMISSIONS.main,\n Component: () => import('./pages/App'),\n position: 5,\n });\n\n app.registerPlugin({\n id: pluginId,\n name: pluginId,\n // Internal APIs exposed by the CTB for the other plugins to use\n apis: {\n forms: formsAPI,\n },\n });\n },\n bootstrap() {},\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\nexport * from './exports';\n"],"names":["PERMISSIONS","main","action","subject","MAX_COMPONENT_DEPTH","pluginId","getRelationType","relation","targetAttribute","hasNotTargetAttribute","undefined","makeUnique","array","Set","retrieveComponentsFromSchema","attributes","allComponentsData","allComponents","reduce","acc","current","type","currentComponentName","component","push","currentComponentAttributes","get","dynamicZoneComponents","components","componentsFromDZComponents","acc2","currentUid","compoAttrs","DEFAULT_MODIFIED_DATA","contentTypes","initialState","initialComponents","initialContentTypes","initialData","modifiedData","reservedNames","isLoading","ONE_SIDE_RELATIONS","getOppositeRelation","originalRelation","findAttributeIndex","schema","attributeToFind","findIndex","name","slice","createSlice","reducers","init","state","payload","uid","contentType","Object","keys","key","addAttribute","attributeToSet","forTarget","targetUid","shouldAddComponentToData","rest","createComponent","pathToDataToEdit","includes","currentAttributes","updatedAttributes","set","componentToAddUID","componentToAdd","isTemporaryComponent","isTemporary","hasComponentAlreadyBeenAdded","nestedComponents","nestedComponentsToAddInModifiedData","filter","compoUID","forEach","compoSchema","isCreatingRelationAttribute","target","relationType","oppositeAttribute","private","attributesToSet","addCreatedComponentToDynamicZone","dynamicZoneTarget","componentsToAdd","dzAttributeIndex","componentUid","addCustomFieldAttribute","changeDynamicZoneComponents","newComponents","currentDZComponents","updatedComponents","createComponentSchema","data","componentCategory","newSchema","category","createSchema","editAttribute","initialAttribute","initialAttributeName","initialAttributeIndex","isEditingRelation","toSet","pluginOptions","currentAttributeIndex","value","splice","oppositeAttributeNameToRemove","oppositeAttributeNameToUpdate","oppositeAttributeToCreate","initialOppositeAttribute","didChangeTargetRelation","didCreateInternalRelation","initialRelationType","hadInternalRelation","didChangeRelationType","shouldRemoveOppositeAttributeBecauseOfTargetChange","shouldRemoveOppositeAttributeBecauseOfRelationTypeChange","shouldUpdateOppositeAttributeBecauseOfRelationTypeChange","shouldCreateOppositeAttributeBecauseOfRelationTypeChange","shouldCreateOppositeAttributeBecauseOfTargetChange","indexToRemove","initialTargetContentType","oppositeAttributeIndex","indexOfInitialAttribute","indexOfUpdatedAttribute","attrName","indexToInsert","indexToUpdate","editCustomFieldAttribute","updateInitialState","deleteNotSavedType","reloadPlugin","removeComponentFromDynamicZone","dzName","componentToRemoveIndex","removeField","mainDataKey","attributeToRemoveName","pathToAttributes","attributeToRemoveIndex","pathToAttributeToRemove","attributeToRemoveData","isRemovingRelationAttribute","canTheAttributeToRemoveHaveARelationWithItself","shouldRemoveOppositeAttribute","nextAttributes","attribute","uidFieldsToUpdate","targetField","fieldName","fieldIndex","removeFieldFromDisplayedComponent","setModifiedData","schemaToSet","hasJustCreatedSchema","updateSchema","schemaType","displayName","icon","addedComponent","kind","reducer","actions","nameToSlug","slugify","separator","createUid","modelName","createComponentUid","customFieldDefaultOptionsReducer","option","items","defaultValue","shouldPluralizeName","nature","shouldPluralizeTargetAttribute","formErrors","componentToCreate","isCreatingComponentWhileAddingAField","onChange","obj","hasDefaultValue","Boolean","default","length","previousType","onChangeRelationTarget","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","relationToSet","nameToSet","pluralize","snakeCase","currentTargetAttribute","targetAttributeToSet","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","step","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","formModalReducer","dataManagerProviderReducer","formsAPI","inputs","add","id","types","validators","form","contentTypeSchemaMutations","addContentTypeSchemaMutation","cb","extendContentType","validator","extendFields","fields","formType","field","getAdvancedForm","props","sectionsToAdd","sections","makeCustomFieldValidator","attributeShape","validatorArgs","shape","yup","object","makeValidator","initShape","args","pluginOptionsShape","pluginOptionShape","mutateContentTypeSchema","enhancedData","cloneDeep","refData","prefixPluginTranslations","trad","AutoReloadOverlayBlockerContext","React","createContext","MAX_ELAPSED_TIME","AutoReloadOverlayBlockerProvider","children","isOpen","setIsOpen","useState","config","setConfig","failed","setFailed","lockAppWithAutoreload","useCallback","unlockAppWithAutoreload","useEffect","timeout","setTimeout","clearTimeout","displayedIcon","description","defaultMessage","title","autoReloadValue","useMemo","_jsxs","Provider","_jsx","Blocker","formatMessage","useIntl","globalThis","document","body","createPortal","Overlay","direction","alignItems","gap","Flex","Typography","tag","variant","textColor","fontSize","fontWeight","IconBox","padding","background","borderColor","LoaderReload","width","height","Clock","Box","marginTop","Link","href","isExternal","rotation","keyframes","styled","ArrowClockwise","theme","colors","neutral0","primary600","useAutoReloadOverlayBlocker","useContext","register","app","addReducers","addMenuLink","to","Layout","intlLabel","permissions","Component","position","registerPlugin","apis","forms","bootstrap","registerTrads","locales","importedTrads","Promise","all","map","locale","then","catch","resolve"],"mappings":";;;;;;;;;;;;;;;;;MAAaA,WAAc,GAAA;;;;;IAKzBC,IAAM,EAAA;AAAC,QAAA;YAAEC,MAAQ,EAAA,mCAAA;YAAqCC,OAAS,EAAA;AAAK;AAAE;AACxE;AAEO,MAAMC,sBAAsB;;ACR5B,MAAMC,WAAW;;ACExB;;;AAGC,IACM,MAAMC,eAAkB,GAAA,CAC7BC,QACAC,EAAAA,eAAAA,GAAAA;IAEA,MAAMC,qBAAAA,GAAwBD,eAAoBE,KAAAA,SAAAA,IAAaF,eAAoB,KAAA,IAAA;IAEnF,IAAID,QAAAA,KAAa,cAAcE,qBAAuB,EAAA;QACpD,OAAO,QAAA;AACT;IAEA,IAAIF,QAAAA,KAAa,eAAeE,qBAAuB,EAAA;QACrD,OAAO,SAAA;AACT;IAEA,OAAOF,QAAAA;AACT;;ACrBMI,MAAAA,UAAAA,GAAa,CAAmBC,KAAoB,GAAA;AAAI,QAAA,GAAA,IAAIC,GAAID,CAAAA,KAAAA;AAAO;;ACOvEE,MAAAA,4BAAAA,GAA+B,CACnCC,UACAC,EAAAA,iBAAAA,GAAAA;AAEA,IAAA,MAAMC,aAA0CF,GAAAA,UAAAA,CAAWG,MAAM,CAAC,CAACC,GAAUC,EAAAA,OAAAA,GAAAA;QAC3E,MAAMC,IAAAA,GAAOD,QAAQC,IAAI;AACzB,QAAA,IAAIA,SAAS,WAAa,EAAA;YACxB,MAAMC,oBAAAA,GAAuBF,QAAQG,SAAS;;AAE9CJ,YAAAA,GAAAA,CAAIK,IAAI,CAACF,oBAAAA,CAAAA;YAET,MAAMG,0BAAAA,GAA6BC,IACjCV,iBACA,EAAA;AAACM,gBAAAA,oBAAAA;AAAsB,gBAAA,QAAA;AAAU,gBAAA;AAAa,aAAA,EAC9C,EAAE,CAAA;;YAIJH,GAAIK,CAAAA,IAAI,CAAIV,GAAAA,4BAAAA,CAA6BW,0BAA4BT,EAAAA,iBAAAA,CAAAA,CAAAA;AACvE;AAEA,QAAA,IAAIK,SAAS,aAAe,EAAA;YAC1B,MAAMM,qBAAAA,GAAwBP,QAAQQ,UAAU;AAChD,YAAA,MAAMC,0BAA6BF,GAAAA,qBAAAA,CAAsBT,MAAM,CAAC,CAACY,IAAWC,EAAAA,UAAAA,GAAAA;gBAC1E,MAAMC,UAAAA,GAAaN,IAAIV,iBAAmB,EAAA;AAACe,oBAAAA,UAAAA;AAAY,oBAAA,QAAA;AAAU,oBAAA;AAAa,iBAAA,EAAE,EAAE,CAAA;gBAElF,OAAO;AAAID,oBAAAA,GAAAA,IAAAA;AAAShB,oBAAAA,GAAAA,4BAAAA,CAA6BkB,UAAYhB,EAAAA,iBAAAA;AAAmB,iBAAA;AAClF,aAAA,EAAG,EAAE,CAAA;YAEL,OAAO;AAAIG,gBAAAA,GAAAA,GAAAA;AAAQQ,gBAAAA,GAAAA,qBAAAA;AAA0BE,gBAAAA,GAAAA;AAA2B,aAAA;AAC1E;QAEA,OAAOV,GAAAA;AACT,KAAA,EAAG,EAAE,CAAA;AAEL,IAAA,OAAOR,UAAmCM,CAAAA,aAAAA,CAAAA;AAC5C;;AClBA,MAAMgB,qBAAwB,GAAA;AAC5BL,IAAAA,UAAAA,EAAY,EAAC;AACbM,IAAAA,YAAAA,EAAc;AAChB,CAAA;AAEA,MAAMC,cAAqC,GAAA;AACzCP,IAAAA,UAAAA,EAAY,EAAC;AACbM,IAAAA,YAAAA,EAAc,EAAC;AACfE,IAAAA,iBAAAA,EAAmB,EAAC;AACpBC,IAAAA,mBAAAA,EAAqB,EAAC;AACtBC,IAAAA,WAAAA,EAAa,EAAC;IACdC,YAAc,EAAA;AACZ,QAAA,GAAGN;AACL,KAAA;AACAO,IAAAA,aAAAA,EAAe,EAAC;IAChBC,SAAW,EAAA;AACb;AAEA,MAAMC,kBAAqB,GAAA;AAAC,IAAA,QAAA;AAAU,IAAA;AAAU,CAAA;AAEhD,MAAMC,sBAAsB,CAACC,gBAAAA,GAAAA;AAC3B,IAAA,IAAIA,qBAAqB,WAAa,EAAA;QACpC,OAAO,WAAA;AACT;AAEA,IAAA,IAAIA,qBAAqB,WAAa,EAAA;QACpC,OAAO,WAAA;AACT;IAEA,OAAOA,gBAAAA;AACT,CAAA;AAEA,MAAMC,kBAAAA,GAAqB,CAACC,MAAaC,EAAAA,eAAAA,GAAAA;AACvC,IAAA,OAAOD,MAAOA,CAAAA,MAAM,CAAC/B,UAAU,CAACiC,SAAS,CACvC,CAAC,EAAEC,IAAI,EAAoB,GAAKA,IAASF,KAAAA,eAAAA,CAAAA;AAE7C,CAAA;AAwFA,MAAMG,UAAQC,WAAY,CAAA;IACxBF,IAAM,EAAA,cAAA;AACNd,kBAAAA,cAAAA;IACAiB,QAAU,EAAA;AACRC,QAAAA,IAAAA,EAAM,CAACC,KAAOpD,EAAAA,MAAAA,GAAAA;YACZ,MAAM,EAAE0B,UAAU,EAAEM,YAAY,EAAEM,aAAa,EAAE,GAAGtC,MAAAA,CAAOqD,OAAO;AAElED,YAAAA,KAAAA,CAAM1B,UAAU,GAAGA,UAAAA;AACnB0B,YAAAA,KAAAA,CAAMlB,iBAAiB,GAAGR,UAAAA;AAC1B0B,YAAAA,KAAAA,CAAMjB,mBAAmB,GAAGH,YAAAA;AAC5BoB,YAAAA,KAAAA,CAAMpB,YAAY,GAAGA,YAAAA;AACrBoB,YAAAA,KAAAA,CAAMd,aAAa,GAAGA,aAAAA;AACtBc,YAAAA,KAAAA,CAAMb,SAAS,GAAG,KAAA;AAElBa,YAAAA,KAAAA,CAAMf,YAAY,GAAG;AACnB,gBAAA,GAAGN,qBAAqB;AACxBV,gBAAAA,SAAAA,EAAW+B,KAAMf,CAAAA,YAAY,CAAChB,SAAS,GACnCK,UAAU,CAAC0B,KAAMf,CAAAA,YAAY,CAAChB,SAAS,CAACiC,GAAG,CAAC,GAC5C9C,SAAAA;AACJ+C,gBAAAA,WAAAA,EAAaH,KAAMf,CAAAA,YAAY,CAACkB,WAAW,GACvCvB,YAAY,CAACoB,KAAMf,CAAAA,YAAY,CAACkB,WAAW,CAACD,GAAG,CAAC,GAChD9C,SAAAA;AACJkB,gBAAAA,UAAAA,EAAY0B,MAAMf,YAAY,CAACX,UAAU,GACrC8B,OAAOC,IAAI,CAACL,KAAMf,CAAAA,YAAY,CAACX,UAAU,CAAA,CAAEV,MAAM,CAC/C,CAACC,GAAKyC,EAAAA,GAAAA,GAAAA;AACJzC,oBAAAA,GAAG,CAACyC,GAAAA,CAAI,GAAGhC,UAAU,CAACgC,GAAI,CAAA;oBAC1B,OAAOzC,GAAAA;iBAET,EAAA,MAEF,EAAC;AACLe,gBAAAA,YAAAA,EAAcoB,MAAMf,YAAY,CAACL,YAAY,GACzCwB,OAAOC,IAAI,CAACL,KAAMf,CAAAA,YAAY,CAACL,YAAY,CAAA,CAAEhB,MAAM,CACjD,CAACC,GAAKyC,EAAAA,GAAAA,GAAAA;AACJzC,oBAAAA,GAAG,CAACyC,GAAAA,CAAI,GAAG1B,YAAY,CAAC0B,GAAI,CAAA;oBAC5B,OAAOzC,GAAAA;iBAET,EAAA,MAEF;AACN,aAAA;YACAmC,KAAMhB,CAAAA,WAAW,GAAGgB,KAAAA,CAAMf,YAAY;AACxC,SAAA;AACAsB,QAAAA,YAAAA,EAAc,CAACP,KAAOpD,EAAAA,MAAAA,GAAAA;YACpB,MAAM,EAAE4D,cAAc,EAAEC,SAAS,EAAEC,SAAS,EAAEC,wBAAwB,EAAE,GAAG/D,MAAAA,CAAOqD,OAAO;AACzF,YAAA,MAAM,EAAEN,IAAI,EAAE,GAAGiB,MAAM,GAAGJ,cAAAA;AAE1B,YAAA,OAAOI,KAAKC,eAAe;AAE3B,YAAA,MAAMC,gBAAmB,GAAA;AAAC,gBAAA,WAAA;AAAa,gBAAA;aAAc,CAACC,QAAQ,CAACN,SAC3D,CAAA,GAAA;AAACA,gBAAAA;aAAU,GACX;AAACA,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA;YAE1B,MAAMM,iBAAAA,GAAoB5C,IACxB4B,KACA,EAAA;AAAC,gBAAA,cAAA;AAAmBc,gBAAAA,GAAAA,gBAAAA;AAAkB,gBAAA,QAAA;AAAU,gBAAA;aAAa,EAC7D,EAAE,EACFlB,KAAK,EAAA;;AAGP,YAAA,MAAMqB,iBAAoB,GAAA;AAAID,gBAAAA,GAAAA,iBAAAA;AAAmB,gBAAA;AAAE,oBAAA,GAAGJ,IAAI;AAAEjB,oBAAAA;AAAK;AAAE,aAAA;AAEnEuB,YAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAmBc,gBAAAA,GAAAA,gBAAAA;AAAkB,gBAAA,QAAA;AAAU,gBAAA;aAAa,EAAEG,iBAAAA,CAAAA;AAE1E,YAAA,IAAIN,wBAA0B,EAAA;gBAC5B,MAAMQ,iBAAAA,GAAoBP,KAAK3C,SAAS;AACxC,gBAAA,MAAMmD,cAAiBpB,GAAAA,KAAAA,CAAM1B,UAAU,CAAC6C,iBAAkB,CAAA;AAC1D,gBAAA,MAAME,uBAAuBD,cAAgBE,EAAAA,WAAAA;gBAC7C,MAAMC,4BAAAA,GACJvB,MAAMf,YAAY,CAACX,UAAU,GAAG6C,kBAAkB,KAAK/D,SAAAA;AAEzD,gBAAA,IAAIiE,wBAAwBE,4BAA8B,EAAA;AACxD,oBAAA;AACF;;AAGA,gBAAA,IAAI,CAACvB,KAAAA,CAAMf,YAAY,CAACX,UAAU,EAAE;AAClC0B,oBAAAA,KAAAA,CAAMf,YAAY,CAACX,UAAU,GAAG,EAAC;AACnC;;AAGA0B,gBAAAA,KAAAA,CAAMf,YAAY,CAACX,UAAU,CAAC6C,kBAAkB,GAAGC,cAAAA;gBAEnD,MAAMI,gBAAAA,GAAmBhE,6BACvB4D,cAAe5B,CAAAA,MAAM,CAAC/B,UAAU,EAChCuC,MAAM1B,UAAU,CAAA;;AAIlB,gBAAA,MAAMmD,mCAAsCD,GAAAA,gBAAAA,CAAiBE,MAAM,CACjE,CAACC,QAAAA,GAAAA;AACC,oBAAA,OAAOvD,IAAI4B,KAAO,EAAA;AAAC,wBAAA,cAAA;AAAgB,wBAAA,YAAA;AAAc2B,wBAAAA;qBAAS,CAAMvE,KAAAA,SAAAA;AAClE,iBAAA,CAAA;gBAGFqE,mCAAoCG,CAAAA,OAAO,CAAC,CAACD,QAAAA,GAAAA;oBAC3C,MAAME,WAAAA,GAAczD,IAAI4B,KAAO,EAAA;AAAC,wBAAA,YAAA;AAAc2B,wBAAAA;AAAS,qBAAA,EAAE,EAAC,CAAA;oBAC1D,MAAML,WAAAA,GAAcO,WAAYP,CAAAA,WAAW,IAAI,KAAA;;AAG/C,oBAAA,IAAI,CAACA,WAAa,EAAA;AAChB,wBAAA,IAAI,CAACtB,KAAAA,CAAMf,YAAY,CAACX,UAAU,EAAE;AAClC0B,4BAAAA,KAAAA,CAAMf,YAAY,CAACX,UAAU,GAAG,EAAC;AACnC;AAEA0B,wBAAAA,KAAAA,CAAMf,YAAY,CAACX,UAAU,CAACqD,SAAS,GAAGE,WAAAA;AAC5C;AACF,iBAAA,CAAA;AAEA,gBAAA;AACF;YAEA,MAAMC,2BAAAA,GAA8BlB,IAAK7C,CAAAA,IAAI,KAAK,UAAA;AAElD,YAAA,IAAI+D,2BAA6B,EAAA;gBAC/B,MAAMC,MAAAA,GAASnB,KAAKmB,MAAM;gBAC1B,MAAM7E,eAAAA,GAAkB0D,IAAK1D,CAAAA,eAAe,IAAI,IAAA;gBAChD,MAAMD,QAAAA,GAAW2D,KAAK3D,QAAQ;gBAC9B,MAAM+E,YAAAA,GAAehF,gBAAgBC,QAAUC,EAAAA,eAAAA,CAAAA;gBAC/C,MAAMuB,UAAAA,GAAaL,IAAI4B,KAAO,EAAA;AAAC,oBAAA,cAAA;AAAmBc,oBAAAA,GAAAA,gBAAAA;AAAkB,oBAAA;AAAM,iBAAA,CAAA;;;gBAI1E,IACEF,IAAAA,CAAK7C,IAAI,KAAK,UAAA,IACdiE,iBAAiB,QACjBA,IAAAA,YAAAA,KAAiB,SACjBD,IAAAA,MAAAA,KAAWtD,UACX,EAAA;AACA,oBAAA,MAAMwD,iBAAoB,GAAA;wBACxBtC,IAAMzC,EAAAA,eAAAA;AACND,wBAAAA,QAAAA,EAAUoC,mBAAoB2C,CAAAA,YAAAA,CAAAA;AAC9BD,wBAAAA,MAAAA;wBACA7E,eAAiByC,EAAAA,IAAAA;wBACjB5B,IAAM,EAAA;AACR,qBAAA;oBAEA,IAAI6C,IAAAA,CAAKsB,OAAO,EAAE;;wBAEhBD,iBAAkBC,CAAAA,OAAO,GAAGtB,IAAAA,CAAKsB,OAAO;AAC1C;AAEA,oBAAA,MAAMC,eAAkB,GAAA;AAAIlB,wBAAAA,GAAAA,iBAAAA;AAAmBgB,wBAAAA;AAAkB,qBAAA;AAEjEf,oBAAAA,GAAAA,CACElB,KACA,EAAA;AAAC,wBAAA,cAAA;AAAmBc,wBAAAA,GAAAA,gBAAAA;AAAkB,wBAAA,QAAA;AAAU,wBAAA;qBAAa,EAC7DqB,eAAAA,CAAAA;AAEJ;AACF;AACF,SAAA;AACAC,QAAAA,gCAAAA,EAAkC,CAChCpC,KACApD,EAAAA,MAAAA,GAAAA;AAEA,YAAA,MAAM,EAAEyF,iBAAiB,EAAEC,eAAe,EAAE,GAAG1F,OAAOqD,OAAO;AAE7D,YAAA,MAAMsC,mBAAmBhD,kBACvBS,CAAAA,KAAAA,CAAMf,YAAY,CAACkB,WAAW,EAC9BkC,iBAAAA,CAAAA;YAGFC,eAAgBV,CAAAA,OAAO,CAAC,CAACY,YAAAA,GAAAA;AACvB,gBAAA,IAAI,CAACxC,KAAAA,CAAMf,YAAY,CAACkB,WAAW,EAAE;AACnC,oBAAA;AACF;AAEA,gBAAA,IAAI,CAACH,KAAAA,CAAMf,YAAY,CAACkB,WAAW,CAACX,MAAM,CAAC/B,UAAU,CAAC8E,gBAAiB,CAAA,CAACjE,UAAU,EAAE;AAClF0B,oBAAAA,KAAAA,CAAMf,YAAY,CAACkB,WAAW,CAACX,MAAM,CAAC/B,UAAU,CAAC8E,gBAAiB,CAAA,CAACjE,UAAU,GAAG,EAAE;AACpF;AACA0B,gBAAAA,KAAAA,CAAMf,YAAY,CAACkB,WAAW,CAACX,MAAM,CAAC/B,UAAU,CAAC8E,gBAAiB,CAAA,CAACjE,UAAU,CAACJ,IAAI,CAChFsE,YAAAA,CAAAA;AAEJ,aAAA,CAAA;AACF,SAAA;AACAC,QAAAA,uBAAAA,EAAyB,CAACzC,KAAOpD,EAAAA,MAAAA,GAAAA;YAC/B,MAAM,EAAE4D,cAAc,EAAEC,SAAS,EAAEC,SAAS,EAAE,GAAG9D,MAAAA,CAAOqD,OAAO;AAC/D,YAAA,MAAM,EAAEN,IAAI,EAAE,GAAGiB,MAAM,GAAGJ,cAAAA;AAE1B,YAAA,MAAMM,gBAAmB,GAAA;AAAC,gBAAA,WAAA;AAAa,gBAAA;aAAc,CAACC,QAAQ,CAACN,SAC3D,CAAA,GAAA;AAACA,gBAAAA;aAAU,GACX;AAACA,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA;YAE1B,MAAMM,iBAAAA,GAAoB5C,IACxB4B,KACA,EAAA;AAAC,gBAAA,cAAA;AAAmBc,gBAAAA,GAAAA,gBAAAA;AAAkB,gBAAA,QAAA;AAAU,gBAAA;aAAa,EAC7D,EAAE,EACFlB,KAAK,EAAA;;AAGP,YAAA,MAAMqB,iBAAoB,GAAA;AAAID,gBAAAA,GAAAA,iBAAAA;AAAmB,gBAAA;AAAE,oBAAA,GAAGJ,IAAI;AAAEjB,oBAAAA;AAAK;AAAE,aAAA;AAEnEuB,YAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAmBc,gBAAAA,GAAAA,gBAAAA;AAAkB,gBAAA,QAAA;AAAU,gBAAA;aAAa,EAAEG,iBAAAA,CAAAA;AAC5E,SAAA;AACAyB,QAAAA,2BAAAA,EAA6B,CAC3B1C,KACApD,EAAAA,MAAAA,GAAAA;AAEA,YAAA,MAAM,EAAEyF,iBAAiB,EAAEM,aAAa,EAAE,GAAG/F,OAAOqD,OAAO;AAE3D,YAAA,MAAMsC,mBAAmBhD,kBACvBS,CAAAA,KAAAA,CAAMf,YAAY,CAACkB,WAAW,EAC9BkC,iBAAAA,CAAAA;AAGF,YAAA,MAAMO,mBACJ,GAAC5C,CAAAA,KAAAA,CAAMf,YAAY,CAACkB,WAAW,EAAEX,MAAAA,CAAO/B,UAAU,CAAC8E,gBAAiB,CAAD,EAAGjE,UAAU;AAElF,YAAA,MAAMuE,oBAAoBxF,UAAW,CAAA;AAAIuF,gBAAAA,GAAAA,mBAAAA;AAAwBD,gBAAAA,GAAAA;AAAc,aAAA,CAAA;AAE9E3C,YAAAA,CAAAA,KAAMf,CAAAA,YAAY,CAACkB,WAAW,EAAEX,MAAAA,CAAO/B,UAAU,CAAC8E,gBAAiB,CAAD,EAAGjE,UAAU,GAC9EuE,iBAAAA;;YAGF,MAAMrB,gBAAAA,GAAmBhE,4BACvBM,CAAAA,OAAAA,CAAQkC,KAAMf,CAAAA,YAAY,CAACkB,WAAW,EAAEX,MAAAA,CAAO/B,UAC/CuC,CAAAA,EAAAA,KAAAA,CAAM1B,UAAU,CAAA;;AAIlB,YAAA,MAAMmD,mCAAsCD,GAAAA,gBAAAA,CAAiBE,MAAM,CAAC,CAACC,QAAAA,GAAAA;AACnE,gBAAA,OAAOvD,IAAI4B,KAAO,EAAA;AAAC,oBAAA,cAAA;AAAgB,oBAAA,YAAA;AAAc2B,oBAAAA;iBAAS,CAAMvE,KAAAA,SAAAA;AAClE,aAAA,CAAA;YAEAqE,mCAAoCG,CAAAA,OAAO,CAAC,CAACD,QAAAA,GAAAA;gBAC3C,MAAME,WAAAA,GAAczD,IAAI4B,KAAO,EAAA;AAAC,oBAAA,YAAA;AAAc2B,oBAAAA;AAAS,iBAAA,EAAE,EAAC,CAAA;gBAC1D,MAAML,WAAAA,GAAcO,WAAYP,CAAAA,WAAW,IAAI,KAAA;;AAG/C,gBAAA,IAAI,CAACA,WAAa,EAAA;AAChB,oBAAA,IAAI,CAACtB,KAAAA,CAAMf,YAAY,CAACX,UAAU,EAAE;AAClC0B,wBAAAA,KAAAA,CAAMf,YAAY,CAACX,UAAU,GAAG,EAAC;AACnC;AACA0B,oBAAAA,KAAAA,CAAMf,YAAY,CAACX,UAAU,CAACqD,SAAS,GAAGE,WAAAA;AAC5C;AACF,aAAA,CAAA;AACF,SAAA;AACAiB,QAAAA,qBAAAA,EAAuB,CAAC9C,KAAOpD,EAAAA,MAAAA,GAAAA;YAC7B,MAAM,EAAEsD,GAAG,EAAE6C,IAAI,EAAEC,iBAAiB,EAAErC,wBAAwB,EAAE,GAAG/D,MAAAA,CAAOqD,OAAO;AAEjF,YAAA,MAAMgD,SAAuB,GAAA;gBAC3B/C,GAAKA,EAAAA,GAAAA;gBACLoB,WAAa,EAAA,IAAA;gBACb4B,QAAUF,EAAAA,iBAAAA;gBACVxD,MAAQ,EAAA;AACN,oBAAA,GAAGuD,IAAI;AACPtF,oBAAAA,UAAAA,EAAY;AACd;AACF,aAAA;YAEAuC,KAAM1B,CAAAA,UAAU,CAAC4B,GAAAA,CAAc,GAAG+C,SAAAA;AAElC,YAAA,IAAItC,wBAA0B,EAAA;AAC5BX,gBAAAA,KAAAA,CAAMf,YAAY,CAACX,UAAU,CAAC4B,IAAc,GAAG+C,SAAAA;AACjD;AACF,SAAA;AACAE,QAAAA,YAAAA,EAAc,CAACnD,KAAOpD,EAAAA,MAAAA,GAAAA;AACpB,YAAA,MAAM,EAAEsD,GAAG,EAAE6C,IAAI,EAAE,GAAGnG,OAAOqD,OAAO;AAEpC,YAAA,MAAMgD,SAAyB,GAAA;gBAC7B/C,GAAKA,EAAAA,GAAAA;gBACLoB,WAAa,EAAA,IAAA;gBACb9B,MAAQ,EAAA;AACN,oBAAA,GAAGuD,IAAI;AACPtF,oBAAAA,UAAAA,EAAY;AACd;AACF,aAAA;YAEAuC,KAAMpB,CAAAA,YAAY,CAACsB,GAAAA,CAAI,GAAG+C,SAAAA;AAC5B,SAAA;AACAG,QAAAA,aAAAA,EAAe,CAACpD,KAAOpD,EAAAA,MAAAA,GAAAA;YACrB,MAAM,EAAE4D,cAAc,EAAEC,SAAS,EAAEC,SAAS,EAAE2C,gBAAgB,EAAE,GAAGzG,MAAAA,CAAOqD,OAAO;AACjF,YAAA,MAAM,EAAEN,IAAI,EAAE,GAAGiB,MAAM,GAAGJ,cAAAA;YAE1B,MAAM8C,oBAAAA,GAAuBD,iBAAiB1D,IAAI;AAClD,YAAA,MAAMmB,gBAAmB,GAAA;AAAC,gBAAA,WAAA;AAAa,gBAAA;aAAc,CAACC,QAAQ,CAACN,SAC3D,CAAA,GAAA;AAACA,gBAAAA;aAAU,GACX;AAACA,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA;YAE1B,MAAM6C,qBAAAA,GAAwBhE,kBAC5BnB,CAAAA,GAAAA,CAAI4B,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAmBc,gBAAAA,GAAAA;aAAiB,CAChDwC,EAAAA,oBAAAA,CAAAA;YAGF,MAAME,iBAAAA,GAAoB5C,IAAK7C,CAAAA,IAAI,KAAK,UAAA;AAExC,YAAA,IAAI,CAACyF,iBAAmB,EAAA;AACtBtC,gBAAAA,GAAAA,CACElB,KACA,EAAA;AAAC,oBAAA,cAAA;AAAmBc,oBAAAA,GAAAA,gBAAAA;AAAkB,oBAAA,QAAA;AAAU,oBAAA,YAAA;AAAcyC,oBAAAA;iBAAsB,EACpF/C,cAAAA,CAAAA;AAGF,gBAAA;AACF;YAEA,MAAMS,iBAAAA,GAAqC7C,IAAI4B,KAAO,EAAA;AACpD,gBAAA,cAAA;AACGc,gBAAAA,GAAAA,gBAAAA;AACH,gBAAA,QAAA;AACA,gBAAA;AACD,aAAA,CAAA,CAAElB,KAAK,EAAA;;AAGR,YAAA,MAAM6D,KAAQ,GAAA;AACZ9D,gBAAAA,IAAAA;AACA1C,gBAAAA,QAAAA,EAAU2D,KAAK3D,QAAQ;AACvB8E,gBAAAA,MAAAA,EAAQnB,KAAKmB,MAAM;AACnB7E,gBAAAA,eAAAA,EAAiB0D,KAAK1D,eAAe;gBACrCa,IAAM,EAAA;AACR,aAAA;YAEA,IAAI6C,IAAAA,CAAKsB,OAAO,EAAE;gBAChBuB,KAAMvB,CAAAA,OAAO,GAAGtB,IAAAA,CAAKsB,OAAO;AAC9B;YAEA,IAAItB,IAAAA,CAAK8C,aAAa,EAAE;gBACtBD,KAAMC,CAAAA,aAAa,GAAG9C,IAAAA,CAAK8C,aAAa;AAC1C;AAEA,YAAA,MAAMC,qBAAwB1C,GAAAA,iBAAAA,CAAkBvB,SAAS,CAAC,CAACkE,KAAAA,GAAAA;gBACzD,OAAOA,KAAAA,CAAMjE,IAAI,KAAKvC,SAAAA,IAAawG,MAAMjE,IAAI,KAAK0D,iBAAiB1D,IAAI;AACzE,aAAA,CAAA;;YAGA,IAAIgE,qBAAAA,KAA0B,CAAC,CAAG,EAAA;gBAChC1C,iBAAkB4C,CAAAA,MAAM,CAACF,qBAAAA,EAAuB,CAAGF,EAAAA,KAAAA,CAAAA;AACrD;AAEA,YAAA,IAAIK,6BAA+C,GAAA,IAAA;AACnD,YAAA,IAAIC,6BAA+C,GAAA,IAAA;AACnD,YAAA,IAAIC,yBAAkD,GAAA,IAAA;AACtD,YAAA,IAAIC,wBAA2B,GAAA,IAAA;YAE/B,MAAMxF,UAAAA,GAAaL,IAAI4B,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAmBc,gBAAAA,GAAAA,gBAAAA;AAAkB,gBAAA;AAAM,aAAA,CAAA;AAC1E,YAAA,MAAMoD,uBAA0Bb,GAAAA,gBAAAA,CAAiBtB,MAAM,KAAKnB,KAAKmB,MAAM;YACvE,MAAMoC,yBAAAA,GAA4BvD,IAAKmB,CAAAA,MAAM,KAAKtD,UAAAA;AAClD,YAAA,MAAMuD,eAAehF,eAAgB4D,CAAAA,IAAAA,CAAK3D,QAAQ,EAAE2D,KAAK1D,eAAe,CAAA;AACxE,YAAA,MAAMkH,sBAAsBpH,eAC1BqG,CAAAA,gBAAAA,CAAiBpG,QAAQ,EACzBoG,iBAAiBnG,eAAe,CAAA;YAElC,MAAMmH,mBAAAA,GAAsBhB,gBAAiBtB,CAAAA,MAAM,KAAKtD,UAAAA;AACxD,YAAA,MAAM6F,wBAAwBF,mBAAwBpC,KAAAA,YAAAA;AACtD,YAAA,MAAMuC,kDACJL,GAAAA,uBAAAA,IACA,CAACC,yBAAAA,IACDE,mBACAb,IAAAA,iBAAAA;YACF,MAAMgB,wDAAAA,GACJF,yBACAD,mBACA,IAAA;AAAC,gBAAA,QAAA;AAAU,gBAAA;aAAU,CAACtD,QAAQ,CAACiB,YAC/BwB,CAAAA,IAAAA,iBAAAA;AACF,YAAA,MAAMiB,wDACJ,GAAA,CAACrF,kBAAmB2B,CAAAA,QAAQ,CAACqD,mBAAAA,CAAAA,IAC7B,CAAChF,kBAAAA,CAAmB2B,QAAQ,CAACiB,YAC7BqC,CAAAA,IAAAA,mBAAAA,IACAF,yBACAX,IAAAA,iBAAAA;YACF,MAAMkB,wDAAAA,GACJtF,kBAAmB2B,CAAAA,QAAQ,CAACqD,mBAAAA,CAAAA,IAC5B,CAAChF,kBAAAA,CAAmB2B,QAAQ,CAACiB,YAC7BqC,CAAAA,IAAAA,mBAAAA,IACAF,yBACAX,IAAAA,iBAAAA;AACF,YAAA,MAAMmB,qDACJT,uBACAC,IAAAA,yBAAAA,IACA,CAAC/E,kBAAAA,CAAmB2B,QAAQ,CAACiB,YAAAA,CAAAA;;AAG/B,YAAA,IACEuC,sDACAC,wDACA,EAAA;AACAV,gBAAAA,6BAAAA,GAAgCT,iBAAiBnG,eAAe;AAClE;;AAGA,YAAA,IAAI4G,6BAA+B,EAAA;gBACjC,MAAMc,aAAAA,GAAgB3D,kBAAkBvB,SAAS,CAC/C,CAACkE,KAAUA,GAAAA,KAAAA,CAAMjE,IAAI,KAAKmE,6BAAAA,CAAAA;gBAG5B7C,iBAAkB4C,CAAAA,MAAM,CAACe,aAAe,EAAA,CAAA,CAAA;AAC1C;;AAGA,YAAA,IAAI,CAACL,kDAAoD,EAAA;gBACvD,MAAMM,wBAAAA,GAA2BzG,IAAI4B,KAAO,EAAA;AAC1C,oBAAA,qBAAA;AACAqD,oBAAAA,gBAAAA,CAAiBtB;AAClB,iBAAA,CAAA;AAED,gBAAA,IAAI8C,wBAA0B,EAAA;AAC5B,oBAAA,MAAMC,sBAAyBvF,GAAAA,kBAAAA,CAC7BsF,wBACAxB,EAAAA,gBAAAA,CAAiBnG,eAAe,CAAA;AAGlC+G,oBAAAA,wBAAAA,GAA2B7F,IAAI4B,KAAO,EAAA;AACpC,wBAAA,qBAAA;AACAqD,wBAAAA,gBAAAA,CAAiBtB,MAAM;AACvB,wBAAA,QAAA;AACA,wBAAA,YAAA;AACA+C,wBAAAA;AACD,qBAAA,CAAA;AACH;AACF;;AAGA,YAAA,IACEJ,4DACAC,kDACA,EAAA;gBACAX,yBAA4B,GAAA;AAC1BrE,oBAAAA,IAAAA,EAAMiB,KAAK1D,eAAe;AAC1BD,oBAAAA,QAAAA,EAAUoC,mBAAoB2C,CAAAA,YAAAA,CAAAA;AAC9BD,oBAAAA,MAAAA,EAAQnB,KAAKmB,MAAM;oBACnB7E,eAAiByC,EAAAA,IAAAA;oBACjB5B,IAAM,EAAA;AACR,iBAAA;gBAEA,IAAI6C,IAAAA,CAAKsB,OAAO,EAAE;oBAChB8B,yBAA0B9B,CAAAA,OAAO,GAAGtB,IAAAA,CAAKsB,OAAO;AAClD;gBAEA,IAAI+B,wBAAAA,IAA4BA,wBAAyBP,CAAAA,aAAa,EAAE;oBACtEM,yBAA0BN,CAAAA,aAAa,GAAGO,wBAAAA,CAAyBP,aAAa;AAClF;gBAEA,MAAMqB,uBAAAA,GAA0B9D,iBAAkBvB,CAAAA,SAAS,CACzD,CAAC,EAAEC,IAAI,EAAE,GAAKA,IAAS0D,KAAAA,gBAAAA,CAAiB1D,IAAI,CAAA;gBAE9C,MAAMqF,uBAAAA,GAA0B/D,iBAAkBvB,CAAAA,SAAS,CACzD,CAAC,EAAEC,IAAMsF,EAAAA,QAAQ,EAAE,GAAKtF,IAASsF,KAAAA,QAAAA,CAAAA;gBAGnC,MAAMC,aAAAA,GACJ,CAACH,uBAAAA,KAA4B,CAAC,CAAIC,GAAAA,uBAAAA,GAA0BD,uBAAsB,IAAK,CAAA;gBAEzF9D,iBAAkB4C,CAAAA,MAAM,CAACqB,aAAAA,EAAe,CAAGlB,EAAAA,yBAAAA,CAAAA;AAC7C;AAEA,YAAA,IAAIS,wDAA0D,EAAA;AAC5DV,gBAAAA,6BAAAA,GAAgCV,iBAAiBnG,eAAe;gBAEhE8G,yBAA4B,GAAA;AAC1BrE,oBAAAA,IAAAA,EAAMiB,KAAK1D,eAAe;AAC1BD,oBAAAA,QAAAA,EAAUoC,mBAAoB2C,CAAAA,YAAAA,CAAAA;AAC9BD,oBAAAA,MAAAA,EAAQnB,KAAKmB,MAAM;oBACnB7E,eAAiByC,EAAAA,IAAAA;oBACjB5B,IAAM,EAAA;AACR,iBAAA;gBAEA,IAAI6C,IAAAA,CAAKsB,OAAO,EAAE;oBAChB8B,yBAA0B9B,CAAAA,OAAO,GAAGtB,IAAAA,CAAKsB,OAAO;AAClD;gBAEA,IAAI+B,wBAAAA,IAA4BA,wBAAyBP,CAAAA,aAAa,EAAE;oBACtEM,yBAA0BN,CAAAA,aAAa,GAAGO,wBAAAA,CAAyBP,aAAa;AAClF;AAEA,gBAAA,IAAIK,6BAA+B,EAAA;oBACjC,MAAMoB,aAAAA,GAAgBlE,kBAAkBvB,SAAS,CAC/C,CAAC,EAAEC,IAAI,EAAE,GAAKA,IAASoE,KAAAA,6BAAAA,CAAAA;oBAGzB9C,iBAAkB4C,CAAAA,MAAM,CAACsB,aAAAA,EAAe,CAAGnB,EAAAA,yBAAAA,CAAAA;AAC7C;AACF;AAEA9C,YAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAmBc,gBAAAA,GAAAA,gBAAAA;AAAkB,gBAAA,QAAA;AAAU,gBAAA;aAAa,EAAEG,iBAAAA,CAAAA;AAC5E,SAAA;AACAmE,QAAAA,wBAAAA,EAA0B,CAACpF,KAAOpD,EAAAA,MAAAA,GAAAA;YAChC,MAAM,EAAE6D,SAAS,EAAEC,SAAS,EAAE2C,gBAAgB,EAAE7C,cAAc,EAAE,GAAG5D,MAAAA,CAAOqD,OAAO;YAEjF,MAAMqD,oBAAAA,GAAuBD,iBAAiB1D,IAAI;AAClD,YAAA,MAAMmB,gBAAmB,GAAA;AAAC,gBAAA,WAAA;AAAa,gBAAA;aAAc,CAACC,QAAQ,CAACN,SAC3D,CAAA,GAAA;AAACA,gBAAAA;aAAU,GACX;AAACA,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA;YAE1B,MAAM6C,qBAAAA,GAAwBhE,kBAC5BnB,CAAAA,GAAAA,CAAI4B,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAmBc,gBAAAA,GAAAA;aAAiB,CAChDwC,EAAAA,oBAAAA,CAAAA;AAGFpC,YAAAA,GAAAA,CACElB,KACA,EAAA;AAAC,gBAAA,cAAA;AAAmBc,gBAAAA,GAAAA,gBAAAA;AAAkB,gBAAA,QAAA;AAAU,gBAAA,YAAA;AAAcyC,gBAAAA;aAAsB,EACpF/C,cAAAA,CAAAA;AAEJ,SAAA;AACA6E,QAAAA,kBAAAA,EAAoB,CAACrF,KAAAA,GAAAA;YACnBA,KAAMhB,CAAAA,WAAW,GAAGgB,KAAAA,CAAMf,YAAY;AACxC,SAAA;AACAqG,QAAAA,kBAAAA,EAAoB,CAACtF,KAAAA,GAAAA;;YAEnBA,KAAMpB,CAAAA,YAAY,GAAGoB,KAAAA,CAAMjB,mBAAmB;YAC9CiB,KAAM1B,CAAAA,UAAU,GAAG0B,KAAAA,CAAMlB,iBAAiB;AAC5C,SAAA;QACAyG,YAAc,EAAA,IAAA;YACZ,OAAO1G,cAAAA;AACT,SAAA;AACA2G,QAAAA,8BAAAA,EAAgC,CAC9BxF,KACApD,EAAAA,MAAAA,GAAAA;AAEA,YAAA,MAAM,EAAE6I,MAAM,EAAEC,sBAAsB,EAAE,GAAG9I,OAAOqD,OAAO;AAEzD,YAAA,MAAMsC,mBAAmBhD,kBAAmBS,CAAAA,KAAAA,CAAMf,YAAY,CAACkB,WAAW,EAAEsF,MAAAA,CAAAA;AAE5E,YAAA,IAAIzF,KAAMf,CAAAA,YAAY,CAACkB,WAAW,EAAE;AAClCH,gBAAAA,KAAAA,CAAMf,YAAY,CAACkB,WAAW,CAACX,MAAM,CAAC/B,UAAU,CAAC8E,gBAAAA,CAAiB,CAACjE,UAAU,CAACuF,MAAM,CAClF6B,sBACA,EAAA,CAAA,CAAA;AAEJ;AACF,SAAA;AACAC,QAAAA,WAAAA,EAAa,CAAC3F,KAAOpD,EAAAA,MAAAA,GAAAA;AACnB,YAAA,MAAM,EAAEgJ,WAAW,EAAEC,qBAAqB,EAAE,GAAGjJ,OAAOqD,OAAO;AAC7D,YAAA,MAAM6F,gBAAmB,GAAA;AAAC,gBAAA,cAAA;AAAgBF,gBAAAA,WAAAA;AAAa,gBAAA,QAAA;AAAU,gBAAA;AAAa,aAAA;AAC9E,YAAA,MAAMG,yBAAyBxG,kBAC7BS,CAAAA,KAAAA,CAAMf,YAAY,CAAC2G,YAAY,EAC/BC,qBAAAA,CAAAA;AAGF,YAAA,MAAMG,uBAA0B,GAAA;AAAIF,gBAAAA,GAAAA,gBAAAA;AAAkBC,gBAAAA;AAAuB,aAAA;YAC7E,MAAME,qBAAAA,GAAwB7H,IAAI4B,KAAOgG,EAAAA,uBAAAA,CAAAA;YACzC,MAAME,2BAAAA,GAA8BD,qBAAsBlI,CAAAA,IAAI,KAAK,UAAA;;;AAGnE,YAAA,MAAMoI,iDAAiDP,WAAgB,KAAA,aAAA;AAEvE,YAAA,IAAIM,+BAA+BC,8CAAgD,EAAA;AACjF,gBAAA,MAAM,EAAEpE,MAAM,EAAE9E,QAAQ,EAAEC,eAAe,EAAE,GAAG+I,qBAAAA;gBAC9C,MAAMjE,YAAAA,GAAehF,gBAAgBC,QAAUC,EAAAA,eAAAA,CAAAA;AAE/C,gBAAA,MAAMgD,GAAMF,GAAAA,KAAAA,CAAMf,YAAY,CAACkB,WAAW,EAAED,GAAAA;AAC5C,gBAAA,MAAMkG,gCACJrE,MAAW7B,KAAAA,GAAAA,IAAO,CAACd,kBAAAA,CAAmB2B,QAAQ,CAACiB,YAAAA,CAAAA;AAEjD,gBAAA,IAAIoE,6BAA+B,EAAA;AACjC,oBAAA,MAAM3I,aACJuC,KAAMf,CAAAA,YAAY,CAAC2G,WAAY,CAAA,EAAEpG,OAAO/B,UAAWmC,CAAAA,KAAAA,EAAAA;AACrD,oBAAA,MAAMyG,cAAiB5I,GAAAA,UAAAA,CAAWiE,MAAM,CAAC,CAAC4E,SAAAA,GAAAA;wBACxC,IAAIA,SAAAA,CAAU3G,IAAI,KAAKkG,qBAAuB,EAAA;4BAC5C,OAAO,KAAA;AACT;AAEA,wBAAA,IAAIS,UAAUvE,MAAM,KAAK7B,OAAOoG,SAAUpJ,CAAAA,eAAe,KAAK2I,qBAAuB,EAAA;4BACnF,OAAO,KAAA;AACT;wBAEA,OAAO,IAAA;AACT,qBAAA,CAAA;AAEA,oBAAA,MAAMrG,MAASQ,GAAAA,KAAAA,CAAMf,YAAY,CAAC2G,WAAY,CAAA;AAC9C,oBAAA,IAAIpG,MAAQ,EAAA;wBACVA,MAAOA,CAAAA,MAAM,CAAC/B,UAAU,GAAG4I,cAAAA;AAC7B;AAEA,oBAAA;AACF;AACF;;AAIA,YAAA,MAAME,iBAA8BvG,GAAAA,KAAAA,CAAMf,YAAY,CACpD2G,YACD,CAAEpG,MAAM,CAAC/B,UAAU,CAACmC,KAAK,EAAA,CAAGhC,MAAM,CAAC,CAACC,GAAeC,EAAAA,OAAAA,GAAAA;gBAClD,IAAIA,OAAAA,CAAQC,IAAI,KAAK,KAAO,EAAA;oBAC1B,OAAOF,GAAAA;AACT;gBAEA,IAAIC,OAAAA,CAAQ0I,WAAW,KAAKX,qBAAuB,EAAA;oBACjD,OAAOhI,GAAAA;AACT;gBAEAA,GAAIK,CAAAA,IAAI,CAACJ,OAAAA,CAAQ6B,IAAI,CAAA;gBAErB,OAAO9B,GAAAA;AACT,aAAA,EAAG,EAAE,CAAA;YAEL0I,iBAAkB3E,CAAAA,OAAO,CAAC,CAAC6E,SAAAA,GAAAA;AACzB,gBAAA,MAAMC,aAAanH,kBAAmBS,CAAAA,KAAAA,CAAMf,YAAY,CAAC2G,YAAY,EAAEa,SAAAA,CAAAA;gBAEvE,OAAOzG,KAAAA,CAAMf,YAAY,CAAC2G,WAAAA,CAAY,EAAEpG,MAAO/B,CAAAA,UAAU,CAACiJ,UAAAA,CAAW,CAACF,WAAAA;AACxE,aAAA,CAAA;AAEAxG,YAAAA,KAAAA,CAAMf,YAAY,CAAC2G,WAAAA,CAAY,EAAEpG,MAAO/B,CAAAA,UAAAA,CAAWoG,OAAOkC,sBAAwB,EAAA,CAAA,CAAA;AACpF,SAAA;AACAY,QAAAA,iCAAAA,EAAmC,CACjC3G,KACApD,EAAAA,MAAAA,GAAAA;AAEA,YAAA,MAAM,EAAEiJ,qBAAqB,EAAErD,YAAY,EAAE,GAAG5F,OAAOqD,OAAO;YAE9D,MAAM8F,sBAAAA,GAAyBxG,mBAC7BS,KAAMf,CAAAA,YAAY,CAACX,UAAU,GAAGkE,YAAAA,CAAa,EAC7CqD,qBAAAA,CAAAA;YAGF7F,KAAMf,CAAAA,YAAY,CAACX,UAAU,GAAGkE,aAAa,EAAEhD,MAAAA,EAAQ/B,UAAYoG,EAAAA,MAAAA,CACjEkC,sBACA,EAAA,CAAA,CAAA;AAEJ,SAAA;AACAa,QAAAA,eAAAA,EAAiB,CAAC5G,KAAOpD,EAAAA,MAAAA,GAAAA;AACvB,YAAA,MAAM,EAAEiK,WAAW,EAAEC,oBAAoB,EAAE,GAAGlK,OAAOqD,OAAO;AAE5D,YAAA,MAAMT,MAAS,GAAA;AACb,gBAAA,GAAGb,qBAAqB;AACxB,gBAAA,GAAGkI;AACL,aAAA;AAEA7G,YAAAA,KAAAA,CAAMhB,WAAW,GAAGQ,MAAAA;AACpBQ,YAAAA,KAAAA,CAAMf,YAAY,GAAGO,MAAAA;;;AAIrB,YAAA,IAAI,CAACsH,oBAAsB,EAAA;gBACzB9G,KAAM1B,CAAAA,UAAU,GAAG0B,KAAAA,CAAMlB,iBAAiB;gBAC1CkB,KAAMpB,CAAAA,YAAY,GAAGoB,KAAAA,CAAMjB,mBAAmB;AAChD;AACF,SAAA;AACAgI,QAAAA,YAAAA,EAAc,CAAC/G,KAAOpD,EAAAA,MAAAA,GAAAA;AACpB,YAAA,MAAM,EAAEmG,IAAI,EAAEiE,UAAU,EAAE,GAAGpK,OAAOqD,OAAO;AAE3C,YAAA,MAAMT,MAASQ,GAAAA,KAAAA,CAAMf,YAAY,CAAC+H,UAAW,CAAA;AAC7C,YAAA,IAAI,CAACxH,MAAQ,EAAA;AACX,gBAAA;AACF;AAEAA,YAAAA,MAAAA,CAAOA,MAAM,CAACyH,WAAW,GAAGlE,KAAKkE,WAAW;AAE5C,YAAA,IAAID,eAAe,WAAa,EAAA;AAC9B,gBAAA,MAAM,EAAE9G,GAAG,EAAE,GAAGtD,OAAOqD,OAAO;gBAE9BT,MAAO0D,CAAAA,QAAQ,GAAGH,IAAAA,CAAKG,QAAQ;AAC/B1D,gBAAAA,MAAAA,CAAOA,MAAM,CAAC0H,IAAI,GAAGnE,KAAKmE,IAAI;AAC9B,gBAAA,MAAMC,iBAAiBrJ,OAAQ0B,CAAAA,MAAAA,CAAAA;gBAC/BQ,KAAM1B,CAAAA,UAAU,CAAC4B,GAAAA,CAAI,GAAGiH,cAAAA;aACnB,MAAA;AACL3H,gBAAAA,MAAAA,CAAOA,MAAM,CAAC4H,IAAI,GAAGrE,KAAKqE,IAAI;AAChC;AACF;AACF;AACF,CAAA,CAAA;MAEa,WAAEC,SAAO,WAAEC,SAAO,EAAE,GAAG1H;;AC/xBvB2H,MAAAA,UAAAA,GAAa,CAAC5H,IAAAA,GAAiB6H,QAAQ7H,IAAM,EAAA;QAAE8H,SAAW,EAAA;KAAO;;ACE9E,MAAMC,YAAY,CAAC/H,IAAAA,GAAAA;AACjB,IAAA,MAAMgI,YAAYJ,UAAW5H,CAAAA,IAAAA,CAAAA;AAC7B,IAAA,OAAO,CAAC,KAAK,EAAEgI,UAAU,CAAC,EAAEA,UAAU,CAAC;AACzC;AAEA;AACMC,MAAAA,kBAAAA,GAAqB,CAACjI,IAAcuD,EAAAA,QAAAA,GAAAA;IACxC,OAAO,CAAC,EAAEqE,UAAWrE,CAAAA,QAAAA,CAAAA,CAAU,CAAC,EAAEqE,UAAAA,CAAW5H,MAAM,CAAC;AACtD;;ACZO,MAAMkI,gCAAmC,GAAA,CAAChK,GAAUiK,EAAAA,MAAAA,GAAAA;IACzD,IAAIA,MAAAA,CAAOC,KAAK,EAAE;AAChB,QAAA,OAAOD,MAAOC,CAAAA,KAAK,CAACnK,MAAM,CAACiK,gCAAkChK,EAAAA,GAAAA,CAAAA;AAC/D;AAEA,IAAA,IAAI,kBAAkBiK,MAAQ,EAAA;AAC5B,QAAA,MAAM,EAAEnI,IAAI,EAAEqI,YAAY,EAAE,GAAGF,MAAAA;AAC/BjK,QAAAA,GAAAA,CAAIK,IAAI,CAAC;AAAEyB,YAAAA,IAAAA;AAAMqI,YAAAA;AAAa,SAAA,CAAA;AAChC;IAEA,OAAOnK,GAAAA;AACT,CAAE;;ACXF,wCAIA,MAAMoK,mBAAsB,GAAA,CAACC,MAC3B,GAAA;AAAC,QAAA,YAAA;AAAc,QAAA,WAAA;AAAa,QAAA;KAAU,CAACnH,QAAQ,CAACmH,MAAAA,CAAAA,GAAU,CAAI,GAAA,CAAA;AAEhE,MAAMC,8BAAAA,GAAiC,CAACD,MACtC,GAAA;AAAC,QAAA,YAAA;AAAc,QAAA;KAAY,CAACnH,QAAQ,CAACmH,MAAAA,CAAAA,GAAU,CAAI,GAAA,CAAA;;ACcrD,MAAMrJ,YAAsB,GAAA;AAC1BuJ,IAAAA,UAAAA,EAAY,EAAC;AACbnJ,IAAAA,YAAAA,EAAc,EAAC;AACfD,IAAAA,WAAAA,EAAa,EAAC;AACdqJ,IAAAA,iBAAAA,EAAmB,EAAC;IACpBC,oCAAsC,EAAA;AACxC;AAsEA,MAAM1I,QAAQC,WAAY,CAAA;IACxBF,IAAM,EAAA,WAAA;AACNd,IAAAA,YAAAA;IACAiB,QAAU,EAAA;AACRyI,QAAAA,QAAAA,EAAU,CAACvI,KAAOpD,EAAAA,MAAAA,GAAAA;AAChB,YAAA,MAAM,EAAEyD,IAAI,EAAEuD,KAAK,EAAE,GAAGhH,OAAOqD,OAAO;YACtC,MAAMuI,GAAAA,GAAMxI,MAAMf,YAAY;YAC9B,MAAMwJ,eAAAA,GAAkBC,OAAQF,CAAAA,GAAAA,CAAIG,OAAO,CAAA;;YAG3C,IAAIF,eAAAA,IAAmBpI,KAAKuI,MAAM,KAAK,KAAKvI,IAAKU,CAAAA,QAAQ,CAAC,MAAS,CAAA,EAAA;gBACjE,MAAM8H,YAAAA,GAAeL,IAAIzK,IAAI;AAE7B,gBAAA,IAAI8K,YAAgB,IAAA;AAAC,oBAAA,MAAA;AAAQ,oBAAA,UAAA;AAAY,oBAAA;iBAAO,CAAC9H,QAAQ,CAAC8H,YAAe,CAAA,EAAA;;oBAEvE,OAAO7I,KAAAA,CAAMf,YAAY,CAAC0J,OAAO;AACnC;AACF;AAEAzH,YAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAmBK,gBAAAA,GAAAA;aAAK,EAAEuD,KAAAA,CAAAA;AACxC,SAAA;AACAkF,QAAAA,sBAAAA,EAAwB,CAAC9I,KAAOpD,EAAAA,MAAAA,GAAAA;AAC9B,YAAA,MAAM,EACJmF,MAAAA,EAAQ,EACNgH,qCAAqC,EACrCC,+BAA+B,EAC/BC,iCAAiC,EACjCrF,KAAK,EACN,EACF,GAAGhH,OAAOqD,OAAO;;AAElB,YAAA,IAAIiJ,gDAAmD,GAAA,KAAA;AACvD,YAAA,IAAIC,mBAAgE,GAAA,IAAA;AAEpEjI,YAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAS,EAAE4D,KAAAA,CAAAA;YAEvC,MAAM3E,YAAAA,GAAee,MAAMf,YAAY;;;YAIvC,IAAImK,KAAAA,CAAMC,OAAO,CAACJ,iCAAoC,CAAA,EAAA;AACpD,gBAAA,MAAMK,sBAAsBtM,eAC1BiC,CAAAA,YAAAA,CAAahC,QAAQ,EACrBgC,aAAa/B,eAAe,CAAA;AAG9B,gBAAA,IACEoM,mBACA,IAAA,CAACL,iCAAkClI,CAAAA,QAAQ,CAACuI,mBAC5C,CAAA,EAAA;oBACA,MAAMC,aAAAA,GAAgBN,iCAAiC,CAAC,CAAE,CAAA;oBAC1DC,gDAAmD,GAAA,IAAA;oBACnDC,mBAAsBI,GAAAA,aAAAA;AAEtB,oBAAA,IAAIA,kBAAkB,QAAU,EAAA;AAC9BrI,wBAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,4BAAA,cAAA;AAAgB,4BAAA;yBAAW,EAAE,UAAA,CAAA;qBACpC,MAAA,IAAIuJ,kBAAkB,SAAW,EAAA;AACtCrI,wBAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,4BAAA,cAAA;AAAgB,4BAAA;yBAAW,EAAE,WAAA,CAAA;qBACpC,MAAA;AACLkB,wBAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,4BAAA,cAAA;AAAgB,4BAAA;yBAAW,EAAEuJ,aAAAA,CAAAA;AAC3C;AACF;AACF;YAEA,IAAIC,SAAAA;AAEJ,YAAA,IAAIN,oDAAoDC,mBAAqB,EAAA;AAC3EK,gBAAAA,SAAAA,GAAYC,SACVC,CAAAA,SAAAA,CAAUnC,UAAWyB,CAAAA,+BAAAA,CAAAA,CAAAA,EACrBf,mBAAoBkB,CAAAA,mBAAAA,CAAAA,CAAAA;aAEjB,MAAA;AACLK,gBAAAA,SAAAA,GAAYC,UACVC,SAAUnC,CAAAA,UAAAA,CAAWyB,+BAErBf,CAAAA,CAAAA,EAAAA,mBAAAA,CAAoBhJ,aAAahC,QAAQ,CAAA,CAAA;AAE7C;AAEAiE,YAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAO,EAAEwJ,SAAAA,CAAAA;AAErC,YAAA,MAAMG,sBAAyB3J,GAAAA,KAAAA,CAAMf,YAAY,CAAC/B,eAAe;AAEjE,YAAA,IAAIyM,2BAA2B,IAAM,EAAA;AACnC,gBAAA;AACF;;;AAIA,YAAA,IACET,oDACAC,mBACA,IAAA;AAAC,gBAAA,QAAA;AAAU,gBAAA;aAAU,CAACpI,QAAQ,CAACoI,mBAC/B,CAAA,EAAA;AACAjI,gBAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAkB,EAAE,IAAA,CAAA;AAEhD,gBAAA;AACF;AAEA,YAAA,MAAM4J,uBAAuBH,SAC3BC,CAAAA,SAAAA,CAAUnC,WAAWwB,qCACrBZ,CAAAA,CAAAA,EAAAA,8BAAAA,CAA+BlJ,aAAahC,QAAQ,CAAA,CAAA;AAGtDiE,YAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAkB,EAAE4J,oBAAAA,CAAAA;AAClD,SAAA;AACAC,QAAAA,oBAAAA,EAAsB,CAAC7J,KAAOpD,EAAAA,MAAAA,GAAAA;YAC5B,MAAM,EACJmF,MAAQ,EAAA,EAAEgH,qCAAqC,EAAEnF,KAAK,EAAE,EACzD,GAAGhH,MAAAA,CAAOqD,OAAO;AAElB,YAAA,MAAM6J,WAAc9J,GAAAA,KAAAA,CAAMf,YAAY,CAACU,IAAI;;AAG3C,YAAA,IAAI,CAAC;AAAC,gBAAA,QAAA;AAAU,gBAAA;aAAU,CAACoB,QAAQ,CAAC6C,KAAQ,CAAA,EAAA;AAC1C1C,gBAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAW,EAAE4D,KAAAA,CAAAA;AACzC,gBAAA,MAAM+F,sBAAyB3J,GAAAA,KAAAA,CAAMf,YAAY,CAAC/B,eAAe;AAEjEgE,gBAAAA,GAAAA,CACElB,KACA,EAAA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;AAAO,iBAAA,EACxByJ,SAAUC,CAAAA,SAAAA,CAAUnC,UAAWuC,CAAAA,WAAAA,CAAAA,CAAAA,EAAe7B,mBAAoBrE,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAGpE1C,gBAAAA,GAAAA,CACElB,KACA,EAAA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;AAAkB,iBAAA,EACnCyJ,SACEE,CAAAA,sBAAAA,IAA0BD,SAAUnC,CAAAA,UAAAA,CAAWwB,yCAC/CZ,8BAA+BvE,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA;AAInC,gBAAA;AACF;AAEA,YAAA,IAAIA,UAAU,QAAU,EAAA;AACtB1C,gBAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAW,EAAE,UAAA,CAAA;AACzCkB,gBAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAkB,EAAE,IAAA,CAAA;AAChDkB,gBAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,oBAAA,cAAA;AAAgB,oBAAA;iBAAO,EAAEyJ,SAAAA,CAAUC,UAAUI,WAAc,CAAA,EAAA,CAAA,CAAA,CAAA;AAEvE,gBAAA;AACF;;AAGA5I,YAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAW,EAAE,WAAA,CAAA;AACzCkB,YAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAkB,EAAE,IAAA,CAAA;AAChDkB,YAAAA,GAAAA,CAAIlB,KAAO,EAAA;AAAC,gBAAA,cAAA;AAAgB,gBAAA;aAAO,EAAEyJ,SAAAA,CAAUC,UAAUI,WAAc,CAAA,EAAA,CAAA,CAAA,CAAA;AACzE,SAAA;QACAC,UAAY,EAAA,IAAA;YACV,OAAOlL,YAAAA;AACT,SAAA;AACAmL,QAAAA,4CAAAA,EAA8C,CAC5ChK,KACApD,EAAAA,MAAAA,GAAAA;AAEA,YAAA,MAAM,EAAEqN,OAAU,GAAA,EAAE,EAAE,GAAGrN,OAAOqD,OAAO;YAEvC,OAAO;AACL,gBAAA,GAAGpB,YAAY;gBACfI,YAAc,EAAA;oBACZlB,IAAM,EAAA,WAAA;oBACNmM,UAAY,EAAA,IAAA;AACZ,oBAAA,GAAGD;AACL;AACF,aAAA;AACF,SAAA;AACAE,QAAAA,4BAAAA,EAA8B,CAC5BnK,KACApD,EAAAA,MAAAA,GAAAA;AAEA,YAAA,MAAM,EAAEqN,OAAU,GAAA,EAAE,EAAE,GAAGrN,OAAOqD,OAAO;;AAEvC,YAAA,MAAMoI,iBAAoBrI,GAAAA,KAAAA,CAAMf,YAAY,CAACoJ,iBAAiB;AAC9D,YAAA,MAAMpJ,YAAe,GAAA;AACnBgI,gBAAAA,WAAAA,EAAaoB,kBAAkBpB,WAAW;gBAC1ClJ,IAAM,EAAA,WAAA;gBACNmM,UAAY,EAAA,KAAA;AACZ,gBAAA,GAAGD,OAAO;AACVhM,gBAAAA,SAAAA,EAAW2J,kBAAmBS,CAAAA,iBAAAA,CAAkBpB,WAAW,EAAEoB,kBAAkBnF,QAAQ;AACzF,aAAA;YAEA,OAAO;AACL,gBAAA,GAAGrE,YAAY;AACfwJ,gBAAAA,iBAAAA;AACApJ,gBAAAA,YAAAA;gBACAqJ,oCAAsCtI,EAAAA,KAAAA,CAAMf,YAAY,CAAC4B;AAC3D,aAAA;AACF,SAAA;AACAuJ,QAAAA,2CAAAA,EAA6C,CAACpK,KAAAA,GAAAA;YAC5C,MAAMqK,SAAAA,GAAYrK,MAAMf,YAAY;AACpC,YAAA,MAAMqL,SAAY,GAAA;AAChB,gBAAA,GAAGD,SAAS;gBACZxJ,eAAiB,EAAA,IAAA;gBACjBwH,iBAAmB,EAAA;oBAAEtK,IAAM,EAAA;AAAY;AACzC,aAAA;YAEA,OAAO;AAAE,gBAAA,GAAGc,YAAY;gBAAEI,YAAcqL,EAAAA;AAAU,aAAA;AACpD,SAAA;AACAC,QAAAA,aAAAA,EAAe,CAACvK,KAAOpD,EAAAA,MAAAA,GAAAA;AACrB,YAAA,MAAM,EAAEmG,IAAI,EAAE,GAAGnG,OAAOqD,OAAO;AAC/BD,YAAAA,KAAAA,CAAMf,YAAY,GAAG8D,IAAAA;AACrB/C,YAAAA,KAAAA,CAAMhB,WAAW,GAAG+D,IAAAA;AACtB,SAAA;AACAyH,QAAAA,sBAAAA,EAAwB,CAACxK,KAAOpD,EAAAA,MAAAA,GAAAA;AAC9B,YAAA,MAAM,EAAE6N,SAAS,EAAE,GAAG7N,OAAOqD,OAAO;AAEpC,YAAA,IAAIwK,SAAW,EAAA;AACb,gBAAA,MAAM,EAAEC,2BAA2B,EAAE,GAAG9N,OAAOqD,OAAO;AACtDD,gBAAAA,KAAAA,CAAMf,YAAY,GAAGyL,2BAAAA;AACrB1K,gBAAAA,KAAAA,CAAMhB,WAAW,GAAG0L,2BAAAA;AAEpB,gBAAA;AACF;AAEA,YAAA,MAAM,EAAEC,aAAa,EAAEC,oBAAoB,EAAElK,SAAS,EAAEmK,IAAI,EAAEZ,UAAU,EAAE,EAAE,GAAGrN,OAAOqD,OAAO;YAE7F,IAAIqK,SAAAA;AAEJ,YAAA,IAAIK,kBAAkB,WAAa,EAAA;AACjC,gBAAA,IAAIE,SAAS,GAAK,EAAA;oBAChBP,SAAY,GAAA;wBACVvM,IAAM,EAAA,WAAA;wBACN8C,eAAiB,EAAA,IAAA;wBACjBwH,iBAAmB,EAAA;4BAAEtK,IAAM,EAAA;AAAY;AACzC,qBAAA;iBACK,MAAA;oBACLuM,SAAY,GAAA;AACV,wBAAA,GAAGL,OAAO;wBACVlM,IAAM,EAAA,WAAA;wBACNmM,UAAY,EAAA;AACd,qBAAA;AACF;aACK,MAAA,IAAIS,kBAAkB,aAAe,EAAA;gBAC1CL,SAAY,GAAA;AACV,oBAAA,GAAGL,OAAO;oBACVlM,IAAM,EAAA,aAAA;AACNO,oBAAAA,UAAAA,EAAY;AACd,iBAAA;aACK,MAAA,IAAIqM,kBAAkB,MAAQ,EAAA;gBACnCL,SAAY,GAAA;AAAE,oBAAA,GAAGL,OAAO;oBAAElM,IAAM,EAAA;AAAS,iBAAA;AAC3C,aAAA,MAAO,IAAI4M,aAAAA,KAAkB,QAAYA,IAAAA,aAAAA,KAAkB,MAAQ,EAAA;gBACjEL,SAAYL,GAAAA,OAAAA;aACP,MAAA,IAAIU,kBAAkB,OAAS,EAAA;gBACpCL,SAAY,GAAA;oBACVQ,YAAc,EAAA;AAAC,wBAAA,QAAA;AAAU,wBAAA,OAAA;AAAS,wBAAA,QAAA;AAAU,wBAAA;AAAS,qBAAA;oBACrD/M,IAAM,EAAA,OAAA;oBACNgN,QAAU,EAAA,IAAA;AACV,oBAAA,GAAGd;AACL,iBAAA;aACK,MAAA,IAAIU,kBAAkB,aAAe,EAAA;gBAC1CL,SAAY,GAAA;AAAE,oBAAA,GAAGL,OAAO;oBAAElM,IAAM,EAAA,aAAA;AAAeiN,oBAAAA,IAAAA,EAAM;AAAG,iBAAA;aACnD,MAAA,IAAIL,kBAAkB,UAAY,EAAA;gBACvCL,SAAY,GAAA;AACV3K,oBAAAA,IAAAA,EAAM+J,SAAUkB,CAAAA,oBAAAA,CAAAA;oBAChB3N,QAAU,EAAA,UAAA;oBACVC,eAAiB,EAAA,IAAA;oBACjB6E,MAAQrB,EAAAA,SAAAA;oBACR3C,IAAM,EAAA;AACR,iBAAA;aACK,MAAA;gBACLuM,SAAY,GAAA;AAAE,oBAAA,GAAGL,OAAO;oBAAElM,IAAM4M,EAAAA,aAAAA;oBAAehC,OAAS,EAAA;AAAK,iBAAA;AAC/D;AAEA3I,YAAAA,KAAAA,CAAMf,YAAY,GAAGqL,SAAAA;AACvB,SAAA;AACAW,QAAAA,wBAAAA,EAA0B,CAACjL,KAAOpD,EAAAA,MAAAA,GAAAA;AAChC,YAAA,MAAM,EAAE6N,SAAS,EAAE,GAAG7N,OAAOqD,OAAO;AAEpC,YAAA,IAAIwK,SAAW,EAAA;AACb,gBAAA,MAAM,EAAEC,2BAA2B,EAAE,GAAG9N,OAAOqD,OAAO;AACtDD,gBAAAA,KAAAA,CAAMf,YAAY,GAAGyL,2BAAAA;AACrB1K,gBAAAA,KAAAA,CAAMhB,WAAW,GAAG0L,2BAAAA;AAEpB,gBAAA;AACF;YAEA,MAAM,EAAEQ,WAAW,EAAEjB,OAAAA,GAAU,EAAE,EAAE,GAAGrN,MAAAA,CAAOqD,OAAO;AAEpDD,YAAAA,KAAAA,CAAMf,YAAY,GAAG;AAAE,gBAAA,GAAGgL,OAAO;AAAElM,gBAAAA,IAAAA,EAAMmN,YAAYnN;AAAK,aAAA;AAE1D,YAAA,MAAMoN,UAAa,GAAA;mBACbD,WAAajB,EAAAA,OAAAA,EAASmB,QAAQ,EAAE;mBAChCF,WAAajB,EAAAA,OAAAA,EAASoB,YAAY;AACvC,aAAA;AAED,YAAA,MAAMC,cAAiBH,GAAAA,UAAAA,CAAWvN,MAAM,CAACiK,kCAAkC,EAAE,CAAA;YAE7E,IAAIyD,cAAAA,CAAe1C,MAAM,EAAE;AACzB0C,gBAAAA,cAAAA,CAAe1J,OAAO,CAAC,CAAC,EAAEjC,IAAI,EAAEqI,YAAY,EAA0C,GACpF9G,GAAAA,CAAIlB,KAAMf,CAAAA,YAAY,EAAEU,IAAMqI,EAAAA,YAAAA,CAAAA,CAAAA;AAElC;AACF,SAAA;AACAuD,QAAAA,wBAAAA,EAA0B,CAACvL,KAAOpD,EAAAA,MAAAA,GAAAA;AAChC,YAAA,MAAM,EAAE4O,eAAe,EAAE,GAAG5O,OAAOqD,OAAO;AAC1CD,YAAAA,KAAAA,CAAMf,YAAY,GAAGuM,eAAAA;AACrBxL,YAAAA,KAAAA,CAAMhB,WAAW,GAAGwM,eAAAA;AACtB,SAAA;AACAC,QAAAA,SAAAA,EAAW,CAACzL,KAAOpD,EAAAA,MAAAA,GAAAA;AACjBoD,YAAAA,KAAAA,CAAMoI,UAAU,GAAGxL,MAAOqD,CAAAA,OAAO,CAACyL,MAAM;AAC1C;AACF;AACF,CAAA,CAAA;MAGa,EAAEpE,OAAO,EAAED,OAAO,EAAE,GAAGzH;;AChZ7B,MAAME,QAAW,GAAA;AACtB,IAAA,CAAC,CAAC,EAAE/C,QAAAA,CAAS,UAAU,CAAC,GAAG4O,OAAAA;AAC3B,IAAA,CAAC,CAAC,EAAE5O,QAAAA,CAAS,oBAAoB,CAAC,GAAG6O;AACvC,CAAE;;ACJF;AACO,MAAMC,QAAgB,GAAA;IAC3BvN,UAAY,EAAA;AACVwN,QAAAA,MAAAA,EAAQ,EAAC;AACTC,QAAAA,GAAAA,CAAAA,CAAI,EAAEC,EAAE,EAAE/N,SAAS,EAAkC,EAAA;AACnD,YAAA,IAAI,CAAC,IAAI,CAAC6N,MAAM,CAACE,GAAG,EAAE;AACpB,gBAAA,IAAI,CAACF,MAAM,CAACE,EAAAA,CAAG,GAAG/N,SAAAA;AACpB;AACF;AACF,KAAA;IACAgO,KAAO,EAAA;QACL3F,SAAW,EAAA;AAYX,SAAA;QACAnG,WAAa,EAAA;AACX+L,YAAAA,UAAAA,EAAY,EAAE;YACdC,IAAM,EAAA;AACJd,gBAAAA,QAAAA,EAAU,EAAE;AACZD,gBAAAA,IAAAA,EAAM;AACR;AACF,SAAA;QACAnN,SAAW,EAAA;AACTiO,YAAAA,UAAAA,EAAY,EAAE;YACdC,IAAM,EAAA;AACJd,gBAAAA,QAAAA,EAAU,EAAE;AACZD,gBAAAA,IAAAA,EAAM;AACR;AACF;AACF,KAAA;AACAgB,IAAAA,0BAAAA,EAA4B,EAAE;AAC9BC,IAAAA,4BAAAA,CAAAA,CAA6BC,EAAO,EAAA;AAClC,QAAA,IAAI,CAACF,0BAA0B,CAAClO,IAAI,CAACoO,EAAAA,CAAAA;AACvC,KAAA;IACAC,iBAAkB,CAAA,CAAA,EAAEC,SAAS,EAAEL,IAAAA,EAAM,EAAEd,QAAQ,EAAED,IAAI,EAAE,EAAO,EAAA;AAC5D,QAAA,MAAM,EAAEjL,WAAW,EAAE,GAAG,IAAI,CAAC8L,KAAK;AAElC,QAAA,IAAIO,SAAW,EAAA;YACbrM,WAAY+L,CAAAA,UAAU,CAAChO,IAAI,CAACsO,SAAAA,CAAAA;AAC9B;AACArM,QAAAA,WAAAA,CAAYgM,IAAI,CAACd,QAAQ,CAACnN,IAAI,CAACmN,QAAAA,CAAAA;AAC/BlL,QAAAA,WAAAA,CAAYgM,IAAI,CAACf,IAAI,CAAClN,IAAI,CAACkN,IAAAA,CAAAA;AAC7B,KAAA;IACAqB,YAAaC,CAAAA,CAAAA,MAAW,EAAE,EAAEF,SAAS,EAAEL,IAAM,EAAA,EAAEd,QAAQ,EAAED,IAAI,EAAE,EAAO,EAAA;AACpE,QAAA,MAAMuB,QAAW,GAAA,IAAI,CAACV,KAAK,CAAC3F,SAAS;QAErCoG,MAAO9K,CAAAA,OAAO,CAAC,CAACgL,KAAAA,GAAAA;AACd,YAAA,IAAI,CAACD,QAAQ,CAACC,KAAAA,CAAM,EAAE;gBACpBD,QAAQ,CAACC,MAAM,GAAG;AAChBV,oBAAAA,UAAAA,EAAY,EAAE;oBACdC,IAAM,EAAA;AACJd,wBAAAA,QAAAA,EAAU,EAET;AACDD,wBAAAA,IAAAA,EAAM;AAGR;AACF,iBAAA;AACF;AAEA,YAAA,IAAIoB,SAAW,EAAA;AACbG,gBAAAA,QAAQ,CAACC,KAAM,CAAA,CAACV,UAAU,CAAChO,IAAI,CAACsO,SAAAA,CAAAA;AAClC;YACAG,QAAQ,CAACC,MAAM,CAACT,IAAI,CAACd,QAAQ,CAACnN,IAAI,CAACmN,QAAAA,CAAAA;YACnCsB,QAAQ,CAACC,MAAM,CAACT,IAAI,CAACf,IAAI,CAAClN,IAAI,CAACkN,IAAAA,CAAAA;AACjC,SAAA,CAAA;AACF,KAAA;IAEAyB,eAAgB9K,CAAAA,CAAAA,MAAW,EAAE+K,KAAAA,GAAQ,IAAI,EAAA;AACvC,QAAA,MAAMC,aAAgB3O,GAAAA,GAAAA,CAAI,IAAI,CAAC6N,KAAK,EAAE;AAAIlK,YAAAA,GAAAA,MAAAA;AAAQ,YAAA,MAAA;AAAQ,YAAA;AAAW,SAAA,EAAE,EAAE,CAAA,CAAEnE,MAAM,CAC/E,CAACC,GAAUC,EAAAA,OAAAA,GAAAA;AACT,YAAA,MAAMkP,WAAWlP,OAAQgP,CAAAA,KAAAA,CAAAA;YAEzB,OAAO;AAAIjP,gBAAAA,GAAAA,GAAAA;AAAQmP,gBAAAA,GAAAA;AAAS,aAAA;AAC9B,SAAA,EACA,EAAE,CAAA;QAGJ,OAAOD,aAAAA;AACT,KAAA;AAEAE,IAAAA,wBAAAA,CAAAA,CAAyBC,cAAmB,EAAEV,SAAc,EAAE,GAAGW,aAAkB,EAAA;;QAEjF,IAAI,CAACX,WAAW,OAAOU,cAAAA;;QAGvB,OAAOA,cAAAA,CAAeE,KAAK,CAAC;AAAEnD,YAAAA,OAAAA,EAASoD,GAAIC,CAAAA,MAAM,EAAGF,CAAAA,KAAK,CAACZ,SAAUW,CAAAA,aAAAA,CAAAA;AAAgB,SAAA,CAAA;AACtF,KAAA;AAEAI,IAAAA,aAAAA,CAAAA,CAAcxL,MAAW,EAAEyL,SAAc,EAAE,GAAGC,IAAS,EAAA;AACrD,QAAA,MAAMvB,UAAa9N,GAAAA,GAAAA,CAAI,IAAI,CAAC6N,KAAK,EAAE;AAAIlK,YAAAA,GAAAA,MAAAA;AAAQ,YAAA;AAAa,SAAA,EAAE,EAAE,CAAA;AAEhE,QAAA,MAAM2L,kBAAqBxB,GAAAA,UAAAA,CAAWtO,MAAM,CAAC,CAACC,GAAUC,EAAAA,OAAAA,GAAAA;AACtD,YAAA,MAAM6P,oBAAoB7P,OAAQ2P,CAAAA,IAAAA,CAAAA;YAElC,OAAO;AAAE,gBAAA,GAAG5P,GAAG;AAAE,gBAAA,GAAG8P;AAAkB,aAAA;AACxC,SAAA,EAAG,EAAC,CAAA;QAEJ,OAAOH,SAAAA,CAAUJ,KAAK,CAAC;AAAE1J,YAAAA,aAAAA,EAAe2J,GAAIC,CAAAA,MAAM,EAAGF,CAAAA,KAAK,CAACM,kBAAAA;AAAoB,SAAA,CAAA;AACjF,KAAA;IACAE,uBAAwB7K,CAAAA,CAAAA,IAA6B,EAAE/D,WAAoC,EAAA;AACzF,QAAA,IAAI6O,eAAoBC,SAAU/K,CAAAA,IAAAA,CAAAA;AAElC,QAAA,MAAMgL,UAAeD,SAAU9O,CAAAA,WAAAA,CAAAA;AAE/B,QAAA,IAAI,CAACoN,0BAA0B,CAACxK,OAAO,CAAC,CAAC0K,EAAAA,GAAAA;AACvCuB,YAAAA,YAAAA,GAAevB,GAAGuB,YAAcE,EAAAA,OAAAA,CAAAA;AAClC,SAAA,CAAA;QAEA,OAAOF,YAAAA;AACT;AACF,CAAE;;AC1HF,MAAMG,wBAAAA,GAA2B,CAACC,IAAmBlR,EAAAA,QAAAA,GAAAA;AAInD,IAAA,OAAOqD,OAAOC,IAAI,CAAC4N,MAAMrQ,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEd,QAAAA,CAAS,CAAC,EAAEe,OAAQ,CAAA,CAAC,CAAC,GAAGmQ,IAAI,CAACnQ,OAAQ,CAAA;QAC7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN,CAAA;;ACsBA,MAAMqQ,+BAAkCC,iBAAAA,KAAAA,CAAMC,aAAa,CACzD,EAAC,CAAA;AAWH,MAAMC,mBAAmB,EAAK,GAAA,IAAA;AAE9B,MAAMC,gCAAmC,GAAA,CAAC,EAAEC,QAAQ,EAAyC,GAAA;AAC3F,IAAA,MAAM,CAACC,MAAQC,EAAAA,SAAAA,CAAU,GAAGN,KAAAA,CAAMO,QAAQ,CAAC,KAAA,CAAA;AAC3C,IAAA,MAAM,CAACC,MAAQC,EAAAA,SAAAA,CAAU,GAAGT,KAAMO,CAAAA,QAAQ,CAAiC,EAAC,CAAA;AAC5E,IAAA,MAAM,CAACG,MAAQC,EAAAA,SAAAA,CAAU,GAAGX,KAAAA,CAAMO,QAAQ,CAAC,KAAA,CAAA;AAE3C,IAAA,MAAMK,wBAAwBZ,KAAMa,CAAAA,WAAW,CAAC,CAACL,MAAAA,GAAyC,EAAE,GAAA;QAC1FF,SAAU,CAAA,IAAA,CAAA;QACVG,SAAUD,CAAAA,MAAAA,CAAAA;AACZ,KAAA,EAAG,EAAE,CAAA;IAEL,MAAMM,uBAAAA,GAA0Bd,KAAMa,CAAAA,WAAW,CAAC,IAAA;QAChDP,SAAU,CAAA,KAAA,CAAA;AACVG,QAAAA,SAAAA,CAAU,EAAC,CAAA;AACb,KAAA,EAAG,EAAE,CAAA;;AAGLT,IAAAA,KAAAA,CAAMe,SAAS,CAAC,IAAA;AACd,QAAA,IAAIV,MAAQ,EAAA;AACV,YAAA,MAAMW,UAAUC,UAAW,CAAA,IAAA;gBACzBN,SAAU,CAAA,IAAA,CAAA;aACTT,EAAAA,gBAAAA,CAAAA;YAEH,OAAO,IAAA;gBACLgB,YAAaF,CAAAA,OAAAA,CAAAA;AACf,aAAA;AACF;KACC,EAAA;AAACX,QAAAA;AAAO,KAAA,CAAA;IAEX,IAAIc,aAAAA,GAAgBX,QAAQzH,IAAQ,IAAA,QAAA;AAEpC,IAAA,IAAIqI,WAAc,GAAA;AAChBvD,QAAAA,EAAAA,EAAI2C,QAAQY,WAAe,IAAA,uCAAA;QAC3BC,cACE,EAAA;AACJ,KAAA;AAEA,IAAA,IAAIC,KAAQ,GAAA;AACVzD,QAAAA,EAAAA,EAAI2C,QAAQc,KAAS,IAAA,iCAAA;QACrBD,cAAgB,EAAA;AAClB,KAAA;AAEA,IAAA,IAAIX,MAAQ,EAAA;QACVS,aAAgB,GAAA,MAAA;QAEhBC,WAAc,GAAA;YACZvD,EAAI,EAAA,mDAAA;YACJwD,cAAgB,EAAA;AAClB,SAAA;QAEAC,KAAQ,GAAA;YACNzD,EAAI,EAAA,6CAAA;YACJwD,cAAgB,EAAA;AAClB,SAAA;AACF;AAEA,IAAA,MAAME,eAAkBvB,GAAAA,KAAAA,CAAMwB,OAAO,CACnC,KAAO;AACLZ,YAAAA,qBAAAA;AACAE,YAAAA;AACF,SAAA,CACA,EAAA;AAACF,QAAAA,qBAAAA;AAAuBE,QAAAA;AAAwB,KAAA,CAAA;IAGlD,qBACEW,IAAA,CAAC1B,gCAAgC2B,QAAQ,EAAA;QAACjM,KAAO8L,EAAAA,eAAAA;;0BAC/CI,GAACC,CAAAA,OAAAA,EAAAA;gBACCT,aAAeA,EAAAA,aAAAA;gBACfd,MAAQA,EAAAA,MAAAA;gBACRe,WAAaA,EAAAA,WAAAA;gBACbE,KAAOA,EAAAA;;AAERlB,YAAAA;;;AAGP;AASA,MAAMwB,OAAAA,GAAU,CAAC,EAAET,aAAa,EAAEC,WAAW,EAAEE,KAAK,EAAEjB,MAAM,EAAgB,GAAA;IAC1E,MAAM,EAAEwB,aAAa,EAAE,GAAGC,OAAAA,EAAAA;;AAG1B,IAAA,OAAOzB,MAAU0B,IAAAA,UAAAA,EAAYC,QAAUC,EAAAA,IAAAA,iBACnCC,2BACET,IAACU,CAAAA,OAAAA,EAAAA;QAAQtE,EAAG,EAAA,0BAAA;QAA2BuE,SAAU,EAAA,QAAA;QAASC,UAAW,EAAA,QAAA;QAASC,GAAK,EAAA,CAAA;;0BACjFb,IAACc,CAAAA,IAAAA,EAAAA;gBAAKH,SAAU,EAAA,QAAA;gBAASC,UAAW,EAAA,QAAA;gBAASC,GAAK,EAAA,CAAA;;kCAChDX,GAACa,CAAAA,UAAAA,EAAAA;wBAAWC,GAAI,EAAA,IAAA;wBAAKC,OAAQ,EAAA,OAAA;kCAC1Bb,aAAcP,CAAAA,KAAAA;;kCAEjBK,GAACa,CAAAA,UAAAA,EAAAA;wBAAWC,GAAI,EAAA,IAAA;wBAAKE,SAAU,EAAA,YAAA;wBAAaC,QAAU,EAAA,CAAA;wBAAGC,UAAW,EAAA,SAAA;kCACjEhB,aAAcT,CAAAA,WAAAA;;;;AAGlBD,YAAAA,aAAAA,KAAkB,0BACjBQ,GAACmB,CAAAA,OAAAA,EAAAA;gBAAQC,OAAS,EAAA,CAAA;gBAAGC,UAAW,EAAA,YAAA;gBAAaC,WAAY,EAAA,YAAA;AACvD,gBAAA,QAAA,gBAAAtB,GAACuB,CAAAA,YAAAA,EAAAA;oBAAaC,KAAM,EAAA,MAAA;oBAAOC,MAAO,EAAA;;;AAGrCjC,YAAAA,aAAAA,KAAkB,wBACjBQ,GAACmB,CAAAA,OAAAA,EAAAA;gBAAQC,OAAS,EAAA,CAAA;gBAAGC,UAAW,EAAA,YAAA;gBAAaC,WAAY,EAAA,YAAA;AACvD,gBAAA,QAAA,gBAAAtB,GAAC0B,CAAAA,KAAAA,EAAAA;oBAAMF,KAAM,EAAA,MAAA;oBAAOC,MAAO,EAAA;;;0BAG/BzB,GAAC2B,CAAAA,GAAAA,EAAAA;gBAAIC,SAAW,EAAA,CAAA;AACd,gBAAA,QAAA,gBAAA5B,GAAC6B,CAAAA,IAAAA,EAAAA;oBAAKC,IAAK,EAAA,wBAAA;oBAAyBC,UAAU,EAAA,IAAA;8BAC3C7B,aAAc,CAAA;wBACbhE,EAAI,EAAA,sBAAA;wBACJwD,cAAgB,EAAA;AAClB,qBAAA;;;;;IAKNU,UAAWC,CAAAA,QAAQ,CAACC,IAAI,CAE1B,GAAA,IAAA;AACN,CAAA;AAEA,MAAM0B,QAAAA,GAAWC,SAAS;;;;;;;EAOxB,CAAC;AAEH,MAAMV,YAAAA,GAAeW,MAAOC,CAAAA,cAAAA,CAAe;AAC9B,aAAA,EAAEH,QAAS,CAAA;AACxB,CAAC;AAED,MAAMxB,OAAAA,GAAU0B,MAAOtB,CAAAA,IAAAA,CAAK;;;;;;;;;;;;;;;;;;;;;;gBAsBZ,EAAE,CAAC,EAAEwB,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,QAAQ,CAAC;;;AAGvD,CAAC;AAED,MAAMnB,OAAAA,GAAUe,MAAOP,CAAAA,GAAAA,CAAI;;;;;;;YAOf,EAAE,CAAC,EAAES,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACE,UAAU,CAAC;;;AAGrD,CAAC;AAED;;AAEkG,qGAE5FC,MAAAA,2BAAAA,GAA8B,IAAMnE,KAAAA,CAAMoE,UAAU,CAACrE,+BAAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvN3D;AACA,YAAe;AACbsE,IAAAA,QAAAA,CAAAA,CAASC,GAAc,EAAA;AACrBA,QAAAA,GAAAA,CAAIC,WAAW,CAAC5S,QAAAA,CAAAA;AAChB2S,QAAAA,GAAAA,CAAIE,WAAW,CAAC;AACdC,YAAAA,EAAAA,EAAI,CAAC,QAAQ,EAAE7V,QAAAA,CAAS,CAAC;YACzBmK,IAAM2L,EAAAA,MAAAA;YACNC,SAAW,EAAA;AACT9G,gBAAAA,EAAAA,EAAI,CAAC,EAAEjP,QAAS,CAAA,YAAY,CAAC;gBAC7ByS,cAAgB,EAAA;AAClB,aAAA;AACAuD,YAAAA,WAAAA,EAAarW,YAAYC,IAAI;YAC7BqW,SAAW,EAAA,IAAM,OAAO,sBAAA,oCAAA;YACxBC,QAAU,EAAA;AACZ,SAAA,CAAA;AAEAR,QAAAA,GAAAA,CAAIS,cAAc,CAAC;YACjBlH,EAAIjP,EAAAA,QAAAA;YACJ4C,IAAM5C,EAAAA,QAAAA;;YAENoW,IAAM,EAAA;gBACJC,KAAOvH,EAAAA;AACT;AACF,SAAA,CAAA;AACF,KAAA;IACAwH,SAAa,CAAA,GAAA,EAAA;IACb,MAAMC,aAAAA,CAAAA,CAAc,EAAEC,OAAO,EAAyB,EAAA;QACpD,MAAMC,aAAAA,GAAgB,MAAMC,OAAQC,CAAAA,GAAG,CACrCH,OAAQI,CAAAA,GAAG,CAAC,CAACC,MAAAA,GAAAA;AACX,YAAA,OAAO,iCAAM,CAAC,CAAC,eAAe,EAAEA,MAAO,CAAA,KAAK,CAAC,CAAA,CAC1CC,IAAI,CAAC,CAAC,EAAElL,OAAAA,EAAS5F,IAAI,EAAE,GAAA;gBACtB,OAAO;AACLA,oBAAAA,IAAAA,EAAMiL,yBAAyBjL,IAAMhG,EAAAA,QAAAA,CAAAA;AACrC6W,oBAAAA;AACF,iBAAA;AACF,aAAA,CAAA,CACCE,KAAK,CAAC,IAAA;gBACL,OAAO;AACL/Q,oBAAAA,IAAAA,EAAM,EAAC;AACP6Q,oBAAAA;AACF,iBAAA;AACF,aAAA,CAAA;AACJ,SAAA,CAAA,CAAA;QAGF,OAAOH,OAAAA,CAAQM,OAAO,CAACP,aAAAA,CAAAA;AACzB;AACF,CAAE;;;;"}
1
+ {"version":3,"file":"index-M9EIbHI9.mjs","sources":["../../../admin/src/constants.ts","../../../admin/src/pluginId.ts","../../../admin/src/utils/getRelationType.ts","../../../admin/src/utils/makeUnique.ts","../../../admin/src/components/DataManagerProvider/utils/retrieveComponentsFromSchema.ts","../../../admin/src/components/DataManagerProvider/reducer.ts","../../../admin/src/utils/nameToSlug.ts","../../../admin/src/components/FormModal/utils/createUid.ts","../../../admin/src/components/FormModal/utils/customFieldDefaultOptionsReducer.ts","../../../admin/src/components/FormModal/utils/relations.ts","../../../admin/src/components/FormModal/reducer.ts","../../../admin/src/reducers.ts","../../../admin/src/utils/formAPI.ts","../../../admin/src/utils/prefixPluginTranslations.ts","../../../admin/src/components/AutoReloadOverlayBlocker.tsx","../../../admin/src/index.ts"],"sourcesContent":["export const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n main: [{ action: 'plugin::content-type-builder.read', subject: null }],\n};\n\nexport const MAX_COMPONENT_DEPTH = 6;\n","export const pluginId = 'content-type-builder';\n","import type { Schema } from '@strapi/types';\n\n/**\n *\n * Retrieves the relation type\n */\nexport const getRelationType = (\n relation: Schema.Attribute.RelationKind.WithTarget | undefined,\n targetAttribute?: string | null\n) => {\n const hasNotTargetAttribute = targetAttribute === undefined || targetAttribute === null;\n\n if (relation === 'oneToOne' && hasNotTargetAttribute) {\n return 'oneWay';\n }\n\n if (relation === 'oneToMany' && hasNotTargetAttribute) {\n return 'manyWay';\n }\n\n return relation;\n};\n","const makeUnique = <T extends string>(array: T[]): T[] => [...new Set(array)];\n\nexport { makeUnique };\n","import get from 'lodash/get';\n\nimport { makeUnique } from '../../../utils/makeUnique';\n\nimport type { AttributeType, Components } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nconst retrieveComponentsFromSchema = (\n attributes: AttributeType[],\n allComponentsData: Components\n): Internal.UID.Component[] => {\n const allComponents: Internal.UID.Component[] = attributes.reduce((acc: any, current) => {\n const type = current.type;\n if (type === 'component') {\n const currentComponentName = current.component;\n // Push the existing compo\n acc.push(currentComponentName);\n\n const currentComponentAttributes = get(\n allComponentsData,\n [currentComponentName, 'schema', 'attributes'],\n []\n );\n\n // Retrieve the nested ones\n acc.push(...retrieveComponentsFromSchema(currentComponentAttributes, allComponentsData));\n }\n\n if (type === 'dynamiczone') {\n const dynamicZoneComponents = current.components;\n const componentsFromDZComponents = dynamicZoneComponents.reduce((acc2: any, currentUid) => {\n const compoAttrs = get(allComponentsData, [currentUid, 'schema', 'attributes'], []);\n\n return [...acc2, ...retrieveComponentsFromSchema(compoAttrs, allComponentsData)];\n }, []);\n\n return [...acc, ...dynamicZoneComponents, ...componentsFromDZComponents];\n }\n\n return acc;\n }, []);\n\n return makeUnique<Internal.UID.Component>(allComponents);\n};\n\nexport { retrieveComponentsFromSchema };\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { current } from 'immer';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { makeUnique } from '../../utils/makeUnique';\n\nimport { retrieveComponentsFromSchema } from './utils/retrieveComponentsFromSchema';\n\nimport type { DataManagerStateType, ContentType, AttributeType, Component } from '../../types';\nimport type { Internal, Schema } from '@strapi/types';\n\ntype Target = 'component' | 'components' | 'contentType' | 'contentTypes';\n\n// TODO: Define all possible actions based on type\nexport type Action<T = any> = {\n type: T;\n uid?: string;\n mainDataKey: Target;\n schemaType: 'component' | 'contentType';\n attributeToRemoveName?: string;\n [key: string]: any;\n};\n\nconst DEFAULT_MODIFIED_DATA = {\n components: {},\n contentTypes: {},\n};\n\nconst initialState: DataManagerStateType = {\n components: {},\n contentTypes: {},\n initialComponents: {},\n initialContentTypes: {},\n initialData: {},\n modifiedData: {\n ...DEFAULT_MODIFIED_DATA,\n },\n reservedNames: {},\n isLoading: true,\n};\n\nconst ONE_SIDE_RELATIONS = ['oneWay', 'manyWay'];\n\nconst getOppositeRelation = (originalRelation?: Schema.Attribute.RelationKind.WithTarget) => {\n if (originalRelation === 'manyToOne') {\n return 'oneToMany';\n }\n\n if (originalRelation === 'oneToMany') {\n return 'manyToOne';\n }\n\n return originalRelation;\n};\n\nconst findAttributeIndex = (schema: any, attributeToFind?: string) => {\n return schema.schema.attributes.findIndex(\n ({ name }: { name: string }) => name === attributeToFind\n );\n};\n\ntype InitPayload = {\n components: Record<string, Component>;\n contentTypes: Record<string, ContentType>;\n reservedNames: Record<string, string>;\n};\n\ntype AddAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Target;\n targetUid: string;\n shouldAddComponentToData: boolean;\n};\n\ntype AddCreateComponentToDynamicZonePayload = {\n dynamicZoneTarget: string;\n componentsToAdd: Internal.UID.Component[];\n};\n\ntype AddCustomFieldAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Target;\n targetUid: string;\n};\n\ntype ChangeDynamicZoneComponentsPayload = {\n dynamicZoneTarget: string;\n newComponents: Internal.UID.Component[];\n};\n\ntype CreateComponentSchemaPayload = {\n uid: string;\n data: any;\n componentCategory: string;\n shouldAddComponentToData: boolean;\n};\n\ntype CreateSchemaPayload = {\n uid: string;\n data: any;\n};\n\ntype EditAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Target;\n targetUid: string;\n initialAttribute: Record<string, any>;\n};\n\ntype EditCustomFieldAttributePayload = {\n attributeToSet: Record<string, any>;\n forTarget: Target;\n targetUid: string;\n initialAttribute: Record<string, any>;\n};\n\ntype RemoveComponentFromDynamicZonePayload = {\n dzName: string;\n componentToRemoveIndex: number;\n};\n\ntype RemoveFieldPayload = {\n mainDataKey: Target;\n attributeToRemoveName: string;\n};\n\ntype RemoveFieldFromDisplayedComponentPayload = {\n attributeToRemoveName: string;\n componentUid: string;\n};\n\ntype SetModifiedDataPayload = {\n schemaToSet: Partial<DataManagerStateType['modifiedData']>;\n hasJustCreatedSchema: boolean;\n};\n\ntype UpdateSchemaPayload =\n | {\n data: Record<string, any>;\n schemaType: 'component';\n uid: string;\n }\n | {\n data: Record<string, any>;\n schemaType: 'contentType';\n };\n\nconst slice = createSlice({\n name: 'data-manager',\n initialState,\n reducers: {\n init: (state, action: PayloadAction<InitPayload>) => {\n const { components, contentTypes, reservedNames } = action.payload;\n\n state.components = components;\n state.initialComponents = components;\n state.initialContentTypes = contentTypes;\n state.contentTypes = contentTypes;\n state.reservedNames = reservedNames;\n state.isLoading = false;\n\n state.modifiedData = {\n ...DEFAULT_MODIFIED_DATA,\n component: state.modifiedData.component\n ? components[state.modifiedData.component.uid]\n : undefined,\n contentType: state.modifiedData.contentType\n ? contentTypes[state.modifiedData.contentType.uid]\n : undefined,\n components: state.modifiedData.components\n ? Object.keys(state.modifiedData.components).reduce(\n (acc, key) => {\n acc[key] = components[key];\n return acc;\n },\n {} as Record<string, Component>\n )\n : {},\n contentTypes: state.modifiedData.contentTypes\n ? Object.keys(state.modifiedData.contentTypes).reduce(\n (acc, key) => {\n acc[key] = contentTypes[key];\n return acc;\n },\n {} as Record<string, ContentType>\n )\n : {},\n };\n state.initialData = state.modifiedData;\n },\n addAttribute: (state, action: PayloadAction<AddAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid, shouldAddComponentToData } = action.payload;\n const { name, ...rest } = attributeToSet;\n\n delete rest.createComponent;\n\n const pathToDataToEdit = ['component', 'contentType'].includes(forTarget)\n ? [forTarget]\n : [forTarget, targetUid];\n\n const currentAttributes = get(\n state,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'],\n []\n ).slice();\n\n // Add the createdAttribute\n const updatedAttributes = [...currentAttributes, { ...rest, name }];\n\n set(state, ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'], updatedAttributes);\n\n if (shouldAddComponentToData) {\n const componentToAddUID = rest.component;\n const componentToAdd = state.components[componentToAddUID];\n const isTemporaryComponent = componentToAdd?.isTemporary;\n const hasComponentAlreadyBeenAdded =\n state.modifiedData.components?.[componentToAddUID] !== undefined;\n\n if (isTemporaryComponent || hasComponentAlreadyBeenAdded) {\n return;\n }\n\n // Initialize modifiedData.components if it is undefined\n if (!state.modifiedData.components) {\n state.modifiedData.components = {};\n }\n\n // Add the added component to the modifiedData.components\n state.modifiedData.components[componentToAddUID] = componentToAdd;\n\n const nestedComponents = retrieveComponentsFromSchema(\n componentToAdd.schema.attributes as AttributeType[],\n state.components\n );\n\n // We dont' need to set the already added components otherwise all modifications will be lost so we need to only add the not modified ones\n const nestedComponentsToAddInModifiedData = nestedComponents.filter(\n (compoUID: Internal.UID.Component) => {\n return get(state, ['modifiedData', 'components', compoUID]) === undefined;\n }\n );\n\n nestedComponentsToAddInModifiedData.forEach((compoUID: Internal.UID.Component) => {\n const compoSchema = get(state, ['components', compoUID], {}) as Component;\n const isTemporary = compoSchema.isTemporary || false;\n\n // If the nested component has not been saved we don't need to add them as they are already in the state\n if (!isTemporary) {\n if (!state.modifiedData.components) {\n state.modifiedData.components = {};\n }\n\n state.modifiedData.components[compoUID] = compoSchema;\n }\n });\n\n return;\n }\n\n const isCreatingRelationAttribute = rest.type === 'relation';\n\n if (isCreatingRelationAttribute) {\n const target = rest.target;\n const targetAttribute = rest.targetAttribute || null;\n const relation = rest.relation;\n const relationType = getRelationType(relation, targetAttribute);\n const currentUid = get(state, ['modifiedData', ...pathToDataToEdit, 'uid']);\n\n // When the user in creating a relation with the same content type we need to create another attribute\n // that is the opposite of the created one\n if (\n rest.type === 'relation' &&\n relationType !== 'oneWay' &&\n relationType !== 'manyWay' &&\n target === currentUid\n ) {\n const oppositeAttribute = {\n name: targetAttribute,\n relation: getOppositeRelation(relationType),\n target,\n targetAttribute: name,\n type: 'relation',\n } as AttributeType;\n\n if (rest.private) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n oppositeAttribute.private = rest.private;\n }\n\n const attributesToSet = [...updatedAttributes, oppositeAttribute];\n\n set(\n state,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'],\n attributesToSet\n );\n }\n }\n },\n addCreatedComponentToDynamicZone: (\n state,\n action: PayloadAction<AddCreateComponentToDynamicZonePayload>\n ) => {\n const { dynamicZoneTarget, componentsToAdd } = action.payload;\n\n const dzAttributeIndex = findAttributeIndex(\n state.modifiedData.contentType,\n dynamicZoneTarget\n );\n\n componentsToAdd.forEach((componentUid: Internal.UID.Component) => {\n if (!state.modifiedData.contentType) {\n return;\n }\n\n if (!state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components) {\n state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components = [];\n }\n state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components.push(\n componentUid\n );\n });\n },\n addCustomFieldAttribute: (state, action: PayloadAction<AddCustomFieldAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n const { name, ...rest } = attributeToSet;\n\n const pathToDataToEdit = ['component', 'contentType'].includes(forTarget)\n ? [forTarget]\n : [forTarget, targetUid];\n\n const currentAttributes = get(\n state,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'],\n []\n ).slice();\n\n // Add the createdAttribute\n const updatedAttributes = [...currentAttributes, { ...rest, name }];\n\n set(state, ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'], updatedAttributes);\n },\n changeDynamicZoneComponents: (\n state,\n action: PayloadAction<ChangeDynamicZoneComponentsPayload>\n ) => {\n const { dynamicZoneTarget, newComponents } = action.payload;\n\n const dzAttributeIndex = findAttributeIndex(\n state.modifiedData.contentType,\n dynamicZoneTarget\n );\n\n const currentDZComponents =\n (state.modifiedData.contentType?.schema.attributes[dzAttributeIndex]).components;\n\n const updatedComponents = makeUnique([...currentDZComponents, ...newComponents]);\n\n (state.modifiedData.contentType?.schema.attributes[dzAttributeIndex]).components =\n updatedComponents;\n\n // Retrieve all the components that needs to be added to the modifiedData.components\n const nestedComponents = retrieveComponentsFromSchema(\n current(state.modifiedData.contentType?.schema.attributes),\n state.components\n );\n\n // We dont' need to set the already added components otherwise all modifications will be lost so we need to only add the not modified ones\n const nestedComponentsToAddInModifiedData = nestedComponents.filter((compoUID) => {\n return get(state, ['modifiedData', 'components', compoUID]) === undefined;\n });\n\n nestedComponentsToAddInModifiedData.forEach((compoUID: Internal.UID.Component) => {\n const compoSchema = get(state, ['components', compoUID], {}) as Component;\n const isTemporary = compoSchema.isTemporary || false;\n\n // If the nested component has not been saved we don't need to add them as they are already in the state\n if (!isTemporary) {\n if (!state.modifiedData.components) {\n state.modifiedData.components = {};\n }\n state.modifiedData.components[compoUID] = compoSchema;\n }\n });\n },\n createComponentSchema: (state, action: PayloadAction<CreateComponentSchemaPayload>) => {\n const { uid, data, componentCategory, shouldAddComponentToData } = action.payload;\n\n const newSchema: Component = {\n uid: uid as Internal.UID.Component,\n isTemporary: true,\n category: componentCategory,\n schema: {\n ...data,\n attributes: [],\n },\n };\n\n state.components[uid as string] = newSchema;\n\n if (shouldAddComponentToData) {\n state.modifiedData.components[uid as string] = newSchema;\n }\n },\n createSchema: (state, action: PayloadAction<CreateSchemaPayload>) => {\n const { uid, data } = action.payload;\n\n const newSchema: ContentType = {\n uid: uid as Internal.UID.ContentType,\n isTemporary: true,\n schema: {\n ...data,\n attributes: [],\n },\n };\n\n state.contentTypes[uid] = newSchema;\n },\n editAttribute: (state, action: PayloadAction<EditAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid, initialAttribute } = action.payload;\n const { name, ...rest } = attributeToSet;\n\n const initialAttributeName = initialAttribute.name;\n const pathToDataToEdit = ['component', 'contentType'].includes(forTarget)\n ? [forTarget]\n : [forTarget, targetUid];\n\n const initialAttributeIndex = findAttributeIndex(\n get(state, ['modifiedData', ...pathToDataToEdit]),\n initialAttributeName\n );\n\n const isEditingRelation = rest.type === 'relation';\n\n if (!isEditingRelation) {\n set(\n state,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes', initialAttributeIndex],\n attributeToSet\n );\n\n return;\n }\n\n const updatedAttributes: AttributeType[] = get(state, [\n 'modifiedData',\n ...pathToDataToEdit,\n 'schema',\n 'attributes',\n ]).slice();\n\n // First create the current relation attribute updated\n const toSet = {\n name,\n relation: rest.relation,\n target: rest.target,\n targetAttribute: rest.targetAttribute,\n type: 'relation',\n } as AttributeType;\n\n if (rest.private) {\n toSet.private = rest.private;\n }\n\n if (rest.pluginOptions) {\n toSet.pluginOptions = rest.pluginOptions;\n }\n\n const currentAttributeIndex = updatedAttributes.findIndex((value: AttributeType) => {\n return value.name !== undefined && value.name === initialAttribute.name;\n });\n\n // First set it in the updatedAttributes\n if (currentAttributeIndex !== -1) {\n updatedAttributes.splice(currentAttributeIndex, 1, toSet);\n }\n\n let oppositeAttributeNameToRemove: string | null = null;\n let oppositeAttributeNameToUpdate: string | null = null;\n let oppositeAttributeToCreate: AttributeType | null = null;\n let initialOppositeAttribute = null;\n\n const currentUid = get(state, ['modifiedData', ...pathToDataToEdit, 'uid']);\n const didChangeTargetRelation = initialAttribute.target !== rest.target;\n const didCreateInternalRelation = rest.target === currentUid;\n const relationType = getRelationType(rest.relation, rest.targetAttribute);\n const initialRelationType = getRelationType(\n initialAttribute.relation,\n initialAttribute.targetAttribute\n );\n const hadInternalRelation = initialAttribute.target === currentUid;\n const didChangeRelationType = initialRelationType !== relationType;\n const shouldRemoveOppositeAttributeBecauseOfTargetChange =\n didChangeTargetRelation &&\n !didCreateInternalRelation &&\n hadInternalRelation &&\n isEditingRelation;\n const shouldRemoveOppositeAttributeBecauseOfRelationTypeChange =\n didChangeRelationType &&\n hadInternalRelation &&\n ['oneWay', 'manyWay'].includes(relationType!) &&\n isEditingRelation;\n const shouldUpdateOppositeAttributeBecauseOfRelationTypeChange =\n !ONE_SIDE_RELATIONS.includes(initialRelationType!) &&\n !ONE_SIDE_RELATIONS.includes(relationType!) &&\n hadInternalRelation &&\n didCreateInternalRelation &&\n isEditingRelation;\n const shouldCreateOppositeAttributeBecauseOfRelationTypeChange =\n ONE_SIDE_RELATIONS.includes(initialRelationType!) &&\n !ONE_SIDE_RELATIONS.includes(relationType!) &&\n hadInternalRelation &&\n didCreateInternalRelation &&\n isEditingRelation;\n const shouldCreateOppositeAttributeBecauseOfTargetChange =\n didChangeTargetRelation &&\n didCreateInternalRelation &&\n !ONE_SIDE_RELATIONS.includes(relationType!);\n\n // Store opposite attribute name to remove at the end of the loop\n if (\n shouldRemoveOppositeAttributeBecauseOfTargetChange ||\n shouldRemoveOppositeAttributeBecauseOfRelationTypeChange\n ) {\n oppositeAttributeNameToRemove = initialAttribute.targetAttribute;\n }\n\n // In case of oneWay or manyWay relation there isn't an opposite attribute\n if (oppositeAttributeNameToRemove) {\n const indexToRemove = updatedAttributes.findIndex(\n (value) => value.name === oppositeAttributeNameToRemove\n );\n\n updatedAttributes.splice(indexToRemove, 1);\n }\n\n // In order to preserve plugin options need to get the initial opposite attribute settings\n if (!shouldRemoveOppositeAttributeBecauseOfTargetChange) {\n const initialTargetContentType = get(state, [\n 'initialContentTypes',\n initialAttribute.target,\n ]);\n\n if (initialTargetContentType) {\n const oppositeAttributeIndex = findAttributeIndex(\n initialTargetContentType,\n initialAttribute.targetAttribute\n );\n\n initialOppositeAttribute = get(state, [\n 'initialContentTypes',\n initialAttribute.target,\n 'schema',\n 'attributes',\n oppositeAttributeIndex,\n ]);\n }\n }\n\n // Create the opposite attribute\n if (\n shouldCreateOppositeAttributeBecauseOfRelationTypeChange ||\n shouldCreateOppositeAttributeBecauseOfTargetChange\n ) {\n oppositeAttributeToCreate = {\n name: rest.targetAttribute,\n relation: getOppositeRelation(relationType),\n target: rest.target,\n targetAttribute: name,\n type: 'relation',\n } as AttributeType;\n\n if (rest.private) {\n oppositeAttributeToCreate.private = rest.private;\n }\n\n if (initialOppositeAttribute && initialOppositeAttribute.pluginOptions) {\n oppositeAttributeToCreate.pluginOptions = initialOppositeAttribute.pluginOptions;\n }\n\n const indexOfInitialAttribute = updatedAttributes.findIndex(\n ({ name }) => name === initialAttribute.name\n );\n const indexOfUpdatedAttribute = updatedAttributes.findIndex(\n ({ name: attrName }) => name === attrName\n );\n\n const indexToInsert =\n (indexOfInitialAttribute === -1 ? indexOfUpdatedAttribute : indexOfInitialAttribute) + 1;\n\n updatedAttributes.splice(indexToInsert, 0, oppositeAttributeToCreate);\n }\n\n if (shouldUpdateOppositeAttributeBecauseOfRelationTypeChange) {\n oppositeAttributeNameToUpdate = initialAttribute.targetAttribute;\n\n oppositeAttributeToCreate = {\n name: rest.targetAttribute,\n relation: getOppositeRelation(relationType),\n target: rest.target,\n targetAttribute: name,\n type: 'relation',\n } as AttributeType;\n\n if (rest.private) {\n oppositeAttributeToCreate.private = rest.private;\n }\n\n if (initialOppositeAttribute && initialOppositeAttribute.pluginOptions) {\n oppositeAttributeToCreate.pluginOptions = initialOppositeAttribute.pluginOptions;\n }\n\n if (oppositeAttributeNameToUpdate) {\n const indexToUpdate = updatedAttributes.findIndex(\n ({ name }) => name === oppositeAttributeNameToUpdate\n );\n\n updatedAttributes.splice(indexToUpdate, 1, oppositeAttributeToCreate);\n }\n }\n\n set(state, ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'], updatedAttributes);\n },\n editCustomFieldAttribute: (state, action: PayloadAction<EditCustomFieldAttributePayload>) => {\n const { forTarget, targetUid, initialAttribute, attributeToSet } = action.payload;\n\n const initialAttributeName = initialAttribute.name;\n const pathToDataToEdit = ['component', 'contentType'].includes(forTarget)\n ? [forTarget]\n : [forTarget, targetUid];\n\n const initialAttributeIndex = findAttributeIndex(\n get(state, ['modifiedData', ...pathToDataToEdit]),\n initialAttributeName\n );\n\n set(\n state,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes', initialAttributeIndex],\n attributeToSet\n );\n },\n updateInitialState: (state) => {\n state.initialData = state.modifiedData;\n },\n deleteNotSavedType: (state) => {\n // Doing so will also reset the modified and the initial data\n state.contentTypes = state.initialContentTypes;\n state.components = state.initialComponents;\n },\n reloadPlugin: () => {\n return initialState;\n },\n removeComponentFromDynamicZone: (\n state,\n action: PayloadAction<RemoveComponentFromDynamicZonePayload>\n ) => {\n const { dzName, componentToRemoveIndex } = action.payload;\n\n const dzAttributeIndex = findAttributeIndex(state.modifiedData.contentType, dzName);\n\n if (state.modifiedData.contentType) {\n state.modifiedData.contentType.schema.attributes[dzAttributeIndex].components.splice(\n componentToRemoveIndex,\n 1\n );\n }\n },\n removeField: (state, action: PayloadAction<RemoveFieldPayload>) => {\n const { mainDataKey, attributeToRemoveName } = action.payload;\n const pathToAttributes = ['modifiedData', mainDataKey, 'schema', 'attributes'];\n const attributeToRemoveIndex = findAttributeIndex(\n state.modifiedData[mainDataKey],\n attributeToRemoveName\n );\n\n const pathToAttributeToRemove = [...pathToAttributes, attributeToRemoveIndex];\n const attributeToRemoveData = get(state, pathToAttributeToRemove);\n const isRemovingRelationAttribute = attributeToRemoveData.type === 'relation';\n // Only content types can have relations with themselves since\n // components can only have oneWay or manyWay relations\n const canTheAttributeToRemoveHaveARelationWithItself = mainDataKey === 'contentType';\n\n if (isRemovingRelationAttribute && canTheAttributeToRemoveHaveARelationWithItself) {\n const { target, relation, targetAttribute } = attributeToRemoveData;\n const relationType = getRelationType(relation, targetAttribute);\n\n const uid = state.modifiedData.contentType?.uid;\n const shouldRemoveOppositeAttribute =\n target === uid && !ONE_SIDE_RELATIONS.includes(relationType!);\n\n if (shouldRemoveOppositeAttribute) {\n const attributes: AttributeType[] =\n state.modifiedData[mainDataKey]?.schema.attributes.slice();\n const nextAttributes = attributes.filter((attribute) => {\n if (attribute.name === attributeToRemoveName) {\n return false;\n }\n\n if (attribute.target === uid && attribute.targetAttribute === attributeToRemoveName) {\n return false;\n }\n\n return true;\n });\n\n const schema = state.modifiedData[mainDataKey];\n if (schema) {\n schema.schema.attributes = nextAttributes;\n }\n\n return;\n }\n }\n\n // Find all uid fields that have the targetField set to the field we are removing\n\n const uidFieldsToUpdate: string[] = state.modifiedData[\n mainDataKey\n ]!.schema.attributes.slice().reduce((acc: string[], current: AttributeType) => {\n if (current.type !== 'uid') {\n return acc;\n }\n\n if (current.targetField !== attributeToRemoveName) {\n return acc;\n }\n\n acc.push(current.name as string);\n\n return acc;\n }, []);\n\n uidFieldsToUpdate.forEach((fieldName) => {\n const fieldIndex = findAttributeIndex(state.modifiedData[mainDataKey], fieldName);\n\n delete state.modifiedData[mainDataKey]?.schema.attributes[fieldIndex].targetField;\n });\n\n state.modifiedData[mainDataKey]?.schema.attributes.splice(attributeToRemoveIndex, 1);\n },\n removeFieldFromDisplayedComponent: (\n state,\n action: PayloadAction<RemoveFieldFromDisplayedComponentPayload>\n ) => {\n const { attributeToRemoveName, componentUid } = action.payload;\n\n const attributeToRemoveIndex = findAttributeIndex(\n state.modifiedData.components?.[componentUid],\n attributeToRemoveName\n );\n\n state.modifiedData.components?.[componentUid]?.schema?.attributes?.splice(\n attributeToRemoveIndex,\n 1\n );\n },\n setModifiedData: (state, action: PayloadAction<SetModifiedDataPayload>) => {\n const { schemaToSet, hasJustCreatedSchema } = action.payload;\n\n const schema = {\n ...DEFAULT_MODIFIED_DATA,\n ...schemaToSet,\n };\n\n state.initialData = schema;\n state.modifiedData = schema;\n\n // Reset the state with the initial data\n // All created components and content types will be lost\n if (!hasJustCreatedSchema) {\n state.components = state.initialComponents;\n state.contentTypes = state.initialContentTypes;\n }\n },\n updateSchema: (state, action: PayloadAction<UpdateSchemaPayload>) => {\n const { data, schemaType } = action.payload;\n\n const schema = state.modifiedData[schemaType];\n if (!schema) {\n return;\n }\n\n schema.schema.displayName = data.displayName;\n\n if (schemaType === 'component') {\n const { uid } = action.payload;\n\n schema.category = data.category;\n schema.schema.icon = data.icon;\n const addedComponent = current(schema);\n state.components[uid] = addedComponent as Component;\n } else {\n schema.schema.kind = data.kind;\n }\n },\n },\n});\n\nexport const { reducer, actions } = slice;\nexport { initialState };\n","import slugify from '@sindresorhus/slugify';\n\nexport const nameToSlug = (name: string) => slugify(name, { separator: '-' });\n","import { nameToSlug } from '../../../utils/nameToSlug';\n\nimport type { Internal } from '@strapi/types';\n\nconst createUid = (name: string): Internal.UID.ContentType => {\n const modelName = nameToSlug(name);\n return `api::${modelName}.${modelName}`;\n};\n\n// From `content-type-builder/services/Components/createComponentUid`\nconst createComponentUid = (name: string, category: string): Internal.UID.Component => {\n return `${nameToSlug(category)}.${nameToSlug(name)}`;\n};\n\nexport { createComponentUid, createUid };\n","export const customFieldDefaultOptionsReducer = (acc: any, option: any) => {\n if (option.items) {\n return option.items.reduce(customFieldDefaultOptionsReducer, acc);\n }\n\n if ('defaultValue' in option) {\n const { name, defaultValue } = option;\n acc.push({ name, defaultValue });\n }\n\n return acc;\n};\n","/* eslint-disable no-confusing-arrow */\n\nimport type { Schema } from '@strapi/types';\n\nconst shouldPluralizeName = (nature: Schema.Attribute.RelationKind.Any) =>\n ['manyToMany', 'oneToMany', 'manyWay'].includes(nature) ? 2 : 1;\n\nconst shouldPluralizeTargetAttribute = (nature: Schema.Attribute.RelationKind.Any) =>\n ['manyToMany', 'manyToOne'].includes(nature) ? 2 : 1;\n\nexport { shouldPluralizeName, shouldPluralizeTargetAttribute };\n","import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema } from '@strapi/types';\n\ntype State = {\n formErrors: Record<string, any>;\n modifiedData: Record<string, any>;\n initialData: Record<string, any>;\n componentToCreate: Record<string, any>;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: any;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n options?: Record<string, any>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n options?: Record<string, any>;\n};\n\ntype SetDataToEditPayload = {\n data: Record<string, any>;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: Record<string, any>;\n }\n | {\n isEditing?: false;\n modifiedDataToSetForEditing: Record<string, any>;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, any>;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: Record<string, any>;\n }\n | {\n isEditing?: false;\n modifiedDataToSetForEditing: Record<string, any>;\n customField: Record<string, any>;\n options?: Record<string, any>;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: Record<string, any>;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, any>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = Boolean(obj.default);\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name;\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n if (isEditing) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n if (isEditing) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = action.payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }: { name: string; defaultValue: string }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n","import { reducer as dataManagerProviderReducer } from './components/DataManagerProvider/reducer';\nimport { reducer as formModalReducer } from './components/FormModal/reducer';\nimport { pluginId } from './pluginId';\n\nexport const reducers = {\n [`${pluginId}_formModal`]: formModalReducer,\n [`${pluginId}_dataManagerProvider`]: dataManagerProviderReducer,\n};\n","import cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport * as yup from 'yup';\n// TODO V5 Convert any into real types\nexport const formsAPI: any = {\n components: {\n inputs: {} as Record<string, any>,\n add({ id, component }: { id: string; component: any }) {\n if (!this.inputs[id]) {\n this.inputs[id] = component;\n }\n },\n },\n types: {\n attribute: {\n // test: {\n // validators: [],\n // form: {\n // advanced: [\n // /* cb */\n // ],\n // base: [\n // /* cb */\n // ],\n // },\n // },\n },\n contentType: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n component: {\n validators: [],\n form: {\n advanced: [],\n base: [],\n },\n },\n },\n contentTypeSchemaMutations: [],\n addContentTypeSchemaMutation(cb: any) {\n this.contentTypeSchemaMutations.push(cb);\n },\n extendContentType({ validator, form: { advanced, base } }: any) {\n const { contentType } = this.types;\n\n if (validator) {\n contentType.validators.push(validator);\n }\n contentType.form.advanced.push(advanced);\n contentType.form.base.push(base);\n },\n extendFields(fields: any, { validator, form: { advanced, base } }: any) {\n const formType = this.types.attribute;\n\n fields.forEach((field: any) => {\n if (!formType[field]) {\n formType[field] = {\n validators: [],\n form: {\n advanced: [\n /* cb */\n ],\n base: [\n /* cb */\n ],\n },\n };\n }\n\n if (validator) {\n formType[field].validators.push(validator);\n }\n formType[field].form.advanced.push(advanced);\n formType[field].form.base.push(base);\n });\n },\n\n getAdvancedForm(target: any, props = null) {\n const sectionsToAdd = get(this.types, [...target, 'form', 'advanced'], []).reduce(\n (acc: any, current: any) => {\n const sections = current(props);\n\n return [...acc, ...sections];\n },\n []\n );\n\n return sectionsToAdd;\n },\n\n makeCustomFieldValidator(attributeShape: any, validator: any, ...validatorArgs: any) {\n // When no validator, return the attribute shape\n if (!validator) return attributeShape;\n\n // Otherwise extend the shape with the provided validator\n return attributeShape.shape({ options: yup.object().shape(validator(validatorArgs)) });\n },\n\n makeValidator(target: any, initShape: any, ...args: any) {\n const validators = get(this.types, [...target, 'validators'], []);\n\n const pluginOptionsShape = validators.reduce((acc: any, current: any) => {\n const pluginOptionShape = current(args);\n\n return { ...acc, ...pluginOptionShape };\n }, {});\n\n return initShape.shape({ pluginOptions: yup.object().shape(pluginOptionsShape) });\n },\n mutateContentTypeSchema(data: Record<string, unknown>, initialData: Record<string, unknown>) {\n let enhancedData: any = cloneDeep(data);\n\n const refData: any = cloneDeep(initialData);\n\n this.contentTypeSchemaMutations.forEach((cb: any) => {\n enhancedData = cb(enhancedData, refData);\n });\n\n return enhancedData;\n },\n};\n","type TradOptions = Record<string, string>;\n\nconst prefixPluginTranslations = (trad: TradOptions, pluginId: string): TradOptions => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n return acc;\n }, {} as TradOptions);\n};\n\nexport { prefixPluginTranslations };\n","import * as React from 'react';\n\nimport { Box, Flex, Typography, Link } from '@strapi/design-system';\nimport { Clock, ArrowClockwise } from '@strapi/icons';\nimport { createPortal } from 'react-dom';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\n/**\n * TODO: realistically a lot of this logic is isolated to the `core/admin` package.\n * However, we want to expose the `useAutoReloadOverlayBlocker` hook to the plugins.\n *\n * Therefore, in V5 we should move this logic back to the `core/admin` package & export\n * the hook from that package and re-export here. For now, let's keep it all together\n * because it's easier to diagnose and we're not using a million refs because we don't\n * understand what's going on.\n */\nexport interface AutoReloadOverlayBlockerConfig {\n title?: string;\n description?: string;\n icon?: 'reload' | 'time';\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Context\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerContextValue {\n lockAppWithAutoreload?: (config?: AutoReloadOverlayBlockerConfig) => void;\n unlockAppWithAutoreload?: () => void;\n}\n\nconst AutoReloadOverlayBlockerContext = React.createContext<AutoReloadOverlayBlockerContextValue>(\n {}\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Provider\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface AutoReloadOverlayBlockerProviderProps {\n children: React.ReactNode;\n}\n\nconst MAX_ELAPSED_TIME = 30 * 1000;\n\nconst AutoReloadOverlayBlockerProvider = ({ children }: AutoReloadOverlayBlockerProviderProps) => {\n const [isOpen, setIsOpen] = React.useState(false);\n const [config, setConfig] = React.useState<AutoReloadOverlayBlockerConfig>({});\n const [failed, setFailed] = React.useState(false);\n\n const lockAppWithAutoreload = React.useCallback((config: AutoReloadOverlayBlockerConfig = {}) => {\n setIsOpen(true);\n setConfig(config);\n }, []);\n\n const unlockAppWithAutoreload = React.useCallback(() => {\n setIsOpen(false);\n setConfig({});\n }, []);\n\n // eslint-disable-next-line consistent-return\n React.useEffect(() => {\n if (isOpen) {\n const timeout = setTimeout(() => {\n setFailed(true);\n }, MAX_ELAPSED_TIME);\n\n return () => {\n clearTimeout(timeout);\n };\n }\n }, [isOpen]);\n\n let displayedIcon = config?.icon || 'reload';\n\n let description = {\n id: config?.description || 'components.OverlayBlocker.description',\n defaultMessage:\n \"You're using a feature that needs the server to restart. The page will reload automatically.\",\n };\n\n let title = {\n id: config?.title || 'components.OverlayBlocker.title',\n defaultMessage: 'Waiting for restart',\n };\n\n if (failed) {\n displayedIcon = 'time';\n\n description = {\n id: 'components.OverlayBlocker.description.serverError',\n defaultMessage: 'The server should have restarted, please check your logs in the terminal.',\n };\n\n title = {\n id: 'components.OverlayBlocker.title.serverError',\n defaultMessage: 'The restart is taking longer than expected',\n };\n }\n\n const autoReloadValue = React.useMemo(\n () => ({\n lockAppWithAutoreload,\n unlockAppWithAutoreload,\n }),\n [lockAppWithAutoreload, unlockAppWithAutoreload]\n );\n\n return (\n <AutoReloadOverlayBlockerContext.Provider value={autoReloadValue}>\n <Blocker\n displayedIcon={displayedIcon}\n isOpen={isOpen}\n description={description}\n title={title}\n />\n {children}\n </AutoReloadOverlayBlockerContext.Provider>\n );\n};\n\ninterface BlockerProps {\n displayedIcon: string;\n description: MessageDescriptor;\n isOpen: boolean;\n title: MessageDescriptor;\n}\n\nconst Blocker = ({ displayedIcon, description, title, isOpen }: BlockerProps) => {\n const { formatMessage } = useIntl();\n\n // eslint-disable-next-line no-undef\n return isOpen && globalThis?.document?.body\n ? createPortal(\n <Overlay id=\"autoReloadOverlayBlocker\" direction=\"column\" alignItems=\"center\" gap={6}>\n <Flex direction=\"column\" alignItems=\"center\" gap={2}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage(title)}\n </Typography>\n <Typography tag=\"h2\" textColor=\"neutral600\" fontSize={4} fontWeight=\"regular\">\n {formatMessage(description)}\n </Typography>\n </Flex>\n {displayedIcon === 'reload' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <LoaderReload width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n {displayedIcon === 'time' && (\n <IconBox padding={6} background=\"primary100\" borderColor=\"primary200\">\n <Clock width=\"4rem\" height=\"4rem\" />\n </IconBox>\n )}\n <Box marginTop={2}>\n <Link href=\"https://docs.strapi.io\" isExternal>\n {formatMessage({\n id: 'global.documentation',\n defaultMessage: 'Read the documentation',\n })}\n </Link>\n </Box>\n </Overlay>,\n // eslint-disable-next-line no-undef\n globalThis.document.body\n )\n : null;\n};\n\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n `;\n\nconst LoaderReload = styled(ArrowClockwise)`\n animation: ${rotation} 1s infinite linear;\n`;\n\nconst Overlay = styled(Flex)`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n /* TODO: set this up in the theme for consistence z-index values */\n z-index: 1140;\n padding-top: 16rem;\n\n & > * {\n position: relative;\n z-index: 1;\n }\n\n &:before {\n content: '';\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background: ${({ theme }) => theme.colors.neutral0};\n opacity: 0.9;\n }\n`;\n\nconst IconBox = styled(Box)`\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n svg {\n > path {\n fill: ${({ theme }) => theme.colors.primary600} !important;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Hook\n * -----------------------------------------------------------------------------------------------*/\n\nconst useAutoReloadOverlayBlocker = () => React.useContext(AutoReloadOverlayBlockerContext);\n\nexport { AutoReloadOverlayBlockerProvider, useAutoReloadOverlayBlocker };\n","import { Layout } from '@strapi/icons';\n\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { reducers } from './reducers';\nimport { formsAPI } from './utils/formAPI';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: StrapiApp) {\n app.addReducers(reducers);\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: Layout,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content-Type Builder',\n },\n permissions: PERMISSIONS.main,\n Component: () => import('./pages/App'),\n position: 5,\n });\n\n app.registerPlugin({\n id: pluginId,\n name: pluginId,\n // Internal APIs exposed by the CTB for the other plugins to use\n apis: {\n forms: formsAPI,\n },\n });\n },\n bootstrap() {},\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\nexport * from './exports';\n"],"names":["PERMISSIONS","main","action","subject","MAX_COMPONENT_DEPTH","pluginId","getRelationType","relation","targetAttribute","hasNotTargetAttribute","undefined","makeUnique","array","Set","retrieveComponentsFromSchema","attributes","allComponentsData","allComponents","reduce","acc","current","type","currentComponentName","component","push","currentComponentAttributes","get","dynamicZoneComponents","components","componentsFromDZComponents","acc2","currentUid","compoAttrs","DEFAULT_MODIFIED_DATA","contentTypes","initialState","initialComponents","initialContentTypes","initialData","modifiedData","reservedNames","isLoading","ONE_SIDE_RELATIONS","getOppositeRelation","originalRelation","findAttributeIndex","schema","attributeToFind","findIndex","name","slice","createSlice","reducers","init","state","payload","uid","contentType","Object","keys","key","addAttribute","attributeToSet","forTarget","targetUid","shouldAddComponentToData","rest","createComponent","pathToDataToEdit","includes","currentAttributes","updatedAttributes","set","componentToAddUID","componentToAdd","isTemporaryComponent","isTemporary","hasComponentAlreadyBeenAdded","nestedComponents","nestedComponentsToAddInModifiedData","filter","compoUID","forEach","compoSchema","isCreatingRelationAttribute","target","relationType","oppositeAttribute","private","attributesToSet","addCreatedComponentToDynamicZone","dynamicZoneTarget","componentsToAdd","dzAttributeIndex","componentUid","addCustomFieldAttribute","changeDynamicZoneComponents","newComponents","currentDZComponents","updatedComponents","createComponentSchema","data","componentCategory","newSchema","category","createSchema","editAttribute","initialAttribute","initialAttributeName","initialAttributeIndex","isEditingRelation","toSet","pluginOptions","currentAttributeIndex","value","splice","oppositeAttributeNameToRemove","oppositeAttributeNameToUpdate","oppositeAttributeToCreate","initialOppositeAttribute","didChangeTargetRelation","didCreateInternalRelation","initialRelationType","hadInternalRelation","didChangeRelationType","shouldRemoveOppositeAttributeBecauseOfTargetChange","shouldRemoveOppositeAttributeBecauseOfRelationTypeChange","shouldUpdateOppositeAttributeBecauseOfRelationTypeChange","shouldCreateOppositeAttributeBecauseOfRelationTypeChange","shouldCreateOppositeAttributeBecauseOfTargetChange","indexToRemove","initialTargetContentType","oppositeAttributeIndex","indexOfInitialAttribute","indexOfUpdatedAttribute","attrName","indexToInsert","indexToUpdate","editCustomFieldAttribute","updateInitialState","deleteNotSavedType","reloadPlugin","removeComponentFromDynamicZone","dzName","componentToRemoveIndex","removeField","mainDataKey","attributeToRemoveName","pathToAttributes","attributeToRemoveIndex","pathToAttributeToRemove","attributeToRemoveData","isRemovingRelationAttribute","canTheAttributeToRemoveHaveARelationWithItself","shouldRemoveOppositeAttribute","nextAttributes","attribute","uidFieldsToUpdate","targetField","fieldName","fieldIndex","removeFieldFromDisplayedComponent","setModifiedData","schemaToSet","hasJustCreatedSchema","updateSchema","schemaType","displayName","icon","addedComponent","kind","reducer","actions","nameToSlug","slugify","separator","createUid","modelName","createComponentUid","customFieldDefaultOptionsReducer","option","items","defaultValue","shouldPluralizeName","nature","shouldPluralizeTargetAttribute","formErrors","componentToCreate","isCreatingComponentWhileAddingAField","onChange","obj","hasDefaultValue","Boolean","default","length","previousType","onChangeRelationTarget","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","relationToSet","nameToSet","pluralize","snakeCase","currentTargetAttribute","targetAttributeToSet","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","step","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","formModalReducer","dataManagerProviderReducer","formsAPI","inputs","add","id","types","validators","form","contentTypeSchemaMutations","addContentTypeSchemaMutation","cb","extendContentType","validator","extendFields","fields","formType","field","getAdvancedForm","props","sectionsToAdd","sections","makeCustomFieldValidator","attributeShape","validatorArgs","shape","yup","object","makeValidator","initShape","args","pluginOptionsShape","pluginOptionShape","mutateContentTypeSchema","enhancedData","cloneDeep","refData","prefixPluginTranslations","trad","AutoReloadOverlayBlockerContext","React","createContext","MAX_ELAPSED_TIME","AutoReloadOverlayBlockerProvider","children","isOpen","setIsOpen","useState","config","setConfig","failed","setFailed","lockAppWithAutoreload","useCallback","unlockAppWithAutoreload","useEffect","timeout","setTimeout","clearTimeout","displayedIcon","description","defaultMessage","title","autoReloadValue","useMemo","_jsxs","Provider","_jsx","Blocker","formatMessage","useIntl","globalThis","document","body","createPortal","Overlay","direction","alignItems","gap","Flex","Typography","tag","variant","textColor","fontSize","fontWeight","IconBox","padding","background","borderColor","LoaderReload","width","height","Clock","Box","marginTop","Link","href","isExternal","rotation","keyframes","styled","ArrowClockwise","theme","colors","neutral0","primary600","useAutoReloadOverlayBlocker","useContext","register","app","addReducers","addMenuLink","to","Layout","intlLabel","permissions","Component","position","registerPlugin","apis","forms","bootstrap","registerTrads","locales","importedTrads","Promise","all","map","locale","then","catch","resolve"],"mappings":"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"}