@strapi/content-type-builder 5.40.0 → 5.41.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.js.map +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs +1 -1
- package/dist/admin/components/AIChat/lib/transforms/schemas/toCTB.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.js +2 -0
- package/dist/admin/components/FormModal/forms/forms.js.map +1 -1
- package/dist/admin/components/FormModal/forms/forms.mjs +2 -0
- package/dist/admin/components/FormModal/forms/forms.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -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 ??
|
|
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 ??
|
|
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":"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"}
|
|
@@ -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":";;;;;;;;;;;;;;;;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,4CAAsBP,gBAAAA,EAAkBI,UAAAA,CAAAA;YAEnE,IAAII,cAAAA;AACJ,YAAA,IAAIP,kBAAkB,UAAA,EAAY;gBAChCO,cAAAA,GAAiBC,oBAAc,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,oBAAc,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,2CAAAA,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,2CAAAA,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,eAAAA,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,4CAAsBG,UAAAA,EAAYU,OAAAA,CAAAA;YAE7D,IAAI;gBACF,MAAMZ,cAAAA,GAAiBC,oBAAc,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,oBAAAA,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,oBAAezB,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,oBAAehC,IAAI,CAACe,IAAAA,CAAK,CAACP,MAAMC,IAAAA,EAAMd,UAAAA,CAAAA;AAC/C,gBAAA,CAAA,CAAE,OAAOgC,GAAAA,EAAK;oBACZ,OAAOW,6BAAAA;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,+CAAAA,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,+BAAAA,CAAgBpE,IAAI,CAACqE,MAAM,EAAA;AACpC,gBAAA;gBAEA,OAAOD,+BAAAA,CAAgBpE,IAAI,CAACsE,IAAI,EAAA;AAClC,YAAA,CAAA;YACA/D,QAAAA,CAAAA,CAAS,EAAEG,UAAU,EAAO,EAAA;AAC1B,gBAAA,MAAMqB,QAAAA,GAAWqC,+BAAAA,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,mDAC5BF,oBAAAA,EACAF,iBAAAA,CAAAA;YAGF,MAAMf,oBAAAA,GAAuBnB,YACzBiB,eAAAA,CAAgBL,MAAM,CAAC,CAACM,cAAAA,GAAmBA,mBAAmBE,qBAAAA,CAAAA,GAC9DH,eAAAA;AAEJ,YAAA,OAAOsB,4CACL5B,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,4BAAc1E,QAAQ;AAClC,iBAAA;AACF,YAAA,CAAA;AACAP,YAAAA,IAAAA,CAAAA,GAAAA;gBACE,OAAO;AACLC,oBAAAA,QAAAA,EAAUgF,4BAAcjF,IAAI;AAC9B,iBAAA;AACF,YAAA;AACF;AACF,KAAA;IACAkF,yBAAAA,EAA2B;QACzBnF,IAAAA,EAAM;AACJQ,YAAAA,QAAAA,CAAAA,GAAAA;gBACE,OAAO4E,+BAAAA,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,+BAAAA,CAAgBnF,IAAI,CAACqF,eAAe,EAAA;AAC7C,gBAAA;gBAEA,OAAOF,+BAAAA,CAAgBnF,IAAI,CAAC8B,OAAO,EAAA;AACrC,YAAA;AACF;AACF;AACF;;;;"}
|
|
@@ -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":";;;;;;;;;;;;;;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;AACA,oBAAA,GAAGE;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;AACA,wBAAA,GAAGE;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;;;;"}
|
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/content-type-builder",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.41.1",
|
|
4
4
|
"description": "Create and manage content types",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -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.
|
|
76
|
+
"@strapi/generators": "5.41.1",
|
|
77
77
|
"@strapi/icons": "2.2.0",
|
|
78
|
-
"@strapi/utils": "5.
|
|
78
|
+
"@strapi/utils": "5.41.1",
|
|
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.
|
|
97
|
-
"@strapi/types": "5.
|
|
96
|
+
"@strapi/admin": "5.41.1",
|
|
97
|
+
"@strapi/types": "5.41.1",
|
|
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",
|