@strapi/content-type-builder 5.0.0-beta.13 → 5.0.0-beta.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{ListView-xaNatyR5.js → ListView-Ck4RD5zv.js} +2 -2
- package/dist/_chunks/{ListView-xaNatyR5.js.map → ListView-Ck4RD5zv.js.map} +1 -1
- package/dist/_chunks/{ListView-XY2fP5rq.mjs → ListView-CvhNSPOj.mjs} +2 -2
- package/dist/_chunks/{ListView-XY2fP5rq.mjs.map → ListView-CvhNSPOj.mjs.map} +1 -1
- package/dist/_chunks/{index-CXnxyVmN.mjs → index-B75PCXjD.mjs} +104 -29
- package/dist/_chunks/index-B75PCXjD.mjs.map +1 -0
- package/dist/_chunks/{index-dNWVwai8.js → index-CzY3GwAJ.js} +9 -11
- package/dist/_chunks/index-CzY3GwAJ.js.map +1 -0
- package/dist/_chunks/{index-B8DNmsqZ.js → index-Dlls62x0.js} +104 -29
- package/dist/_chunks/index-Dlls62x0.js.map +1 -0
- package/dist/_chunks/{index-BTar7GUh.mjs → index-DxoOWoqf.mjs} +9 -11
- package/dist/_chunks/index-DxoOWoqf.mjs.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/components/DataManagerProvider/utils/retrieveComponentsThatHaveComponents.d.ts +11 -3
- package/dist/admin/src/components/DataManagerProvider/utils/retrieveNestedComponents.d.ts +8 -1
- package/dist/admin/src/components/FormModal/utils/getAttributesToDisplay.d.ts +2 -1
- package/dist/admin/src/components/SelectComponent.d.ts +2 -1
- package/dist/admin/src/constants.d.ts +1 -0
- package/dist/admin/src/utils/getMaxDepth.d.ts +23 -0
- package/dist/server/index.js +3 -22
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +3 -22
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/controllers/validation/types.d.ts.map +1 -1
- package/dist/server/src/utils/attributes.d.ts +1 -2
- package/dist/server/src/utils/attributes.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/_chunks/index-B8DNmsqZ.js.map +0 -1
- package/dist/_chunks/index-BTar7GUh.mjs.map +0 -1
- package/dist/_chunks/index-CXnxyVmN.mjs.map +0 -1
- package/dist/_chunks/index-dNWVwai8.js.map +0 -1
|
@@ -45,7 +45,7 @@ const __variableDynamicImportRuntimeHelper = (glob, path) => {
|
|
|
45
45
|
});
|
|
46
46
|
};
|
|
47
47
|
const name$1 = "@strapi/content-type-builder";
|
|
48
|
-
const version = "5.0.0-beta.
|
|
48
|
+
const version = "5.0.0-beta.14";
|
|
49
49
|
const description = "Create and manage content types";
|
|
50
50
|
const repository = {
|
|
51
51
|
type: "git",
|
|
@@ -104,9 +104,9 @@ const dependencies = {
|
|
|
104
104
|
"@reduxjs/toolkit": "1.9.7",
|
|
105
105
|
"@sindresorhus/slugify": "1.1.0",
|
|
106
106
|
"@strapi/design-system": "2.0.0-beta.6",
|
|
107
|
-
"@strapi/generators": "5.0.0-beta.
|
|
107
|
+
"@strapi/generators": "5.0.0-beta.14",
|
|
108
108
|
"@strapi/icons": "2.0.0-beta.6",
|
|
109
|
-
"@strapi/utils": "5.0.0-beta.
|
|
109
|
+
"@strapi/utils": "5.0.0-beta.14",
|
|
110
110
|
"date-fns": "2.30.0",
|
|
111
111
|
"fs-extra": "11.2.0",
|
|
112
112
|
immer: "9.0.21",
|
|
@@ -118,9 +118,9 @@ const dependencies = {
|
|
|
118
118
|
yup: "0.32.9"
|
|
119
119
|
};
|
|
120
120
|
const devDependencies = {
|
|
121
|
-
"@strapi/admin": "5.0.0-beta.
|
|
121
|
+
"@strapi/admin": "5.0.0-beta.14",
|
|
122
122
|
"@strapi/pack-up": "5.0.0",
|
|
123
|
-
"@strapi/types": "5.0.0-beta.
|
|
123
|
+
"@strapi/types": "5.0.0-beta.14",
|
|
124
124
|
"@testing-library/react": "15.0.7",
|
|
125
125
|
"@testing-library/user-event": "14.5.2",
|
|
126
126
|
"@types/fs-extra": "11.0.4",
|
|
@@ -176,6 +176,7 @@ const PERMISSIONS = {
|
|
|
176
176
|
// plugin directly in the browser
|
|
177
177
|
main: [{ action: "plugin::content-type-builder.read", subject: null }]
|
|
178
178
|
};
|
|
179
|
+
const MAX_COMPONENT_DEPTH = 6;
|
|
179
180
|
const pluginId = pluginPkg.name.replace(/^@strapi\//i, "");
|
|
180
181
|
const getRelationType = (relation, targetAttribute) => {
|
|
181
182
|
const hasNotTargetAttribute = targetAttribute === void 0 || targetAttribute === null;
|
|
@@ -607,10 +608,6 @@ const reducer$1 = (state = initialState$1, action) => produce__default.default(s
|
|
|
607
608
|
draftState.initialData = draftState.modifiedData;
|
|
608
609
|
break;
|
|
609
610
|
}
|
|
610
|
-
case UPDATE_INITIAL_STATE: {
|
|
611
|
-
draftState.initialData = draftState.modifiedData;
|
|
612
|
-
break;
|
|
613
|
-
}
|
|
614
611
|
case DELETE_NOT_SAVED_TYPE: {
|
|
615
612
|
draftState.contentTypes = state.initialContentTypes;
|
|
616
613
|
draftState.components = state.initialComponents;
|
|
@@ -1134,7 +1131,7 @@ const index = {
|
|
|
1134
1131
|
defaultMessage: "Content Types Builder"
|
|
1135
1132
|
},
|
|
1136
1133
|
permissions: PERMISSIONS.main,
|
|
1137
|
-
Component: () => Promise.resolve().then(() => require("./index-
|
|
1134
|
+
Component: () => Promise.resolve().then(() => require("./index-Dlls62x0.js")).then((n) => n.index),
|
|
1138
1135
|
position: 5
|
|
1139
1136
|
});
|
|
1140
1137
|
app.registerPlugin({
|
|
@@ -1177,6 +1174,7 @@ exports.DELETE_NOT_SAVED_TYPE = DELETE_NOT_SAVED_TYPE;
|
|
|
1177
1174
|
exports.EDIT_ATTRIBUTE = EDIT_ATTRIBUTE;
|
|
1178
1175
|
exports.EDIT_CUSTOM_FIELD_ATTRIBUTE = EDIT_CUSTOM_FIELD_ATTRIBUTE;
|
|
1179
1176
|
exports.GET_DATA_SUCCEEDED = GET_DATA_SUCCEEDED;
|
|
1177
|
+
exports.MAX_COMPONENT_DEPTH = MAX_COMPONENT_DEPTH;
|
|
1180
1178
|
exports.ON_CHANGE = ON_CHANGE;
|
|
1181
1179
|
exports.ON_CHANGE_RELATION_TARGET = ON_CHANGE_RELATION_TARGET;
|
|
1182
1180
|
exports.ON_CHANGE_RELATION_TYPE = ON_CHANGE_RELATION_TYPE;
|
|
@@ -1207,4 +1205,4 @@ exports.makeUnique = makeUnique;
|
|
|
1207
1205
|
exports.nameToSlug = nameToSlug;
|
|
1208
1206
|
exports.pluginId = pluginId;
|
|
1209
1207
|
exports.retrieveComponentsFromSchema = retrieveComponentsFromSchema;
|
|
1210
|
-
//# sourceMappingURL=index-
|
|
1208
|
+
//# sourceMappingURL=index-CzY3GwAJ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CzY3GwAJ.js","sources":["../../admin/src/constants.ts","../../admin/src/pluginId.ts","../../admin/src/utils/getRelationType.ts","../../admin/src/utils/makeUnique.ts","../../admin/src/components/DataManagerProvider/constants.ts","../../admin/src/components/DataManagerProvider/utils/retrieveComponentsFromSchema.ts","../../admin/src/components/DataManagerProvider/reducer.ts","../../admin/src/utils/nameToSlug.ts","../../admin/src/components/FormModal/constants.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/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","import pluginPkg from '../../package.json';\n\nexport const pluginId = pluginPkg.name.replace(/^@strapi\\//i, '');\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","export const ADD_ATTRIBUTE = 'ContentTypeBuilder/DataManagerProvider/ADD_ATTRIBUTE';\nexport const ADD_CUSTOM_FIELD_ATTRIBUTE =\n 'ContentTypeBuilder/DataManagerProvider/ADD_CUSTOM_FIELD_ATTRIBUTE';\nexport const ADD_CREATED_COMPONENT_TO_DYNAMIC_ZONE =\n 'ContentTypeBuilder/DataManagerProvider/ADD_CREATED_COMPONENT_TO_DYNAMIC_ZONE';\nexport const CHANGE_DYNAMIC_ZONE_COMPONENTS =\n 'ContentTypeBuilder/DataManagerProvider/CHANGE_DYNAMIC_ZONE_COMPONENTS';\nexport const CREATE_SCHEMA = 'ContentTypeBuilder/DataManagerProvider/CREATE_SCHEMA';\nexport const CREATE_COMPONENT_SCHEMA =\n 'ContentTypeBuilder/DataManagerProvider/CREATE_COMPONENT_SCHEMA';\nexport const DELETE_NOT_SAVED_TYPE = 'ContentTypeBuilder/DataManagerProvider/DELETE_NOT_SAVED_TYPE';\nexport const EDIT_ATTRIBUTE = 'ContentTypeBuilder/DataManagerProvider/EDIT_ATTRIBUTE';\nexport const EDIT_CUSTOM_FIELD_ATTRIBUTE =\n 'ContentTypeBuilder/DataManagerProvider/EDIT_CUSTOM_FIELD_ATTRIBUTE';\nexport const GET_DATA_SUCCEEDED = 'ContentTypeBuilder/DataManagerProvider/GET_DATA_SUCCEEDED';\nexport const RELOAD_PLUGIN = 'ContentTypeBuilder/DataManagerProvider/RELOAD_PLUGIN';\nexport const REMOVE_FIELD_FROM_DISPLAYED_COMPONENT =\n 'ContentTypeBuilder/DataManagerProvider/REMOVE_FIELD_FROM_DISPLAYED_COMPONENT';\nexport const REMOVE_COMPONENT_FROM_DYNAMIC_ZONE =\n 'ContentTypeBuilder/DataManagerProvider/REMOVE_COMPONENT_FROM_DYNAMIC_ZONE';\nexport const REMOVE_FIELD = 'ContentTypeBuilder/DataManagerProvider/REMOVE_FIELD';\nexport const SET_MODIFIED_DATA = 'ContentTypeBuilder/DataManagerProvider/SET_MODIFIED_DATA';\nexport const UPDATE_SCHEMA = 'ContentTypeBuilder/DataManagerProvider/UPDATE_SCHEMA';\nexport const UPDATE_INITIAL_STATE = 'ContentTypeBuilder/DataManagerProvider/UPDATE_INITIAL_STATE';\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 produce, { 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 * as actions from './constants';\nimport { retrieveComponentsFromSchema } from './utils/retrieveComponentsFromSchema';\n\nimport type { DataManagerStateType, ContentType, AttributeType, Component } from '../../types';\nimport type { Internal, Schema } from '@strapi/types';\n\n// TODO: Define all possible actions based on type\nexport type Action = {\n type: string;\n uid?: string;\n mainDataKey: 'component' | 'components' | 'contentTypes' | 'contentType';\n schemaType: 'component' | 'contentType';\n attributeToRemoveName?: string;\n [key: string]: any;\n};\n\nconst initialState: DataManagerStateType = {\n components: {},\n contentTypes: {},\n initialComponents: {},\n initialContentTypes: {},\n initialData: {},\n modifiedData: {\n components: {},\n contentTypes: {},\n },\n reservedNames: {},\n isLoading: true,\n isLoadingForDataToBeSet: 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\nconst reducer = (state = initialState, action: Action) =>\n produce(state, (draftState: any) => {\n switch (action.type) {\n case actions.ADD_ATTRIBUTE: {\n const {\n attributeToSet: { name, ...rest },\n forTarget,\n targetUid,\n } = action;\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(\n draftState,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'],\n updatedAttributes\n );\n\n if (action.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 break;\n }\n\n // Initialize modifiedData.components if it is undefined\n if (!draftState.modifiedData.components) {\n draftState.modifiedData.components = {};\n }\n\n // Add the added component to the modifiedData.components\n draftState.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 (!draftState.modifiedData.components) {\n draftState.modifiedData.components = {};\n }\n draftState.modifiedData.components[compoUID] = compoSchema;\n }\n });\n\n break;\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 draftState,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'],\n attributesToSet\n );\n }\n }\n\n break;\n }\n case actions.ADD_CREATED_COMPONENT_TO_DYNAMIC_ZONE: {\n const { dynamicZoneTarget, componentsToAdd } = action;\n\n const dzAttributeIndex = findAttributeIndex(\n state.modifiedData.contentType,\n dynamicZoneTarget\n );\n\n componentsToAdd.forEach((componentUid: Internal.UID.Component) => {\n if (\n !draftState.modifiedData.contentType?.schema.attributes[dzAttributeIndex].components\n ) {\n draftState.modifiedData.contentType.schema.attributes[dzAttributeIndex].components = [];\n }\n draftState.modifiedData.contentType.schema.attributes[dzAttributeIndex].components.push(\n componentUid\n );\n });\n\n break;\n }\n case actions.ADD_CUSTOM_FIELD_ATTRIBUTE: {\n const {\n attributeToSet: { name, ...rest },\n forTarget,\n targetUid,\n } = action;\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(\n draftState,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'],\n updatedAttributes\n );\n\n break;\n }\n case actions.CHANGE_DYNAMIC_ZONE_COMPONENTS: {\n const { dynamicZoneTarget, newComponents } = action;\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 (draftState.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(draftState.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 (!draftState.modifiedData.components) {\n draftState.modifiedData.components = {};\n }\n draftState.modifiedData.components[compoUID] = compoSchema;\n }\n });\n\n break;\n }\n case actions.CREATE_COMPONENT_SCHEMA: {\n const newSchema: Component = {\n uid: action.uid as Internal.UID.Component,\n isTemporary: true,\n category: action.componentCategory,\n schema: {\n ...action.data,\n attributes: [],\n },\n };\n draftState.components[action.uid as string] = newSchema;\n\n if (action.shouldAddComponentToData) {\n draftState.modifiedData.components[action.uid as string] = newSchema;\n }\n\n break;\n }\n case actions.CREATE_SCHEMA: {\n const newSchema: ContentType = {\n uid: action.uid as Internal.UID.ContentType,\n isTemporary: true,\n schema: {\n ...action.data,\n attributes: [],\n },\n };\n\n draftState.contentTypes[action.uid as string] = newSchema;\n\n break;\n }\n case actions.EDIT_ATTRIBUTE: {\n const {\n attributeToSet: { name, ...rest },\n forTarget,\n targetUid,\n initialAttribute,\n } = action;\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 draftState,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes', initialAttributeIndex],\n action.attributeToSet\n );\n\n break;\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) +\n 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(\n draftState,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes'],\n updatedAttributes\n );\n\n break;\n }\n case actions.EDIT_CUSTOM_FIELD_ATTRIBUTE: {\n const { forTarget, targetUid, initialAttribute, attributeToSet } = action;\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 draftState,\n ['modifiedData', ...pathToDataToEdit, 'schema', 'attributes', initialAttributeIndex],\n attributeToSet\n );\n\n break;\n }\n case actions.GET_DATA_SUCCEEDED: {\n draftState.components = action.components;\n draftState.initialComponents = action.components;\n draftState.initialContentTypes = action.contentTypes;\n draftState.contentTypes = action.contentTypes;\n draftState.reservedNames = action.reservedNames;\n draftState.isLoading = false;\n break;\n }\n case actions.UPDATE_INITIAL_STATE: {\n draftState.initialData = draftState.modifiedData;\n\n break;\n }\n case actions.DELETE_NOT_SAVED_TYPE: {\n // Doing so will also reset the modified and the initial data\n draftState.contentTypes = state.initialContentTypes;\n draftState.components = state.initialComponents;\n\n break;\n }\n case actions.RELOAD_PLUGIN: {\n return initialState;\n }\n case actions.REMOVE_COMPONENT_FROM_DYNAMIC_ZONE: {\n const dzAttributeIndex = findAttributeIndex(state.modifiedData.contentType, action.dzName);\n draftState.modifiedData.contentType.schema.attributes[dzAttributeIndex].components.splice(\n action.componentToRemoveIndex,\n 1\n );\n\n break;\n }\n case actions.REMOVE_FIELD: {\n const { mainDataKey, attributeToRemoveName } = action;\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 draftState.modifiedData[mainDataKey].schema.attributes = nextAttributes;\n\n break;\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 draftState.modifiedData[mainDataKey]?.schema.attributes[fieldIndex].targetField;\n });\n\n draftState.modifiedData[mainDataKey]?.schema.attributes.splice(attributeToRemoveIndex, 1);\n\n break;\n }\n case actions.REMOVE_FIELD_FROM_DISPLAYED_COMPONENT: {\n const { attributeToRemoveName, componentUid } = action;\n\n const attributeToRemoveIndex = findAttributeIndex(\n state.modifiedData.components?.[componentUid],\n attributeToRemoveName\n );\n\n draftState.modifiedData.components?.[componentUid]?.schema?.attributes?.splice(\n attributeToRemoveIndex,\n 1\n );\n\n break;\n }\n case actions.SET_MODIFIED_DATA: {\n draftState.isLoadingForDataToBeSet = false;\n draftState.initialData = action.schemaToSet;\n draftState.modifiedData = action.schemaToSet;\n\n // Reset the state with the initial data\n // All created components and content types will be lost\n if (!action.hasJustCreatedSchema) {\n draftState.components = state.initialComponents;\n draftState.contentTypes = state.initialContentTypes;\n }\n\n break;\n }\n case actions.UPDATE_SCHEMA: {\n const {\n data: { displayName, category, icon, kind },\n schemaType,\n uid,\n } = action;\n\n draftState.modifiedData[schemaType].schema.displayName = displayName;\n\n if (action.schemaType === 'component') {\n draftState.modifiedData.component.category = category;\n draftState.modifiedData.component.schema.icon = icon;\n const addedComponent = current(draftState.modifiedData.component);\n draftState.components[uid as string] = addedComponent;\n\n break;\n }\n\n draftState.modifiedData.contentType.schema.kind = kind;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport { initialState, reducer };\n","import slugify from '@sindresorhus/slugify';\n\nexport const nameToSlug = (name: string) => slugify(name, { separator: '-' });\n","export const ON_CHANGE = 'ContentTypeBuilder/FormModal/ON_CHANGE';\nexport const ON_CHANGE_RELATION_TARGET = 'ContentTypeBuilder/FormModal/ON_CHANGE_RELATION_TARGET';\nexport const ON_CHANGE_RELATION_TYPE = 'ContentTypeBuilder/FormModal/ON_CHANGE_RELATION_TYPE';\nexport const RESET_PROPS = 'ContentTypeBuilder/FormModal/RESET_PROPS';\nexport const RESET_PROPS_AND_SET_FORM_FOR_ADDING_AN_EXISTING_COMPO =\n 'ContentTypeBuilder/FormModal/RESET_PROPS_AND_SET_FORM_FOR_ADDING_AN_EXISTING_COMPO';\nexport const RESET_PROPS_AND_SAVE_CURRENT_DATA =\n 'ContentTypeBuilder/FormModal/RESET_PROPS_AND_SAVE_CURRENT_DATA';\nexport const RESET_PROPS_AND_SET_THE_FORM_FOR_ADDING_A_COMPO_TO_A_DZ =\n 'ContentTypeBuilder/FormModal/RESET_PROPS_AND_SET_THE_FORM_FOR_ADDING_A_COMPO_TO_A_DZ';\nexport const SET_DATA_TO_EDIT = 'ContentTypeBuilder/FormModal/SET_DATA_TO_EDIT';\nexport const SET_ATTRIBUTE_DATA_SCHEMA = 'ContentTypeBuilder/FormModal/SET_ATTRIBUTE_DATA_SCHEMA';\nexport const SET_CUSTOM_FIELD_DATA_SCHEMA =\n 'ContentTypeBuilder/FormModal/SET_CUSTOM_FIELD_DATA_SCHEMA';\nexport const SET_DYNAMIC_ZONE_DATA_SCHEMA =\n 'ContentTypeBuilder/FormModal/SET_DYNAMIC_ZONE_DATA_SCHEMA';\nexport const SET_ERRORS = 'ContentTypeBuilder/FormModal/SET_ERRORS';\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 { produce } from 'immer';\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 * as actions from './constants';\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { AnyAction } from '@reduxjs/toolkit';\n\nconst initialState: any = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\nconst reducer = (state = initialState, action: AnyAction) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState: any) => {\n switch (action.type) {\n case actions.ON_CHANGE: {\n const { keys, value } = action;\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 draftState.modifiedData.default;\n }\n }\n\n set(draftState, ['modifiedData', ...keys], value);\n\n break;\n }\n case actions.ON_CHANGE_RELATION_TARGET: {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType = null;\n\n set(draftState, ['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 (!targetContentTypeAllowedRelations.includes(currentRelationType)) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(draftState, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(draftState, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(draftState, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation) {\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(draftState, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n break;\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 ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(draftState, ['modifiedData', 'targetAttribute'], null);\n\n break;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(draftState, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n\n break;\n }\n case actions.ON_CHANGE_RELATION_TYPE: {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action;\n\n const currentName = state.modifiedData.name;\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(draftState, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n draftState,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n draftState,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute ||\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n break;\n }\n\n if (value === 'oneWay') {\n set(draftState, ['modifiedData', 'relation'], 'oneToOne');\n set(draftState, ['modifiedData', 'targetAttribute'], null);\n set(draftState, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n break;\n }\n\n // manyWay\n set(draftState, ['modifiedData', 'relation'], 'oneToMany');\n set(draftState, ['modifiedData', 'targetAttribute'], null);\n set(draftState, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n\n break;\n }\n\n case actions.RESET_PROPS:\n return initialState;\n case actions.RESET_PROPS_AND_SET_FORM_FOR_ADDING_AN_EXISTING_COMPO: {\n // This is run when the user doesn't want to create a new component\n\n const nextState = {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...action.options,\n },\n };\n\n return nextState;\n }\n case actions.RESET_PROPS_AND_SAVE_CURRENT_DATA: {\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 ...action.options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n const nextState = {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent,\n };\n\n return nextState;\n }\n case actions.RESET_PROPS_AND_SET_THE_FORM_FOR_ADDING_A_COMPO_TO_A_DZ: {\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 case actions.SET_DATA_TO_EDIT: {\n draftState.modifiedData = action.data;\n draftState.initialData = action.data;\n break;\n }\n case actions.SET_ATTRIBUTE_DATA_SCHEMA: {\n const {\n attributeType,\n isEditing,\n modifiedDataToSetForEditing,\n nameToSetForRelation,\n targetUid,\n step,\n options = {},\n } = action;\n\n if (isEditing) {\n draftState.modifiedData = modifiedDataToSetForEditing;\n draftState.initialData = modifiedDataToSetForEditing;\n\n break;\n }\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 draftState.modifiedData = dataToSet;\n\n break;\n }\n case actions.SET_CUSTOM_FIELD_DATA_SCHEMA: {\n const { customField, isEditing, modifiedDataToSetForEditing, options = {} } = action;\n\n if (isEditing) {\n draftState.modifiedData = modifiedDataToSetForEditing;\n draftState.initialData = modifiedDataToSetForEditing;\n\n break;\n }\n\n draftState.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(draftState.modifiedData, name, defaultValue)\n );\n }\n\n break;\n }\n case actions.SET_DYNAMIC_ZONE_DATA_SCHEMA: {\n draftState.modifiedData = action.attributeToEdit;\n draftState.initialData = action.attributeToEdit;\n break;\n }\n case actions.SET_ERRORS: {\n draftState.formErrors = action.errors;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport { initialState, reducer };\n","import { reducer } 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`]: reducer,\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 contentType.validators.push(validator);\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 formType[field].validators.push(validator);\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 { Layout } from '@strapi/icons';\n\nimport pluginPkg from '../../package.json';\n\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { reducers } from './reducers';\nimport { formsAPI } from './utils/formAPI';\nimport { prefixPluginTranslations } from './utils/prefixPluginTranslations';\n\nconst name = pluginPkg.strapi.name;\n\n// eslint-disable-next-line import/no-default-export\nexport default {\n register(app: any) {\n app.addReducers(reducers);\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: Layout,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n },\n permissions: PERMISSIONS.main,\n Component: () => import('./pages/App'),\n position: 5,\n });\n\n app.registerPlugin({\n id: pluginId,\n name,\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"],"names":["get","initialState","name","reducer","produce","actions.ADD_ATTRIBUTE","set","actions.ADD_CREATED_COMPONENT_TO_DYNAMIC_ZONE","actions.ADD_CUSTOM_FIELD_ATTRIBUTE","actions.CHANGE_DYNAMIC_ZONE_COMPONENTS","current","actions.CREATE_COMPONENT_SCHEMA","actions.CREATE_SCHEMA","actions.EDIT_ATTRIBUTE","actions.EDIT_CUSTOM_FIELD_ATTRIBUTE","actions.GET_DATA_SUCCEEDED","actions.UPDATE_INITIAL_STATE","actions.DELETE_NOT_SAVED_TYPE","actions.RELOAD_PLUGIN","actions.REMOVE_COMPONENT_FROM_DYNAMIC_ZONE","actions.REMOVE_FIELD","actions.REMOVE_FIELD_FROM_DISPLAYED_COMPONENT","actions.SET_MODIFIED_DATA","actions.UPDATE_SCHEMA","slugify","actions.ON_CHANGE","actions.ON_CHANGE_RELATION_TARGET","pluralize","snakeCase","actions.ON_CHANGE_RELATION_TYPE","actions.RESET_PROPS","actions.RESET_PROPS_AND_SET_FORM_FOR_ADDING_AN_EXISTING_COMPO","actions.RESET_PROPS_AND_SAVE_CURRENT_DATA","actions.RESET_PROPS_AND_SET_THE_FORM_FOR_ADDING_A_COMPO_TO_A_DZ","actions.SET_DATA_TO_EDIT","actions.SET_ATTRIBUTE_DATA_SCHEMA","actions.SET_CUSTOM_FIELD_DATA_SCHEMA","actions.SET_DYNAMIC_ZONE_DATA_SCHEMA","actions.SET_ERRORS","formModalReducer","yup","cloneDeep","pluginId","Layout"],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ const Icons = require("@strapi/icons");
|
|
|
9
9
|
const reactDom = require("react-dom");
|
|
10
10
|
const styledComponents = require("styled-components");
|
|
11
11
|
const upperFirst = require("lodash/upperFirst");
|
|
12
|
-
const index$1 = require("./index-
|
|
12
|
+
const index$1 = require("./index-CzY3GwAJ.js");
|
|
13
13
|
const isEqual = require("lodash/isEqual");
|
|
14
14
|
const get = require("lodash/get");
|
|
15
15
|
const groupBy = require("lodash/groupBy");
|
|
@@ -2520,6 +2520,45 @@ const SelectCategory = ({
|
|
|
2520
2520
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Field.Error, {})
|
|
2521
2521
|
] });
|
|
2522
2522
|
};
|
|
2523
|
+
const findComponent = (componentUid, components) => {
|
|
2524
|
+
return components.find((c) => c.component === componentUid);
|
|
2525
|
+
};
|
|
2526
|
+
const getChildrenMaxDepth = (componentUid, components, currentDepth = 0) => {
|
|
2527
|
+
const component = findComponent(componentUid, components);
|
|
2528
|
+
if (!component || !component.childComponents || component.childComponents.length === 0) {
|
|
2529
|
+
return currentDepth;
|
|
2530
|
+
}
|
|
2531
|
+
let maxDepth = currentDepth;
|
|
2532
|
+
component.childComponents.forEach((child) => {
|
|
2533
|
+
const depth = getChildrenMaxDepth(child.component, components, currentDepth + 1);
|
|
2534
|
+
if (depth > maxDepth) {
|
|
2535
|
+
maxDepth = depth;
|
|
2536
|
+
}
|
|
2537
|
+
});
|
|
2538
|
+
return maxDepth;
|
|
2539
|
+
};
|
|
2540
|
+
const getComponentDepth = (component, components) => {
|
|
2541
|
+
const getDepth = (currentComponent, currentLevel) => {
|
|
2542
|
+
const levels = [];
|
|
2543
|
+
levels.push(currentLevel);
|
|
2544
|
+
if (!currentComponent.uidsOfAllParents) {
|
|
2545
|
+
return levels;
|
|
2546
|
+
}
|
|
2547
|
+
for (const parentUid of currentComponent.uidsOfAllParents) {
|
|
2548
|
+
const parentComponent = findComponent(parentUid, components);
|
|
2549
|
+
if (parentComponent) {
|
|
2550
|
+
levels.push(...getDepth(parentComponent, currentLevel + 1));
|
|
2551
|
+
}
|
|
2552
|
+
}
|
|
2553
|
+
return levels;
|
|
2554
|
+
};
|
|
2555
|
+
const nestedCompo = findComponent(component, components);
|
|
2556
|
+
if (!nestedCompo) {
|
|
2557
|
+
return 0;
|
|
2558
|
+
}
|
|
2559
|
+
const compoDepth = Math.max(...getDepth(nestedCompo, 1));
|
|
2560
|
+
return compoDepth;
|
|
2561
|
+
};
|
|
2523
2562
|
const SelectComponent = ({
|
|
2524
2563
|
error = null,
|
|
2525
2564
|
intlLabel,
|
|
@@ -2536,7 +2575,11 @@ const SelectComponent = ({
|
|
|
2536
2575
|
const { formatMessage } = reactIntl.useIntl();
|
|
2537
2576
|
const errorMessage = error ? formatMessage({ id: error, defaultMessage: error }) : "";
|
|
2538
2577
|
const label = formatMessage(intlLabel);
|
|
2539
|
-
const {
|
|
2578
|
+
const {
|
|
2579
|
+
componentsGroupedByCategory,
|
|
2580
|
+
componentsThatHaveOtherComponentInTheirAttributes,
|
|
2581
|
+
nestedComponents
|
|
2582
|
+
} = useDataManager();
|
|
2540
2583
|
const isTargetAComponent = ["component", "components"].includes(forTarget);
|
|
2541
2584
|
let options2 = Object.entries(componentsGroupedByCategory).reduce(
|
|
2542
2585
|
(acc, current) => {
|
|
@@ -2553,8 +2596,11 @@ const SelectComponent = ({
|
|
|
2553
2596
|
[]
|
|
2554
2597
|
);
|
|
2555
2598
|
if (isAddingAComponentToAnotherComponent) {
|
|
2556
|
-
options2 = options2.filter((
|
|
2557
|
-
|
|
2599
|
+
options2 = options2.filter(({ uid }) => {
|
|
2600
|
+
const maxDepth = getChildrenMaxDepth(uid, componentsThatHaveOtherComponentInTheirAttributes);
|
|
2601
|
+
const componentDepth = getComponentDepth(targetUid, nestedComponents);
|
|
2602
|
+
const totalDepth = maxDepth + componentDepth;
|
|
2603
|
+
return totalDepth <= index$1.MAX_COMPONENT_DEPTH;
|
|
2558
2604
|
});
|
|
2559
2605
|
}
|
|
2560
2606
|
if (isTargetAComponent) {
|
|
@@ -3882,8 +3928,6 @@ const alreadyUsedAttributeNames = (usedNames) => {
|
|
|
3882
3928
|
}
|
|
3883
3929
|
const snakeCaseKey = fp.snakeCase(value);
|
|
3884
3930
|
return !usedNames.some((existingKey) => {
|
|
3885
|
-
if (existingKey === value)
|
|
3886
|
-
return false;
|
|
3887
3931
|
return fp.snakeCase(existingKey) === snakeCaseKey;
|
|
3888
3932
|
});
|
|
3889
3933
|
}
|
|
@@ -4948,8 +4992,6 @@ const getAttributesToDisplay = (dataTarget = "", targetUid, nestedComponents) =>
|
|
|
4948
4992
|
"richtext"
|
|
4949
4993
|
];
|
|
4950
4994
|
const isPickingAttributeForAContentType = dataTarget === "contentType";
|
|
4951
|
-
const isNestedInAnotherComponent = nestedComponents.includes(targetUid);
|
|
4952
|
-
const canAddComponentInAnotherComponent = !isPickingAttributeForAContentType && !isNestedInAnotherComponent;
|
|
4953
4995
|
if (isPickingAttributeForAContentType) {
|
|
4954
4996
|
return [
|
|
4955
4997
|
// Insert UID before the last item (richtext)
|
|
@@ -4957,8 +4999,13 @@ const getAttributesToDisplay = (dataTarget = "", targetUid, nestedComponents) =>
|
|
|
4957
4999
|
["component", "dynamiczone"]
|
|
4958
5000
|
];
|
|
4959
5001
|
}
|
|
4960
|
-
if (
|
|
4961
|
-
|
|
5002
|
+
if (dataTarget) {
|
|
5003
|
+
const componentDepth = getComponentDepth(targetUid, nestedComponents);
|
|
5004
|
+
const isNestedInAnotherComponent = componentDepth >= index$1.MAX_COMPONENT_DEPTH;
|
|
5005
|
+
const canAddComponentInAnotherComponent = !isPickingAttributeForAContentType && !isNestedInAnotherComponent;
|
|
5006
|
+
if (canAddComponentInAnotherComponent) {
|
|
5007
|
+
return [defaultAttributes, ["component"]];
|
|
5008
|
+
}
|
|
4962
5009
|
}
|
|
4963
5010
|
return [defaultAttributes];
|
|
4964
5011
|
};
|
|
@@ -5933,40 +5980,69 @@ const retrieveComponentsThatHaveComponents = (allComponents) => {
|
|
|
5933
5980
|
const componentsThatHaveNestedComponents = Object.keys(allComponents).reduce(
|
|
5934
5981
|
(acc, current) => {
|
|
5935
5982
|
const currentComponent = get__default.default(allComponents, [current]);
|
|
5936
|
-
const
|
|
5937
|
-
if (
|
|
5938
|
-
acc.push(
|
|
5983
|
+
const compoWithChildren = getComponentWithChildComponents(currentComponent);
|
|
5984
|
+
if (compoWithChildren.childComponents.length > 0) {
|
|
5985
|
+
acc.push(compoWithChildren);
|
|
5939
5986
|
}
|
|
5940
5987
|
return acc;
|
|
5941
5988
|
},
|
|
5942
5989
|
[]
|
|
5943
5990
|
);
|
|
5944
|
-
return
|
|
5991
|
+
return componentsThatHaveNestedComponents;
|
|
5945
5992
|
};
|
|
5946
|
-
const
|
|
5993
|
+
const getComponentWithChildComponents = (component) => {
|
|
5947
5994
|
const attributes = get__default.default(component, ["schema", "attributes"], []);
|
|
5948
|
-
return
|
|
5949
|
-
|
|
5950
|
-
|
|
5951
|
-
|
|
5995
|
+
return {
|
|
5996
|
+
component: component.uid,
|
|
5997
|
+
childComponents: attributes.filter((attribute) => {
|
|
5998
|
+
const { type } = attribute;
|
|
5999
|
+
return type === "component";
|
|
6000
|
+
}).map((attribute) => {
|
|
6001
|
+
return {
|
|
6002
|
+
component: attribute.component
|
|
6003
|
+
};
|
|
6004
|
+
})
|
|
6005
|
+
};
|
|
5952
6006
|
};
|
|
5953
6007
|
const retrieveNestedComponents = (appComponents) => {
|
|
5954
6008
|
const nestedComponents = Object.keys(appComponents).reduce((acc, current) => {
|
|
5955
6009
|
const componentAttributes = appComponents?.[current]?.schema?.attributes ?? [];
|
|
5956
|
-
const currentComponentNestedCompos =
|
|
6010
|
+
const currentComponentNestedCompos = getComponentsNestedWithinComponent(
|
|
6011
|
+
componentAttributes,
|
|
6012
|
+
current
|
|
6013
|
+
);
|
|
5957
6014
|
return [...acc, ...currentComponentNestedCompos];
|
|
5958
6015
|
}, []);
|
|
5959
|
-
return
|
|
6016
|
+
return mergeComponents(nestedComponents);
|
|
5960
6017
|
};
|
|
5961
|
-
const
|
|
6018
|
+
const getComponentsNestedWithinComponent = (componentAttributes, parentCompoUid) => {
|
|
5962
6019
|
return componentAttributes.reduce((acc, current) => {
|
|
5963
6020
|
const { type, component } = current;
|
|
5964
6021
|
if (type === "component") {
|
|
5965
|
-
acc.push(
|
|
6022
|
+
acc.push({
|
|
6023
|
+
component,
|
|
6024
|
+
parentCompoUid
|
|
6025
|
+
});
|
|
5966
6026
|
}
|
|
5967
6027
|
return acc;
|
|
5968
6028
|
}, []);
|
|
5969
6029
|
};
|
|
6030
|
+
const mergeComponents = (originalComponents) => {
|
|
6031
|
+
const componentMap = /* @__PURE__ */ new Map();
|
|
6032
|
+
originalComponents.forEach(({ component, parentCompoUid }) => {
|
|
6033
|
+
if (!componentMap.has(component)) {
|
|
6034
|
+
componentMap.set(component, /* @__PURE__ */ new Set());
|
|
6035
|
+
}
|
|
6036
|
+
componentMap.get(component).add(parentCompoUid);
|
|
6037
|
+
});
|
|
6038
|
+
const transformedComponents = Array.from(componentMap.entries()).map(
|
|
6039
|
+
([component, parentCompoUidSet]) => ({
|
|
6040
|
+
component,
|
|
6041
|
+
uidsOfAllParents: Array.from(parentCompoUidSet)
|
|
6042
|
+
})
|
|
6043
|
+
);
|
|
6044
|
+
return transformedComponents;
|
|
6045
|
+
};
|
|
5970
6046
|
const retrieveSpecificInfoFromComponents = (allComponents, keysToRetrieve) => {
|
|
5971
6047
|
const allData = Object.keys(allComponents).map((compo) => {
|
|
5972
6048
|
return get__default.default(allComponents, [compo, ...keysToRetrieve], "");
|
|
@@ -6259,12 +6335,11 @@ const DataManagerProvider = ({ children }) => {
|
|
|
6259
6335
|
set__default.default(allCompos, get__default.default(currentEditedCompo, ["uid"], ""), currentEditedCompo);
|
|
6260
6336
|
}
|
|
6261
6337
|
const composWithCompos = retrieveComponentsThatHaveComponents(allCompos);
|
|
6262
|
-
return
|
|
6338
|
+
return composWithCompos;
|
|
6263
6339
|
};
|
|
6264
6340
|
const getAllNestedComponents = () => {
|
|
6265
6341
|
const appNestedCompo = retrieveNestedComponents(components);
|
|
6266
|
-
|
|
6267
|
-
return index$1.makeUnique([...editingDataNestedCompos, ...appNestedCompo]);
|
|
6342
|
+
return appNestedCompo;
|
|
6268
6343
|
};
|
|
6269
6344
|
const removeComponentFromDynamicZone = (dzName, componentToRemoveIndex) => {
|
|
6270
6345
|
dispatch({
|
|
@@ -6636,11 +6711,11 @@ const FormModalNavigationProvider = ({ children }) => {
|
|
|
6636
6711
|
}
|
|
6637
6712
|
);
|
|
6638
6713
|
};
|
|
6639
|
-
const ListView$1 = React.lazy(() => Promise.resolve().then(() => require("./ListView-
|
|
6714
|
+
const ListView$1 = React.lazy(() => Promise.resolve().then(() => require("./ListView-Ck4RD5zv.js")));
|
|
6640
6715
|
const RecursivePath = () => {
|
|
6641
6716
|
return /* @__PURE__ */ jsxRuntime.jsx(React.Suspense, { fallback: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Loading, {}), children: /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Routes, { children: /* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: `/:componentUid`, element: /* @__PURE__ */ jsxRuntime.jsx(ListView$1, {}) }) }) });
|
|
6642
6717
|
};
|
|
6643
|
-
const ListView = React.lazy(() => Promise.resolve().then(() => require("./ListView-
|
|
6718
|
+
const ListView = React.lazy(() => Promise.resolve().then(() => require("./ListView-Ck4RD5zv.js")));
|
|
6644
6719
|
const App = () => {
|
|
6645
6720
|
const { formatMessage } = reactIntl.useIntl();
|
|
6646
6721
|
const title = formatMessage({
|
|
@@ -6672,4 +6747,4 @@ exports.getTrad = getTrad;
|
|
|
6672
6747
|
exports.index = index;
|
|
6673
6748
|
exports.useDataManager = useDataManager;
|
|
6674
6749
|
exports.useFormModalNavigation = useFormModalNavigation;
|
|
6675
|
-
//# sourceMappingURL=index-
|
|
6750
|
+
//# sourceMappingURL=index-Dlls62x0.js.map
|