@strapi/content-type-builder 5.39.0 → 5.41.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.
@@ -132,7 +132,7 @@ const ACTION_TO_STATUS = {
132
132
  collectionName: pluralName,
133
133
  attributes: transformAttributesFromChatToCTB(schema, oldSchema),
134
134
  options: {
135
- draftAndPublish: schema.options?.draftAndPublish ?? false
135
+ draftAndPublish: schema.options?.draftAndPublish ?? true
136
136
  },
137
137
  pluginOptions: {
138
138
  i18n: {
@@ -1 +1 @@
1
- {"version":3,"file":"toCTB.js","sources":["../../../../../../../admin/src/components/AIChat/lib/transforms/schemas/toCTB.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport isEqual from 'lodash/isEqual';\nimport omit from 'lodash/omit';\nimport pluralize from 'pluralize';\n\nimport { Schema } from '../../types/schema';\n\nimport type { ContentType, Component, AnyAttribute } from '../../../../../types';\n\nconst ACTION_TO_STATUS: Record<Schema['action'], ContentType['status']> = {\n create: 'NEW',\n remove: 'REMOVED',\n update: 'CHANGED',\n};\n\n/**\n * Creates a new attribute with the specified status\n */\nconst createAttributeWithStatus = (\n name: string,\n attributeData: Record<string, any>,\n status: AnyAttribute['status']\n): AnyAttribute =>\n ({\n ...attributeData,\n name,\n status,\n }) as AnyAttribute;\n\n/**\n * Determines the status of an attribute by comparing new and old versions\n */\nconst determineAttributeStatus = (\n newAttr: Record<string, any>,\n oldAttr?: AnyAttribute,\n oldSchema?: ContentType | Component\n): AnyAttribute['status'] => {\n if (!oldAttr) {\n return 'NEW';\n }\n\n // If the schema was already new, don't mark attributes as changed, keep them as new.\n if (oldSchema?.status === 'NEW') {\n return 'NEW';\n }\n\n // Compare attributes without the status field to determine if they've changed\n const newAttrWithoutStatus = omit(newAttr, ['status']);\n const oldAttrWithoutStatus = omit(oldAttr, ['status']);\n\n if (!isEqual(newAttrWithoutStatus, oldAttrWithoutStatus)) {\n return 'CHANGED';\n }\n\n // If unchanged, keep the previous status\n return oldAttr.status;\n};\n\n/**\n * Determines the status of a schema by comparing action and checking if oldSchema exists\n */\nconst transformStatusFromChatToCTB = (\n schema: Schema,\n oldSchema?: ContentType | Component\n): ContentType['status'] => {\n // If schema has an action, use the mapped status\n if (schema.action) {\n return ACTION_TO_STATUS[schema.action];\n }\n\n // If oldSchema doesn't exist, it's a new schema\n if (!oldSchema) {\n return 'NEW';\n }\n\n // If no action is specified and oldSchema exists, keep the existing status\n return oldSchema.status;\n};\n\n/**\n * Transform attributes from Chat format to CTB format\n * Also performs a diff to determine the status of each attribute\n */\nexport const transformAttributesFromChatToCTB = (\n { action, attributes }: Schema,\n oldSchema?: ContentType | Component\n): AnyAttribute[] => {\n // If it's a new schema or no oldAttributes provided, all attributes are NEW\n if (action === 'create' || !oldSchema) {\n return Object.entries(attributes).map(([name, attribute]) =>\n createAttributeWithStatus(name, attribute, 'NEW')\n );\n }\n\n // Convert old attributes array to a lookup map for faster access\n const oldAttributesMap = oldSchema.attributes.reduce(\n (acc, attr) => ({ ...acc, [attr.name]: attr }),\n {} as Record<string, AnyAttribute>\n );\n\n // Process current attributes (new and changed)\n const processedAttributes = Object.entries(attributes).map(([name, attr]) => {\n const oldAttr = oldAttributesMap[name];\n const status = determineAttributeStatus({ ...attr, name }, oldAttr, oldSchema);\n\n return createAttributeWithStatus(name, attr, status);\n });\n\n // No need to mark removed attributes if the old schema is new, just remove it from the list\n // TODO: Else a validation error occurs on the backend side.\n if (oldSchema?.status === 'NEW') {\n return processedAttributes;\n }\n\n // Find removed attributes (exist in old but not in new)\n const removedAttributes = Object.entries(oldAttributesMap)\n .filter(([name]) => !attributes[name])\n .map(([name, oldAttr]) => createAttributeWithStatus(name, oldAttr, 'REMOVED'));\n\n // Combine both sets of attributes\n return [...processedAttributes, ...removedAttributes];\n};\n\n/**\n * Transform schema format\n * AI chat -> CTB\n *\n * The AI chat returns a simplified format, and this layer transforms it to be compatible with the CTB reducer.\n *\n * We need to keep track of which changes have been made\n */\nexport const transformChatToCTB = (\n schema: Schema,\n oldSchema?: ContentType | Component\n): ContentType | Component => {\n const singularName = pluralize.singular(schema.name).toLowerCase().replace(/ /g, '-');\n const pluralName = pluralize.plural(schema.name).toLowerCase().replace(/ /g, '-');\n\n if (schema.modelType === 'component') {\n return {\n category: schema.category || 'default',\n modelName: singularName,\n attributes: transformAttributesFromChatToCTB(schema, oldSchema),\n info: {\n displayName: schema.name,\n description: schema.description,\n // TODO\n // icon: schema.icon,\n },\n modelType: schema.modelType,\n uid: schema.uid as any,\n collectionName: pluralName,\n status: transformStatusFromChatToCTB(schema, oldSchema),\n globalId: singularName,\n } satisfies Component;\n }\n\n return {\n uid: schema.uid as any,\n modelType: schema.modelType,\n modelName: singularName,\n kind: schema.kind!,\n info: {\n displayName: schema.name.charAt(0).toUpperCase() + schema.name.slice(1),\n // Always keep the old by default\n // @ts-expect-error - not in types\n singularName: oldSchema?.info?.singularName || singularName,\n // Always keep the old by default\n // @ts-expect-error - not in types\n pluralName: oldSchema?.info?.pluralName || pluralName,\n },\n collectionName: pluralName,\n attributes: transformAttributesFromChatToCTB(schema, oldSchema),\n options: {\n draftAndPublish: schema.options?.draftAndPublish ?? false,\n },\n pluginOptions: {\n i18n: {\n localized: schema.options?.localized ?? false,\n },\n },\n visible: true,\n status: transformStatusFromChatToCTB(schema, oldSchema),\n globalId: singularName,\n restrictRelationsTo: null, // TODO: not sure what this is about\n } satisfies ContentType;\n};\n"],"names":["ACTION_TO_STATUS","create","remove","update","createAttributeWithStatus","name","attributeData","status","determineAttributeStatus","newAttr","oldAttr","oldSchema","newAttrWithoutStatus","omit","oldAttrWithoutStatus","isEqual","transformStatusFromChatToCTB","schema","action","transformAttributesFromChatToCTB","attributes","Object","entries","map","attribute","oldAttributesMap","reduce","acc","attr","processedAttributes","removedAttributes","filter","transformChatToCTB","singularName","pluralize","singular","toLowerCase","replace","pluralName","plural","modelType","category","modelName","info","displayName","description","uid","collectionName","globalId","kind","charAt","toUpperCase","slice","options","draftAndPublish","pluginOptions","i18n","localized","visible","restrictRelationsTo"],"mappings":"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"}
1
+ {"version":3,"file":"toCTB.js","sources":["../../../../../../../admin/src/components/AIChat/lib/transforms/schemas/toCTB.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport isEqual from 'lodash/isEqual';\nimport omit from 'lodash/omit';\nimport pluralize from 'pluralize';\n\nimport { Schema } from '../../types/schema';\n\nimport type { ContentType, Component, AnyAttribute } from '../../../../../types';\n\nconst ACTION_TO_STATUS: Record<Schema['action'], ContentType['status']> = {\n create: 'NEW',\n remove: 'REMOVED',\n update: 'CHANGED',\n};\n\n/**\n * Creates a new attribute with the specified status\n */\nconst createAttributeWithStatus = (\n name: string,\n attributeData: Record<string, any>,\n status: AnyAttribute['status']\n): AnyAttribute =>\n ({\n ...attributeData,\n name,\n status,\n }) as AnyAttribute;\n\n/**\n * Determines the status of an attribute by comparing new and old versions\n */\nconst determineAttributeStatus = (\n newAttr: Record<string, any>,\n oldAttr?: AnyAttribute,\n oldSchema?: ContentType | Component\n): AnyAttribute['status'] => {\n if (!oldAttr) {\n return 'NEW';\n }\n\n // If the schema was already new, don't mark attributes as changed, keep them as new.\n if (oldSchema?.status === 'NEW') {\n return 'NEW';\n }\n\n // Compare attributes without the status field to determine if they've changed\n const newAttrWithoutStatus = omit(newAttr, ['status']);\n const oldAttrWithoutStatus = omit(oldAttr, ['status']);\n\n if (!isEqual(newAttrWithoutStatus, oldAttrWithoutStatus)) {\n return 'CHANGED';\n }\n\n // If unchanged, keep the previous status\n return oldAttr.status;\n};\n\n/**\n * Determines the status of a schema by comparing action and checking if oldSchema exists\n */\nconst transformStatusFromChatToCTB = (\n schema: Schema,\n oldSchema?: ContentType | Component\n): ContentType['status'] => {\n // If schema has an action, use the mapped status\n if (schema.action) {\n return ACTION_TO_STATUS[schema.action];\n }\n\n // If oldSchema doesn't exist, it's a new schema\n if (!oldSchema) {\n return 'NEW';\n }\n\n // If no action is specified and oldSchema exists, keep the existing status\n return oldSchema.status;\n};\n\n/**\n * Transform attributes from Chat format to CTB format\n * Also performs a diff to determine the status of each attribute\n */\nexport const transformAttributesFromChatToCTB = (\n { action, attributes }: Schema,\n oldSchema?: ContentType | Component\n): AnyAttribute[] => {\n // If it's a new schema or no oldAttributes provided, all attributes are NEW\n if (action === 'create' || !oldSchema) {\n return Object.entries(attributes).map(([name, attribute]) =>\n createAttributeWithStatus(name, attribute, 'NEW')\n );\n }\n\n // Convert old attributes array to a lookup map for faster access\n const oldAttributesMap = oldSchema.attributes.reduce(\n (acc, attr) => ({ ...acc, [attr.name]: attr }),\n {} as Record<string, AnyAttribute>\n );\n\n // Process current attributes (new and changed)\n const processedAttributes = Object.entries(attributes).map(([name, attr]) => {\n const oldAttr = oldAttributesMap[name];\n const status = determineAttributeStatus({ ...attr, name }, oldAttr, oldSchema);\n\n return createAttributeWithStatus(name, attr, status);\n });\n\n // No need to mark removed attributes if the old schema is new, just remove it from the list\n // TODO: Else a validation error occurs on the backend side.\n if (oldSchema?.status === 'NEW') {\n return processedAttributes;\n }\n\n // Find removed attributes (exist in old but not in new)\n const removedAttributes = Object.entries(oldAttributesMap)\n .filter(([name]) => !attributes[name])\n .map(([name, oldAttr]) => createAttributeWithStatus(name, oldAttr, 'REMOVED'));\n\n // Combine both sets of attributes\n return [...processedAttributes, ...removedAttributes];\n};\n\n/**\n * Transform schema format\n * AI chat -> CTB\n *\n * The AI chat returns a simplified format, and this layer transforms it to be compatible with the CTB reducer.\n *\n * We need to keep track of which changes have been made\n */\nexport const transformChatToCTB = (\n schema: Schema,\n oldSchema?: ContentType | Component\n): ContentType | Component => {\n const singularName = pluralize.singular(schema.name).toLowerCase().replace(/ /g, '-');\n const pluralName = pluralize.plural(schema.name).toLowerCase().replace(/ /g, '-');\n\n if (schema.modelType === 'component') {\n return {\n category: schema.category || 'default',\n modelName: singularName,\n attributes: transformAttributesFromChatToCTB(schema, oldSchema),\n info: {\n displayName: schema.name,\n description: schema.description,\n // TODO\n // icon: schema.icon,\n },\n modelType: schema.modelType,\n uid: schema.uid as any,\n collectionName: pluralName,\n status: transformStatusFromChatToCTB(schema, oldSchema),\n globalId: singularName,\n } satisfies Component;\n }\n\n return {\n uid: schema.uid as any,\n modelType: schema.modelType,\n modelName: singularName,\n kind: schema.kind!,\n info: {\n displayName: schema.name.charAt(0).toUpperCase() + schema.name.slice(1),\n // Always keep the old by default\n // @ts-expect-error - not in types\n singularName: oldSchema?.info?.singularName || singularName,\n // Always keep the old by default\n // @ts-expect-error - not in types\n pluralName: oldSchema?.info?.pluralName || pluralName,\n },\n collectionName: pluralName,\n attributes: transformAttributesFromChatToCTB(schema, oldSchema),\n options: {\n draftAndPublish: schema.options?.draftAndPublish ?? true,\n },\n pluginOptions: {\n i18n: {\n localized: schema.options?.localized ?? false,\n },\n },\n visible: true,\n status: transformStatusFromChatToCTB(schema, oldSchema),\n globalId: singularName,\n restrictRelationsTo: null, // TODO: not sure what this is about\n } satisfies ContentType;\n};\n"],"names":["ACTION_TO_STATUS","create","remove","update","createAttributeWithStatus","name","attributeData","status","determineAttributeStatus","newAttr","oldAttr","oldSchema","newAttrWithoutStatus","omit","oldAttrWithoutStatus","isEqual","transformStatusFromChatToCTB","schema","action","transformAttributesFromChatToCTB","attributes","Object","entries","map","attribute","oldAttributesMap","reduce","acc","attr","processedAttributes","removedAttributes","filter","transformChatToCTB","singularName","pluralize","singular","toLowerCase","replace","pluralName","plural","modelType","category","modelName","info","displayName","description","uid","collectionName","globalId","kind","charAt","toUpperCase","slice","options","draftAndPublish","pluginOptions","i18n","localized","visible","restrictRelationsTo"],"mappings":"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"}
@@ -130,7 +130,7 @@ const ACTION_TO_STATUS = {
130
130
  collectionName: pluralName,
131
131
  attributes: transformAttributesFromChatToCTB(schema, oldSchema),
132
132
  options: {
133
- draftAndPublish: schema.options?.draftAndPublish ?? false
133
+ draftAndPublish: schema.options?.draftAndPublish ?? true
134
134
  },
135
135
  pluginOptions: {
136
136
  i18n: {
@@ -1 +1 @@
1
- {"version":3,"file":"toCTB.mjs","sources":["../../../../../../../admin/src/components/AIChat/lib/transforms/schemas/toCTB.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport isEqual from 'lodash/isEqual';\nimport omit from 'lodash/omit';\nimport pluralize from 'pluralize';\n\nimport { Schema } from '../../types/schema';\n\nimport type { ContentType, Component, AnyAttribute } from '../../../../../types';\n\nconst ACTION_TO_STATUS: Record<Schema['action'], ContentType['status']> = {\n create: 'NEW',\n remove: 'REMOVED',\n update: 'CHANGED',\n};\n\n/**\n * Creates a new attribute with the specified status\n */\nconst createAttributeWithStatus = (\n name: string,\n attributeData: Record<string, any>,\n status: AnyAttribute['status']\n): AnyAttribute =>\n ({\n ...attributeData,\n name,\n status,\n }) as AnyAttribute;\n\n/**\n * Determines the status of an attribute by comparing new and old versions\n */\nconst determineAttributeStatus = (\n newAttr: Record<string, any>,\n oldAttr?: AnyAttribute,\n oldSchema?: ContentType | Component\n): AnyAttribute['status'] => {\n if (!oldAttr) {\n return 'NEW';\n }\n\n // If the schema was already new, don't mark attributes as changed, keep them as new.\n if (oldSchema?.status === 'NEW') {\n return 'NEW';\n }\n\n // Compare attributes without the status field to determine if they've changed\n const newAttrWithoutStatus = omit(newAttr, ['status']);\n const oldAttrWithoutStatus = omit(oldAttr, ['status']);\n\n if (!isEqual(newAttrWithoutStatus, oldAttrWithoutStatus)) {\n return 'CHANGED';\n }\n\n // If unchanged, keep the previous status\n return oldAttr.status;\n};\n\n/**\n * Determines the status of a schema by comparing action and checking if oldSchema exists\n */\nconst transformStatusFromChatToCTB = (\n schema: Schema,\n oldSchema?: ContentType | Component\n): ContentType['status'] => {\n // If schema has an action, use the mapped status\n if (schema.action) {\n return ACTION_TO_STATUS[schema.action];\n }\n\n // If oldSchema doesn't exist, it's a new schema\n if (!oldSchema) {\n return 'NEW';\n }\n\n // If no action is specified and oldSchema exists, keep the existing status\n return oldSchema.status;\n};\n\n/**\n * Transform attributes from Chat format to CTB format\n * Also performs a diff to determine the status of each attribute\n */\nexport const transformAttributesFromChatToCTB = (\n { action, attributes }: Schema,\n oldSchema?: ContentType | Component\n): AnyAttribute[] => {\n // If it's a new schema or no oldAttributes provided, all attributes are NEW\n if (action === 'create' || !oldSchema) {\n return Object.entries(attributes).map(([name, attribute]) =>\n createAttributeWithStatus(name, attribute, 'NEW')\n );\n }\n\n // Convert old attributes array to a lookup map for faster access\n const oldAttributesMap = oldSchema.attributes.reduce(\n (acc, attr) => ({ ...acc, [attr.name]: attr }),\n {} as Record<string, AnyAttribute>\n );\n\n // Process current attributes (new and changed)\n const processedAttributes = Object.entries(attributes).map(([name, attr]) => {\n const oldAttr = oldAttributesMap[name];\n const status = determineAttributeStatus({ ...attr, name }, oldAttr, oldSchema);\n\n return createAttributeWithStatus(name, attr, status);\n });\n\n // No need to mark removed attributes if the old schema is new, just remove it from the list\n // TODO: Else a validation error occurs on the backend side.\n if (oldSchema?.status === 'NEW') {\n return processedAttributes;\n }\n\n // Find removed attributes (exist in old but not in new)\n const removedAttributes = Object.entries(oldAttributesMap)\n .filter(([name]) => !attributes[name])\n .map(([name, oldAttr]) => createAttributeWithStatus(name, oldAttr, 'REMOVED'));\n\n // Combine both sets of attributes\n return [...processedAttributes, ...removedAttributes];\n};\n\n/**\n * Transform schema format\n * AI chat -> CTB\n *\n * The AI chat returns a simplified format, and this layer transforms it to be compatible with the CTB reducer.\n *\n * We need to keep track of which changes have been made\n */\nexport const transformChatToCTB = (\n schema: Schema,\n oldSchema?: ContentType | Component\n): ContentType | Component => {\n const singularName = pluralize.singular(schema.name).toLowerCase().replace(/ /g, '-');\n const pluralName = pluralize.plural(schema.name).toLowerCase().replace(/ /g, '-');\n\n if (schema.modelType === 'component') {\n return {\n category: schema.category || 'default',\n modelName: singularName,\n attributes: transformAttributesFromChatToCTB(schema, oldSchema),\n info: {\n displayName: schema.name,\n description: schema.description,\n // TODO\n // icon: schema.icon,\n },\n modelType: schema.modelType,\n uid: schema.uid as any,\n collectionName: pluralName,\n status: transformStatusFromChatToCTB(schema, oldSchema),\n globalId: singularName,\n } satisfies Component;\n }\n\n return {\n uid: schema.uid as any,\n modelType: schema.modelType,\n modelName: singularName,\n kind: schema.kind!,\n info: {\n displayName: schema.name.charAt(0).toUpperCase() + schema.name.slice(1),\n // Always keep the old by default\n // @ts-expect-error - not in types\n singularName: oldSchema?.info?.singularName || singularName,\n // Always keep the old by default\n // @ts-expect-error - not in types\n pluralName: oldSchema?.info?.pluralName || pluralName,\n },\n collectionName: pluralName,\n attributes: transformAttributesFromChatToCTB(schema, oldSchema),\n options: {\n draftAndPublish: schema.options?.draftAndPublish ?? false,\n },\n pluginOptions: {\n i18n: {\n localized: schema.options?.localized ?? false,\n },\n },\n visible: true,\n status: transformStatusFromChatToCTB(schema, oldSchema),\n globalId: singularName,\n restrictRelationsTo: null, // TODO: not sure what this is about\n } satisfies ContentType;\n};\n"],"names":["ACTION_TO_STATUS","create","remove","update","createAttributeWithStatus","name","attributeData","status","determineAttributeStatus","newAttr","oldAttr","oldSchema","newAttrWithoutStatus","omit","oldAttrWithoutStatus","isEqual","transformStatusFromChatToCTB","schema","action","transformAttributesFromChatToCTB","attributes","Object","entries","map","attribute","oldAttributesMap","reduce","acc","attr","processedAttributes","removedAttributes","filter","transformChatToCTB","singularName","pluralize","singular","toLowerCase","replace","pluralName","plural","modelType","category","modelName","info","displayName","description","uid","collectionName","globalId","kind","charAt","toUpperCase","slice","options","draftAndPublish","pluginOptions","i18n","localized","visible","restrictRelationsTo"],"mappings":"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"}
1
+ {"version":3,"file":"toCTB.mjs","sources":["../../../../../../../admin/src/components/AIChat/lib/transforms/schemas/toCTB.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\nimport isEqual from 'lodash/isEqual';\nimport omit from 'lodash/omit';\nimport pluralize from 'pluralize';\n\nimport { Schema } from '../../types/schema';\n\nimport type { ContentType, Component, AnyAttribute } from '../../../../../types';\n\nconst ACTION_TO_STATUS: Record<Schema['action'], ContentType['status']> = {\n create: 'NEW',\n remove: 'REMOVED',\n update: 'CHANGED',\n};\n\n/**\n * Creates a new attribute with the specified status\n */\nconst createAttributeWithStatus = (\n name: string,\n attributeData: Record<string, any>,\n status: AnyAttribute['status']\n): AnyAttribute =>\n ({\n ...attributeData,\n name,\n status,\n }) as AnyAttribute;\n\n/**\n * Determines the status of an attribute by comparing new and old versions\n */\nconst determineAttributeStatus = (\n newAttr: Record<string, any>,\n oldAttr?: AnyAttribute,\n oldSchema?: ContentType | Component\n): AnyAttribute['status'] => {\n if (!oldAttr) {\n return 'NEW';\n }\n\n // If the schema was already new, don't mark attributes as changed, keep them as new.\n if (oldSchema?.status === 'NEW') {\n return 'NEW';\n }\n\n // Compare attributes without the status field to determine if they've changed\n const newAttrWithoutStatus = omit(newAttr, ['status']);\n const oldAttrWithoutStatus = omit(oldAttr, ['status']);\n\n if (!isEqual(newAttrWithoutStatus, oldAttrWithoutStatus)) {\n return 'CHANGED';\n }\n\n // If unchanged, keep the previous status\n return oldAttr.status;\n};\n\n/**\n * Determines the status of a schema by comparing action and checking if oldSchema exists\n */\nconst transformStatusFromChatToCTB = (\n schema: Schema,\n oldSchema?: ContentType | Component\n): ContentType['status'] => {\n // If schema has an action, use the mapped status\n if (schema.action) {\n return ACTION_TO_STATUS[schema.action];\n }\n\n // If oldSchema doesn't exist, it's a new schema\n if (!oldSchema) {\n return 'NEW';\n }\n\n // If no action is specified and oldSchema exists, keep the existing status\n return oldSchema.status;\n};\n\n/**\n * Transform attributes from Chat format to CTB format\n * Also performs a diff to determine the status of each attribute\n */\nexport const transformAttributesFromChatToCTB = (\n { action, attributes }: Schema,\n oldSchema?: ContentType | Component\n): AnyAttribute[] => {\n // If it's a new schema or no oldAttributes provided, all attributes are NEW\n if (action === 'create' || !oldSchema) {\n return Object.entries(attributes).map(([name, attribute]) =>\n createAttributeWithStatus(name, attribute, 'NEW')\n );\n }\n\n // Convert old attributes array to a lookup map for faster access\n const oldAttributesMap = oldSchema.attributes.reduce(\n (acc, attr) => ({ ...acc, [attr.name]: attr }),\n {} as Record<string, AnyAttribute>\n );\n\n // Process current attributes (new and changed)\n const processedAttributes = Object.entries(attributes).map(([name, attr]) => {\n const oldAttr = oldAttributesMap[name];\n const status = determineAttributeStatus({ ...attr, name }, oldAttr, oldSchema);\n\n return createAttributeWithStatus(name, attr, status);\n });\n\n // No need to mark removed attributes if the old schema is new, just remove it from the list\n // TODO: Else a validation error occurs on the backend side.\n if (oldSchema?.status === 'NEW') {\n return processedAttributes;\n }\n\n // Find removed attributes (exist in old but not in new)\n const removedAttributes = Object.entries(oldAttributesMap)\n .filter(([name]) => !attributes[name])\n .map(([name, oldAttr]) => createAttributeWithStatus(name, oldAttr, 'REMOVED'));\n\n // Combine both sets of attributes\n return [...processedAttributes, ...removedAttributes];\n};\n\n/**\n * Transform schema format\n * AI chat -> CTB\n *\n * The AI chat returns a simplified format, and this layer transforms it to be compatible with the CTB reducer.\n *\n * We need to keep track of which changes have been made\n */\nexport const transformChatToCTB = (\n schema: Schema,\n oldSchema?: ContentType | Component\n): ContentType | Component => {\n const singularName = pluralize.singular(schema.name).toLowerCase().replace(/ /g, '-');\n const pluralName = pluralize.plural(schema.name).toLowerCase().replace(/ /g, '-');\n\n if (schema.modelType === 'component') {\n return {\n category: schema.category || 'default',\n modelName: singularName,\n attributes: transformAttributesFromChatToCTB(schema, oldSchema),\n info: {\n displayName: schema.name,\n description: schema.description,\n // TODO\n // icon: schema.icon,\n },\n modelType: schema.modelType,\n uid: schema.uid as any,\n collectionName: pluralName,\n status: transformStatusFromChatToCTB(schema, oldSchema),\n globalId: singularName,\n } satisfies Component;\n }\n\n return {\n uid: schema.uid as any,\n modelType: schema.modelType,\n modelName: singularName,\n kind: schema.kind!,\n info: {\n displayName: schema.name.charAt(0).toUpperCase() + schema.name.slice(1),\n // Always keep the old by default\n // @ts-expect-error - not in types\n singularName: oldSchema?.info?.singularName || singularName,\n // Always keep the old by default\n // @ts-expect-error - not in types\n pluralName: oldSchema?.info?.pluralName || pluralName,\n },\n collectionName: pluralName,\n attributes: transformAttributesFromChatToCTB(schema, oldSchema),\n options: {\n draftAndPublish: schema.options?.draftAndPublish ?? true,\n },\n pluginOptions: {\n i18n: {\n localized: schema.options?.localized ?? false,\n },\n },\n visible: true,\n status: transformStatusFromChatToCTB(schema, oldSchema),\n globalId: singularName,\n restrictRelationsTo: null, // TODO: not sure what this is about\n } satisfies ContentType;\n};\n"],"names":["ACTION_TO_STATUS","create","remove","update","createAttributeWithStatus","name","attributeData","status","determineAttributeStatus","newAttr","oldAttr","oldSchema","newAttrWithoutStatus","omit","oldAttrWithoutStatus","isEqual","transformStatusFromChatToCTB","schema","action","transformAttributesFromChatToCTB","attributes","Object","entries","map","attribute","oldAttributesMap","reduce","acc","attr","processedAttributes","removedAttributes","filter","transformChatToCTB","singularName","pluralize","singular","toLowerCase","replace","pluralName","plural","modelType","category","modelName","info","displayName","description","uid","collectionName","globalId","kind","charAt","toUpperCase","slice","options","draftAndPublish","pluginOptions","i18n","localized","visible","restrictRelationsTo"],"mappings":";;;;AAAA;AASA,MAAMA,gBAAAA,GAAoE;IACxEC,MAAAA,EAAQ,KAAA;IACRC,MAAAA,EAAQ,SAAA;IACRC,MAAAA,EAAQ;AACV,CAAA;AAEA;;AAEC,IACD,MAAMC,yBAAAA,GAA4B,CAChCC,IAAAA,EACAC,aAAAA,EACAC,UAEC;AACC,QAAA,GAAGD,aAAa;AAChBD,QAAAA,IAAAA;AACAE,QAAAA;KACF,CAAA;AAEF;;AAEC,IACD,MAAMC,wBAAAA,GAA2B,CAC/BC,OAAAA,EACAC,OAAAA,EACAC,SAAAA,GAAAA;AAEA,IAAA,IAAI,CAACD,OAAAA,EAAS;QACZ,OAAO,KAAA;AACT,IAAA;;IAGA,IAAIC,SAAAA,EAAWJ,WAAW,KAAA,EAAO;QAC/B,OAAO,KAAA;AACT,IAAA;;IAGA,MAAMK,oBAAAA,GAAuBC,KAAKJ,OAAAA,EAAS;AAAC,QAAA;AAAS,KAAA,CAAA;IACrD,MAAMK,oBAAAA,GAAuBD,KAAKH,OAAAA,EAAS;AAAC,QAAA;AAAS,KAAA,CAAA;IAErD,IAAI,CAACK,OAAAA,CAAQH,oBAAAA,EAAsBE,oBAAAA,CAAAA,EAAuB;QACxD,OAAO,SAAA;AACT,IAAA;;AAGA,IAAA,OAAOJ,QAAQH,MAAM;AACvB,CAAA;AAEA;;IAGA,MAAMS,4BAAAA,GAA+B,CACnCC,MAAAA,EACAN,SAAAA,GAAAA;;IAGA,IAAIM,MAAAA,CAAOC,MAAM,EAAE;AACjB,QAAA,OAAOlB,gBAAgB,CAACiB,MAAAA,CAAOC,MAAM,CAAC;AACxC,IAAA;;AAGA,IAAA,IAAI,CAACP,SAAAA,EAAW;QACd,OAAO,KAAA;AACT,IAAA;;AAGA,IAAA,OAAOA,UAAUJ,MAAM;AACzB,CAAA;AAEA;;;UAIaY,gCAAAA,GAAmC,CAC9C,EAAED,MAAM,EAAEE,UAAU,EAAU,EAC9BT,SAAAA,GAAAA;;IAGA,IAAIO,MAAAA,KAAW,QAAA,IAAY,CAACP,SAAAA,EAAW;AACrC,QAAA,OAAOU,MAAAA,CAAOC,OAAO,CAACF,UAAAA,CAAAA,CAAYG,GAAG,CAAC,CAAC,CAAClB,IAAAA,EAAMmB,SAAAA,CAAU,GACtDpB,yBAAAA,CAA0BC,MAAMmB,SAAAA,EAAW,KAAA,CAAA,CAAA;AAE/C,IAAA;;IAGA,MAAMC,gBAAAA,GAAmBd,UAAUS,UAAU,CAACM,MAAM,CAClD,CAACC,GAAAA,EAAKC,IAAAA,IAAU;AAAE,YAAA,GAAGD,GAAG;YAAE,CAACC,IAAAA,CAAKvB,IAAI,GAAGuB;AAAK,SAAA,GAC5C,EAAC,CAAA;;IAIH,MAAMC,mBAAAA,GAAsBR,MAAAA,CAAOC,OAAO,CAACF,UAAAA,CAAAA,CAAYG,GAAG,CAAC,CAAC,CAAClB,IAAAA,EAAMuB,IAAAA,CAAK,GAAA;QACtE,MAAMlB,OAAAA,GAAUe,gBAAgB,CAACpB,IAAAA,CAAK;AACtC,QAAA,MAAME,SAASC,wBAAAA,CAAyB;AAAE,YAAA,GAAGoB,IAAI;AAAEvB,YAAAA;AAAK,SAAA,EAAGK,OAAAA,EAASC,SAAAA,CAAAA;QAEpE,OAAOP,yBAAAA,CAA0BC,MAAMuB,IAAAA,EAAMrB,MAAAA,CAAAA;AAC/C,IAAA,CAAA,CAAA;;;IAIA,IAAII,SAAAA,EAAWJ,WAAW,KAAA,EAAO;QAC/B,OAAOsB,mBAAAA;AACT,IAAA;;IAGA,MAAMC,iBAAAA,GAAoBT,MAAAA,CAAOC,OAAO,CAACG,gBAAAA,CAAAA,CACtCM,MAAM,CAAC,CAAC,CAAC1B,IAAAA,CAAK,GAAK,CAACe,UAAU,CAACf,IAAAA,CAAK,CAAA,CACpCkB,GAAG,CAAC,CAAC,CAAClB,IAAAA,EAAMK,OAAAA,CAAQ,GAAKN,yBAAAA,CAA0BC,IAAAA,EAAMK,OAAAA,EAAS,SAAA,CAAA,CAAA;;IAGrE,OAAO;AAAImB,QAAAA,GAAAA,mBAAAA;AAAwBC,QAAAA,GAAAA;AAAkB,KAAA;AACvD;AAEA;;;;;;;AAOC,IACM,MAAME,kBAAAA,GAAqB,CAChCf,MAAAA,EACAN,SAAAA,GAAAA;IAEA,MAAMsB,YAAAA,GAAeC,SAAAA,CAAUC,QAAQ,CAAClB,MAAAA,CAAOZ,IAAI,CAAA,CAAE+B,WAAW,EAAA,CAAGC,OAAO,CAAC,IAAA,EAAM,GAAA,CAAA;IACjF,MAAMC,UAAAA,GAAaJ,SAAAA,CAAUK,MAAM,CAACtB,MAAAA,CAAOZ,IAAI,CAAA,CAAE+B,WAAW,EAAA,CAAGC,OAAO,CAAC,IAAA,EAAM,GAAA,CAAA;IAE7E,IAAIpB,MAAAA,CAAOuB,SAAS,KAAK,WAAA,EAAa;QACpC,OAAO;YACLC,QAAAA,EAAUxB,MAAAA,CAAOwB,QAAQ,IAAI,SAAA;YAC7BC,SAAAA,EAAWT,YAAAA;AACXb,YAAAA,UAAAA,EAAYD,iCAAiCF,MAAAA,EAAQN,SAAAA,CAAAA;YACrDgC,IAAAA,EAAM;AACJC,gBAAAA,WAAAA,EAAa3B,OAAOZ,IAAI;AACxBwC,gBAAAA,WAAAA,EAAa5B,OAAO4B;AAGtB,aAAA;AACAL,YAAAA,SAAAA,EAAWvB,OAAOuB,SAAS;AAC3BM,YAAAA,GAAAA,EAAK7B,OAAO6B,GAAG;YACfC,cAAAA,EAAgBT,UAAAA;AAChB/B,YAAAA,MAAAA,EAAQS,6BAA6BC,MAAAA,EAAQN,SAAAA,CAAAA;YAC7CqC,QAAAA,EAAUf;AACZ,SAAA;AACF,IAAA;IAEA,OAAO;AACLa,QAAAA,GAAAA,EAAK7B,OAAO6B,GAAG;AACfN,QAAAA,SAAAA,EAAWvB,OAAOuB,SAAS;QAC3BE,SAAAA,EAAWT,YAAAA;AACXgB,QAAAA,IAAAA,EAAMhC,OAAOgC,IAAI;QACjBN,IAAAA,EAAM;AACJC,YAAAA,WAAAA,EAAa3B,MAAAA,CAAOZ,IAAI,CAAC6C,MAAM,CAAC,CAAA,CAAA,CAAGC,WAAW,EAAA,GAAKlC,MAAAA,CAAOZ,IAAI,CAAC+C,KAAK,CAAC,CAAA,CAAA;;;YAGrEnB,YAAAA,EAActB,SAAAA,EAAWgC,MAAMV,YAAAA,IAAgBA,YAAAA;;;YAG/CK,UAAAA,EAAY3B,SAAAA,EAAWgC,MAAML,UAAAA,IAAcA;AAC7C,SAAA;QACAS,cAAAA,EAAgBT,UAAAA;AAChBlB,QAAAA,UAAAA,EAAYD,iCAAiCF,MAAAA,EAAQN,SAAAA,CAAAA;QACrD0C,OAAAA,EAAS;YACPC,eAAAA,EAAiBrC,MAAAA,CAAOoC,OAAO,EAAEC,eAAAA,IAAmB;AACtD,SAAA;QACAC,aAAAA,EAAe;YACbC,IAAAA,EAAM;gBACJC,SAAAA,EAAWxC,MAAAA,CAAOoC,OAAO,EAAEI,SAAAA,IAAa;AAC1C;AACF,SAAA;QACAC,OAAAA,EAAS,IAAA;AACTnD,QAAAA,MAAAA,EAAQS,6BAA6BC,MAAAA,EAAQN,SAAAA,CAAAA;QAC7CqC,QAAAA,EAAUf,YAAAA;QACV0B,mBAAAA,EAAqB;AACvB,KAAA;AACF;;;;"}
@@ -82,6 +82,7 @@ const forms = {
82
82
  data,
83
83
  type: customField.type,
84
84
  step,
85
+ customField,
85
86
  ...rest
86
87
  });
87
88
  if (customField.options?.advanced) {
@@ -130,6 +131,7 @@ const forms = {
130
131
  data,
131
132
  type,
132
133
  step,
134
+ customField: null,
133
135
  ...rest
134
136
  });
135
137
  let injected = false;
@@ -1 +1 @@
1
- {"version":3,"file":"forms.js","sources":["../../../../../admin/src/components/FormModal/forms/forms.ts"],"sourcesContent":["import { getTrad } from '../../../utils';\nimport { commonBaseForm } from '../attributes/commonBaseForm';\nimport { attributesForm } from '../attributes/form';\nimport { nameField } from '../attributes/nameField';\nimport { attributeTypes } from '../attributes/types';\nimport { componentForm } from '../component/componentForm';\nimport { createComponentSchema } from '../component/createComponentSchema';\nimport { contentTypeForm } from '../contentType/contentTypeForm';\nimport { createContentTypeSchema } from '../contentType/createContentTypeSchema';\nimport { dynamiczoneForm } from '../dynamiczoneForm';\n\nimport { addItemsToFormSection, FormTypeOptions } from './utils/addItemsToFormSection';\nimport { createComponentCollectionName } from './utils/createCollectionName';\nimport { Attribute, getUsedAttributeNames, SchemaData } from './utils/getUsedAttributeNames';\n\nimport type { ContentType } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nexport type SchemaParams = {\n schemaAttributes: any;\n attributeType: keyof typeof attributeTypes;\n customFieldValidator: any;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: any;\n ctbFormsAPI: any;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: any;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string;\n attributes: any;\n extensions: any;\n forTarget: string;\n};\n\nexport const forms = {\n customField: {\n schema({\n schemaAttributes,\n attributeType,\n customFieldValidator,\n reservedNames,\n schemaData,\n ctbFormsAPI,\n }: SchemaParams) {\n const usedAttributeNames = getUsedAttributeNames(schemaAttributes, schemaData);\n\n let attributeShape;\n if (attributeType === 'relation') {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n [],\n { initialData: {}, modifiedData: {} }\n );\n } else {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes\n );\n }\n\n return ctbFormsAPI.makeCustomFieldValidator(\n attributeShape,\n customFieldValidator,\n usedAttributeNames,\n reservedNames.attributes,\n schemaData\n );\n },\n form: {\n base({ customField }: any) {\n // Default section with required name field\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [nameField] }];\n\n if (customField.options?.base) {\n addItemsToFormSection(customField.options.base, sections);\n }\n\n return { sections };\n },\n advanced({ customField, data, step, extensions, ...rest }: any) {\n // Default section with no fields\n const sections: FormTypeOptions = [\n { sectionTitle: null, items: [] },\n {\n sectionTitle: { id: 'form.attribute.condition.section', defaultMessage: 'Conditions' },\n items: [\n {\n name: 'conditions',\n type: 'condition-form',\n intlLabel: {\n id: 'form.attribute.condition.label',\n defaultMessage: 'Visibility condition',\n },\n description: {\n id: 'form.attribute.condition.desc',\n defaultMessage: 'Show this field only when a boolean/enum condition matches.',\n },\n },\n ],\n },\n ];\n const injectedInputs = extensions.getAdvancedForm(['attribute', customField.type], {\n data,\n type: customField.type,\n step,\n ...rest,\n });\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs) {\n const extendedSettings = {\n sectionTitle: {\n id: getTrad('modalForm.custom-fields.advanced.settings.extended'),\n defaultMessage: 'Extended settings',\n },\n items: injectedInputs,\n };\n\n sections.push(extendedSettings);\n }\n\n return { sections };\n },\n },\n },\n attribute: {\n schema(\n currentSchema: any,\n attributeType: keyof typeof attributeTypes,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: any;\n }\n ) {\n // Get the attributes object on the schema\n const attributes: Array<Attribute> = currentSchema?.attributes ?? [];\n const usedAttributeNames = getUsedAttributeNames(attributes, options);\n\n try {\n const attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n\n return extensions.makeValidator(\n ['attribute', attributeType],\n attributeShape,\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n } catch (err) {\n console.error('Error yup build schema', err);\n\n return attributeTypes.default(usedAttributeNames, reservedNames.attributes);\n }\n },\n form: {\n advanced({ data, type, step, extensions, ...rest }: Base<'advanced'>) {\n try {\n const baseForm = attributesForm.advanced[type](data, step).sections;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n ...rest,\n });\n\n let injected = false;\n\n const sections = baseForm.reduce((acc: Array<any>, current: any) => {\n if (current.sectionTitle === null || injected) {\n acc.push(current);\n } else {\n acc.push({ ...current, items: [...current.items, ...itemsToAdd] });\n injected = true;\n }\n\n return acc;\n }, []);\n // IF we want a dedicated section for the plugins\n // const sections = [\n // ...baseForm,\n // {\n // sectionTitle: { id: 'Zone pour plugins', defaultMessage: 'Zone pour plugins' },\n // items: itemsToAdd,\n // },\n // ];\n\n return { sections };\n } catch (err) {\n console.error(err);\n\n return { sections: [] };\n }\n },\n base({ data, type, step, attributes }: Base<'base'>) {\n try {\n return attributesForm.base[type](data, step, attributes);\n } catch (err) {\n return commonBaseForm;\n }\n },\n },\n },\n contentType: {\n schema(\n alreadyTakenNames: Array<string>,\n isEditing: boolean,\n ctUid: Internal.UID.ContentType,\n reservedNames: {\n models: any;\n },\n extensions: any,\n contentTypes: Record<Internal.UID.ContentType, ContentType>\n ) {\n const singularNames = Object.values(contentTypes).map((contentType) => {\n return contentType.info.singularName;\n });\n\n const pluralNames = Object.values(contentTypes).map((contentType: any) => {\n return contentType?.info?.pluralName ?? '';\n });\n\n const takenNames = isEditing\n ? alreadyTakenNames.filter((uid) => uid !== ctUid)\n : alreadyTakenNames;\n\n const takenSingularNames = isEditing\n ? singularNames.filter((singName) => {\n const { info } = contentTypes[ctUid];\n\n return info.singularName !== singName;\n })\n : singularNames;\n\n const takenPluralNames = isEditing\n ? pluralNames.filter((pluralName) => {\n const { info } = contentTypes[ctUid];\n\n return info.pluralName !== pluralName;\n })\n : pluralNames;\n\n // return the array of collection names not all normalized\n const collectionNames = Object.values(contentTypes).map((contentType) => {\n return contentType?.collectionName ?? '';\n });\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => {\n const { collectionName: currentCollectionName } = contentTypes[ctUid];\n\n return collectionName !== currentCollectionName;\n })\n : collectionNames;\n\n const contentTypeShape = createContentTypeSchema({\n usedContentTypeNames: takenNames,\n reservedModels: reservedNames.models,\n singularNames: takenSingularNames,\n pluralNames: takenPluralNames,\n collectionNames: takenCollectionNames,\n });\n\n // FIXME\n return extensions.makeValidator(\n ['contentType'],\n contentTypeShape,\n takenNames,\n reservedNames.models,\n takenSingularNames,\n takenPluralNames\n );\n },\n form: {\n base({ actionType }: any) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: any) {\n const baseForm = contentTypeForm.advanced\n .default()\n .sections.map((section) => section.items)\n .flat();\n const itemsToAdd = extensions.getAdvancedForm(['contentType']);\n\n return {\n sections: [\n {\n items: [...baseForm, ...itemsToAdd],\n },\n ],\n };\n },\n },\n },\n component: {\n schema(\n alreadyTakenAttributes: Array<Internal.UID.Component>,\n componentCategory: string,\n reservedNames: {\n models: any;\n },\n isEditing = false,\n components: Record<string, any>,\n componentDisplayName: string,\n compoUid: Internal.UID.Component | null = null\n ) {\n const takenNames = isEditing\n ? alreadyTakenAttributes.filter((uid: Internal.UID.Component) => uid !== compoUid)\n : alreadyTakenAttributes;\n const collectionNames = Object.values(components).map((component: any) => {\n return component?.collectionName;\n });\n\n const currentCollectionName = createComponentCollectionName(\n componentDisplayName,\n componentCategory\n );\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => collectionName !== currentCollectionName)\n : collectionNames;\n\n return createComponentSchema(\n takenNames,\n reservedNames.models,\n componentCategory,\n takenCollectionNames,\n currentCollectionName\n );\n },\n form: {\n advanced() {\n return {\n sections: componentForm.advanced(),\n };\n },\n base() {\n return {\n sections: componentForm.base(),\n };\n },\n },\n },\n addComponentToDynamicZone: {\n form: {\n advanced() {\n return dynamiczoneForm.advanced.default();\n },\n base({ data }: any) {\n const isCreatingComponent = data?.createComponent ?? false;\n\n if (isCreatingComponent) {\n return dynamiczoneForm.base.createComponent();\n }\n\n return dynamiczoneForm.base.default();\n },\n },\n },\n};\n"],"names":["forms","customField","schema","schemaAttributes","attributeType","customFieldValidator","reservedNames","schemaData","ctbFormsAPI","usedAttributeNames","getUsedAttributeNames","attributeShape","attributeTypes","attributes","initialData","modifiedData","makeCustomFieldValidator","form","base","sections","sectionTitle","items","nameField","options","addItemsToFormSection","advanced","data","step","extensions","rest","id","defaultMessage","name","type","intlLabel","description","injectedInputs","getAdvancedForm","extendedSettings","getTrad","push","attribute","currentSchema","alreadyTakenTargetContentTypeAttributes","makeValidator","err","console","error","default","baseForm","attributesForm","itemsToAdd","injected","reduce","acc","current","commonBaseForm","contentType","alreadyTakenNames","isEditing","ctUid","contentTypes","singularNames","Object","values","map","info","singularName","pluralNames","pluralName","takenNames","filter","uid","takenSingularNames","singName","takenPluralNames","collectionNames","collectionName","takenCollectionNames","currentCollectionName","contentTypeShape","createContentTypeSchema","usedContentTypeNames","reservedModels","models","actionType","contentTypeForm","create","edit","section","flat","component","alreadyTakenAttributes","componentCategory","components","componentDisplayName","compoUid","createComponentCollectionName","createComponentSchema","componentForm","addComponentToDynamicZone","dynamiczoneForm","isCreatingComponent","createComponent"],"mappings":"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"}
1
+ {"version":3,"file":"forms.js","sources":["../../../../../admin/src/components/FormModal/forms/forms.ts"],"sourcesContent":["import { getTrad } from '../../../utils';\nimport { commonBaseForm } from '../attributes/commonBaseForm';\nimport { attributesForm } from '../attributes/form';\nimport { nameField } from '../attributes/nameField';\nimport { attributeTypes } from '../attributes/types';\nimport { componentForm } from '../component/componentForm';\nimport { createComponentSchema } from '../component/createComponentSchema';\nimport { contentTypeForm } from '../contentType/contentTypeForm';\nimport { createContentTypeSchema } from '../contentType/createContentTypeSchema';\nimport { dynamiczoneForm } from '../dynamiczoneForm';\n\nimport { addItemsToFormSection, FormTypeOptions } from './utils/addItemsToFormSection';\nimport { createComponentCollectionName } from './utils/createCollectionName';\nimport { Attribute, getUsedAttributeNames, SchemaData } from './utils/getUsedAttributeNames';\n\nimport type { ContentType } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nexport type SchemaParams = {\n schemaAttributes: any;\n attributeType: keyof typeof attributeTypes;\n customFieldValidator: any;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: any;\n ctbFormsAPI: any;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: any;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string;\n attributes: any;\n extensions: any;\n forTarget: string;\n};\n\nexport const forms = {\n customField: {\n schema({\n schemaAttributes,\n attributeType,\n customFieldValidator,\n reservedNames,\n schemaData,\n ctbFormsAPI,\n }: SchemaParams) {\n const usedAttributeNames = getUsedAttributeNames(schemaAttributes, schemaData);\n\n let attributeShape;\n if (attributeType === 'relation') {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n [],\n { initialData: {}, modifiedData: {} }\n );\n } else {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes\n );\n }\n\n return ctbFormsAPI.makeCustomFieldValidator(\n attributeShape,\n customFieldValidator,\n usedAttributeNames,\n reservedNames.attributes,\n schemaData\n );\n },\n form: {\n base({ customField }: any) {\n // Default section with required name field\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [nameField] }];\n\n if (customField.options?.base) {\n addItemsToFormSection(customField.options.base, sections);\n }\n\n return { sections };\n },\n advanced({ customField, data, step, extensions, ...rest }: any) {\n // Default section with no fields\n const sections: FormTypeOptions = [\n { sectionTitle: null, items: [] },\n {\n sectionTitle: { id: 'form.attribute.condition.section', defaultMessage: 'Conditions' },\n items: [\n {\n name: 'conditions',\n type: 'condition-form',\n intlLabel: {\n id: 'form.attribute.condition.label',\n defaultMessage: 'Visibility condition',\n },\n description: {\n id: 'form.attribute.condition.desc',\n defaultMessage: 'Show this field only when a boolean/enum condition matches.',\n },\n },\n ],\n },\n ];\n const injectedInputs = extensions.getAdvancedForm(['attribute', customField.type], {\n data,\n type: customField.type,\n step,\n customField,\n ...rest,\n });\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs) {\n const extendedSettings = {\n sectionTitle: {\n id: getTrad('modalForm.custom-fields.advanced.settings.extended'),\n defaultMessage: 'Extended settings',\n },\n items: injectedInputs,\n };\n\n sections.push(extendedSettings);\n }\n\n return { sections };\n },\n },\n },\n attribute: {\n schema(\n currentSchema: any,\n attributeType: keyof typeof attributeTypes,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: any;\n }\n ) {\n // Get the attributes object on the schema\n const attributes: Array<Attribute> = currentSchema?.attributes ?? [];\n const usedAttributeNames = getUsedAttributeNames(attributes, options);\n\n try {\n const attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n\n return extensions.makeValidator(\n ['attribute', attributeType],\n attributeShape,\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n } catch (err) {\n console.error('Error yup build schema', err);\n\n return attributeTypes.default(usedAttributeNames, reservedNames.attributes);\n }\n },\n form: {\n advanced({ data, type, step, extensions, ...rest }: Base<'advanced'>) {\n try {\n const baseForm = attributesForm.advanced[type](data, step).sections;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n customField: null,\n ...rest,\n });\n\n let injected = false;\n\n const sections = baseForm.reduce((acc: Array<any>, current: any) => {\n if (current.sectionTitle === null || injected) {\n acc.push(current);\n } else {\n acc.push({ ...current, items: [...current.items, ...itemsToAdd] });\n injected = true;\n }\n\n return acc;\n }, []);\n // IF we want a dedicated section for the plugins\n // const sections = [\n // ...baseForm,\n // {\n // sectionTitle: { id: 'Zone pour plugins', defaultMessage: 'Zone pour plugins' },\n // items: itemsToAdd,\n // },\n // ];\n\n return { sections };\n } catch (err) {\n console.error(err);\n\n return { sections: [] };\n }\n },\n base({ data, type, step, attributes }: Base<'base'>) {\n try {\n return attributesForm.base[type](data, step, attributes);\n } catch (err) {\n return commonBaseForm;\n }\n },\n },\n },\n contentType: {\n schema(\n alreadyTakenNames: Array<string>,\n isEditing: boolean,\n ctUid: Internal.UID.ContentType,\n reservedNames: {\n models: any;\n },\n extensions: any,\n contentTypes: Record<Internal.UID.ContentType, ContentType>\n ) {\n const singularNames = Object.values(contentTypes).map((contentType) => {\n return contentType.info.singularName;\n });\n\n const pluralNames = Object.values(contentTypes).map((contentType: any) => {\n return contentType?.info?.pluralName ?? '';\n });\n\n const takenNames = isEditing\n ? alreadyTakenNames.filter((uid) => uid !== ctUid)\n : alreadyTakenNames;\n\n const takenSingularNames = isEditing\n ? singularNames.filter((singName) => {\n const { info } = contentTypes[ctUid];\n\n return info.singularName !== singName;\n })\n : singularNames;\n\n const takenPluralNames = isEditing\n ? pluralNames.filter((pluralName) => {\n const { info } = contentTypes[ctUid];\n\n return info.pluralName !== pluralName;\n })\n : pluralNames;\n\n // return the array of collection names not all normalized\n const collectionNames = Object.values(contentTypes).map((contentType) => {\n return contentType?.collectionName ?? '';\n });\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => {\n const { collectionName: currentCollectionName } = contentTypes[ctUid];\n\n return collectionName !== currentCollectionName;\n })\n : collectionNames;\n\n const contentTypeShape = createContentTypeSchema({\n usedContentTypeNames: takenNames,\n reservedModels: reservedNames.models,\n singularNames: takenSingularNames,\n pluralNames: takenPluralNames,\n collectionNames: takenCollectionNames,\n });\n\n // FIXME\n return extensions.makeValidator(\n ['contentType'],\n contentTypeShape,\n takenNames,\n reservedNames.models,\n takenSingularNames,\n takenPluralNames\n );\n },\n form: {\n base({ actionType }: any) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: any) {\n const baseForm = contentTypeForm.advanced\n .default()\n .sections.map((section) => section.items)\n .flat();\n const itemsToAdd = extensions.getAdvancedForm(['contentType']);\n\n return {\n sections: [\n {\n items: [...baseForm, ...itemsToAdd],\n },\n ],\n };\n },\n },\n },\n component: {\n schema(\n alreadyTakenAttributes: Array<Internal.UID.Component>,\n componentCategory: string,\n reservedNames: {\n models: any;\n },\n isEditing = false,\n components: Record<string, any>,\n componentDisplayName: string,\n compoUid: Internal.UID.Component | null = null\n ) {\n const takenNames = isEditing\n ? alreadyTakenAttributes.filter((uid: Internal.UID.Component) => uid !== compoUid)\n : alreadyTakenAttributes;\n const collectionNames = Object.values(components).map((component: any) => {\n return component?.collectionName;\n });\n\n const currentCollectionName = createComponentCollectionName(\n componentDisplayName,\n componentCategory\n );\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => collectionName !== currentCollectionName)\n : collectionNames;\n\n return createComponentSchema(\n takenNames,\n reservedNames.models,\n componentCategory,\n takenCollectionNames,\n currentCollectionName\n );\n },\n form: {\n advanced() {\n return {\n sections: componentForm.advanced(),\n };\n },\n base() {\n return {\n sections: componentForm.base(),\n };\n },\n },\n },\n addComponentToDynamicZone: {\n form: {\n advanced() {\n return dynamiczoneForm.advanced.default();\n },\n base({ data }: any) {\n const isCreatingComponent = data?.createComponent ?? false;\n\n if (isCreatingComponent) {\n return dynamiczoneForm.base.createComponent();\n }\n\n return dynamiczoneForm.base.default();\n },\n },\n },\n};\n"],"names":["forms","customField","schema","schemaAttributes","attributeType","customFieldValidator","reservedNames","schemaData","ctbFormsAPI","usedAttributeNames","getUsedAttributeNames","attributeShape","attributeTypes","attributes","initialData","modifiedData","makeCustomFieldValidator","form","base","sections","sectionTitle","items","nameField","options","addItemsToFormSection","advanced","data","step","extensions","rest","id","defaultMessage","name","type","intlLabel","description","injectedInputs","getAdvancedForm","extendedSettings","getTrad","push","attribute","currentSchema","alreadyTakenTargetContentTypeAttributes","makeValidator","err","console","error","default","baseForm","attributesForm","itemsToAdd","injected","reduce","acc","current","commonBaseForm","contentType","alreadyTakenNames","isEditing","ctUid","contentTypes","singularNames","Object","values","map","info","singularName","pluralNames","pluralName","takenNames","filter","uid","takenSingularNames","singName","takenPluralNames","collectionNames","collectionName","takenCollectionNames","currentCollectionName","contentTypeShape","createContentTypeSchema","usedContentTypeNames","reservedModels","models","actionType","contentTypeForm","create","edit","section","flat","component","alreadyTakenAttributes","componentCategory","components","componentDisplayName","compoUid","createComponentCollectionName","createComponentSchema","componentForm","addComponentToDynamicZone","dynamiczoneForm","isCreatingComponent","createComponent"],"mappings":"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"}
@@ -80,6 +80,7 @@ const forms = {
80
80
  data,
81
81
  type: customField.type,
82
82
  step,
83
+ customField,
83
84
  ...rest
84
85
  });
85
86
  if (customField.options?.advanced) {
@@ -128,6 +129,7 @@ const forms = {
128
129
  data,
129
130
  type,
130
131
  step,
132
+ customField: null,
131
133
  ...rest
132
134
  });
133
135
  let injected = false;
@@ -1 +1 @@
1
- {"version":3,"file":"forms.mjs","sources":["../../../../../admin/src/components/FormModal/forms/forms.ts"],"sourcesContent":["import { getTrad } from '../../../utils';\nimport { commonBaseForm } from '../attributes/commonBaseForm';\nimport { attributesForm } from '../attributes/form';\nimport { nameField } from '../attributes/nameField';\nimport { attributeTypes } from '../attributes/types';\nimport { componentForm } from '../component/componentForm';\nimport { createComponentSchema } from '../component/createComponentSchema';\nimport { contentTypeForm } from '../contentType/contentTypeForm';\nimport { createContentTypeSchema } from '../contentType/createContentTypeSchema';\nimport { dynamiczoneForm } from '../dynamiczoneForm';\n\nimport { addItemsToFormSection, FormTypeOptions } from './utils/addItemsToFormSection';\nimport { createComponentCollectionName } from './utils/createCollectionName';\nimport { Attribute, getUsedAttributeNames, SchemaData } from './utils/getUsedAttributeNames';\n\nimport type { ContentType } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nexport type SchemaParams = {\n schemaAttributes: any;\n attributeType: keyof typeof attributeTypes;\n customFieldValidator: any;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: any;\n ctbFormsAPI: any;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: any;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string;\n attributes: any;\n extensions: any;\n forTarget: string;\n};\n\nexport const forms = {\n customField: {\n schema({\n schemaAttributes,\n attributeType,\n customFieldValidator,\n reservedNames,\n schemaData,\n ctbFormsAPI,\n }: SchemaParams) {\n const usedAttributeNames = getUsedAttributeNames(schemaAttributes, schemaData);\n\n let attributeShape;\n if (attributeType === 'relation') {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n [],\n { initialData: {}, modifiedData: {} }\n );\n } else {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes\n );\n }\n\n return ctbFormsAPI.makeCustomFieldValidator(\n attributeShape,\n customFieldValidator,\n usedAttributeNames,\n reservedNames.attributes,\n schemaData\n );\n },\n form: {\n base({ customField }: any) {\n // Default section with required name field\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [nameField] }];\n\n if (customField.options?.base) {\n addItemsToFormSection(customField.options.base, sections);\n }\n\n return { sections };\n },\n advanced({ customField, data, step, extensions, ...rest }: any) {\n // Default section with no fields\n const sections: FormTypeOptions = [\n { sectionTitle: null, items: [] },\n {\n sectionTitle: { id: 'form.attribute.condition.section', defaultMessage: 'Conditions' },\n items: [\n {\n name: 'conditions',\n type: 'condition-form',\n intlLabel: {\n id: 'form.attribute.condition.label',\n defaultMessage: 'Visibility condition',\n },\n description: {\n id: 'form.attribute.condition.desc',\n defaultMessage: 'Show this field only when a boolean/enum condition matches.',\n },\n },\n ],\n },\n ];\n const injectedInputs = extensions.getAdvancedForm(['attribute', customField.type], {\n data,\n type: customField.type,\n step,\n ...rest,\n });\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs) {\n const extendedSettings = {\n sectionTitle: {\n id: getTrad('modalForm.custom-fields.advanced.settings.extended'),\n defaultMessage: 'Extended settings',\n },\n items: injectedInputs,\n };\n\n sections.push(extendedSettings);\n }\n\n return { sections };\n },\n },\n },\n attribute: {\n schema(\n currentSchema: any,\n attributeType: keyof typeof attributeTypes,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: any;\n }\n ) {\n // Get the attributes object on the schema\n const attributes: Array<Attribute> = currentSchema?.attributes ?? [];\n const usedAttributeNames = getUsedAttributeNames(attributes, options);\n\n try {\n const attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n\n return extensions.makeValidator(\n ['attribute', attributeType],\n attributeShape,\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n } catch (err) {\n console.error('Error yup build schema', err);\n\n return attributeTypes.default(usedAttributeNames, reservedNames.attributes);\n }\n },\n form: {\n advanced({ data, type, step, extensions, ...rest }: Base<'advanced'>) {\n try {\n const baseForm = attributesForm.advanced[type](data, step).sections;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n ...rest,\n });\n\n let injected = false;\n\n const sections = baseForm.reduce((acc: Array<any>, current: any) => {\n if (current.sectionTitle === null || injected) {\n acc.push(current);\n } else {\n acc.push({ ...current, items: [...current.items, ...itemsToAdd] });\n injected = true;\n }\n\n return acc;\n }, []);\n // IF we want a dedicated section for the plugins\n // const sections = [\n // ...baseForm,\n // {\n // sectionTitle: { id: 'Zone pour plugins', defaultMessage: 'Zone pour plugins' },\n // items: itemsToAdd,\n // },\n // ];\n\n return { sections };\n } catch (err) {\n console.error(err);\n\n return { sections: [] };\n }\n },\n base({ data, type, step, attributes }: Base<'base'>) {\n try {\n return attributesForm.base[type](data, step, attributes);\n } catch (err) {\n return commonBaseForm;\n }\n },\n },\n },\n contentType: {\n schema(\n alreadyTakenNames: Array<string>,\n isEditing: boolean,\n ctUid: Internal.UID.ContentType,\n reservedNames: {\n models: any;\n },\n extensions: any,\n contentTypes: Record<Internal.UID.ContentType, ContentType>\n ) {\n const singularNames = Object.values(contentTypes).map((contentType) => {\n return contentType.info.singularName;\n });\n\n const pluralNames = Object.values(contentTypes).map((contentType: any) => {\n return contentType?.info?.pluralName ?? '';\n });\n\n const takenNames = isEditing\n ? alreadyTakenNames.filter((uid) => uid !== ctUid)\n : alreadyTakenNames;\n\n const takenSingularNames = isEditing\n ? singularNames.filter((singName) => {\n const { info } = contentTypes[ctUid];\n\n return info.singularName !== singName;\n })\n : singularNames;\n\n const takenPluralNames = isEditing\n ? pluralNames.filter((pluralName) => {\n const { info } = contentTypes[ctUid];\n\n return info.pluralName !== pluralName;\n })\n : pluralNames;\n\n // return the array of collection names not all normalized\n const collectionNames = Object.values(contentTypes).map((contentType) => {\n return contentType?.collectionName ?? '';\n });\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => {\n const { collectionName: currentCollectionName } = contentTypes[ctUid];\n\n return collectionName !== currentCollectionName;\n })\n : collectionNames;\n\n const contentTypeShape = createContentTypeSchema({\n usedContentTypeNames: takenNames,\n reservedModels: reservedNames.models,\n singularNames: takenSingularNames,\n pluralNames: takenPluralNames,\n collectionNames: takenCollectionNames,\n });\n\n // FIXME\n return extensions.makeValidator(\n ['contentType'],\n contentTypeShape,\n takenNames,\n reservedNames.models,\n takenSingularNames,\n takenPluralNames\n );\n },\n form: {\n base({ actionType }: any) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: any) {\n const baseForm = contentTypeForm.advanced\n .default()\n .sections.map((section) => section.items)\n .flat();\n const itemsToAdd = extensions.getAdvancedForm(['contentType']);\n\n return {\n sections: [\n {\n items: [...baseForm, ...itemsToAdd],\n },\n ],\n };\n },\n },\n },\n component: {\n schema(\n alreadyTakenAttributes: Array<Internal.UID.Component>,\n componentCategory: string,\n reservedNames: {\n models: any;\n },\n isEditing = false,\n components: Record<string, any>,\n componentDisplayName: string,\n compoUid: Internal.UID.Component | null = null\n ) {\n const takenNames = isEditing\n ? alreadyTakenAttributes.filter((uid: Internal.UID.Component) => uid !== compoUid)\n : alreadyTakenAttributes;\n const collectionNames = Object.values(components).map((component: any) => {\n return component?.collectionName;\n });\n\n const currentCollectionName = createComponentCollectionName(\n componentDisplayName,\n componentCategory\n );\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => collectionName !== currentCollectionName)\n : collectionNames;\n\n return createComponentSchema(\n takenNames,\n reservedNames.models,\n componentCategory,\n takenCollectionNames,\n currentCollectionName\n );\n },\n form: {\n advanced() {\n return {\n sections: componentForm.advanced(),\n };\n },\n base() {\n return {\n sections: componentForm.base(),\n };\n },\n },\n },\n addComponentToDynamicZone: {\n form: {\n advanced() {\n return dynamiczoneForm.advanced.default();\n },\n base({ data }: any) {\n const isCreatingComponent = data?.createComponent ?? false;\n\n if (isCreatingComponent) {\n return dynamiczoneForm.base.createComponent();\n }\n\n return dynamiczoneForm.base.default();\n },\n },\n },\n};\n"],"names":["forms","customField","schema","schemaAttributes","attributeType","customFieldValidator","reservedNames","schemaData","ctbFormsAPI","usedAttributeNames","getUsedAttributeNames","attributeShape","attributeTypes","attributes","initialData","modifiedData","makeCustomFieldValidator","form","base","sections","sectionTitle","items","nameField","options","addItemsToFormSection","advanced","data","step","extensions","rest","id","defaultMessage","name","type","intlLabel","description","injectedInputs","getAdvancedForm","extendedSettings","getTrad","push","attribute","currentSchema","alreadyTakenTargetContentTypeAttributes","makeValidator","err","console","error","default","baseForm","attributesForm","itemsToAdd","injected","reduce","acc","current","commonBaseForm","contentType","alreadyTakenNames","isEditing","ctUid","contentTypes","singularNames","Object","values","map","info","singularName","pluralNames","pluralName","takenNames","filter","uid","takenSingularNames","singName","takenPluralNames","collectionNames","collectionName","takenCollectionNames","currentCollectionName","contentTypeShape","createContentTypeSchema","usedContentTypeNames","reservedModels","models","actionType","contentTypeForm","create","edit","section","flat","component","alreadyTakenAttributes","componentCategory","components","componentDisplayName","compoUid","createComponentCollectionName","createComponentSchema","componentForm","addComponentToDynamicZone","dynamiczoneForm","isCreatingComponent","createComponent"],"mappings":"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"}
1
+ {"version":3,"file":"forms.mjs","sources":["../../../../../admin/src/components/FormModal/forms/forms.ts"],"sourcesContent":["import { getTrad } from '../../../utils';\nimport { commonBaseForm } from '../attributes/commonBaseForm';\nimport { attributesForm } from '../attributes/form';\nimport { nameField } from '../attributes/nameField';\nimport { attributeTypes } from '../attributes/types';\nimport { componentForm } from '../component/componentForm';\nimport { createComponentSchema } from '../component/createComponentSchema';\nimport { contentTypeForm } from '../contentType/contentTypeForm';\nimport { createContentTypeSchema } from '../contentType/createContentTypeSchema';\nimport { dynamiczoneForm } from '../dynamiczoneForm';\n\nimport { addItemsToFormSection, FormTypeOptions } from './utils/addItemsToFormSection';\nimport { createComponentCollectionName } from './utils/createCollectionName';\nimport { Attribute, getUsedAttributeNames, SchemaData } from './utils/getUsedAttributeNames';\n\nimport type { ContentType } from '../../../types';\nimport type { Internal } from '@strapi/types';\n\nexport type SchemaParams = {\n schemaAttributes: any;\n attributeType: keyof typeof attributeTypes;\n customFieldValidator: any;\n reservedNames: {\n attributes: Array<string>;\n };\n schemaData: any;\n ctbFormsAPI: any;\n};\n\ntype Base<TAttributesFormType extends 'base' | 'advanced'> = {\n data: any;\n type: keyof (typeof attributesForm)[TAttributesFormType];\n step: string;\n attributes: any;\n extensions: any;\n forTarget: string;\n};\n\nexport const forms = {\n customField: {\n schema({\n schemaAttributes,\n attributeType,\n customFieldValidator,\n reservedNames,\n schemaData,\n ctbFormsAPI,\n }: SchemaParams) {\n const usedAttributeNames = getUsedAttributeNames(schemaAttributes, schemaData);\n\n let attributeShape;\n if (attributeType === 'relation') {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n [],\n { initialData: {}, modifiedData: {} }\n );\n } else {\n attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes\n );\n }\n\n return ctbFormsAPI.makeCustomFieldValidator(\n attributeShape,\n customFieldValidator,\n usedAttributeNames,\n reservedNames.attributes,\n schemaData\n );\n },\n form: {\n base({ customField }: any) {\n // Default section with required name field\n const sections: FormTypeOptions = [{ sectionTitle: null, items: [nameField] }];\n\n if (customField.options?.base) {\n addItemsToFormSection(customField.options.base, sections);\n }\n\n return { sections };\n },\n advanced({ customField, data, step, extensions, ...rest }: any) {\n // Default section with no fields\n const sections: FormTypeOptions = [\n { sectionTitle: null, items: [] },\n {\n sectionTitle: { id: 'form.attribute.condition.section', defaultMessage: 'Conditions' },\n items: [\n {\n name: 'conditions',\n type: 'condition-form',\n intlLabel: {\n id: 'form.attribute.condition.label',\n defaultMessage: 'Visibility condition',\n },\n description: {\n id: 'form.attribute.condition.desc',\n defaultMessage: 'Show this field only when a boolean/enum condition matches.',\n },\n },\n ],\n },\n ];\n const injectedInputs = extensions.getAdvancedForm(['attribute', customField.type], {\n data,\n type: customField.type,\n step,\n customField,\n ...rest,\n });\n\n if (customField.options?.advanced) {\n addItemsToFormSection(customField.options.advanced, sections);\n }\n\n if (injectedInputs) {\n const extendedSettings = {\n sectionTitle: {\n id: getTrad('modalForm.custom-fields.advanced.settings.extended'),\n defaultMessage: 'Extended settings',\n },\n items: injectedInputs,\n };\n\n sections.push(extendedSettings);\n }\n\n return { sections };\n },\n },\n },\n attribute: {\n schema(\n currentSchema: any,\n attributeType: keyof typeof attributeTypes,\n reservedNames: {\n attributes: Array<string>;\n },\n alreadyTakenTargetContentTypeAttributes: Array<Attribute>,\n options: SchemaData,\n extensions: {\n makeValidator: any;\n }\n ) {\n // Get the attributes object on the schema\n const attributes: Array<Attribute> = currentSchema?.attributes ?? [];\n const usedAttributeNames = getUsedAttributeNames(attributes, options);\n\n try {\n const attributeShape = attributeTypes[attributeType](\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n\n return extensions.makeValidator(\n ['attribute', attributeType],\n attributeShape,\n usedAttributeNames,\n reservedNames.attributes,\n alreadyTakenTargetContentTypeAttributes,\n options\n );\n } catch (err) {\n console.error('Error yup build schema', err);\n\n return attributeTypes.default(usedAttributeNames, reservedNames.attributes);\n }\n },\n form: {\n advanced({ data, type, step, extensions, ...rest }: Base<'advanced'>) {\n try {\n const baseForm = attributesForm.advanced[type](data, step).sections;\n const itemsToAdd = extensions.getAdvancedForm(['attribute', type], {\n data,\n type,\n step,\n customField: null,\n ...rest,\n });\n\n let injected = false;\n\n const sections = baseForm.reduce((acc: Array<any>, current: any) => {\n if (current.sectionTitle === null || injected) {\n acc.push(current);\n } else {\n acc.push({ ...current, items: [...current.items, ...itemsToAdd] });\n injected = true;\n }\n\n return acc;\n }, []);\n // IF we want a dedicated section for the plugins\n // const sections = [\n // ...baseForm,\n // {\n // sectionTitle: { id: 'Zone pour plugins', defaultMessage: 'Zone pour plugins' },\n // items: itemsToAdd,\n // },\n // ];\n\n return { sections };\n } catch (err) {\n console.error(err);\n\n return { sections: [] };\n }\n },\n base({ data, type, step, attributes }: Base<'base'>) {\n try {\n return attributesForm.base[type](data, step, attributes);\n } catch (err) {\n return commonBaseForm;\n }\n },\n },\n },\n contentType: {\n schema(\n alreadyTakenNames: Array<string>,\n isEditing: boolean,\n ctUid: Internal.UID.ContentType,\n reservedNames: {\n models: any;\n },\n extensions: any,\n contentTypes: Record<Internal.UID.ContentType, ContentType>\n ) {\n const singularNames = Object.values(contentTypes).map((contentType) => {\n return contentType.info.singularName;\n });\n\n const pluralNames = Object.values(contentTypes).map((contentType: any) => {\n return contentType?.info?.pluralName ?? '';\n });\n\n const takenNames = isEditing\n ? alreadyTakenNames.filter((uid) => uid !== ctUid)\n : alreadyTakenNames;\n\n const takenSingularNames = isEditing\n ? singularNames.filter((singName) => {\n const { info } = contentTypes[ctUid];\n\n return info.singularName !== singName;\n })\n : singularNames;\n\n const takenPluralNames = isEditing\n ? pluralNames.filter((pluralName) => {\n const { info } = contentTypes[ctUid];\n\n return info.pluralName !== pluralName;\n })\n : pluralNames;\n\n // return the array of collection names not all normalized\n const collectionNames = Object.values(contentTypes).map((contentType) => {\n return contentType?.collectionName ?? '';\n });\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => {\n const { collectionName: currentCollectionName } = contentTypes[ctUid];\n\n return collectionName !== currentCollectionName;\n })\n : collectionNames;\n\n const contentTypeShape = createContentTypeSchema({\n usedContentTypeNames: takenNames,\n reservedModels: reservedNames.models,\n singularNames: takenSingularNames,\n pluralNames: takenPluralNames,\n collectionNames: takenCollectionNames,\n });\n\n // FIXME\n return extensions.makeValidator(\n ['contentType'],\n contentTypeShape,\n takenNames,\n reservedNames.models,\n takenSingularNames,\n takenPluralNames\n );\n },\n form: {\n base({ actionType }: any) {\n if (actionType === 'create') {\n return contentTypeForm.base.create();\n }\n\n return contentTypeForm.base.edit();\n },\n advanced({ extensions }: any) {\n const baseForm = contentTypeForm.advanced\n .default()\n .sections.map((section) => section.items)\n .flat();\n const itemsToAdd = extensions.getAdvancedForm(['contentType']);\n\n return {\n sections: [\n {\n items: [...baseForm, ...itemsToAdd],\n },\n ],\n };\n },\n },\n },\n component: {\n schema(\n alreadyTakenAttributes: Array<Internal.UID.Component>,\n componentCategory: string,\n reservedNames: {\n models: any;\n },\n isEditing = false,\n components: Record<string, any>,\n componentDisplayName: string,\n compoUid: Internal.UID.Component | null = null\n ) {\n const takenNames = isEditing\n ? alreadyTakenAttributes.filter((uid: Internal.UID.Component) => uid !== compoUid)\n : alreadyTakenAttributes;\n const collectionNames = Object.values(components).map((component: any) => {\n return component?.collectionName;\n });\n\n const currentCollectionName = createComponentCollectionName(\n componentDisplayName,\n componentCategory\n );\n\n const takenCollectionNames = isEditing\n ? collectionNames.filter((collectionName) => collectionName !== currentCollectionName)\n : collectionNames;\n\n return createComponentSchema(\n takenNames,\n reservedNames.models,\n componentCategory,\n takenCollectionNames,\n currentCollectionName\n );\n },\n form: {\n advanced() {\n return {\n sections: componentForm.advanced(),\n };\n },\n base() {\n return {\n sections: componentForm.base(),\n };\n },\n },\n },\n addComponentToDynamicZone: {\n form: {\n advanced() {\n return dynamiczoneForm.advanced.default();\n },\n base({ data }: any) {\n const isCreatingComponent = data?.createComponent ?? false;\n\n if (isCreatingComponent) {\n return dynamiczoneForm.base.createComponent();\n }\n\n return dynamiczoneForm.base.default();\n },\n },\n },\n};\n"],"names":["forms","customField","schema","schemaAttributes","attributeType","customFieldValidator","reservedNames","schemaData","ctbFormsAPI","usedAttributeNames","getUsedAttributeNames","attributeShape","attributeTypes","attributes","initialData","modifiedData","makeCustomFieldValidator","form","base","sections","sectionTitle","items","nameField","options","addItemsToFormSection","advanced","data","step","extensions","rest","id","defaultMessage","name","type","intlLabel","description","injectedInputs","getAdvancedForm","extendedSettings","getTrad","push","attribute","currentSchema","alreadyTakenTargetContentTypeAttributes","makeValidator","err","console","error","default","baseForm","attributesForm","itemsToAdd","injected","reduce","acc","current","commonBaseForm","contentType","alreadyTakenNames","isEditing","ctUid","contentTypes","singularNames","Object","values","map","info","singularName","pluralNames","pluralName","takenNames","filter","uid","takenSingularNames","singName","takenPluralNames","collectionNames","collectionName","takenCollectionNames","currentCollectionName","contentTypeShape","createContentTypeSchema","usedContentTypeNames","reservedModels","models","actionType","contentTypeForm","create","edit","section","flat","component","alreadyTakenAttributes","componentCategory","components","componentDisplayName","compoUid","createComponentCollectionName","createComponentSchema","componentForm","addComponentToDynamicZone","dynamiczoneForm","isCreatingComponent","createComponent"],"mappings":";;;;;;;;;;;;;;MAsCaA,KAAAA,GAAQ;IACnBC,WAAAA,EAAa;AACXC,QAAAA,MAAAA,CAAAA,CAAO,EACLC,gBAAgB,EAChBC,aAAa,EACbC,oBAAoB,EACpBC,aAAa,EACbC,UAAU,EACVC,WAAW,EACE,EAAA;YACb,MAAMC,kBAAAA,GAAqBC,sBAAsBP,gBAAAA,EAAkBI,UAAAA,CAAAA;YAEnE,IAAII,cAAAA;AACJ,YAAA,IAAIP,kBAAkB,UAAA,EAAY;gBAChCO,cAAAA,GAAiBC,cAAc,CAACR,aAAAA,CAAc,CAC5CK,oBACAH,aAAAA,CAAcO,UAAU,EACxB,EAAE,EACF;AAAEC,oBAAAA,WAAAA,EAAa,EAAC;AAAGC,oBAAAA,YAAAA,EAAc;AAAG,iBAAA,CAAA;YAExC,CAAA,MAAO;AACLJ,gBAAAA,cAAAA,GAAiBC,cAAc,CAACR,aAAAA,CAAc,CAC5CK,kBAAAA,EACAH,cAAcO,UAAU,CAAA;AAE5B,YAAA;YAEA,OAAOL,WAAAA,CAAYQ,wBAAwB,CACzCL,cAAAA,EACAN,sBACAI,kBAAAA,EACAH,aAAAA,CAAcO,UAAU,EACxBN,UAAAA,CAAAA;AAEJ,QAAA,CAAA;QACAU,IAAAA,EAAM;YACJC,IAAAA,CAAAA,CAAK,EAAEjB,WAAW,EAAO,EAAA;;AAEvB,gBAAA,MAAMkB,QAAAA,GAA4B;AAAC,oBAAA;wBAAEC,YAAAA,EAAc,IAAA;wBAAMC,KAAAA,EAAO;AAACC,4BAAAA;AAAU;AAAC;AAAE,iBAAA;gBAE9E,IAAIrB,WAAAA,CAAYsB,OAAO,EAAEL,IAAAA,EAAM;AAC7BM,oBAAAA,qBAAAA,CAAsBvB,WAAAA,CAAYsB,OAAO,CAACL,IAAI,EAAEC,QAAAA,CAAAA;AAClD,gBAAA;gBAEA,OAAO;AAAEA,oBAAAA;AAAS,iBAAA;AACpB,YAAA,CAAA;YACAM,QAAAA,CAAAA,CAAS,EAAExB,WAAW,EAAEyB,IAAI,EAAEC,IAAI,EAAEC,UAAU,EAAE,GAAGC,IAAAA,EAAW,EAAA;;AAE5D,gBAAA,MAAMV,QAAAA,GAA4B;AAChC,oBAAA;wBAAEC,YAAAA,EAAc,IAAA;AAAMC,wBAAAA,KAAAA,EAAO;AAAG,qBAAA;AAChC,oBAAA;wBACED,YAAAA,EAAc;4BAAEU,EAAAA,EAAI,kCAAA;4BAAoCC,cAAAA,EAAgB;AAAa,yBAAA;wBACrFV,KAAAA,EAAO;AACL,4BAAA;gCACEW,IAAAA,EAAM,YAAA;gCACNC,IAAAA,EAAM,gBAAA;gCACNC,SAAAA,EAAW;oCACTJ,EAAAA,EAAI,gCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;gCACAI,WAAAA,EAAa;oCACXL,EAAAA,EAAI,+BAAA;oCACJC,cAAAA,EAAgB;AAClB;AACF;AACD;AACH;AACD,iBAAA;gBACD,MAAMK,cAAAA,GAAiBR,UAAAA,CAAWS,eAAe,CAAC;AAAC,oBAAA,WAAA;AAAapC,oBAAAA,WAAAA,CAAYgC;iBAAK,EAAE;AACjFP,oBAAAA,IAAAA;AACAO,oBAAAA,IAAAA,EAAMhC,YAAYgC,IAAI;AACtBN,oBAAAA,IAAAA;AACA1B,oBAAAA,WAAAA;AACA,oBAAA,GAAG4B;AACL,iBAAA,CAAA;gBAEA,IAAI5B,WAAAA,CAAYsB,OAAO,EAAEE,QAAAA,EAAU;AACjCD,oBAAAA,qBAAAA,CAAsBvB,WAAAA,CAAYsB,OAAO,CAACE,QAAQ,EAAEN,QAAAA,CAAAA;AACtD,gBAAA;AAEA,gBAAA,IAAIiB,cAAAA,EAAgB;AAClB,oBAAA,MAAME,gBAAAA,GAAmB;wBACvBlB,YAAAA,EAAc;AACZU,4BAAAA,EAAAA,EAAIS,OAAAA,CAAQ,oDAAA,CAAA;4BACZR,cAAAA,EAAgB;AAClB,yBAAA;wBACAV,KAAAA,EAAOe;AACT,qBAAA;AAEAjB,oBAAAA,QAAAA,CAASqB,IAAI,CAACF,gBAAAA,CAAAA;AAChB,gBAAA;gBAEA,OAAO;AAAEnB,oBAAAA;AAAS,iBAAA;AACpB,YAAA;AACF;AACF,KAAA;IACAsB,SAAAA,EAAW;QACTvC,MAAAA,CAAAA,CACEwC,aAAkB,EAClBtC,aAA0C,EAC1CE,aAEC,EACDqC,uCAAyD,EACzDpB,OAAmB,EACnBK,UAEC,EAAA;;YAGD,MAAMf,UAAAA,GAA+B6B,aAAAA,EAAe7B,UAAAA,IAAc,EAAE;YACpE,MAAMJ,kBAAAA,GAAqBC,sBAAsBG,UAAAA,EAAYU,OAAAA,CAAAA;YAE7D,IAAI;gBACF,MAAMZ,cAAAA,GAAiBC,cAAc,CAACR,aAAAA,CAAc,CAClDK,kBAAAA,EACAH,aAAAA,CAAcO,UAAU,EACxB8B,uCAAAA,EACApB,OAAAA,CAAAA;gBAGF,OAAOK,UAAAA,CAAWgB,aAAa,CAC7B;AAAC,oBAAA,WAAA;AAAaxC,oBAAAA;AAAc,iBAAA,EAC5BO,cAAAA,EACAF,kBAAAA,EACAH,aAAAA,CAAcO,UAAU,EACxB8B,uCAAAA,EACApB,OAAAA,CAAAA;AAEJ,YAAA,CAAA,CAAE,OAAOsB,GAAAA,EAAK;gBACZC,OAAAA,CAAQC,KAAK,CAAC,wBAAA,EAA0BF,GAAAA,CAAAA;AAExC,gBAAA,OAAOjC,cAAAA,CAAeoC,OAAO,CAACvC,kBAAAA,EAAoBH,cAAcO,UAAU,CAAA;AAC5E,YAAA;AACF,QAAA,CAAA;QACAI,IAAAA,EAAM;YACJQ,QAAAA,CAAAA,CAAS,EAAEC,IAAI,EAAEO,IAAI,EAAEN,IAAI,EAAEC,UAAU,EAAE,GAAGC,IAAAA,EAAwB,EAAA;gBAClE,IAAI;oBACF,MAAMoB,QAAAA,GAAWC,eAAezB,QAAQ,CAACQ,KAAK,CAACP,IAAAA,EAAMC,MAAMR,QAAQ;oBACnE,MAAMgC,UAAAA,GAAavB,UAAAA,CAAWS,eAAe,CAAC;AAAC,wBAAA,WAAA;AAAaJ,wBAAAA;qBAAK,EAAE;AACjEP,wBAAAA,IAAAA;AACAO,wBAAAA,IAAAA;AACAN,wBAAAA,IAAAA;wBACA1B,WAAAA,EAAa,IAAA;AACb,wBAAA,GAAG4B;AACL,qBAAA,CAAA;AAEA,oBAAA,IAAIuB,QAAAA,GAAW,KAAA;AAEf,oBAAA,MAAMjC,QAAAA,GAAW8B,QAAAA,CAASI,MAAM,CAAC,CAACC,GAAAA,EAAiBC,OAAAA,GAAAA;AACjD,wBAAA,IAAIA,OAAAA,CAAQnC,YAAY,KAAK,IAAA,IAAQgC,QAAAA,EAAU;AAC7CE,4BAAAA,GAAAA,CAAId,IAAI,CAACe,OAAAA,CAAAA;wBACX,CAAA,MAAO;AACLD,4BAAAA,GAAAA,CAAId,IAAI,CAAC;AAAE,gCAAA,GAAGe,OAAO;gCAAElC,KAAAA,EAAO;AAAIkC,oCAAAA,GAAAA,OAAAA,CAAQlC,KAAK;AAAK8B,oCAAAA,GAAAA;AAAW;AAAC,6BAAA,CAAA;4BAChEC,QAAAA,GAAW,IAAA;AACb,wBAAA;wBAEA,OAAOE,GAAAA;AACT,oBAAA,CAAA,EAAG,EAAE,CAAA;;;;;;;;;oBAUL,OAAO;AAAEnC,wBAAAA;AAAS,qBAAA;AACpB,gBAAA,CAAA,CAAE,OAAO0B,GAAAA,EAAK;AACZC,oBAAAA,OAAAA,CAAQC,KAAK,CAACF,GAAAA,CAAAA;oBAEd,OAAO;AAAE1B,wBAAAA,QAAAA,EAAU;AAAG,qBAAA;AACxB,gBAAA;AACF,YAAA,CAAA;YACAD,IAAAA,CAAAA,CAAK,EAAEQ,IAAI,EAAEO,IAAI,EAAEN,IAAI,EAAEd,UAAU,EAAgB,EAAA;gBACjD,IAAI;AACF,oBAAA,OAAOqC,eAAehC,IAAI,CAACe,IAAAA,CAAK,CAACP,MAAMC,IAAAA,EAAMd,UAAAA,CAAAA;AAC/C,gBAAA,CAAA,CAAE,OAAOgC,GAAAA,EAAK;oBACZ,OAAOW,cAAAA;AACT,gBAAA;AACF,YAAA;AACF;AACF,KAAA;IACAC,WAAAA,EAAa;QACXvD,MAAAA,CAAAA,CACEwD,iBAAgC,EAChCC,SAAkB,EAClBC,KAA+B,EAC/BtD,aAEC,EACDsB,UAAe,EACfiC,YAA2D,EAAA;AAE3D,YAAA,MAAMC,gBAAgBC,MAAAA,CAAOC,MAAM,CAACH,YAAAA,CAAAA,CAAcI,GAAG,CAAC,CAACR,WAAAA,GAAAA;gBACrD,OAAOA,WAAAA,CAAYS,IAAI,CAACC,YAAY;AACtC,YAAA,CAAA,CAAA;AAEA,YAAA,MAAMC,cAAcL,MAAAA,CAAOC,MAAM,CAACH,YAAAA,CAAAA,CAAcI,GAAG,CAAC,CAACR,WAAAA,GAAAA;gBACnD,OAAOA,WAAAA,EAAaS,MAAMG,UAAAA,IAAc,EAAA;AAC1C,YAAA,CAAA,CAAA;YAEA,MAAMC,UAAAA,GAAaX,YACfD,iBAAAA,CAAkBa,MAAM,CAAC,CAACC,GAAAA,GAAQA,QAAQZ,KAAAA,CAAAA,GAC1CF,iBAAAA;AAEJ,YAAA,MAAMe,kBAAAA,GAAqBd,SAAAA,GACvBG,aAAAA,CAAcS,MAAM,CAAC,CAACG,QAAAA,GAAAA;AACpB,gBAAA,MAAM,EAAER,IAAI,EAAE,GAAGL,YAAY,CAACD,KAAAA,CAAM;gBAEpC,OAAOM,IAAAA,CAAKC,YAAY,KAAKO,QAAAA;YAC/B,CAAA,CAAA,GACAZ,aAAAA;AAEJ,YAAA,MAAMa,gBAAAA,GAAmBhB,SAAAA,GACrBS,WAAAA,CAAYG,MAAM,CAAC,CAACF,UAAAA,GAAAA;AAClB,gBAAA,MAAM,EAAEH,IAAI,EAAE,GAAGL,YAAY,CAACD,KAAAA,CAAM;gBAEpC,OAAOM,IAAAA,CAAKG,UAAU,KAAKA,UAAAA;YAC7B,CAAA,CAAA,GACAD,WAAAA;;AAGJ,YAAA,MAAMQ,kBAAkBb,MAAAA,CAAOC,MAAM,CAACH,YAAAA,CAAAA,CAAcI,GAAG,CAAC,CAACR,WAAAA,GAAAA;AACvD,gBAAA,OAAOA,aAAaoB,cAAAA,IAAkB,EAAA;AACxC,YAAA,CAAA,CAAA;AAEA,YAAA,MAAMC,oBAAAA,GAAuBnB,SAAAA,GACzBiB,eAAAA,CAAgBL,MAAM,CAAC,CAACM,cAAAA,GAAAA;AACtB,gBAAA,MAAM,EAAEA,cAAAA,EAAgBE,qBAAqB,EAAE,GAAGlB,YAAY,CAACD,KAAAA,CAAM;AAErE,gBAAA,OAAOiB,cAAAA,KAAmBE,qBAAAA;YAC5B,CAAA,CAAA,GACAH,eAAAA;AAEJ,YAAA,MAAMI,mBAAmBC,uBAAAA,CAAwB;gBAC/CC,oBAAAA,EAAsBZ,UAAAA;AACtBa,gBAAAA,cAAAA,EAAgB7E,cAAc8E,MAAM;gBACpCtB,aAAAA,EAAeW,kBAAAA;gBACfL,WAAAA,EAAaO,gBAAAA;gBACbC,eAAAA,EAAiBE;AACnB,aAAA,CAAA;;YAGA,OAAOlD,UAAAA,CAAWgB,aAAa,CAC7B;AAAC,gBAAA;AAAc,aAAA,EACfoC,gBAAAA,EACAV,UAAAA,EACAhE,aAAAA,CAAc8E,MAAM,EACpBX,kBAAAA,EACAE,gBAAAA,CAAAA;AAEJ,QAAA,CAAA;QACA1D,IAAAA,EAAM;YACJC,IAAAA,CAAAA,CAAK,EAAEmE,UAAU,EAAO,EAAA;AACtB,gBAAA,IAAIA,eAAe,QAAA,EAAU;oBAC3B,OAAOC,eAAAA,CAAgBpE,IAAI,CAACqE,MAAM,EAAA;AACpC,gBAAA;gBAEA,OAAOD,eAAAA,CAAgBpE,IAAI,CAACsE,IAAI,EAAA;AAClC,YAAA,CAAA;YACA/D,QAAAA,CAAAA,CAAS,EAAEG,UAAU,EAAO,EAAA;AAC1B,gBAAA,MAAMqB,QAAAA,GAAWqC,eAAAA,CAAgB7D,QAAQ,CACtCuB,OAAO,EAAA,CACP7B,QAAQ,CAAC8C,GAAG,CAAC,CAACwB,OAAAA,GAAYA,OAAAA,CAAQpE,KAAK,EACvCqE,IAAI,EAAA;gBACP,MAAMvC,UAAAA,GAAavB,UAAAA,CAAWS,eAAe,CAAC;AAAC,oBAAA;AAAc,iBAAA,CAAA;gBAE7D,OAAO;oBACLlB,QAAAA,EAAU;AACR,wBAAA;4BACEE,KAAAA,EAAO;AAAI4B,gCAAAA,GAAAA,QAAAA;AAAaE,gCAAAA,GAAAA;AAAW;AACrC;AACD;AACH,iBAAA;AACF,YAAA;AACF;AACF,KAAA;IACAwC,SAAAA,EAAW;AACTzF,QAAAA,MAAAA,CAAAA,CACE0F,sBAAqD,EACrDC,iBAAyB,EACzBvF,aAEC,EACDqD,SAAAA,GAAY,KAAK,EACjBmC,UAA+B,EAC/BC,oBAA4B,EAC5BC,WAA0C,IAAI,EAAA;YAE9C,MAAM1B,UAAAA,GAAaX,YACfiC,sBAAAA,CAAuBrB,MAAM,CAAC,CAACC,GAAAA,GAAgCA,QAAQwB,QAAAA,CAAAA,GACvEJ,sBAAAA;AACJ,YAAA,MAAMhB,kBAAkBb,MAAAA,CAAOC,MAAM,CAAC8B,UAAAA,CAAAA,CAAY7B,GAAG,CAAC,CAAC0B,SAAAA,GAAAA;AACrD,gBAAA,OAAOA,SAAAA,EAAWd,cAAAA;AACpB,YAAA,CAAA,CAAA;YAEA,MAAME,qBAAAA,GAAwBkB,8BAC5BF,oBAAAA,EACAF,iBAAAA,CAAAA;YAGF,MAAMf,oBAAAA,GAAuBnB,YACzBiB,eAAAA,CAAgBL,MAAM,CAAC,CAACM,cAAAA,GAAmBA,mBAAmBE,qBAAAA,CAAAA,GAC9DH,eAAAA;AAEJ,YAAA,OAAOsB,sBACL5B,UAAAA,EACAhE,aAAAA,CAAc8E,MAAM,EACpBS,mBACAf,oBAAAA,EACAC,qBAAAA,CAAAA;AAEJ,QAAA,CAAA;QACA9D,IAAAA,EAAM;AACJQ,YAAAA,QAAAA,CAAAA,GAAAA;gBACE,OAAO;AACLN,oBAAAA,QAAAA,EAAUgF,cAAc1E,QAAQ;AAClC,iBAAA;AACF,YAAA,CAAA;AACAP,YAAAA,IAAAA,CAAAA,GAAAA;gBACE,OAAO;AACLC,oBAAAA,QAAAA,EAAUgF,cAAcjF,IAAI;AAC9B,iBAAA;AACF,YAAA;AACF;AACF,KAAA;IACAkF,yBAAAA,EAA2B;QACzBnF,IAAAA,EAAM;AACJQ,YAAAA,QAAAA,CAAAA,GAAAA;gBACE,OAAO4E,eAAAA,CAAgB5E,QAAQ,CAACuB,OAAO,EAAA;AACzC,YAAA,CAAA;YACA9B,IAAAA,CAAAA,CAAK,EAAEQ,IAAI,EAAO,EAAA;gBAChB,MAAM4E,mBAAAA,GAAsB5E,MAAM6E,eAAAA,IAAmB,KAAA;AAErD,gBAAA,IAAID,mBAAAA,EAAqB;oBACvB,OAAOD,eAAAA,CAAgBnF,IAAI,CAACqF,eAAe,EAAA;AAC7C,gBAAA;gBAEA,OAAOF,eAAAA,CAAgBnF,IAAI,CAAC8B,OAAO,EAAA;AACrC,YAAA;AACF;AACF;AACF;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/content-type-builder",
3
- "version": "5.39.0",
3
+ "version": "5.41.0",
4
4
  "description": "Create and manage content types",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -8,7 +8,7 @@
8
8
  },
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "git://github.com/strapi/strapi.git",
11
+ "url": "https://github.com/strapi/strapi.git",
12
12
  "directory": "packages/core/content-type-builder"
13
13
  },
14
14
  "license": "SEE LICENSE IN LICENSE",
@@ -73,9 +73,9 @@
73
73
  "@reduxjs/toolkit": "1.9.7",
74
74
  "@sindresorhus/slugify": "1.1.0",
75
75
  "@strapi/design-system": "2.2.0",
76
- "@strapi/generators": "5.39.0",
76
+ "@strapi/generators": "5.41.0",
77
77
  "@strapi/icons": "2.2.0",
78
- "@strapi/utils": "5.39.0",
78
+ "@strapi/utils": "5.41.0",
79
79
  "ai": "5.0.52",
80
80
  "date-fns": "2.30.0",
81
81
  "fs-extra": "11.2.0",
@@ -93,8 +93,8 @@
93
93
  "zod": "3.25.67"
94
94
  },
95
95
  "devDependencies": {
96
- "@strapi/admin": "5.39.0",
97
- "@strapi/types": "5.39.0",
96
+ "@strapi/admin": "5.41.0",
97
+ "@strapi/types": "5.41.0",
98
98
  "@testing-library/dom": "10.4.1",
99
99
  "@testing-library/react": "16.3.0",
100
100
  "@testing-library/user-event": "14.6.1",