@strapi/content-type-builder 5.51.2 → 5.52.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.
- package/dist/admin/components/AIChat/components/Messages/Message.js +2 -2
- package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.mjs +2 -2
- package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
- package/dist/admin/components/DataManager/reducer.js +4 -0
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.mjs +4 -0
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js +7 -0
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.mjs +7 -0
- package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
- package/package.json +8 -8
|
@@ -58,8 +58,8 @@ const MarkdownStyles = styledComponents.styled(designSystem.Typography)`
|
|
|
58
58
|
border-radius: ${({ theme })=>theme.borderRadius};
|
|
59
59
|
border-color: ${({ theme })=>theme.colors.neutral150};
|
|
60
60
|
border-style: solid;
|
|
61
|
-
font-family:
|
|
62
|
-
monospace;
|
|
61
|
+
font-family:
|
|
62
|
+
'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas, monospace;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
/* links */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.js","sources":["../../../../../../admin/src/components/AIChat/components/Messages/Message.tsx"],"sourcesContent":["import { Typography, Box, IconButton, Flex } from '@strapi/design-system';\nimport { ThumbUp, ThumbDown } from '@strapi/icons';\nimport Markdown from 'react-markdown';\nimport { styled } from 'styled-components';\n\nimport { useFeedbackModal } from '../../FeedbackModal';\nimport { useFeedback } from '../../hooks/useFeedback';\nimport {\n AIMessage,\n type UserMessage as UserMessageType,\n AssistantMessage as AssistantMessageType,\n type MarkerContent as MarkerContentType,\n} from '../../lib/types/messages';\nimport { AnimatedBox } from '../AnimatedBox';\nimport { AttachmentPreview } from '../Attachments/AttachmentPreview';\n\nimport { Marker } from './Marker';\n\nconst MarkdownStyles = styled(Typography)`\n max-width: 65ch;\n margin: 0 auto;\n overflow-wrap: anywhere;\n word-break: break-word;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 1.25em;\n margin-bottom: 0.5em;\n font-weight: bold;\n }\n\n p {\n margin-bottom: 1em;\n }\n\n ul,\n ol {\n padding-left: 1.5em; /* indentation for bullet points */\n margin-bottom: 1em;\n }\n\n li {\n margin-bottom: 0.5em;\n list-style-type: disc; /* or whatever style you prefer */\n }\n\n strong {\n font-weight: bold;\n }\n\n /* code blocks, blockquotes, etc. */\n code {\n background-color: ${({ theme }) => theme.colors.neutral100};\n padding: 0.2em 0.4em;\n border-radius: ${({ theme }) => theme.borderRadius};\n border-color: ${({ theme }) => theme.colors.neutral150};\n border-style: solid;\n font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,\n monospace;\n }\n\n /* links */\n a {\n color: ${({ theme }) => theme.colors.primary500};\n background-color: ${({ theme }) => theme.colors.neutral100};\n padding: 0.2em 0.4em;\n border-radius: ${({ theme }) => theme.borderRadius};\n border-color: ${({ theme }) => theme.colors.neutral150};\n border-style: solid;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n }\n`;\n\nconst UserMessageTypography = styled(Typography)`\n overflow-wrap: anywhere;\n word-break: break-word;\n`;\n\n// ---------------------------\n// Tool: schemaGenerationTool helpers\n// ---------------------------\n\ntype SchemaToolSchema = {\n action?: 'create' | 'update' | 'remove';\n uid?: string;\n name?: string;\n category?: string;\n kind?: 'collectionType' | 'singleType' | 'component';\n modelType?: 'component' | 'collectionType' | 'singleType';\n};\n\ntype SchemaToolPart = {\n type: 'tool-schemaGenerationTool';\n input?: { schemas?: SchemaToolSchema[] };\n output?: { schemas?: SchemaToolSchema[]; error?: unknown };\n toolCallId?: string;\n};\n\nconst isSchemaToolPart = (part: unknown): part is SchemaToolPart => {\n if (typeof part !== 'object' || part === null || !('type' in part)) {\n return false;\n }\n\n return part.type === 'tool-schemaGenerationTool';\n};\n\nconst capitalize = (s?: string) => (s ? s.charAt(0).toUpperCase() + s.slice(1) : '');\n\nconst getSchemaLink = (schema: SchemaToolSchema): string | undefined => {\n const isComponent = (schema.kind ?? schema.modelType) === 'component';\n if (!schema.uid) return undefined;\n return isComponent\n ? `/plugins/content-type-builder/component-categories/${schema.category ?? ''}/${schema.uid}`\n : `/plugins/content-type-builder/content-types/${schema.uid}`;\n};\n\nconst toMarkerFromSchemaTool = (part: SchemaToolPart): MarkerContentType => {\n const outSchemas = part.output?.schemas ?? [];\n const inSchemas = part.input?.schemas ?? [];\n\n const schemas = (outSchemas.length ? outSchemas : inSchemas) as SchemaToolSchema[];\n const numSchemas = schemas.length;\n\n const state: 'loading' | 'success' | 'error' = part.output\n ? part.output.error\n ? 'error'\n : 'success'\n : 'loading';\n\n const steps = schemas.map((schema, index) => ({\n id: `${part.toolCallId ?? 'schemaGenerationTool'}-${schema.uid ?? schema.name ?? index}`,\n description: capitalize(schema.name ?? schema.uid ?? 'Schema'),\n status:\n schema.action === 'create' || schema.action === 'update' || schema.action === 'remove'\n ? schema.action\n : ('update' as const),\n link: getSchemaLink(schema),\n }));\n\n const title =\n state === 'success'\n ? `Updated ${numSchemas} schema${numSchemas === 1 ? '' : 's'}`\n : state === 'error'\n ? `Failed to update schema${numSchemas === 1 ? '' : 's'}`\n : 'Updating schemas';\n\n return {\n type: 'marker',\n title,\n state,\n steps,\n };\n};\n\nconst MessageContent = ({\n part,\n}: {\n part: AIMessage['parts'][number];\n status?: 'loading' | 'success' | 'error';\n}) => {\n if (part.type === 'text') {\n return (\n <MarkdownStyles>\n <Markdown\n components={{\n a: ({ node: _node, ...props }) => (\n <a target=\"_blank\" rel=\"noopener noreferrer\" {...props} />\n ),\n }}\n >\n {part.text}\n </Markdown>\n </MarkdownStyles>\n );\n }\n\n if (isSchemaToolPart(part)) {\n const marker = toMarkerFromSchemaTool(part);\n return <Marker {...marker} />;\n }\n\n return null;\n};\n\nconst UserMessage = ({ message }: { message: UserMessageType }) => {\n const hasText = message.parts.some(\n (content) => content.type === 'text' && content.text.trim() !== ''\n );\n const attachments = message.parts.filter((content) => content.type === 'file');\n\n return (\n <AnimatedBox\n as={Flex}\n direction=\"column\"\n alignItems=\"flex-end\"\n style={{ alignSelf: 'flex-end' }}\n gap={2}\n maxWidth=\"80%\"\n >\n {hasText ? (\n <Box background=\"neutral150\" borderStyle=\"none\" padding={['10px', '16px']} hasRadius>\n {message.parts.map((content, index) => {\n if (content.type !== 'text') return null;\n return <UserMessageTypography key={index}>{content.text}</UserMessageTypography>;\n })}\n </Box>\n ) : null}\n\n {/* Attachments */}\n {attachments.map((attachment, idx) => (\n <AttachmentPreview\n key={`${attachment.type === 'file' ? attachment.filename : attachment.type}-${idx}`}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n attachment={{ ...attachment, status: 'ready' } as any}\n />\n ))}\n </AnimatedBox>\n );\n};\n\nconst AssistantMessage = ({\n message,\n isLoading,\n}: {\n message: AssistantMessageType;\n isLoading?: boolean;\n}) => {\n const { upvoteMessage } = useFeedback();\n const { openFeedbackModal } = useFeedbackModal();\n\n return (\n <Box style={{ alignSelf: 'flex-start' }} maxWidth=\"90%\">\n {message.parts.map((content, index) => (\n <MessageContent key={index} part={content} />\n ))}\n {isLoading ? (\n <Flex gap={1}>\n <IconButton\n label=\"Upvote\"\n size=\"XS\"\n variant=\"ghost\"\n onClick={() => upvoteMessage(message.id)}\n >\n <ThumbUp />\n </IconButton>\n <IconButton\n label=\"Downvote\"\n size=\"XS\"\n variant=\"ghost\"\n // For downvoting, user must provide specific feedback\n onClick={() => openFeedbackModal(message.id)}\n >\n <ThumbDown />\n </IconButton>\n </Flex>\n ) : null}\n </Box>\n );\n};\n\nexport const ChatMessage = ({ message }: { message: AIMessage }) => {\n /**\n * IMPORTANT: Messages are rendered using react-markdown (heavy compute)\n * Component re-renders on each message update, but AI SDK v5 provides\n * throttling (experimental_throttle: 100ms) which batches updates and reduces\n * re-render frequency during streaming.\n */\n if (message.role === 'user') {\n return <UserMessage message={message as UserMessageType} />;\n }\n return <AssistantMessage message={message as AssistantMessageType} />;\n};\n"],"names":["MarkdownStyles","styled","Typography","theme","colors","neutral100","borderRadius","neutral150","primary500","UserMessageTypography","isSchemaToolPart","part","type","capitalize","s","charAt","toUpperCase","slice","getSchemaLink","schema","isComponent","kind","modelType","uid","undefined","category","toMarkerFromSchemaTool","outSchemas","output","schemas","inSchemas","input","length","numSchemas","state","error","steps","map","index","id","toolCallId","name","description","status","action","link","title","MessageContent","_jsx","Markdown","components","a","node","_node","props","target","rel","text","marker","Marker","UserMessage","message","hasText","parts","some","content","trim","attachments","filter","_jsxs","AnimatedBox","as","Flex","direction","alignItems","style","alignSelf","gap","maxWidth","Box","background","borderStyle","padding","hasRadius","attachment","idx","AttachmentPreview","filename","AssistantMessage","isLoading","upvoteMessage","useFeedback","openFeedbackModal","useFeedbackModal","IconButton","label","size","variant","onClick","ThumbUp","ThumbDown","ChatMessage","role"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Message.js","sources":["../../../../../../admin/src/components/AIChat/components/Messages/Message.tsx"],"sourcesContent":["import { Typography, Box, IconButton, Flex } from '@strapi/design-system';\nimport { ThumbUp, ThumbDown } from '@strapi/icons';\nimport Markdown from 'react-markdown';\nimport { styled } from 'styled-components';\n\nimport { useFeedbackModal } from '../../FeedbackModal';\nimport { useFeedback } from '../../hooks/useFeedback';\nimport {\n AIMessage,\n type UserMessage as UserMessageType,\n AssistantMessage as AssistantMessageType,\n type MarkerContent as MarkerContentType,\n} from '../../lib/types/messages';\nimport { AnimatedBox } from '../AnimatedBox';\nimport { AttachmentPreview } from '../Attachments/AttachmentPreview';\n\nimport { Marker } from './Marker';\n\nconst MarkdownStyles = styled(Typography)`\n max-width: 65ch;\n margin: 0 auto;\n overflow-wrap: anywhere;\n word-break: break-word;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 1.25em;\n margin-bottom: 0.5em;\n font-weight: bold;\n }\n\n p {\n margin-bottom: 1em;\n }\n\n ul,\n ol {\n padding-left: 1.5em; /* indentation for bullet points */\n margin-bottom: 1em;\n }\n\n li {\n margin-bottom: 0.5em;\n list-style-type: disc; /* or whatever style you prefer */\n }\n\n strong {\n font-weight: bold;\n }\n\n /* code blocks, blockquotes, etc. */\n code {\n background-color: ${({ theme }) => theme.colors.neutral100};\n padding: 0.2em 0.4em;\n border-radius: ${({ theme }) => theme.borderRadius};\n border-color: ${({ theme }) => theme.colors.neutral150};\n border-style: solid;\n font-family:\n 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas, monospace;\n }\n\n /* links */\n a {\n color: ${({ theme }) => theme.colors.primary500};\n background-color: ${({ theme }) => theme.colors.neutral100};\n padding: 0.2em 0.4em;\n border-radius: ${({ theme }) => theme.borderRadius};\n border-color: ${({ theme }) => theme.colors.neutral150};\n border-style: solid;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n }\n`;\n\nconst UserMessageTypography = styled(Typography)`\n overflow-wrap: anywhere;\n word-break: break-word;\n`;\n\n// ---------------------------\n// Tool: schemaGenerationTool helpers\n// ---------------------------\n\ntype SchemaToolSchema = {\n action?: 'create' | 'update' | 'remove';\n uid?: string;\n name?: string;\n category?: string;\n kind?: 'collectionType' | 'singleType' | 'component';\n modelType?: 'component' | 'collectionType' | 'singleType';\n};\n\ntype SchemaToolPart = {\n type: 'tool-schemaGenerationTool';\n input?: { schemas?: SchemaToolSchema[] };\n output?: { schemas?: SchemaToolSchema[]; error?: unknown };\n toolCallId?: string;\n};\n\nconst isSchemaToolPart = (part: unknown): part is SchemaToolPart => {\n if (typeof part !== 'object' || part === null || !('type' in part)) {\n return false;\n }\n\n return part.type === 'tool-schemaGenerationTool';\n};\n\nconst capitalize = (s?: string) => (s ? s.charAt(0).toUpperCase() + s.slice(1) : '');\n\nconst getSchemaLink = (schema: SchemaToolSchema): string | undefined => {\n const isComponent = (schema.kind ?? schema.modelType) === 'component';\n if (!schema.uid) return undefined;\n return isComponent\n ? `/plugins/content-type-builder/component-categories/${schema.category ?? ''}/${schema.uid}`\n : `/plugins/content-type-builder/content-types/${schema.uid}`;\n};\n\nconst toMarkerFromSchemaTool = (part: SchemaToolPart): MarkerContentType => {\n const outSchemas = part.output?.schemas ?? [];\n const inSchemas = part.input?.schemas ?? [];\n\n const schemas = (outSchemas.length ? outSchemas : inSchemas) as SchemaToolSchema[];\n const numSchemas = schemas.length;\n\n const state: 'loading' | 'success' | 'error' = part.output\n ? part.output.error\n ? 'error'\n : 'success'\n : 'loading';\n\n const steps = schemas.map((schema, index) => ({\n id: `${part.toolCallId ?? 'schemaGenerationTool'}-${schema.uid ?? schema.name ?? index}`,\n description: capitalize(schema.name ?? schema.uid ?? 'Schema'),\n status:\n schema.action === 'create' || schema.action === 'update' || schema.action === 'remove'\n ? schema.action\n : ('update' as const),\n link: getSchemaLink(schema),\n }));\n\n const title =\n state === 'success'\n ? `Updated ${numSchemas} schema${numSchemas === 1 ? '' : 's'}`\n : state === 'error'\n ? `Failed to update schema${numSchemas === 1 ? '' : 's'}`\n : 'Updating schemas';\n\n return {\n type: 'marker',\n title,\n state,\n steps,\n };\n};\n\nconst MessageContent = ({\n part,\n}: {\n part: AIMessage['parts'][number];\n status?: 'loading' | 'success' | 'error';\n}) => {\n if (part.type === 'text') {\n return (\n <MarkdownStyles>\n <Markdown\n components={{\n a: ({ node: _node, ...props }) => (\n <a target=\"_blank\" rel=\"noopener noreferrer\" {...props} />\n ),\n }}\n >\n {part.text}\n </Markdown>\n </MarkdownStyles>\n );\n }\n\n if (isSchemaToolPart(part)) {\n const marker = toMarkerFromSchemaTool(part);\n return <Marker {...marker} />;\n }\n\n return null;\n};\n\nconst UserMessage = ({ message }: { message: UserMessageType }) => {\n const hasText = message.parts.some(\n (content) => content.type === 'text' && content.text.trim() !== ''\n );\n const attachments = message.parts.filter((content) => content.type === 'file');\n\n return (\n <AnimatedBox\n as={Flex}\n direction=\"column\"\n alignItems=\"flex-end\"\n style={{ alignSelf: 'flex-end' }}\n gap={2}\n maxWidth=\"80%\"\n >\n {hasText ? (\n <Box background=\"neutral150\" borderStyle=\"none\" padding={['10px', '16px']} hasRadius>\n {message.parts.map((content, index) => {\n if (content.type !== 'text') return null;\n return <UserMessageTypography key={index}>{content.text}</UserMessageTypography>;\n })}\n </Box>\n ) : null}\n\n {/* Attachments */}\n {attachments.map((attachment, idx) => (\n <AttachmentPreview\n key={`${attachment.type === 'file' ? attachment.filename : attachment.type}-${idx}`}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n attachment={{ ...attachment, status: 'ready' } as any}\n />\n ))}\n </AnimatedBox>\n );\n};\n\nconst AssistantMessage = ({\n message,\n isLoading,\n}: {\n message: AssistantMessageType;\n isLoading?: boolean;\n}) => {\n const { upvoteMessage } = useFeedback();\n const { openFeedbackModal } = useFeedbackModal();\n\n return (\n <Box style={{ alignSelf: 'flex-start' }} maxWidth=\"90%\">\n {message.parts.map((content, index) => (\n <MessageContent key={index} part={content} />\n ))}\n {isLoading ? (\n <Flex gap={1}>\n <IconButton\n label=\"Upvote\"\n size=\"XS\"\n variant=\"ghost\"\n onClick={() => upvoteMessage(message.id)}\n >\n <ThumbUp />\n </IconButton>\n <IconButton\n label=\"Downvote\"\n size=\"XS\"\n variant=\"ghost\"\n // For downvoting, user must provide specific feedback\n onClick={() => openFeedbackModal(message.id)}\n >\n <ThumbDown />\n </IconButton>\n </Flex>\n ) : null}\n </Box>\n );\n};\n\nexport const ChatMessage = ({ message }: { message: AIMessage }) => {\n /**\n * IMPORTANT: Messages are rendered using react-markdown (heavy compute)\n * Component re-renders on each message update, but AI SDK v5 provides\n * throttling (experimental_throttle: 100ms) which batches updates and reduces\n * re-render frequency during streaming.\n */\n if (message.role === 'user') {\n return <UserMessage message={message as UserMessageType} />;\n }\n return <AssistantMessage message={message as AssistantMessageType} />;\n};\n"],"names":["MarkdownStyles","styled","Typography","theme","colors","neutral100","borderRadius","neutral150","primary500","UserMessageTypography","isSchemaToolPart","part","type","capitalize","s","charAt","toUpperCase","slice","getSchemaLink","schema","isComponent","kind","modelType","uid","undefined","category","toMarkerFromSchemaTool","outSchemas","output","schemas","inSchemas","input","length","numSchemas","state","error","steps","map","index","id","toolCallId","name","description","status","action","link","title","MessageContent","_jsx","Markdown","components","a","node","_node","props","target","rel","text","marker","Marker","UserMessage","message","hasText","parts","some","content","trim","attachments","filter","_jsxs","AnimatedBox","as","Flex","direction","alignItems","style","alignSelf","gap","maxWidth","Box","background","borderStyle","padding","hasRadius","attachment","idx","AttachmentPreview","filename","AssistantMessage","isLoading","upvoteMessage","useFeedback","openFeedbackModal","useFeedbackModal","IconButton","label","size","variant","onClick","ThumbUp","ThumbDown","ChatMessage","role"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,MAAMA,cAAAA,GAAiBC,uBAAAA,CAAOC,uBAAAA,CAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAsCnB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;;AAE5C,mBAAA,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMG,YAAY,CAAC;kBACrC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACG,UAAU,CAAC;;;;;;;;WAQhD,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACI,UAAU,CAAC;sBAC9B,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;;AAE5C,mBAAA,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMG,YAAY,CAAC;kBACrC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACG,UAAU,CAAC;;;;;;;;AAQ3D,CAAC;AAED,MAAME,qBAAAA,GAAwBR,uBAAAA,CAAOC,uBAAAA,CAAW;;;AAGhD,CAAC;AAsBD,MAAMQ,mBAAmB,CAACC,IAAAA,GAAAA;IACxB,IAAI,OAAOA,SAAS,QAAA,IAAYA,IAAAA,KAAS,QAAQ,EAAE,MAAA,IAAUA,IAAG,CAAA,EAAI;QAClE,OAAO,KAAA;AACT,IAAA;IAEA,OAAOA,IAAAA,CAAKC,IAAI,KAAK,2BAAA;AACvB,CAAA;AAEA,MAAMC,UAAAA,GAAa,CAACC,CAAAA,GAAgBA,CAAAA,GAAIA,CAAAA,CAAEC,MAAM,CAAC,CAAA,CAAA,CAAGC,WAAW,EAAA,GAAKF,CAAAA,CAAEG,KAAK,CAAC,CAAA,CAAA,GAAK,EAAA;AAEjF,MAAMC,gBAAgB,CAACC,MAAAA,GAAAA;IACrB,MAAMC,WAAAA,GAAc,CAACD,MAAAA,CAAOE,IAAI,IAAIF,MAAAA,CAAOG,SAAQ,MAAO,WAAA;AAC1D,IAAA,IAAI,CAACH,MAAAA,CAAOI,GAAG,EAAE,OAAOC,SAAAA;AACxB,IAAA,OAAOJ,cACH,CAAC,mDAAmD,EAAED,MAAAA,CAAOM,QAAQ,IAAI,EAAA,CAAG,CAAC,EAAEN,MAAAA,CAAOI,GAAG,EAAE,GAC3F,CAAC,4CAA4C,EAAEJ,MAAAA,CAAOI,GAAG,CAAA,CAAE;AACjE,CAAA;AAEA,MAAMG,yBAAyB,CAACf,IAAAA,GAAAA;AAC9B,IAAA,MAAMgB,UAAAA,GAAahB,IAAAA,CAAKiB,MAAM,EAAEC,WAAW,EAAE;AAC7C,IAAA,MAAMC,SAAAA,GAAYnB,IAAAA,CAAKoB,KAAK,EAAEF,WAAW,EAAE;AAE3C,IAAA,MAAMA,OAAAA,GAAWF,UAAAA,CAAWK,MAAM,GAAGL,UAAAA,GAAaG,SAAAA;IAClD,MAAMG,UAAAA,GAAaJ,QAAQG,MAAM;IAEjC,MAAME,KAAAA,GAAyCvB,IAAAA,CAAKiB,MAAM,GACtDjB,IAAAA,CAAKiB,MAAM,CAACO,KAAK,GACf,OAAA,GACA,SAAA,GACF,SAAA;AAEJ,IAAA,MAAMC,QAAQP,OAAAA,CAAQQ,GAAG,CAAC,CAAClB,MAAAA,EAAQmB,SAAW;AAC5CC,YAAAA,EAAAA,EAAI,CAAA,EAAG5B,IAAAA,CAAK6B,UAAU,IAAI,sBAAA,CAAuB,CAAC,EAAErB,MAAAA,CAAOI,GAAG,IAAIJ,MAAAA,CAAOsB,IAAI,IAAIH,KAAAA,CAAAA,CAAO;AACxFI,YAAAA,WAAAA,EAAa7B,WAAWM,MAAAA,CAAOsB,IAAI,IAAItB,MAAAA,CAAOI,GAAG,IAAI,QAAA,CAAA;AACrDoB,YAAAA,MAAAA,EACExB,MAAAA,CAAOyB,MAAM,KAAK,QAAA,IAAYzB,OAAOyB,MAAM,KAAK,QAAA,IAAYzB,MAAAA,CAAOyB,MAAM,KAAK,QAAA,GAC1EzB,MAAAA,CAAOyB,MAAM,GACZ,QAAA;AACPC,YAAAA,IAAAA,EAAM3B,aAAAA,CAAcC,MAAAA;SACtB,CAAA,CAAA;IAEA,MAAM2B,KAAAA,GACJZ,UAAU,SAAA,GACN,CAAC,QAAQ,EAAED,UAAAA,CAAW,OAAO,EAAEA,UAAAA,KAAe,CAAA,GAAI,KAAK,GAAA,CAAA,CAAK,GAC5DC,KAAAA,KAAU,OAAA,GACR,CAAC,uBAAuB,EAAED,UAAAA,KAAe,CAAA,GAAI,EAAA,GAAK,GAAA,CAAA,CAAK,GACvD,kBAAA;IAER,OAAO;QACLrB,IAAAA,EAAM,QAAA;AACNkC,QAAAA,KAAAA;AACAZ,QAAAA,KAAAA;AACAE,QAAAA;AACF,KAAA;AACF,CAAA;AAEA,MAAMW,cAAAA,GAAiB,CAAC,EACtBpC,IAAI,EAIL,GAAA;IACC,IAAIA,IAAAA,CAAKC,IAAI,KAAK,MAAA,EAAQ;AACxB,QAAA,qBACEoC,cAAA,CAAChD,cAAAA,EAAAA;AACC,YAAA,QAAA,gBAAAgD,cAAA,CAACC,yBAAAA,EAAAA;gBACCC,UAAAA,EAAY;oBACVC,CAAAA,EAAG,CAAC,EAAEC,IAAAA,EAAMC,KAAK,EAAE,GAAGC,KAAAA,EAAO,iBAC3BN,cAAA,CAACG,GAAAA,EAAAA;4BAAEI,MAAAA,EAAO,QAAA;4BAASC,GAAAA,EAAI,qBAAA;AAAuB,4BAAA,GAAGF;;AAErD,iBAAA;AAEC3C,gBAAAA,QAAAA,EAAAA,IAAAA,CAAK8C;;;AAId,IAAA;AAEA,IAAA,IAAI/C,iBAAiBC,IAAAA,CAAAA,EAAO;AAC1B,QAAA,MAAM+C,SAAShC,sBAAAA,CAAuBf,IAAAA,CAAAA;AACtC,QAAA,qBAAOqC,cAAA,CAACW,aAAAA,EAAAA;AAAQ,YAAA,GAAGD;;AACrB,IAAA;IAEA,OAAO,IAAA;AACT,CAAA;AAEA,MAAME,WAAAA,GAAc,CAAC,EAAEC,OAAO,EAAgC,GAAA;AAC5D,IAAA,MAAMC,UAAUD,OAAAA,CAAQE,KAAK,CAACC,IAAI,CAChC,CAACC,OAAAA,GAAYA,OAAAA,CAAQrD,IAAI,KAAK,MAAA,IAAUqD,OAAAA,CAAQR,IAAI,CAACS,IAAI,EAAA,KAAO,EAAA,CAAA;IAElE,MAAMC,WAAAA,GAAcN,OAAAA,CAAQE,KAAK,CAACK,MAAM,CAAC,CAACH,OAAAA,GAAYA,OAAAA,CAAQrD,IAAI,KAAK,MAAA,CAAA;AAEvE,IAAA,qBACEyD,eAAA,CAACC,uBAAAA,EAAAA;QACCC,EAAAA,EAAIC,iBAAAA;QACJC,SAAAA,EAAU,QAAA;QACVC,UAAAA,EAAW,UAAA;QACXC,KAAAA,EAAO;YAAEC,SAAAA,EAAW;AAAW,SAAA;QAC/BC,GAAAA,EAAK,CAAA;QACLC,QAAAA,EAAS,KAAA;;AAERhB,YAAAA,OAAAA,iBACCd,cAAA,CAAC+B,gBAAAA,EAAAA;gBAAIC,UAAAA,EAAW,YAAA;gBAAaC,WAAAA,EAAY,MAAA;gBAAOC,OAAAA,EAAS;AAAC,oBAAA,MAAA;AAAQ,oBAAA;AAAO,iBAAA;gBAAEC,SAAS,EAAA,IAAA;AACjFtB,gBAAAA,QAAAA,EAAAA,OAAAA,CAAQE,KAAK,CAAC1B,GAAG,CAAC,CAAC4B,OAAAA,EAAS3B,KAAAA,GAAAA;AAC3B,oBAAA,IAAI2B,OAAAA,CAAQrD,IAAI,KAAK,MAAA,EAAQ,OAAO,IAAA;AACpC,oBAAA,qBAAOoC,cAAA,CAACvC,qBAAAA,EAAAA;AAAmCwD,wBAAAA,QAAAA,EAAAA,OAAAA,CAAQR;AAAhBnB,qBAAAA,EAAAA,KAAAA,CAAAA;AACrC,gBAAA,CAAA;AAEA,aAAA,CAAA,GAAA,IAAA;AAGH6B,YAAAA,WAAAA,CAAY9B,GAAG,CAAC,CAAC+C,UAAAA,EAAYC,oBAC5BrC,cAAA,CAACsC,mCAAAA,EAAAA;;oBAGCF,UAAAA,EAAY;AAAE,wBAAA,GAAGA,UAAU;wBAAEzC,MAAAA,EAAQ;AAAQ;AAFxC,iBAAA,EAAA,CAAA,EAAGyC,UAAAA,CAAWxE,IAAI,KAAK,MAAA,GAASwE,UAAAA,CAAWG,QAAQ,GAAGH,UAAAA,CAAWxE,IAAI,CAAC,CAAC,EAAEyE,GAAAA,CAAAA,CAAK,CAAA;;;AAO7F,CAAA;AAEA,MAAMG,mBAAmB,CAAC,EACxB3B,OAAO,EACP4B,SAAS,EAIV,GAAA;IACC,MAAM,EAAEC,aAAa,EAAE,GAAGC,uBAAAA,EAAAA;IAC1B,MAAM,EAAEC,iBAAiB,EAAE,GAAGC,8BAAAA,EAAAA;AAE9B,IAAA,qBACExB,eAAA,CAACU,gBAAAA,EAAAA;QAAIJ,KAAAA,EAAO;YAAEC,SAAAA,EAAW;AAAa,SAAA;QAAGE,QAAAA,EAAS,KAAA;;AAC/CjB,YAAAA,OAAAA,CAAQE,KAAK,CAAC1B,GAAG,CAAC,CAAC4B,OAAAA,EAAS3B,sBAC3BU,cAAA,CAACD,cAAAA,EAAAA;oBAA2BpC,IAAAA,EAAMsD;AAAb3B,iBAAAA,EAAAA,KAAAA,CAAAA,CAAAA;AAEtBmD,YAAAA,SAAAA,iBACCpB,eAAA,CAACG,iBAAAA,EAAAA;gBAAKK,GAAAA,EAAK,CAAA;;kCACT7B,cAAA,CAAC8C,uBAAAA,EAAAA;wBACCC,KAAAA,EAAM,QAAA;wBACNC,IAAAA,EAAK,IAAA;wBACLC,OAAAA,EAAQ,OAAA;wBACRC,OAAAA,EAAS,IAAMR,aAAAA,CAAc7B,OAAAA,CAAQtB,EAAE,CAAA;AAEvC,wBAAA,QAAA,gBAAAS,cAAA,CAACmD,aAAAA,EAAAA,EAAAA;;kCAEHnD,cAAA,CAAC8C,uBAAAA,EAAAA;wBACCC,KAAAA,EAAM,UAAA;wBACNC,IAAAA,EAAK,IAAA;wBACLC,OAAAA,EAAQ,OAAA;;wBAERC,OAAAA,EAAS,IAAMN,iBAAAA,CAAkB/B,OAAAA,CAAQtB,EAAE,CAAA;AAE3C,wBAAA,QAAA,gBAAAS,cAAA,CAACoD,eAAAA,EAAAA,EAAAA;;;AAGH,aAAA,CAAA,GAAA;;;AAGV,CAAA;AAEO,MAAMC,WAAAA,GAAc,CAAC,EAAExC,OAAO,EAA0B,GAAA;AAC7D;;;;;AAKC,MACD,IAAIA,OAAAA,CAAQyC,IAAI,KAAK,MAAA,EAAQ;AAC3B,QAAA,qBAAOtD,cAAA,CAACY,WAAAA,EAAAA;YAAYC,OAAAA,EAASA;;AAC/B,IAAA;AACA,IAAA,qBAAOb,cAAA,CAACwC,gBAAAA,EAAAA;QAAiB3B,OAAAA,EAASA;;AACpC;;;;"}
|
|
@@ -52,8 +52,8 @@ const MarkdownStyles = styled(Typography)`
|
|
|
52
52
|
border-radius: ${({ theme })=>theme.borderRadius};
|
|
53
53
|
border-color: ${({ theme })=>theme.colors.neutral150};
|
|
54
54
|
border-style: solid;
|
|
55
|
-
font-family:
|
|
56
|
-
monospace;
|
|
55
|
+
font-family:
|
|
56
|
+
'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas, monospace;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
/* links */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Message.mjs","sources":["../../../../../../admin/src/components/AIChat/components/Messages/Message.tsx"],"sourcesContent":["import { Typography, Box, IconButton, Flex } from '@strapi/design-system';\nimport { ThumbUp, ThumbDown } from '@strapi/icons';\nimport Markdown from 'react-markdown';\nimport { styled } from 'styled-components';\n\nimport { useFeedbackModal } from '../../FeedbackModal';\nimport { useFeedback } from '../../hooks/useFeedback';\nimport {\n AIMessage,\n type UserMessage as UserMessageType,\n AssistantMessage as AssistantMessageType,\n type MarkerContent as MarkerContentType,\n} from '../../lib/types/messages';\nimport { AnimatedBox } from '../AnimatedBox';\nimport { AttachmentPreview } from '../Attachments/AttachmentPreview';\n\nimport { Marker } from './Marker';\n\nconst MarkdownStyles = styled(Typography)`\n max-width: 65ch;\n margin: 0 auto;\n overflow-wrap: anywhere;\n word-break: break-word;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 1.25em;\n margin-bottom: 0.5em;\n font-weight: bold;\n }\n\n p {\n margin-bottom: 1em;\n }\n\n ul,\n ol {\n padding-left: 1.5em; /* indentation for bullet points */\n margin-bottom: 1em;\n }\n\n li {\n margin-bottom: 0.5em;\n list-style-type: disc; /* or whatever style you prefer */\n }\n\n strong {\n font-weight: bold;\n }\n\n /* code blocks, blockquotes, etc. */\n code {\n background-color: ${({ theme }) => theme.colors.neutral100};\n padding: 0.2em 0.4em;\n border-radius: ${({ theme }) => theme.borderRadius};\n border-color: ${({ theme }) => theme.colors.neutral150};\n border-style: solid;\n font-family: 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas,\n monospace;\n }\n\n /* links */\n a {\n color: ${({ theme }) => theme.colors.primary500};\n background-color: ${({ theme }) => theme.colors.neutral100};\n padding: 0.2em 0.4em;\n border-radius: ${({ theme }) => theme.borderRadius};\n border-color: ${({ theme }) => theme.colors.neutral150};\n border-style: solid;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n }\n`;\n\nconst UserMessageTypography = styled(Typography)`\n overflow-wrap: anywhere;\n word-break: break-word;\n`;\n\n// ---------------------------\n// Tool: schemaGenerationTool helpers\n// ---------------------------\n\ntype SchemaToolSchema = {\n action?: 'create' | 'update' | 'remove';\n uid?: string;\n name?: string;\n category?: string;\n kind?: 'collectionType' | 'singleType' | 'component';\n modelType?: 'component' | 'collectionType' | 'singleType';\n};\n\ntype SchemaToolPart = {\n type: 'tool-schemaGenerationTool';\n input?: { schemas?: SchemaToolSchema[] };\n output?: { schemas?: SchemaToolSchema[]; error?: unknown };\n toolCallId?: string;\n};\n\nconst isSchemaToolPart = (part: unknown): part is SchemaToolPart => {\n if (typeof part !== 'object' || part === null || !('type' in part)) {\n return false;\n }\n\n return part.type === 'tool-schemaGenerationTool';\n};\n\nconst capitalize = (s?: string) => (s ? s.charAt(0).toUpperCase() + s.slice(1) : '');\n\nconst getSchemaLink = (schema: SchemaToolSchema): string | undefined => {\n const isComponent = (schema.kind ?? schema.modelType) === 'component';\n if (!schema.uid) return undefined;\n return isComponent\n ? `/plugins/content-type-builder/component-categories/${schema.category ?? ''}/${schema.uid}`\n : `/plugins/content-type-builder/content-types/${schema.uid}`;\n};\n\nconst toMarkerFromSchemaTool = (part: SchemaToolPart): MarkerContentType => {\n const outSchemas = part.output?.schemas ?? [];\n const inSchemas = part.input?.schemas ?? [];\n\n const schemas = (outSchemas.length ? outSchemas : inSchemas) as SchemaToolSchema[];\n const numSchemas = schemas.length;\n\n const state: 'loading' | 'success' | 'error' = part.output\n ? part.output.error\n ? 'error'\n : 'success'\n : 'loading';\n\n const steps = schemas.map((schema, index) => ({\n id: `${part.toolCallId ?? 'schemaGenerationTool'}-${schema.uid ?? schema.name ?? index}`,\n description: capitalize(schema.name ?? schema.uid ?? 'Schema'),\n status:\n schema.action === 'create' || schema.action === 'update' || schema.action === 'remove'\n ? schema.action\n : ('update' as const),\n link: getSchemaLink(schema),\n }));\n\n const title =\n state === 'success'\n ? `Updated ${numSchemas} schema${numSchemas === 1 ? '' : 's'}`\n : state === 'error'\n ? `Failed to update schema${numSchemas === 1 ? '' : 's'}`\n : 'Updating schemas';\n\n return {\n type: 'marker',\n title,\n state,\n steps,\n };\n};\n\nconst MessageContent = ({\n part,\n}: {\n part: AIMessage['parts'][number];\n status?: 'loading' | 'success' | 'error';\n}) => {\n if (part.type === 'text') {\n return (\n <MarkdownStyles>\n <Markdown\n components={{\n a: ({ node: _node, ...props }) => (\n <a target=\"_blank\" rel=\"noopener noreferrer\" {...props} />\n ),\n }}\n >\n {part.text}\n </Markdown>\n </MarkdownStyles>\n );\n }\n\n if (isSchemaToolPart(part)) {\n const marker = toMarkerFromSchemaTool(part);\n return <Marker {...marker} />;\n }\n\n return null;\n};\n\nconst UserMessage = ({ message }: { message: UserMessageType }) => {\n const hasText = message.parts.some(\n (content) => content.type === 'text' && content.text.trim() !== ''\n );\n const attachments = message.parts.filter((content) => content.type === 'file');\n\n return (\n <AnimatedBox\n as={Flex}\n direction=\"column\"\n alignItems=\"flex-end\"\n style={{ alignSelf: 'flex-end' }}\n gap={2}\n maxWidth=\"80%\"\n >\n {hasText ? (\n <Box background=\"neutral150\" borderStyle=\"none\" padding={['10px', '16px']} hasRadius>\n {message.parts.map((content, index) => {\n if (content.type !== 'text') return null;\n return <UserMessageTypography key={index}>{content.text}</UserMessageTypography>;\n })}\n </Box>\n ) : null}\n\n {/* Attachments */}\n {attachments.map((attachment, idx) => (\n <AttachmentPreview\n key={`${attachment.type === 'file' ? attachment.filename : attachment.type}-${idx}`}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n attachment={{ ...attachment, status: 'ready' } as any}\n />\n ))}\n </AnimatedBox>\n );\n};\n\nconst AssistantMessage = ({\n message,\n isLoading,\n}: {\n message: AssistantMessageType;\n isLoading?: boolean;\n}) => {\n const { upvoteMessage } = useFeedback();\n const { openFeedbackModal } = useFeedbackModal();\n\n return (\n <Box style={{ alignSelf: 'flex-start' }} maxWidth=\"90%\">\n {message.parts.map((content, index) => (\n <MessageContent key={index} part={content} />\n ))}\n {isLoading ? (\n <Flex gap={1}>\n <IconButton\n label=\"Upvote\"\n size=\"XS\"\n variant=\"ghost\"\n onClick={() => upvoteMessage(message.id)}\n >\n <ThumbUp />\n </IconButton>\n <IconButton\n label=\"Downvote\"\n size=\"XS\"\n variant=\"ghost\"\n // For downvoting, user must provide specific feedback\n onClick={() => openFeedbackModal(message.id)}\n >\n <ThumbDown />\n </IconButton>\n </Flex>\n ) : null}\n </Box>\n );\n};\n\nexport const ChatMessage = ({ message }: { message: AIMessage }) => {\n /**\n * IMPORTANT: Messages are rendered using react-markdown (heavy compute)\n * Component re-renders on each message update, but AI SDK v5 provides\n * throttling (experimental_throttle: 100ms) which batches updates and reduces\n * re-render frequency during streaming.\n */\n if (message.role === 'user') {\n return <UserMessage message={message as UserMessageType} />;\n }\n return <AssistantMessage message={message as AssistantMessageType} />;\n};\n"],"names":["MarkdownStyles","styled","Typography","theme","colors","neutral100","borderRadius","neutral150","primary500","UserMessageTypography","isSchemaToolPart","part","type","capitalize","s","charAt","toUpperCase","slice","getSchemaLink","schema","isComponent","kind","modelType","uid","undefined","category","toMarkerFromSchemaTool","outSchemas","output","schemas","inSchemas","input","length","numSchemas","state","error","steps","map","index","id","toolCallId","name","description","status","action","link","title","MessageContent","_jsx","Markdown","components","a","node","_node","props","target","rel","text","marker","Marker","UserMessage","message","hasText","parts","some","content","trim","attachments","filter","_jsxs","AnimatedBox","as","Flex","direction","alignItems","style","alignSelf","gap","maxWidth","Box","background","borderStyle","padding","hasRadius","attachment","idx","AttachmentPreview","filename","AssistantMessage","isLoading","upvoteMessage","useFeedback","openFeedbackModal","useFeedbackModal","IconButton","label","size","variant","onClick","ThumbUp","ThumbDown","ChatMessage","role"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Message.mjs","sources":["../../../../../../admin/src/components/AIChat/components/Messages/Message.tsx"],"sourcesContent":["import { Typography, Box, IconButton, Flex } from '@strapi/design-system';\nimport { ThumbUp, ThumbDown } from '@strapi/icons';\nimport Markdown from 'react-markdown';\nimport { styled } from 'styled-components';\n\nimport { useFeedbackModal } from '../../FeedbackModal';\nimport { useFeedback } from '../../hooks/useFeedback';\nimport {\n AIMessage,\n type UserMessage as UserMessageType,\n AssistantMessage as AssistantMessageType,\n type MarkerContent as MarkerContentType,\n} from '../../lib/types/messages';\nimport { AnimatedBox } from '../AnimatedBox';\nimport { AttachmentPreview } from '../Attachments/AttachmentPreview';\n\nimport { Marker } from './Marker';\n\nconst MarkdownStyles = styled(Typography)`\n max-width: 65ch;\n margin: 0 auto;\n overflow-wrap: anywhere;\n word-break: break-word;\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n margin-top: 1.25em;\n margin-bottom: 0.5em;\n font-weight: bold;\n }\n\n p {\n margin-bottom: 1em;\n }\n\n ul,\n ol {\n padding-left: 1.5em; /* indentation for bullet points */\n margin-bottom: 1em;\n }\n\n li {\n margin-bottom: 0.5em;\n list-style-type: disc; /* or whatever style you prefer */\n }\n\n strong {\n font-weight: bold;\n }\n\n /* code blocks, blockquotes, etc. */\n code {\n background-color: ${({ theme }) => theme.colors.neutral100};\n padding: 0.2em 0.4em;\n border-radius: ${({ theme }) => theme.borderRadius};\n border-color: ${({ theme }) => theme.colors.neutral150};\n border-style: solid;\n font-family:\n 'SF Mono', SFMono-Regular, ui-monospace, 'DejaVu Sans Mono', Menlo, Consolas, monospace;\n }\n\n /* links */\n a {\n color: ${({ theme }) => theme.colors.primary500};\n background-color: ${({ theme }) => theme.colors.neutral100};\n padding: 0.2em 0.4em;\n border-radius: ${({ theme }) => theme.borderRadius};\n border-color: ${({ theme }) => theme.colors.neutral150};\n border-style: solid;\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n }\n`;\n\nconst UserMessageTypography = styled(Typography)`\n overflow-wrap: anywhere;\n word-break: break-word;\n`;\n\n// ---------------------------\n// Tool: schemaGenerationTool helpers\n// ---------------------------\n\ntype SchemaToolSchema = {\n action?: 'create' | 'update' | 'remove';\n uid?: string;\n name?: string;\n category?: string;\n kind?: 'collectionType' | 'singleType' | 'component';\n modelType?: 'component' | 'collectionType' | 'singleType';\n};\n\ntype SchemaToolPart = {\n type: 'tool-schemaGenerationTool';\n input?: { schemas?: SchemaToolSchema[] };\n output?: { schemas?: SchemaToolSchema[]; error?: unknown };\n toolCallId?: string;\n};\n\nconst isSchemaToolPart = (part: unknown): part is SchemaToolPart => {\n if (typeof part !== 'object' || part === null || !('type' in part)) {\n return false;\n }\n\n return part.type === 'tool-schemaGenerationTool';\n};\n\nconst capitalize = (s?: string) => (s ? s.charAt(0).toUpperCase() + s.slice(1) : '');\n\nconst getSchemaLink = (schema: SchemaToolSchema): string | undefined => {\n const isComponent = (schema.kind ?? schema.modelType) === 'component';\n if (!schema.uid) return undefined;\n return isComponent\n ? `/plugins/content-type-builder/component-categories/${schema.category ?? ''}/${schema.uid}`\n : `/plugins/content-type-builder/content-types/${schema.uid}`;\n};\n\nconst toMarkerFromSchemaTool = (part: SchemaToolPart): MarkerContentType => {\n const outSchemas = part.output?.schemas ?? [];\n const inSchemas = part.input?.schemas ?? [];\n\n const schemas = (outSchemas.length ? outSchemas : inSchemas) as SchemaToolSchema[];\n const numSchemas = schemas.length;\n\n const state: 'loading' | 'success' | 'error' = part.output\n ? part.output.error\n ? 'error'\n : 'success'\n : 'loading';\n\n const steps = schemas.map((schema, index) => ({\n id: `${part.toolCallId ?? 'schemaGenerationTool'}-${schema.uid ?? schema.name ?? index}`,\n description: capitalize(schema.name ?? schema.uid ?? 'Schema'),\n status:\n schema.action === 'create' || schema.action === 'update' || schema.action === 'remove'\n ? schema.action\n : ('update' as const),\n link: getSchemaLink(schema),\n }));\n\n const title =\n state === 'success'\n ? `Updated ${numSchemas} schema${numSchemas === 1 ? '' : 's'}`\n : state === 'error'\n ? `Failed to update schema${numSchemas === 1 ? '' : 's'}`\n : 'Updating schemas';\n\n return {\n type: 'marker',\n title,\n state,\n steps,\n };\n};\n\nconst MessageContent = ({\n part,\n}: {\n part: AIMessage['parts'][number];\n status?: 'loading' | 'success' | 'error';\n}) => {\n if (part.type === 'text') {\n return (\n <MarkdownStyles>\n <Markdown\n components={{\n a: ({ node: _node, ...props }) => (\n <a target=\"_blank\" rel=\"noopener noreferrer\" {...props} />\n ),\n }}\n >\n {part.text}\n </Markdown>\n </MarkdownStyles>\n );\n }\n\n if (isSchemaToolPart(part)) {\n const marker = toMarkerFromSchemaTool(part);\n return <Marker {...marker} />;\n }\n\n return null;\n};\n\nconst UserMessage = ({ message }: { message: UserMessageType }) => {\n const hasText = message.parts.some(\n (content) => content.type === 'text' && content.text.trim() !== ''\n );\n const attachments = message.parts.filter((content) => content.type === 'file');\n\n return (\n <AnimatedBox\n as={Flex}\n direction=\"column\"\n alignItems=\"flex-end\"\n style={{ alignSelf: 'flex-end' }}\n gap={2}\n maxWidth=\"80%\"\n >\n {hasText ? (\n <Box background=\"neutral150\" borderStyle=\"none\" padding={['10px', '16px']} hasRadius>\n {message.parts.map((content, index) => {\n if (content.type !== 'text') return null;\n return <UserMessageTypography key={index}>{content.text}</UserMessageTypography>;\n })}\n </Box>\n ) : null}\n\n {/* Attachments */}\n {attachments.map((attachment, idx) => (\n <AttachmentPreview\n key={`${attachment.type === 'file' ? attachment.filename : attachment.type}-${idx}`}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n attachment={{ ...attachment, status: 'ready' } as any}\n />\n ))}\n </AnimatedBox>\n );\n};\n\nconst AssistantMessage = ({\n message,\n isLoading,\n}: {\n message: AssistantMessageType;\n isLoading?: boolean;\n}) => {\n const { upvoteMessage } = useFeedback();\n const { openFeedbackModal } = useFeedbackModal();\n\n return (\n <Box style={{ alignSelf: 'flex-start' }} maxWidth=\"90%\">\n {message.parts.map((content, index) => (\n <MessageContent key={index} part={content} />\n ))}\n {isLoading ? (\n <Flex gap={1}>\n <IconButton\n label=\"Upvote\"\n size=\"XS\"\n variant=\"ghost\"\n onClick={() => upvoteMessage(message.id)}\n >\n <ThumbUp />\n </IconButton>\n <IconButton\n label=\"Downvote\"\n size=\"XS\"\n variant=\"ghost\"\n // For downvoting, user must provide specific feedback\n onClick={() => openFeedbackModal(message.id)}\n >\n <ThumbDown />\n </IconButton>\n </Flex>\n ) : null}\n </Box>\n );\n};\n\nexport const ChatMessage = ({ message }: { message: AIMessage }) => {\n /**\n * IMPORTANT: Messages are rendered using react-markdown (heavy compute)\n * Component re-renders on each message update, but AI SDK v5 provides\n * throttling (experimental_throttle: 100ms) which batches updates and reduces\n * re-render frequency during streaming.\n */\n if (message.role === 'user') {\n return <UserMessage message={message as UserMessageType} />;\n }\n return <AssistantMessage message={message as AssistantMessageType} />;\n};\n"],"names":["MarkdownStyles","styled","Typography","theme","colors","neutral100","borderRadius","neutral150","primary500","UserMessageTypography","isSchemaToolPart","part","type","capitalize","s","charAt","toUpperCase","slice","getSchemaLink","schema","isComponent","kind","modelType","uid","undefined","category","toMarkerFromSchemaTool","outSchemas","output","schemas","inSchemas","input","length","numSchemas","state","error","steps","map","index","id","toolCallId","name","description","status","action","link","title","MessageContent","_jsx","Markdown","components","a","node","_node","props","target","rel","text","marker","Marker","UserMessage","message","hasText","parts","some","content","trim","attachments","filter","_jsxs","AnimatedBox","as","Flex","direction","alignItems","style","alignSelf","gap","maxWidth","Box","background","borderStyle","padding","hasRadius","attachment","idx","AttachmentPreview","filename","AssistantMessage","isLoading","upvoteMessage","useFeedback","openFeedbackModal","useFeedbackModal","IconButton","label","size","variant","onClick","ThumbUp","ThumbDown","ChatMessage","role"],"mappings":"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"}
|
|
@@ -277,6 +277,7 @@ const slice = undoRedo.createUndoRedoSlice({
|
|
|
277
277
|
targetUid: attributeToSet.target
|
|
278
278
|
});
|
|
279
279
|
const previousTargetAttributeIndex = findAttributeIndex(previousTarget, previousAttribute.targetAttribute ?? '');
|
|
280
|
+
const previousTargetAttribute = previousTargetAttributeIndex !== -1 ? previousTarget.attributes[previousTargetAttributeIndex] : undefined;
|
|
280
281
|
// remove old targetAttribute
|
|
281
282
|
if (previousAttribute.targetAttribute) {
|
|
282
283
|
removeAttributeByName(previousTarget, previousAttribute.targetAttribute);
|
|
@@ -292,6 +293,9 @@ const slice = undoRedo.createUndoRedoSlice({
|
|
|
292
293
|
target: type.uid,
|
|
293
294
|
private: previousAttribute.private ?? attributeToSet.private,
|
|
294
295
|
pluginOptions: previousAttribute.pluginOptions ?? attributeToSet.pluginOptions,
|
|
296
|
+
...previousTarget.uid === newTarget.uid && previousTargetAttribute?.conditions ? {
|
|
297
|
+
conditions: previousTargetAttribute.conditions
|
|
298
|
+
} : {},
|
|
295
299
|
status: 'CHANGED'
|
|
296
300
|
};
|
|
297
301
|
// create or recreate(at old index) targetAttribute
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/components/DataManager/reducer.ts"],"sourcesContent":["import { PayloadAction } from '@reduxjs/toolkit';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { makeUnique } from '../../utils/makeUnique';\n\nimport { createUndoRedoSlice } from './undoRedo';\n\nimport type {\n Components,\n ContentTypes,\n ContentType,\n Component,\n Status,\n AnyAttribute,\n} from '../../types';\nimport type { Internal, Schema, Struct, UID } from '@strapi/types';\n\nexport interface DataManagerStateType {\n components: Components;\n initialComponents: Components;\n contentTypes: ContentTypes;\n initialContentTypes: ContentTypes;\n reservedNames: {\n models: string[];\n attributes: string[];\n };\n isLoading: boolean;\n [key: string]: unknown;\n}\n\nconst initialState: DataManagerStateType = {\n components: {},\n contentTypes: {},\n initialComponents: {},\n initialContentTypes: {},\n reservedNames: {\n models: [],\n attributes: [],\n },\n isLoading: true,\n};\n\nconst ONE_SIDE_RELATIONS = ['oneWay', 'manyWay'];\n\ntype AttributeMutation = AnyAttribute & {\n createComponent?: unknown;\n};\n\ntype PluginOptions = Record<string, unknown>;\n\nconst getOppositeRelation = (originalRelation?: Schema.Attribute.RelationKind.Any) => {\n if (originalRelation === 'manyToOne') {\n return 'oneToMany';\n }\n\n if (originalRelation === 'oneToMany') {\n return 'manyToOne';\n }\n\n return originalRelation;\n};\n\nconst findAttributeIndex = (type: ContentType | Component, attributeToFind?: string) => {\n return type.attributes.findIndex(({ name }: { name: string }) => name === attributeToFind);\n};\n\ntype InitPayload = {\n components: Record<string, Component>;\n contentTypes: Record<string, ContentType>;\n reservedNames: DataManagerStateType['reservedNames'];\n};\n\ntype AddAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype AddCreateComponentToDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dynamicZoneTarget: string;\n componentsToAdd: Internal.UID.Component[];\n};\n\ntype AddCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype ChangeDynamicZoneComponentsPayload = {\n dynamicZoneTarget: string;\n newComponents: Internal.UID.Component[];\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype CreateComponentSchemaPayload = {\n uid: string;\n data: {\n icon?: string;\n displayName: string;\n };\n componentCategory: string;\n};\n\ntype CreateSchemaPayload = {\n uid: string;\n data: {\n displayName: string;\n singularName: string;\n pluralName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n};\n\ntype EditAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype EditCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype RemoveComponentFromDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dzName: string;\n componentToRemoveIndex: number;\n};\n\ntype RemoveFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n attributeToRemoveName: string;\n};\n\ntype UpdateComponentSchemaPayload = {\n data: {\n icon?: string;\n displayName: string;\n };\n uid: Internal.UID.Component;\n};\n\ntype UpdateComponentUIDPayload = {\n uid: Internal.UID.Component;\n newComponentUID: Internal.UID.Component;\n};\n\ntype UpdateSchemaPayload = {\n data: {\n displayName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n uid: string;\n};\n\ntype MoveAttributePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n from: number;\n to: number;\n};\n\nconst getType = (\n state: DataManagerStateType,\n {\n forTarget,\n targetUid,\n }: {\n forTarget: Struct.ModelType;\n targetUid: string;\n }\n) => {\n return forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n};\n\n// TODO: use initial state when chnaging back to the initial state without knowing\nconst setStatus = (type: ContentType | Component, status: Status) => {\n switch (type.status) {\n case 'NEW':\n case 'REMOVED': {\n break;\n }\n default: {\n type.status = status;\n }\n }\n};\n\nconst getNewStatus = (oldStatus: Status | undefined, newStatus: Status) => {\n if (oldStatus === 'NEW' || oldStatus === 'REMOVED') {\n return oldStatus;\n }\n\n return newStatus;\n};\n\nconst setAttributeStatus = (attribute: { status?: Status }, status: Status) => {\n attribute.status = getNewStatus(attribute.status, status);\n};\n\nconst createAttribute = (properties: Record<string, unknown>): AnyAttribute => {\n return {\n ...properties,\n status: 'NEW',\n } as AnyAttribute;\n};\n\nconst setAttributeAt = (type: ContentType | Component, index: number, attribute: AnyAttribute) => {\n const previousAttribute = type.attributes[index];\n\n const newStatus = getNewStatus(previousAttribute.status, 'CHANGED');\n\n type.attributes[index] = {\n ...attribute,\n status: newStatus,\n };\n\n setStatus(type, 'CHANGED');\n};\n\nconst pushAttribute = (type: ContentType | Component, attribute: AnyAttribute) => {\n type.attributes.push(attribute);\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeAt = (type: ContentType | Component, index: number) => {\n const attr = type.attributes[index];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(index, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst replaceAttributeAt = (\n type: ContentType | Component,\n index: number,\n attribute: AnyAttribute\n) => {\n type.attributes[index] = attribute;\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeByName = (type: ContentType | Component, name: string) => {\n const idx = type.attributes.findIndex((attr) => attr.name === name);\n\n const attr = type.attributes[idx];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(idx, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst updateType = (type: ContentType | Component, data: Record<string, unknown>) => {\n merge(type, data);\n setStatus(type, 'CHANGED');\n};\n\nconst slice = createUndoRedoSlice(\n {\n name: 'data-manager',\n initialState,\n reducers: {\n init: (state, action: PayloadAction<InitPayload>) => {\n const { components, contentTypes, reservedNames } = action.payload;\n\n state.components = components;\n state.initialComponents = components;\n state.initialContentTypes = contentTypes;\n state.contentTypes = contentTypes;\n state.reservedNames = reservedNames;\n state.isLoading = false;\n },\n createComponentSchema: (state, action: PayloadAction<CreateComponentSchemaPayload>) => {\n const { uid, data, componentCategory } = action.payload;\n\n const newSchema: Component = {\n uid: uid as Internal.UID.Component,\n status: 'NEW',\n category: componentCategory,\n modelName: data.displayName,\n globalId: data.displayName,\n info: {\n icon: data.icon,\n displayName: data.displayName,\n },\n attributes: [],\n modelType: 'component',\n };\n\n state.components[uid as string] = newSchema;\n },\n createSchema: (state, action: PayloadAction<CreateSchemaPayload>) => {\n const { uid, data } = action.payload;\n\n const { displayName, singularName, pluralName, kind, draftAndPublish, pluginOptions } =\n data;\n\n const newSchema: ContentType = {\n uid: uid as Internal.UID.ContentType,\n status: 'NEW',\n visible: true,\n modelType: 'contentType',\n restrictRelationsTo: null,\n attributes: [],\n kind,\n modelName: displayName,\n globalId: displayName,\n options: {\n draftAndPublish,\n },\n info: {\n displayName,\n singularName,\n pluralName,\n },\n pluginOptions,\n };\n\n state.contentTypes[uid] = newSchema;\n },\n addAttribute: (state, action: PayloadAction<AddAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = createAttribute(omit(attributeToSet, 'createComponent'));\n\n if (attribute.type === 'relation') {\n const target = attribute.target;\n const targetAttribute = attribute.targetAttribute || null;\n const relation = attribute.relation;\n const relationType = getRelationType(relation, targetAttribute);\n\n const isBidirectionalRelation =\n relationType !== undefined && !['oneWay', 'manyWay'].includes(relationType);\n\n if (isBidirectionalRelation) {\n const oppositeAttribute = createAttribute({\n name: targetAttribute,\n relation: getOppositeRelation(relationType),\n target: type.uid,\n targetAttribute: attribute.name,\n type: 'relation',\n private: attribute.private,\n });\n\n const targetType = getType(state, { forTarget, targetUid: target });\n pushAttribute(targetType, oppositeAttribute);\n }\n }\n\n pushAttribute(type, attribute);\n setStatus(type, 'CHANGED');\n },\n moveAttribute: (state, action: PayloadAction<MoveAttributePayload>) => {\n const { forTarget, targetUid, from, to } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = type.attributes[from];\n type.attributes.splice(from, 1);\n type.attributes.splice(to, 0, attribute);\n setStatus(type, 'CHANGED');\n },\n addCustomFieldAttribute: (state, action: PayloadAction<AddCustomFieldAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n pushAttribute(type, createAttribute(attributeToSet));\n },\n addCreatedComponentToDynamicZone: (\n state,\n action: PayloadAction<AddCreateComponentToDynamicZonePayload>\n ) => {\n const { dynamicZoneTarget, componentsToAdd, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n componentsToAdd.forEach((componentUid: Internal.UID.Component) => {\n attr.components.push(componentUid);\n });\n\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n setStatus(type, 'CHANGED');\n },\n changeDynamicZoneComponents: (\n state,\n action: PayloadAction<ChangeDynamicZoneComponentsPayload>\n ) => {\n const { dynamicZoneTarget, newComponents, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n const currentDZComponents = attr.components;\n\n const updatedComponents = makeUnique([...currentDZComponents, ...newComponents]);\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components = updatedComponents;\n },\n editAttribute: (state, action: PayloadAction<EditAttributePayload>) => {\n const { name, attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, name);\n\n if (initialAttributeIndex === -1) {\n return;\n }\n\n const previousAttribute = type.attributes[initialAttributeIndex];\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n\n if (previousAttribute.type !== attributeToSet.type) {\n return;\n }\n\n if (previousAttribute.type !== 'relation' || attributeToSet.type !== 'relation') {\n return;\n }\n\n const previousTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: previousAttribute.target,\n });\n const newTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: attributeToSet.target,\n });\n\n const previousTargetAttributeIndex = findAttributeIndex(\n previousTarget,\n previousAttribute.targetAttribute ?? ''\n );\n\n // remove old targetAttribute\n if (previousAttribute.targetAttribute) {\n removeAttributeByName(previousTarget, previousAttribute.targetAttribute);\n }\n\n const newRelationType = getRelationType(\n attributeToSet.relation,\n attributeToSet.targetAttribute\n );\n const isBidirectionnal =\n newRelationType !== undefined && !ONE_SIDE_RELATIONS.includes(newRelationType);\n\n if (isBidirectionnal) {\n const newTargetAttribute = {\n name: attributeToSet.targetAttribute,\n type: 'relation',\n relation: getOppositeRelation(attributeToSet.relation),\n targetAttribute: attributeToSet.name,\n target: type.uid,\n private: previousAttribute.private ?? attributeToSet.private,\n pluginOptions: previousAttribute.pluginOptions ?? attributeToSet.pluginOptions,\n status: 'CHANGED',\n } as AnyAttribute;\n\n // create or recreate(at old index) targetAttribute\n if (previousTargetAttributeIndex !== -1 && previousTarget.uid === newTarget.uid) {\n // re-create at previousIdx if possible\n replaceAttributeAt(newTarget, previousTargetAttributeIndex, newTargetAttribute);\n } else {\n pushAttribute(newTarget, {\n ...newTargetAttribute,\n status: 'NEW',\n });\n }\n }\n },\n editCustomFieldAttribute: (state, action: PayloadAction<EditCustomFieldAttributePayload>) => {\n const { forTarget, targetUid, name, attributeToSet } = action.payload;\n\n const initialAttributeName = name;\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, initialAttributeName);\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n },\n reloadPlugin: () => {\n return initialState;\n },\n removeComponentFromDynamicZone: (\n state,\n action: PayloadAction<RemoveComponentFromDynamicZonePayload>\n ) => {\n const { dzName, componentToRemoveIndex, forTarget, targetUid } = action.payload;\n\n const type =\n forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n\n if (!type) {\n return;\n }\n\n const dzAttributeIndex = findAttributeIndex(type, dzName);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components.splice(componentToRemoveIndex, 1);\n },\n removeField: (state, action: PayloadAction<RemoveFieldPayload>) => {\n const { forTarget, targetUid, attributeToRemoveName } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attributeToRemoveIndex = findAttributeIndex(type, attributeToRemoveName);\n const attribute = type.attributes[attributeToRemoveIndex];\n\n if (attribute.type === 'relation') {\n const { target, relation, targetAttribute: targetAttributeName } = attribute;\n const relationType = getRelationType(relation, targetAttributeName);\n\n const isBidirectionnal = !ONE_SIDE_RELATIONS.includes(relationType!);\n\n if (isBidirectionnal && targetAttributeName) {\n const targetContentType = getType(state, { forTarget, targetUid: target });\n const targetAttributeIndex = findAttributeIndex(targetContentType, targetAttributeName);\n\n removeAttributeAt(targetContentType, targetAttributeIndex);\n }\n }\n\n // Find all uid fields that have the targetField set to the field we are removing\n type.attributes.forEach((attribute) => {\n if (attribute.type === 'uid') {\n if (attribute.targetField === attributeToRemoveName) {\n delete attribute.targetField;\n }\n }\n });\n\n removeAttributeAt(type, attributeToRemoveIndex);\n },\n // only edits a component in practice\n updateComponentSchema: (state, action: PayloadAction<UpdateComponentSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName: data.displayName,\n icon: data.icon,\n },\n });\n },\n updateComponentUid: (state, action: PayloadAction<UpdateComponentUIDPayload>) => {\n const { newComponentUID, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type || type.status !== 'NEW') {\n return;\n }\n\n if (newComponentUID !== uid) {\n const newType = { ...type, uid: newComponentUID };\n state.components[newComponentUID] = newType;\n delete state.components[uid];\n\n // update the uid in the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.map((component: UID.Component) => {\n if (component === uid) {\n return newComponentUID;\n }\n\n return component;\n });\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n\n // update the uid in the other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n }\n },\n updateSchema: (state, action: PayloadAction<UpdateSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const { displayName, kind, draftAndPublish, pluginOptions } = data;\n\n const type = state.contentTypes[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName,\n },\n kind,\n options: {\n draftAndPublish,\n },\n pluginOptions,\n });\n },\n deleteComponent: (state, action: PayloadAction<Internal.UID.Component>) => {\n const uid = action.payload;\n\n // remove the compo from the components\n if (state.components[uid].status === 'NEW') {\n delete state.components[uid];\n } else {\n setStatus(state.components[uid], 'REMOVED');\n }\n\n // remove the compo from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n // remove from dynamic zones\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.filter(\n (component: unknown) => component !== uid\n );\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n\n // remove the compo from other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n },\n deleteContentType: (state, action: PayloadAction<Internal.UID.ContentType>) => {\n const uid = action.payload;\n const type = state.contentTypes[uid];\n\n // just drop new content types\n if (type.status === 'NEW') {\n delete state.contentTypes[uid];\n } else {\n setStatus(type, 'REMOVED');\n }\n\n // remove the content type from the components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n\n // remove the content type from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n },\n\n applyChange(\n state,\n reducerAction: PayloadAction<{\n action: 'add' | 'update' | 'delete';\n schema: ContentType | Component;\n }>\n ) {\n const { action, schema } = reducerAction.payload;\n\n switch (action) {\n case 'add':\n {\n const uid = schema.uid;\n\n if (schema.modelType === 'component') {\n state.components[uid] = schema;\n } else {\n state.contentTypes[uid] = schema;\n }\n }\n break;\n case 'update':\n {\n const uid = schema.uid;\n\n // Find the schema, if the state was \"create\", we should keep it as it was before\n\n if (schema.modelType === 'component') {\n const component = state.components[uid];\n state.components[uid] = {\n ...schema,\n status: component?.status === 'NEW' ? 'NEW' : schema.status,\n };\n } else {\n const contentType = state.contentTypes[uid];\n state.contentTypes[uid] = {\n ...schema,\n status: contentType?.status === 'NEW' ? 'NEW' : schema.status,\n };\n }\n }\n break;\n case 'delete': {\n const uid = schema.uid;\n const isComponent = schema.modelType === 'component';\n // It's a component that has yet not been added\n if (isComponent) {\n const exists = state.components[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.components[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.components[uid];\n } else {\n state.components[uid].status = 'REMOVED';\n }\n } else {\n const exists = state.contentTypes[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.contentTypes[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.contentTypes[uid];\n } else {\n state.contentTypes[uid].status = 'REMOVED';\n }\n }\n\n break;\n }\n }\n },\n },\n },\n\n {\n limit: 50,\n excludeActionsFromHistory: ['reloadPlugin', 'init'],\n stateSelector: (state) => {\n if (!state) {\n return {};\n }\n\n return {\n components: state.components,\n contentTypes: state.contentTypes,\n };\n },\n discard: (state) => {\n state.components = state.initialComponents;\n state.contentTypes = state.initialContentTypes;\n },\n }\n);\n\nexport type State = ReturnType<typeof slice.reducer>;\nexport const { reducer, actions } = slice;\nexport { initialState };\n"],"names":["initialState","components","contentTypes","initialComponents","initialContentTypes","reservedNames","models","attributes","isLoading","ONE_SIDE_RELATIONS","getOppositeRelation","originalRelation","findAttributeIndex","type","attributeToFind","findIndex","name","getType","state","forTarget","targetUid","setStatus","status","getNewStatus","oldStatus","newStatus","setAttributeStatus","attribute","createAttribute","properties","setAttributeAt","index","previousAttribute","pushAttribute","push","removeAttributeAt","attr","splice","replaceAttributeAt","removeAttributeByName","idx","updateType","data","merge","slice","createUndoRedoSlice","reducers","init","action","payload","createComponentSchema","uid","componentCategory","newSchema","category","modelName","displayName","globalId","info","icon","modelType","createSchema","singularName","pluralName","kind","draftAndPublish","pluginOptions","visible","restrictRelationsTo","options","addAttribute","attributeToSet","omit","target","targetAttribute","relation","relationType","getRelationType","isBidirectionalRelation","undefined","includes","oppositeAttribute","private","targetType","moveAttribute","from","to","addCustomFieldAttribute","addCreatedComponentToDynamicZone","dynamicZoneTarget","componentsToAdd","dzAttributeIndex","forEach","componentUid","changeDynamicZoneComponents","newComponents","currentDZComponents","updatedComponents","makeUnique","editAttribute","initialAttributeIndex","previousTarget","newTarget","previousTargetAttributeIndex","newRelationType","isBidirectionnal","newTargetAttribute","editCustomFieldAttribute","initialAttributeName","reloadPlugin","removeComponentFromDynamicZone","dzName","componentToRemoveIndex","removeField","attributeToRemoveName","attributeToRemoveIndex","targetAttributeName","targetContentType","targetAttributeIndex","targetField","updateComponentSchema","updateComponentUid","newComponentUID","newType","Object","keys","contentTypeUid","contentType","map","component","updateSchema","deleteComponent","filter","deleteContentType","applyChange","reducerAction","schema","isComponent","exists","isUnsaved","limit","excludeActionsFromHistory","stateSelector","discard","reducer","actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/components/DataManager/reducer.ts"],"sourcesContent":["import { PayloadAction } from '@reduxjs/toolkit';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { makeUnique } from '../../utils/makeUnique';\n\nimport { createUndoRedoSlice } from './undoRedo';\n\nimport type {\n Components,\n ContentTypes,\n ContentType,\n Component,\n Status,\n AnyAttribute,\n} from '../../types';\nimport type { Internal, Schema, Struct, UID } from '@strapi/types';\n\nexport interface DataManagerStateType {\n components: Components;\n initialComponents: Components;\n contentTypes: ContentTypes;\n initialContentTypes: ContentTypes;\n reservedNames: {\n models: string[];\n attributes: string[];\n };\n isLoading: boolean;\n [key: string]: unknown;\n}\n\nconst initialState: DataManagerStateType = {\n components: {},\n contentTypes: {},\n initialComponents: {},\n initialContentTypes: {},\n reservedNames: {\n models: [],\n attributes: [],\n },\n isLoading: true,\n};\n\nconst ONE_SIDE_RELATIONS = ['oneWay', 'manyWay'];\n\ntype AttributeMutation = AnyAttribute & {\n createComponent?: unknown;\n};\n\ntype PluginOptions = Record<string, unknown>;\n\nconst getOppositeRelation = (originalRelation?: Schema.Attribute.RelationKind.Any) => {\n if (originalRelation === 'manyToOne') {\n return 'oneToMany';\n }\n\n if (originalRelation === 'oneToMany') {\n return 'manyToOne';\n }\n\n return originalRelation;\n};\n\nconst findAttributeIndex = (type: ContentType | Component, attributeToFind?: string) => {\n return type.attributes.findIndex(({ name }: { name: string }) => name === attributeToFind);\n};\n\ntype InitPayload = {\n components: Record<string, Component>;\n contentTypes: Record<string, ContentType>;\n reservedNames: DataManagerStateType['reservedNames'];\n};\n\ntype AddAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype AddCreateComponentToDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dynamicZoneTarget: string;\n componentsToAdd: Internal.UID.Component[];\n};\n\ntype AddCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype ChangeDynamicZoneComponentsPayload = {\n dynamicZoneTarget: string;\n newComponents: Internal.UID.Component[];\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype CreateComponentSchemaPayload = {\n uid: string;\n data: {\n icon?: string;\n displayName: string;\n };\n componentCategory: string;\n};\n\ntype CreateSchemaPayload = {\n uid: string;\n data: {\n displayName: string;\n singularName: string;\n pluralName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n};\n\ntype EditAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype EditCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype RemoveComponentFromDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dzName: string;\n componentToRemoveIndex: number;\n};\n\ntype RemoveFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n attributeToRemoveName: string;\n};\n\ntype UpdateComponentSchemaPayload = {\n data: {\n icon?: string;\n displayName: string;\n };\n uid: Internal.UID.Component;\n};\n\ntype UpdateComponentUIDPayload = {\n uid: Internal.UID.Component;\n newComponentUID: Internal.UID.Component;\n};\n\ntype UpdateSchemaPayload = {\n data: {\n displayName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n uid: string;\n};\n\ntype MoveAttributePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n from: number;\n to: number;\n};\n\nconst getType = (\n state: DataManagerStateType,\n {\n forTarget,\n targetUid,\n }: {\n forTarget: Struct.ModelType;\n targetUid: string;\n }\n) => {\n return forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n};\n\n// TODO: use initial state when chnaging back to the initial state without knowing\nconst setStatus = (type: ContentType | Component, status: Status) => {\n switch (type.status) {\n case 'NEW':\n case 'REMOVED': {\n break;\n }\n default: {\n type.status = status;\n }\n }\n};\n\nconst getNewStatus = (oldStatus: Status | undefined, newStatus: Status) => {\n if (oldStatus === 'NEW' || oldStatus === 'REMOVED') {\n return oldStatus;\n }\n\n return newStatus;\n};\n\nconst setAttributeStatus = (attribute: { status?: Status }, status: Status) => {\n attribute.status = getNewStatus(attribute.status, status);\n};\n\nconst createAttribute = (properties: Record<string, unknown>): AnyAttribute => {\n return {\n ...properties,\n status: 'NEW',\n } as AnyAttribute;\n};\n\nconst setAttributeAt = (type: ContentType | Component, index: number, attribute: AnyAttribute) => {\n const previousAttribute = type.attributes[index];\n\n const newStatus = getNewStatus(previousAttribute.status, 'CHANGED');\n\n type.attributes[index] = {\n ...attribute,\n status: newStatus,\n };\n\n setStatus(type, 'CHANGED');\n};\n\nconst pushAttribute = (type: ContentType | Component, attribute: AnyAttribute) => {\n type.attributes.push(attribute);\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeAt = (type: ContentType | Component, index: number) => {\n const attr = type.attributes[index];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(index, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst replaceAttributeAt = (\n type: ContentType | Component,\n index: number,\n attribute: AnyAttribute\n) => {\n type.attributes[index] = attribute;\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeByName = (type: ContentType | Component, name: string) => {\n const idx = type.attributes.findIndex((attr) => attr.name === name);\n\n const attr = type.attributes[idx];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(idx, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst updateType = (type: ContentType | Component, data: Record<string, unknown>) => {\n merge(type, data);\n setStatus(type, 'CHANGED');\n};\n\nconst slice = createUndoRedoSlice(\n {\n name: 'data-manager',\n initialState,\n reducers: {\n init: (state, action: PayloadAction<InitPayload>) => {\n const { components, contentTypes, reservedNames } = action.payload;\n\n state.components = components;\n state.initialComponents = components;\n state.initialContentTypes = contentTypes;\n state.contentTypes = contentTypes;\n state.reservedNames = reservedNames;\n state.isLoading = false;\n },\n createComponentSchema: (state, action: PayloadAction<CreateComponentSchemaPayload>) => {\n const { uid, data, componentCategory } = action.payload;\n\n const newSchema: Component = {\n uid: uid as Internal.UID.Component,\n status: 'NEW',\n category: componentCategory,\n modelName: data.displayName,\n globalId: data.displayName,\n info: {\n icon: data.icon,\n displayName: data.displayName,\n },\n attributes: [],\n modelType: 'component',\n };\n\n state.components[uid as string] = newSchema;\n },\n createSchema: (state, action: PayloadAction<CreateSchemaPayload>) => {\n const { uid, data } = action.payload;\n\n const { displayName, singularName, pluralName, kind, draftAndPublish, pluginOptions } =\n data;\n\n const newSchema: ContentType = {\n uid: uid as Internal.UID.ContentType,\n status: 'NEW',\n visible: true,\n modelType: 'contentType',\n restrictRelationsTo: null,\n attributes: [],\n kind,\n modelName: displayName,\n globalId: displayName,\n options: {\n draftAndPublish,\n },\n info: {\n displayName,\n singularName,\n pluralName,\n },\n pluginOptions,\n };\n\n state.contentTypes[uid] = newSchema;\n },\n addAttribute: (state, action: PayloadAction<AddAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = createAttribute(omit(attributeToSet, 'createComponent'));\n\n if (attribute.type === 'relation') {\n const target = attribute.target;\n const targetAttribute = attribute.targetAttribute || null;\n const relation = attribute.relation;\n const relationType = getRelationType(relation, targetAttribute);\n\n const isBidirectionalRelation =\n relationType !== undefined && !['oneWay', 'manyWay'].includes(relationType);\n\n if (isBidirectionalRelation) {\n const oppositeAttribute = createAttribute({\n name: targetAttribute,\n relation: getOppositeRelation(relationType),\n target: type.uid,\n targetAttribute: attribute.name,\n type: 'relation',\n private: attribute.private,\n });\n\n const targetType = getType(state, { forTarget, targetUid: target });\n pushAttribute(targetType, oppositeAttribute);\n }\n }\n\n pushAttribute(type, attribute);\n setStatus(type, 'CHANGED');\n },\n moveAttribute: (state, action: PayloadAction<MoveAttributePayload>) => {\n const { forTarget, targetUid, from, to } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = type.attributes[from];\n type.attributes.splice(from, 1);\n type.attributes.splice(to, 0, attribute);\n setStatus(type, 'CHANGED');\n },\n addCustomFieldAttribute: (state, action: PayloadAction<AddCustomFieldAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n pushAttribute(type, createAttribute(attributeToSet));\n },\n addCreatedComponentToDynamicZone: (\n state,\n action: PayloadAction<AddCreateComponentToDynamicZonePayload>\n ) => {\n const { dynamicZoneTarget, componentsToAdd, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n componentsToAdd.forEach((componentUid: Internal.UID.Component) => {\n attr.components.push(componentUid);\n });\n\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n setStatus(type, 'CHANGED');\n },\n changeDynamicZoneComponents: (\n state,\n action: PayloadAction<ChangeDynamicZoneComponentsPayload>\n ) => {\n const { dynamicZoneTarget, newComponents, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n const currentDZComponents = attr.components;\n\n const updatedComponents = makeUnique([...currentDZComponents, ...newComponents]);\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components = updatedComponents;\n },\n editAttribute: (state, action: PayloadAction<EditAttributePayload>) => {\n const { name, attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, name);\n\n if (initialAttributeIndex === -1) {\n return;\n }\n\n const previousAttribute = type.attributes[initialAttributeIndex];\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n\n if (previousAttribute.type !== attributeToSet.type) {\n return;\n }\n\n if (previousAttribute.type !== 'relation' || attributeToSet.type !== 'relation') {\n return;\n }\n\n const previousTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: previousAttribute.target,\n });\n const newTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: attributeToSet.target,\n });\n\n const previousTargetAttributeIndex = findAttributeIndex(\n previousTarget,\n previousAttribute.targetAttribute ?? ''\n );\n const previousTargetAttribute =\n previousTargetAttributeIndex !== -1\n ? previousTarget.attributes[previousTargetAttributeIndex]\n : undefined;\n\n // remove old targetAttribute\n if (previousAttribute.targetAttribute) {\n removeAttributeByName(previousTarget, previousAttribute.targetAttribute);\n }\n\n const newRelationType = getRelationType(\n attributeToSet.relation,\n attributeToSet.targetAttribute\n );\n const isBidirectionnal =\n newRelationType !== undefined && !ONE_SIDE_RELATIONS.includes(newRelationType);\n\n if (isBidirectionnal) {\n const newTargetAttribute = {\n name: attributeToSet.targetAttribute,\n type: 'relation',\n relation: getOppositeRelation(attributeToSet.relation),\n targetAttribute: attributeToSet.name,\n target: type.uid,\n private: previousAttribute.private ?? attributeToSet.private,\n pluginOptions: previousAttribute.pluginOptions ?? attributeToSet.pluginOptions,\n ...(previousTarget.uid === newTarget.uid && previousTargetAttribute?.conditions\n ? { conditions: previousTargetAttribute.conditions }\n : {}),\n status: 'CHANGED',\n } as AnyAttribute;\n\n // create or recreate(at old index) targetAttribute\n if (previousTargetAttributeIndex !== -1 && previousTarget.uid === newTarget.uid) {\n // re-create at previousIdx if possible\n replaceAttributeAt(newTarget, previousTargetAttributeIndex, newTargetAttribute);\n } else {\n pushAttribute(newTarget, {\n ...newTargetAttribute,\n status: 'NEW',\n });\n }\n }\n },\n editCustomFieldAttribute: (state, action: PayloadAction<EditCustomFieldAttributePayload>) => {\n const { forTarget, targetUid, name, attributeToSet } = action.payload;\n\n const initialAttributeName = name;\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, initialAttributeName);\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n },\n reloadPlugin: () => {\n return initialState;\n },\n removeComponentFromDynamicZone: (\n state,\n action: PayloadAction<RemoveComponentFromDynamicZonePayload>\n ) => {\n const { dzName, componentToRemoveIndex, forTarget, targetUid } = action.payload;\n\n const type =\n forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n\n if (!type) {\n return;\n }\n\n const dzAttributeIndex = findAttributeIndex(type, dzName);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components.splice(componentToRemoveIndex, 1);\n },\n removeField: (state, action: PayloadAction<RemoveFieldPayload>) => {\n const { forTarget, targetUid, attributeToRemoveName } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attributeToRemoveIndex = findAttributeIndex(type, attributeToRemoveName);\n const attribute = type.attributes[attributeToRemoveIndex];\n\n if (attribute.type === 'relation') {\n const { target, relation, targetAttribute: targetAttributeName } = attribute;\n const relationType = getRelationType(relation, targetAttributeName);\n\n const isBidirectionnal = !ONE_SIDE_RELATIONS.includes(relationType!);\n\n if (isBidirectionnal && targetAttributeName) {\n const targetContentType = getType(state, { forTarget, targetUid: target });\n const targetAttributeIndex = findAttributeIndex(targetContentType, targetAttributeName);\n\n removeAttributeAt(targetContentType, targetAttributeIndex);\n }\n }\n\n // Find all uid fields that have the targetField set to the field we are removing\n type.attributes.forEach((attribute) => {\n if (attribute.type === 'uid') {\n if (attribute.targetField === attributeToRemoveName) {\n delete attribute.targetField;\n }\n }\n });\n\n removeAttributeAt(type, attributeToRemoveIndex);\n },\n // only edits a component in practice\n updateComponentSchema: (state, action: PayloadAction<UpdateComponentSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName: data.displayName,\n icon: data.icon,\n },\n });\n },\n updateComponentUid: (state, action: PayloadAction<UpdateComponentUIDPayload>) => {\n const { newComponentUID, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type || type.status !== 'NEW') {\n return;\n }\n\n if (newComponentUID !== uid) {\n const newType = { ...type, uid: newComponentUID };\n state.components[newComponentUID] = newType;\n delete state.components[uid];\n\n // update the uid in the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.map((component: UID.Component) => {\n if (component === uid) {\n return newComponentUID;\n }\n\n return component;\n });\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n\n // update the uid in the other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n }\n },\n updateSchema: (state, action: PayloadAction<UpdateSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const { displayName, kind, draftAndPublish, pluginOptions } = data;\n\n const type = state.contentTypes[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName,\n },\n kind,\n options: {\n draftAndPublish,\n },\n pluginOptions,\n });\n },\n deleteComponent: (state, action: PayloadAction<Internal.UID.Component>) => {\n const uid = action.payload;\n\n // remove the compo from the components\n if (state.components[uid].status === 'NEW') {\n delete state.components[uid];\n } else {\n setStatus(state.components[uid], 'REMOVED');\n }\n\n // remove the compo from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n // remove from dynamic zones\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.filter(\n (component: unknown) => component !== uid\n );\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n\n // remove the compo from other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n },\n deleteContentType: (state, action: PayloadAction<Internal.UID.ContentType>) => {\n const uid = action.payload;\n const type = state.contentTypes[uid];\n\n // just drop new content types\n if (type.status === 'NEW') {\n delete state.contentTypes[uid];\n } else {\n setStatus(type, 'REMOVED');\n }\n\n // remove the content type from the components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n\n // remove the content type from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n },\n\n applyChange(\n state,\n reducerAction: PayloadAction<{\n action: 'add' | 'update' | 'delete';\n schema: ContentType | Component;\n }>\n ) {\n const { action, schema } = reducerAction.payload;\n\n switch (action) {\n case 'add':\n {\n const uid = schema.uid;\n\n if (schema.modelType === 'component') {\n state.components[uid] = schema;\n } else {\n state.contentTypes[uid] = schema;\n }\n }\n break;\n case 'update':\n {\n const uid = schema.uid;\n\n // Find the schema, if the state was \"create\", we should keep it as it was before\n\n if (schema.modelType === 'component') {\n const component = state.components[uid];\n state.components[uid] = {\n ...schema,\n status: component?.status === 'NEW' ? 'NEW' : schema.status,\n };\n } else {\n const contentType = state.contentTypes[uid];\n state.contentTypes[uid] = {\n ...schema,\n status: contentType?.status === 'NEW' ? 'NEW' : schema.status,\n };\n }\n }\n break;\n case 'delete': {\n const uid = schema.uid;\n const isComponent = schema.modelType === 'component';\n // It's a component that has yet not been added\n if (isComponent) {\n const exists = state.components[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.components[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.components[uid];\n } else {\n state.components[uid].status = 'REMOVED';\n }\n } else {\n const exists = state.contentTypes[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.contentTypes[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.contentTypes[uid];\n } else {\n state.contentTypes[uid].status = 'REMOVED';\n }\n }\n\n break;\n }\n }\n },\n },\n },\n\n {\n limit: 50,\n excludeActionsFromHistory: ['reloadPlugin', 'init'],\n stateSelector: (state) => {\n if (!state) {\n return {};\n }\n\n return {\n components: state.components,\n contentTypes: state.contentTypes,\n };\n },\n discard: (state) => {\n state.components = state.initialComponents;\n state.contentTypes = state.initialContentTypes;\n },\n }\n);\n\nexport type State = ReturnType<typeof slice.reducer>;\nexport const { reducer, actions } = slice;\nexport { initialState };\n"],"names":["initialState","components","contentTypes","initialComponents","initialContentTypes","reservedNames","models","attributes","isLoading","ONE_SIDE_RELATIONS","getOppositeRelation","originalRelation","findAttributeIndex","type","attributeToFind","findIndex","name","getType","state","forTarget","targetUid","setStatus","status","getNewStatus","oldStatus","newStatus","setAttributeStatus","attribute","createAttribute","properties","setAttributeAt","index","previousAttribute","pushAttribute","push","removeAttributeAt","attr","splice","replaceAttributeAt","removeAttributeByName","idx","updateType","data","merge","slice","createUndoRedoSlice","reducers","init","action","payload","createComponentSchema","uid","componentCategory","newSchema","category","modelName","displayName","globalId","info","icon","modelType","createSchema","singularName","pluralName","kind","draftAndPublish","pluginOptions","visible","restrictRelationsTo","options","addAttribute","attributeToSet","omit","target","targetAttribute","relation","relationType","getRelationType","isBidirectionalRelation","undefined","includes","oppositeAttribute","private","targetType","moveAttribute","from","to","addCustomFieldAttribute","addCreatedComponentToDynamicZone","dynamicZoneTarget","componentsToAdd","dzAttributeIndex","forEach","componentUid","changeDynamicZoneComponents","newComponents","currentDZComponents","updatedComponents","makeUnique","editAttribute","initialAttributeIndex","previousTarget","newTarget","previousTargetAttributeIndex","previousTargetAttribute","newRelationType","isBidirectionnal","newTargetAttribute","conditions","editCustomFieldAttribute","initialAttributeName","reloadPlugin","removeComponentFromDynamicZone","dzName","componentToRemoveIndex","removeField","attributeToRemoveName","attributeToRemoveIndex","targetAttributeName","targetContentType","targetAttributeIndex","targetField","updateComponentSchema","updateComponentUid","newComponentUID","newType","Object","keys","contentTypeUid","contentType","map","component","updateSchema","deleteComponent","filter","deleteContentType","applyChange","reducerAction","schema","isComponent","exists","isUnsaved","limit","excludeActionsFromHistory","stateSelector","discard","reducer","actions"],"mappings":";;;;;;;;;;;;;AAgCA,MAAMA,YAAAA,GAAqC;AACzCC,IAAAA,UAAAA,EAAY,EAAC;AACbC,IAAAA,YAAAA,EAAc,EAAC;AACfC,IAAAA,iBAAAA,EAAmB,EAAC;AACpBC,IAAAA,mBAAAA,EAAqB,EAAC;IACtBC,aAAAA,EAAe;AACbC,QAAAA,MAAAA,EAAQ,EAAE;AACVC,QAAAA,UAAAA,EAAY;AACd,KAAA;IACAC,SAAAA,EAAW;AACb;AAEA,MAAMC,kBAAAA,GAAqB;AAAC,IAAA,QAAA;AAAU,IAAA;AAAU,CAAA;AAQhD,MAAMC,sBAAsB,CAACC,gBAAAA,GAAAA;AAC3B,IAAA,IAAIA,qBAAqB,WAAA,EAAa;QACpC,OAAO,WAAA;AACT,IAAA;AAEA,IAAA,IAAIA,qBAAqB,WAAA,EAAa;QACpC,OAAO,WAAA;AACT,IAAA;IAEA,OAAOA,gBAAAA;AACT,CAAA;AAEA,MAAMC,kBAAAA,GAAqB,CAACC,IAAAA,EAA+BC,eAAAA,GAAAA;IACzD,OAAOD,IAAAA,CAAKN,UAAU,CAACQ,SAAS,CAAC,CAAC,EAAEC,IAAI,EAAoB,GAAKA,IAAAA,KAASF,eAAAA,CAAAA;AAC5E,CAAA;AAgHA,MAAMG,UAAU,CACdC,KAAAA,EACA,EACEC,SAAS,EACTC,SAAS,EAIV,GAAA;IAED,OAAOD,SAAAA,KAAc,aAAA,GAAgBD,KAAAA,CAAMhB,YAAY,CAACkB,UAAU,GAAGF,KAAAA,CAAMjB,UAAU,CAACmB,SAAAA,CAAU;AAClG,CAAA;AAEA;AACA,MAAMC,SAAAA,GAAY,CAACR,IAAAA,EAA+BS,MAAAA,GAAAA;AAChD,IAAA,OAAQT,KAAKS,MAAM;QACjB,KAAK,KAAA;QACL,KAAK,SAAA;AAAW,YAAA;AACd,gBAAA;AACF,YAAA;AACA,QAAA;AAAS,YAAA;AACPT,gBAAAA,IAAAA,CAAKS,MAAM,GAAGA,MAAAA;AAChB,YAAA;AACF;AACF,CAAA;AAEA,MAAMC,YAAAA,GAAe,CAACC,SAAAA,EAA+BC,SAAAA,GAAAA;IACnD,IAAID,SAAAA,KAAc,KAAA,IAASA,SAAAA,KAAc,SAAA,EAAW;QAClD,OAAOA,SAAAA;AACT,IAAA;IAEA,OAAOC,SAAAA;AACT,CAAA;AAEA,MAAMC,kBAAAA,GAAqB,CAACC,SAAAA,EAAgCL,MAAAA,GAAAA;AAC1DK,IAAAA,SAAAA,CAAUL,MAAM,GAAGC,YAAAA,CAAaI,SAAAA,CAAUL,MAAM,EAAEA,MAAAA,CAAAA;AACpD,CAAA;AAEA,MAAMM,kBAAkB,CAACC,UAAAA,GAAAA;IACvB,OAAO;AACL,QAAA,GAAGA,UAAU;QACbP,MAAAA,EAAQ;AACV,KAAA;AACF,CAAA;AAEA,MAAMQ,cAAAA,GAAiB,CAACjB,IAAAA,EAA+BkB,KAAAA,EAAeJ,SAAAA,GAAAA;AACpE,IAAA,MAAMK,iBAAAA,GAAoBnB,IAAAA,CAAKN,UAAU,CAACwB,KAAAA,CAAM;AAEhD,IAAA,MAAMN,SAAAA,GAAYF,YAAAA,CAAaS,iBAAAA,CAAkBV,MAAM,EAAE,SAAA,CAAA;IAEzDT,IAAAA,CAAKN,UAAU,CAACwB,KAAAA,CAAM,GAAG;AACvB,QAAA,GAAGJ,SAAS;QACZL,MAAAA,EAAQG;AACV,KAAA;AAEAJ,IAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;AAClB,CAAA;AAEA,MAAMoB,aAAAA,GAAgB,CAACpB,IAAAA,EAA+Bc,SAAAA,GAAAA;IACpDd,IAAAA,CAAKN,UAAU,CAAC2B,IAAI,CAACP,SAAAA,CAAAA;AACrBN,IAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;AAClB,CAAA;AAEA,MAAMsB,iBAAAA,GAAoB,CAACtB,IAAAA,EAA+BkB,KAAAA,GAAAA;AACxD,IAAA,MAAMK,IAAAA,GAAOvB,IAAAA,CAAKN,UAAU,CAACwB,KAAAA,CAAM;AAEnCV,IAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;IAEhB,IAAIuB,IAAAA,CAAKd,MAAM,KAAK,KAAA,EAAO;AACzBT,QAAAA,IAAAA,CAAKN,UAAU,CAAC8B,MAAM,CAACN,KAAAA,EAAO,CAAA,CAAA;IAChC,CAAA,MAAO;AACLL,QAAAA,kBAAAA,CAAmBU,IAAAA,EAAM,SAAA,CAAA;AAC3B,IAAA;AACF,CAAA;AAEA,MAAME,kBAAAA,GAAqB,CACzBzB,IAAAA,EACAkB,KAAAA,EACAJ,SAAAA,GAAAA;IAEAd,IAAAA,CAAKN,UAAU,CAACwB,KAAAA,CAAM,GAAGJ,SAAAA;AACzBN,IAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;AAClB,CAAA;AAEA,MAAM0B,qBAAAA,GAAwB,CAAC1B,IAAAA,EAA+BG,IAAAA,GAAAA;IAC5D,MAAMwB,GAAAA,GAAM3B,IAAAA,CAAKN,UAAU,CAACQ,SAAS,CAAC,CAACqB,IAAAA,GAASA,IAAAA,CAAKpB,IAAI,KAAKA,IAAAA,CAAAA;AAE9D,IAAA,MAAMoB,IAAAA,GAAOvB,IAAAA,CAAKN,UAAU,CAACiC,GAAAA,CAAI;AAEjCnB,IAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;IAEhB,IAAIuB,IAAAA,CAAKd,MAAM,KAAK,KAAA,EAAO;AACzBT,QAAAA,IAAAA,CAAKN,UAAU,CAAC8B,MAAM,CAACG,GAAAA,EAAK,CAAA,CAAA;IAC9B,CAAA,MAAO;AACLd,QAAAA,kBAAAA,CAAmBU,IAAAA,EAAM,SAAA,CAAA;AAC3B,IAAA;AACF,CAAA;AAEA,MAAMK,UAAAA,GAAa,CAAC5B,IAAAA,EAA+B6B,IAAAA,GAAAA;AACjDC,IAAAA,sBAAAA,CAAM9B,IAAAA,EAAM6B,IAAAA,CAAAA;AACZrB,IAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;AAClB,CAAA;AAEA,MAAM+B,QAAQC,4BAAAA,CACZ;IACE7B,IAAAA,EAAM,cAAA;AACNhB,IAAAA,YAAAA;IACA8C,QAAAA,EAAU;AACRC,QAAAA,IAAAA,EAAM,CAAC7B,KAAAA,EAAO8B,MAAAA,GAAAA;YACZ,MAAM,EAAE/C,UAAU,EAAEC,YAAY,EAAEG,aAAa,EAAE,GAAG2C,MAAAA,CAAOC,OAAO;AAElE/B,YAAAA,KAAAA,CAAMjB,UAAU,GAAGA,UAAAA;AACnBiB,YAAAA,KAAAA,CAAMf,iBAAiB,GAAGF,UAAAA;AAC1BiB,YAAAA,KAAAA,CAAMd,mBAAmB,GAAGF,YAAAA;AAC5BgB,YAAAA,KAAAA,CAAMhB,YAAY,GAAGA,YAAAA;AACrBgB,YAAAA,KAAAA,CAAMb,aAAa,GAAGA,aAAAA;AACtBa,YAAAA,KAAAA,CAAMV,SAAS,GAAG,KAAA;AACpB,QAAA,CAAA;AACA0C,QAAAA,qBAAAA,EAAuB,CAAChC,KAAAA,EAAO8B,MAAAA,GAAAA;YAC7B,MAAM,EAAEG,GAAG,EAAET,IAAI,EAAEU,iBAAiB,EAAE,GAAGJ,MAAAA,CAAOC,OAAO;AAEvD,YAAA,MAAMI,SAAAA,GAAuB;gBAC3BF,GAAAA,EAAKA,GAAAA;gBACL7B,MAAAA,EAAQ,KAAA;gBACRgC,QAAAA,EAAUF,iBAAAA;AACVG,gBAAAA,SAAAA,EAAWb,KAAKc,WAAW;AAC3BC,gBAAAA,QAAAA,EAAUf,KAAKc,WAAW;gBAC1BE,IAAAA,EAAM;AACJC,oBAAAA,IAAAA,EAAMjB,KAAKiB,IAAI;AACfH,oBAAAA,WAAAA,EAAad,KAAKc;AACpB,iBAAA;AACAjD,gBAAAA,UAAAA,EAAY,EAAE;gBACdqD,SAAAA,EAAW;AACb,aAAA;YAEA1C,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAc,GAAGE,SAAAA;AACpC,QAAA,CAAA;AACAQ,QAAAA,YAAAA,EAAc,CAAC3C,KAAAA,EAAO8B,MAAAA,GAAAA;AACpB,YAAA,MAAM,EAAEG,GAAG,EAAET,IAAI,EAAE,GAAGM,OAAOC,OAAO;AAEpC,YAAA,MAAM,EAAEO,WAAW,EAAEM,YAAY,EAAEC,UAAU,EAAEC,IAAI,EAAEC,eAAe,EAAEC,aAAa,EAAE,GACnFxB,IAAAA;AAEF,YAAA,MAAMW,SAAAA,GAAyB;gBAC7BF,GAAAA,EAAKA,GAAAA;gBACL7B,MAAAA,EAAQ,KAAA;gBACR6C,OAAAA,EAAS,IAAA;gBACTP,SAAAA,EAAW,aAAA;gBACXQ,mBAAAA,EAAqB,IAAA;AACrB7D,gBAAAA,UAAAA,EAAY,EAAE;AACdyD,gBAAAA,IAAAA;gBACAT,SAAAA,EAAWC,WAAAA;gBACXC,QAAAA,EAAUD,WAAAA;gBACVa,OAAAA,EAAS;AACPJ,oBAAAA;AACF,iBAAA;gBACAP,IAAAA,EAAM;AACJF,oBAAAA,WAAAA;AACAM,oBAAAA,YAAAA;AACAC,oBAAAA;AACF,iBAAA;AACAG,gBAAAA;AACF,aAAA;YAEAhD,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI,GAAGE,SAAAA;AAC5B,QAAA,CAAA;AACAiB,QAAAA,YAAAA,EAAc,CAACpD,KAAAA,EAAO8B,MAAAA,GAAAA;YACpB,MAAM,EAAEuB,cAAc,EAAEpD,SAAS,EAAEC,SAAS,EAAE,GAAG4B,MAAAA,CAAOC,OAAO;YAE/D,MAAMpC,IAAAA,GAAOI,QAAQC,KAAAA,EAAO;AAAEC,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA,CAAA;YAEnD,MAAMO,SAAAA,GAAYC,eAAAA,CAAgB4C,qBAAAA,CAAKD,cAAAA,EAAgB,iBAAA,CAAA,CAAA;YAEvD,IAAI5C,SAAAA,CAAUd,IAAI,KAAK,UAAA,EAAY;gBACjC,MAAM4D,MAAAA,GAAS9C,UAAU8C,MAAM;gBAC/B,MAAMC,eAAAA,GAAkB/C,SAAAA,CAAU+C,eAAe,IAAI,IAAA;gBACrD,MAAMC,QAAAA,GAAWhD,UAAUgD,QAAQ;gBACnC,MAAMC,YAAAA,GAAeC,gCAAgBF,QAAAA,EAAUD,eAAAA,CAAAA;gBAE/C,MAAMI,uBAAAA,GACJF,YAAAA,KAAiBG,SAAAA,IAAa,CAAC;AAAC,oBAAA,QAAA;AAAU,oBAAA;AAAU,iBAAA,CAACC,QAAQ,CAACJ,YAAAA,CAAAA;AAEhE,gBAAA,IAAIE,uBAAAA,EAAyB;AAC3B,oBAAA,MAAMG,oBAAoBrD,eAAAA,CAAgB;wBACxCZ,IAAAA,EAAM0D,eAAAA;AACNC,wBAAAA,QAAAA,EAAUjE,mBAAAA,CAAoBkE,YAAAA,CAAAA;AAC9BH,wBAAAA,MAAAA,EAAQ5D,KAAKsC,GAAG;AAChBuB,wBAAAA,eAAAA,EAAiB/C,UAAUX,IAAI;wBAC/BH,IAAAA,EAAM,UAAA;AACNqE,wBAAAA,OAAAA,EAASvD,UAAUuD;AACrB,qBAAA,CAAA;oBAEA,MAAMC,UAAAA,GAAalE,QAAQC,KAAAA,EAAO;AAAEC,wBAAAA,SAAAA;wBAAWC,SAAAA,EAAWqD;AAAO,qBAAA,CAAA;AACjExC,oBAAAA,aAAAA,CAAckD,UAAAA,EAAYF,iBAAAA,CAAAA;AAC5B,gBAAA;AACF,YAAA;AAEAhD,YAAAA,aAAAA,CAAcpB,IAAAA,EAAMc,SAAAA,CAAAA;AACpBN,YAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;AAClB,QAAA,CAAA;AACAuE,QAAAA,aAAAA,EAAe,CAAClE,KAAAA,EAAO8B,MAAAA,GAAAA;YACrB,MAAM,EAAE7B,SAAS,EAAEC,SAAS,EAAEiE,IAAI,EAAEC,EAAE,EAAE,GAAGtC,MAAAA,CAAOC,OAAO;YAEzD,MAAMpC,IAAAA,GAAOI,QAAQC,KAAAA,EAAO;AAAEC,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA,CAAA;AAEnD,YAAA,MAAMO,SAAAA,GAAYd,IAAAA,CAAKN,UAAU,CAAC8E,IAAAA,CAAK;AACvCxE,YAAAA,IAAAA,CAAKN,UAAU,CAAC8B,MAAM,CAACgD,IAAAA,EAAM,CAAA,CAAA;AAC7BxE,YAAAA,IAAAA,CAAKN,UAAU,CAAC8B,MAAM,CAACiD,IAAI,CAAA,EAAG3D,SAAAA,CAAAA;AAC9BN,YAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;AAClB,QAAA,CAAA;AACA0E,QAAAA,uBAAAA,EAAyB,CAACrE,KAAAA,EAAO8B,MAAAA,GAAAA;YAC/B,MAAM,EAAEuB,cAAc,EAAEpD,SAAS,EAAEC,SAAS,EAAE,GAAG4B,MAAAA,CAAOC,OAAO;YAE/D,MAAMpC,IAAAA,GAAOI,QAAQC,KAAAA,EAAO;AAAEC,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA,CAAA;AAEnDa,YAAAA,aAAAA,CAAcpB,MAAMe,eAAAA,CAAgB2C,cAAAA,CAAAA,CAAAA;AACtC,QAAA,CAAA;AACAiB,QAAAA,gCAAAA,EAAkC,CAChCtE,KAAAA,EACA8B,MAAAA,GAAAA;YAEA,MAAM,EAAEyC,iBAAiB,EAAEC,eAAe,EAAEvE,SAAS,EAAEC,SAAS,EAAE,GAAG4B,MAAAA,CAAOC,OAAO;YAEnF,MAAMpC,IAAAA,GAAOI,QAAQC,KAAAA,EAAO;AAAEC,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA,CAAA;YAEnD,MAAMuE,gBAAAA,GAAmB/E,mBAAmBC,IAAAA,EAAM4E,iBAAAA,CAAAA;AAClD,YAAA,MAAMrD,IAAAA,GAAOvB,IAAAA,CAAKN,UAAU,CAACoF,gBAAAA,CAAiB;YAE9CD,eAAAA,CAAgBE,OAAO,CAAC,CAACC,YAAAA,GAAAA;gBACvBzD,IAAAA,CAAKnC,UAAU,CAACiC,IAAI,CAAC2D,YAAAA,CAAAA;AACvB,YAAA,CAAA,CAAA;AAEAnE,YAAAA,kBAAAA,CAAmBU,IAAAA,EAAsB,SAAA,CAAA;AACzCf,YAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;AAClB,QAAA,CAAA;AACAiF,QAAAA,2BAAAA,EAA6B,CAC3B5E,KAAAA,EACA8B,MAAAA,GAAAA;YAEA,MAAM,EAAEyC,iBAAiB,EAAEM,aAAa,EAAE5E,SAAS,EAAEC,SAAS,EAAE,GAAG4B,MAAAA,CAAOC,OAAO;YAEjF,MAAMpC,IAAAA,GAAOI,QAAQC,KAAAA,EAAO;AAAEC,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA,CAAA;YAEnD,MAAMuE,gBAAAA,GAAmB/E,mBAAmBC,IAAAA,EAAM4E,iBAAAA,CAAAA;AAClD,YAAA,MAAMrD,IAAAA,GAAOvB,IAAAA,CAAKN,UAAU,CAACoF,gBAAAA,CAAiB;YAC9C,MAAMK,mBAAAA,GAAsB5D,KAAKnC,UAAU;AAE3C,YAAA,MAAMgG,oBAAoBC,qBAAAA,CAAW;AAAIF,gBAAAA,GAAAA,mBAAAA;AAAwBD,gBAAAA,GAAAA;AAAc,aAAA,CAAA;AAE/E1E,YAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;AAChBa,YAAAA,kBAAAA,CAAmBU,IAAAA,EAAsB,SAAA,CAAA;AACzCA,YAAAA,IAAAA,CAAKnC,UAAU,GAAGgG,iBAAAA;AACpB,QAAA,CAAA;AACAE,QAAAA,aAAAA,EAAe,CAACjF,KAAAA,EAAO8B,MAAAA,GAAAA;YACrB,MAAM,EAAEhC,IAAI,EAAEuD,cAAc,EAAEpD,SAAS,EAAEC,SAAS,EAAE,GAAG4B,MAAAA,CAAOC,OAAO;YAErE,MAAMpC,IAAAA,GAAOI,QAAQC,KAAAA,EAAO;AAAEC,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA,CAAA;YAEnD,MAAMgF,qBAAAA,GAAwBxF,mBAAmBC,IAAAA,EAAMG,IAAAA,CAAAA;YAEvD,IAAIoF,qBAAAA,KAA0B,EAAC,EAAG;AAChC,gBAAA;AACF,YAAA;AAEA,YAAA,MAAMpE,iBAAAA,GAAoBnB,IAAAA,CAAKN,UAAU,CAAC6F,qBAAAA,CAAsB;AAEhEtE,YAAAA,cAAAA,CAAejB,MAAMuF,qBAAAA,EAAuB7B,cAAAA,CAAAA;AAE5C,YAAA,IAAIvC,iBAAAA,CAAkBnB,IAAI,KAAK0D,cAAAA,CAAe1D,IAAI,EAAE;AAClD,gBAAA;AACF,YAAA;AAEA,YAAA,IAAImB,kBAAkBnB,IAAI,KAAK,cAAc0D,cAAAA,CAAe1D,IAAI,KAAK,UAAA,EAAY;AAC/E,gBAAA;AACF,YAAA;YAEA,MAAMwF,cAAAA,GAAiBpF,QAAQC,KAAAA,EAAO;gBACpCC,SAAAA,EAAW,aAAA;AACXC,gBAAAA,SAAAA,EAAWY,kBAAkByC;AAC/B,aAAA,CAAA;YACA,MAAM6B,SAAAA,GAAYrF,QAAQC,KAAAA,EAAO;gBAC/BC,SAAAA,EAAW,aAAA;AACXC,gBAAAA,SAAAA,EAAWmD,eAAeE;AAC5B,aAAA,CAAA;AAEA,YAAA,MAAM8B,4BAAAA,GAA+B3F,kBAAAA,CACnCyF,cAAAA,EACArE,iBAAAA,CAAkB0C,eAAe,IAAI,EAAA,CAAA;YAEvC,MAAM8B,uBAAAA,GACJD,iCAAiC,EAAC,GAC9BF,eAAe9F,UAAU,CAACgG,6BAA6B,GACvDxB,SAAAA;;YAGN,IAAI/C,iBAAAA,CAAkB0C,eAAe,EAAE;gBACrCnC,qBAAAA,CAAsB8D,cAAAA,EAAgBrE,kBAAkB0C,eAAe,CAAA;AACzE,YAAA;AAEA,YAAA,MAAM+B,kBAAkB5B,+BAAAA,CACtBN,cAAAA,CAAeI,QAAQ,EACvBJ,eAAeG,eAAe,CAAA;AAEhC,YAAA,MAAMgC,mBACJD,eAAAA,KAAoB1B,SAAAA,IAAa,CAACtE,kBAAAA,CAAmBuE,QAAQ,CAACyB,eAAAA,CAAAA;AAEhE,YAAA,IAAIC,gBAAAA,EAAkB;AACpB,gBAAA,MAAMC,kBAAAA,GAAqB;AACzB3F,oBAAAA,IAAAA,EAAMuD,eAAeG,eAAe;oBACpC7D,IAAAA,EAAM,UAAA;oBACN8D,QAAAA,EAAUjE,mBAAAA,CAAoB6D,eAAeI,QAAQ,CAAA;AACrDD,oBAAAA,eAAAA,EAAiBH,eAAevD,IAAI;AACpCyD,oBAAAA,MAAAA,EAAQ5D,KAAKsC,GAAG;AAChB+B,oBAAAA,OAAAA,EAASlD,iBAAAA,CAAkBkD,OAAO,IAAIX,cAAAA,CAAeW,OAAO;AAC5DhB,oBAAAA,aAAAA,EAAelC,iBAAAA,CAAkBkC,aAAa,IAAIK,cAAAA,CAAeL,aAAa;AAC9E,oBAAA,GAAImC,eAAelD,GAAG,KAAKmD,UAAUnD,GAAG,IAAIqD,yBAAyBI,UAAAA,GACjE;AAAEA,wBAAAA,UAAAA,EAAYJ,wBAAwBI;AAAW,qBAAA,GACjD,EAAE;oBACNtF,MAAAA,EAAQ;AACV,iBAAA;;gBAGA,IAAIiF,4BAAAA,KAAiC,EAAC,IAAKF,cAAAA,CAAelD,GAAG,KAAKmD,SAAAA,CAAUnD,GAAG,EAAE;;AAE/Eb,oBAAAA,kBAAAA,CAAmBgE,WAAWC,4BAAAA,EAA8BI,kBAAAA,CAAAA;gBAC9D,CAAA,MAAO;AACL1E,oBAAAA,aAAAA,CAAcqE,SAAAA,EAAW;AACvB,wBAAA,GAAGK,kBAAkB;wBACrBrF,MAAAA,EAAQ;AACV,qBAAA,CAAA;AACF,gBAAA;AACF,YAAA;AACF,QAAA,CAAA;AACAuF,QAAAA,wBAAAA,EAA0B,CAAC3F,KAAAA,EAAO8B,MAAAA,GAAAA;YAChC,MAAM,EAAE7B,SAAS,EAAEC,SAAS,EAAEJ,IAAI,EAAEuD,cAAc,EAAE,GAAGvB,MAAAA,CAAOC,OAAO;AAErE,YAAA,MAAM6D,oBAAAA,GAAuB9F,IAAAA;YAC7B,MAAMH,IAAAA,GAAOI,QAAQC,KAAAA,EAAO;AAAEC,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA,CAAA;YAEnD,MAAMgF,qBAAAA,GAAwBxF,mBAAmBC,IAAAA,EAAMiG,oBAAAA,CAAAA;AAEvDhF,YAAAA,cAAAA,CAAejB,MAAMuF,qBAAAA,EAAuB7B,cAAAA,CAAAA;AAC9C,QAAA,CAAA;QACAwC,YAAAA,EAAc,IAAA;YACZ,OAAO/G,YAAAA;AACT,QAAA,CAAA;AACAgH,QAAAA,8BAAAA,EAAgC,CAC9B9F,KAAAA,EACA8B,MAAAA,GAAAA;YAEA,MAAM,EAAEiE,MAAM,EAAEC,sBAAsB,EAAE/F,SAAS,EAAEC,SAAS,EAAE,GAAG4B,MAAAA,CAAOC,OAAO;YAE/E,MAAMpC,IAAAA,GACJM,SAAAA,KAAc,aAAA,GAAgBD,KAAAA,CAAMhB,YAAY,CAACkB,SAAAA,CAAU,GAAGF,KAAAA,CAAMjB,UAAU,CAACmB,SAAAA,CAAU;AAE3F,YAAA,IAAI,CAACP,IAAAA,EAAM;AACT,gBAAA;AACF,YAAA;YAEA,MAAM8E,gBAAAA,GAAmB/E,mBAAmBC,IAAAA,EAAMoG,MAAAA,CAAAA;AAClD,YAAA,MAAM7E,IAAAA,GAAOvB,IAAAA,CAAKN,UAAU,CAACoF,gBAAAA,CAAiB;AAE9CtE,YAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;AAChBa,YAAAA,kBAAAA,CAAmBU,IAAAA,EAAsB,SAAA,CAAA;AACzCA,YAAAA,IAAAA,CAAKnC,UAAU,CAACoC,MAAM,CAAC6E,sBAAAA,EAAwB,CAAA,CAAA;AACjD,QAAA,CAAA;AACAC,QAAAA,WAAAA,EAAa,CAACjG,KAAAA,EAAO8B,MAAAA,GAAAA;YACnB,MAAM,EAAE7B,SAAS,EAAEC,SAAS,EAAEgG,qBAAqB,EAAE,GAAGpE,MAAAA,CAAOC,OAAO;YAEtE,MAAMpC,IAAAA,GAAOI,QAAQC,KAAAA,EAAO;AAAEC,gBAAAA,SAAAA;AAAWC,gBAAAA;AAAU,aAAA,CAAA;YAEnD,MAAMiG,sBAAAA,GAAyBzG,mBAAmBC,IAAAA,EAAMuG,qBAAAA,CAAAA;AACxD,YAAA,MAAMzF,SAAAA,GAAYd,IAAAA,CAAKN,UAAU,CAAC8G,sBAAAA,CAAuB;YAEzD,IAAI1F,SAAAA,CAAUd,IAAI,KAAK,UAAA,EAAY;gBACjC,MAAM,EAAE4D,MAAM,EAAEE,QAAQ,EAAED,eAAAA,EAAiB4C,mBAAmB,EAAE,GAAG3F,SAAAA;gBACnE,MAAMiD,YAAAA,GAAeC,gCAAgBF,QAAAA,EAAU2C,mBAAAA,CAAAA;AAE/C,gBAAA,MAAMZ,gBAAAA,GAAmB,CAACjG,kBAAAA,CAAmBuE,QAAQ,CAACJ,YAAAA,CAAAA;AAEtD,gBAAA,IAAI8B,oBAAoBY,mBAAAA,EAAqB;oBAC3C,MAAMC,iBAAAA,GAAoBtG,QAAQC,KAAAA,EAAO;AAAEC,wBAAAA,SAAAA;wBAAWC,SAAAA,EAAWqD;AAAO,qBAAA,CAAA;oBACxE,MAAM+C,oBAAAA,GAAuB5G,mBAAmB2G,iBAAAA,EAAmBD,mBAAAA,CAAAA;AAEnEnF,oBAAAA,iBAAAA,CAAkBoF,iBAAAA,EAAmBC,oBAAAA,CAAAA;AACvC,gBAAA;AACF,YAAA;;AAGA3G,YAAAA,IAAAA,CAAKN,UAAU,CAACqF,OAAO,CAAC,CAACjE,SAAAA,GAAAA;gBACvB,IAAIA,SAAAA,CAAUd,IAAI,KAAK,KAAA,EAAO;oBAC5B,IAAIc,SAAAA,CAAU8F,WAAW,KAAKL,qBAAAA,EAAuB;AACnD,wBAAA,OAAOzF,UAAU8F,WAAW;AAC9B,oBAAA;AACF,gBAAA;AACF,YAAA,CAAA,CAAA;AAEAtF,YAAAA,iBAAAA,CAAkBtB,IAAAA,EAAMwG,sBAAAA,CAAAA;AAC1B,QAAA,CAAA;;AAEAK,QAAAA,qBAAAA,EAAuB,CAACxG,KAAAA,EAAO8B,MAAAA,GAAAA;AAC7B,YAAA,MAAM,EAAEN,IAAI,EAAES,GAAG,EAAE,GAAGH,OAAOC,OAAO;AAEpC,YAAA,MAAMpC,IAAAA,GAAOK,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI;AAClC,YAAA,IAAI,CAACtC,IAAAA,EAAM;AACT,gBAAA;AACF,YAAA;AAEA4B,YAAAA,UAAAA,CAAW5B,IAAAA,EAAM;gBACf6C,IAAAA,EAAM;AACJF,oBAAAA,WAAAA,EAAad,KAAKc,WAAW;AAC7BG,oBAAAA,IAAAA,EAAMjB,KAAKiB;AACb;AACF,aAAA,CAAA;AACF,QAAA,CAAA;AACAgE,QAAAA,kBAAAA,EAAoB,CAACzG,KAAAA,EAAO8B,MAAAA,GAAAA;AAC1B,YAAA,MAAM,EAAE4E,eAAe,EAAEzE,GAAG,EAAE,GAAGH,OAAOC,OAAO;AAE/C,YAAA,MAAMpC,IAAAA,GAAOK,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI;AAClC,YAAA,IAAI,CAACtC,IAAAA,IAAQA,IAAAA,CAAKS,MAAM,KAAK,KAAA,EAAO;AAClC,gBAAA;AACF,YAAA;AAEA,YAAA,IAAIsG,oBAAoBzE,GAAAA,EAAK;AAC3B,gBAAA,MAAM0E,OAAAA,GAAU;AAAE,oBAAA,GAAGhH,IAAI;oBAAEsC,GAAAA,EAAKyE;AAAgB,iBAAA;gBAChD1G,KAAAA,CAAMjB,UAAU,CAAC2H,eAAAA,CAAgB,GAAGC,OAAAA;gBACpC,OAAO3G,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI;;AAG5B2E,gBAAAA,MAAAA,CAAOC,IAAI,CAAC7G,KAAAA,CAAMhB,YAAY,CAAA,CAAE0F,OAAO,CAAC,CAACoC,cAAAA,GAAAA;AACvC,oBAAA,MAAMC,WAAAA,GAAc/G,KAAAA,CAAMhB,YAAY,CAAC8H,cAAAA,CAAe;AAEtDC,oBAAAA,WAAAA,CAAY1H,UAAU,CAACqF,OAAO,CAAC,CAACjE,SAAAA,GAAAA;wBAC9B,IAAIA,SAAAA,CAAUd,IAAI,KAAK,aAAA,EAAe;AACpC,4BAAA,MAAMkF,gBAAgBpE,SAAAA,CAAU1B,UAAU,CAACiI,GAAG,CAAC,CAACC,SAAAA,GAAAA;AAC9C,gCAAA,IAAIA,cAAchF,GAAAA,EAAK;oCACrB,OAAOyE,eAAAA;AACT,gCAAA;gCAEA,OAAOO,SAAAA;AACT,4BAAA,CAAA,CAAA;AAEAxG,4BAAAA,SAAAA,CAAU1B,UAAU,GAAG8F,aAAAA;AACzB,wBAAA;AACF,oBAAA,CAAA,CAAA;AAEAkC,oBAAAA,WAAAA,CAAY1H,UAAU,CAACqF,OAAO,CAAC,CAACjE,SAAAA,GAAAA;AAC9B,wBAAA,IAAIA,UAAUd,IAAI,KAAK,eAAec,SAAAA,CAAUwG,SAAS,KAAKhF,GAAAA,EAAK;AACjExB,4BAAAA,SAAAA,CAAUwG,SAAS,GAAGP,eAAAA;AACxB,wBAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;;AAGAE,gBAAAA,MAAAA,CAAOC,IAAI,CAAC7G,KAAAA,CAAMjB,UAAU,CAAA,CAAE2F,OAAO,CAAC,CAACC,YAAAA,GAAAA;AACrC,oBAAA,MAAMsC,SAAAA,GAAYjH,KAAAA,CAAMjB,UAAU,CAAC4F,YAAAA,CAAa;AAEhDsC,oBAAAA,SAAAA,CAAU5H,UAAU,CAACqF,OAAO,CAAC,CAACjE,SAAAA,GAAAA;AAC5B,wBAAA,IAAIA,UAAUd,IAAI,KAAK,eAAec,SAAAA,CAAUwG,SAAS,KAAKhF,GAAAA,EAAK;AACjExB,4BAAAA,SAAAA,CAAUwG,SAAS,GAAGP,eAAAA;AACxB,wBAAA;AACF,oBAAA,CAAA,CAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA;AACF,QAAA,CAAA;AACAQ,QAAAA,YAAAA,EAAc,CAAClH,KAAAA,EAAO8B,MAAAA,GAAAA;AACpB,YAAA,MAAM,EAAEN,IAAI,EAAES,GAAG,EAAE,GAAGH,OAAOC,OAAO;YAEpC,MAAM,EAAEO,WAAW,EAAEQ,IAAI,EAAEC,eAAe,EAAEC,aAAa,EAAE,GAAGxB,IAAAA;AAE9D,YAAA,MAAM7B,IAAAA,GAAOK,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI;AACpC,YAAA,IAAI,CAACtC,IAAAA,EAAM;AACT,gBAAA;AACF,YAAA;AAEA4B,YAAAA,UAAAA,CAAW5B,IAAAA,EAAM;gBACf6C,IAAAA,EAAM;AACJF,oBAAAA;AACF,iBAAA;AACAQ,gBAAAA,IAAAA;gBACAK,OAAAA,EAAS;AACPJ,oBAAAA;AACF,iBAAA;AACAC,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA,CAAA;AACAmE,QAAAA,eAAAA,EAAiB,CAACnH,KAAAA,EAAO8B,MAAAA,GAAAA;YACvB,MAAMG,GAAAA,GAAMH,OAAOC,OAAO;;AAG1B,YAAA,IAAI/B,MAAMjB,UAAU,CAACkD,IAAI,CAAC7B,MAAM,KAAK,KAAA,EAAO;gBAC1C,OAAOJ,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI;YAC9B,CAAA,MAAO;AACL9B,gBAAAA,SAAAA,CAAUH,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI,EAAE,SAAA,CAAA;AACnC,YAAA;;AAGA2E,YAAAA,MAAAA,CAAOC,IAAI,CAAC7G,KAAAA,CAAMhB,YAAY,CAAA,CAAE0F,OAAO,CAAC,CAACoC,cAAAA,GAAAA;AACvC,gBAAA,MAAMC,WAAAA,GAAc/G,KAAAA,CAAMhB,YAAY,CAAC8H,cAAAA,CAAe;;AAGtDC,gBAAAA,WAAAA,CAAY1H,UAAU,CAACqF,OAAO,CAAC,CAACjE,SAAAA,GAAAA;oBAC9B,IAAIA,SAAAA,CAAUd,IAAI,KAAK,aAAA,EAAe;wBACpC,MAAMkF,aAAAA,GAAgBpE,UAAU1B,UAAU,CAACqI,MAAM,CAC/C,CAACH,YAAuBA,SAAAA,KAAchF,GAAAA,CAAAA;AAGxCxB,wBAAAA,SAAAA,CAAU1B,UAAU,GAAG8F,aAAAA;AACzB,oBAAA;AACF,gBAAA,CAAA,CAAA;AAEAkC,gBAAAA,WAAAA,CAAY1H,UAAU,CAACqF,OAAO,CAAC,CAACjE,SAAAA,GAAAA;AAC9B,oBAAA,IAAIA,UAAUd,IAAI,KAAK,eAAec,SAAAA,CAAUwG,SAAS,KAAKhF,GAAAA,EAAK;wBACjEZ,qBAAAA,CAAsB0F,WAAAA,EAAatG,UAAUX,IAAI,CAAA;AACnD,oBAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA,CAAA,CAAA;;AAGA8G,YAAAA,MAAAA,CAAOC,IAAI,CAAC7G,KAAAA,CAAMjB,UAAU,CAAA,CAAE2F,OAAO,CAAC,CAACC,YAAAA,GAAAA;AACrC,gBAAA,MAAMsC,SAAAA,GAAYjH,KAAAA,CAAMjB,UAAU,CAAC4F,YAAAA,CAAa;AAEhDsC,gBAAAA,SAAAA,CAAU5H,UAAU,CAACqF,OAAO,CAAC,CAACjE,SAAAA,GAAAA;AAC5B,oBAAA,IAAIA,UAAUd,IAAI,KAAK,eAAec,SAAAA,CAAUwG,SAAS,KAAKhF,GAAAA,EAAK;wBACjEZ,qBAAAA,CAAsB4F,SAAAA,EAAWxG,UAAUX,IAAI,CAAA;AACjD,oBAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;AACAuH,QAAAA,iBAAAA,EAAmB,CAACrH,KAAAA,EAAO8B,MAAAA,GAAAA;YACzB,MAAMG,GAAAA,GAAMH,OAAOC,OAAO;AAC1B,YAAA,MAAMpC,IAAAA,GAAOK,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI;;YAGpC,IAAItC,IAAAA,CAAKS,MAAM,KAAK,KAAA,EAAO;gBACzB,OAAOJ,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI;YAChC,CAAA,MAAO;AACL9B,gBAAAA,SAAAA,CAAUR,IAAAA,EAAM,SAAA,CAAA;AAClB,YAAA;;AAGAiH,YAAAA,MAAAA,CAAOC,IAAI,CAAC7G,KAAAA,CAAMjB,UAAU,CAAA,CAAE2F,OAAO,CAAC,CAACC,YAAAA,GAAAA;AACrC,gBAAA,MAAMsC,SAAAA,GAAYjH,KAAAA,CAAMjB,UAAU,CAAC4F,YAAAA,CAAa;AAEhDsC,gBAAAA,SAAAA,CAAU5H,UAAU,CAACqF,OAAO,CAAC,CAACjE,SAAAA,GAAAA;AAC5B,oBAAA,IAAIA,UAAUd,IAAI,KAAK,cAAcc,SAAAA,CAAU8C,MAAM,KAAKtB,GAAAA,EAAK;wBAC7DZ,qBAAAA,CAAsB4F,SAAAA,EAAWxG,UAAUX,IAAI,CAAA;AACjD,oBAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA,CAAA,CAAA;;AAGA8G,YAAAA,MAAAA,CAAOC,IAAI,CAAC7G,KAAAA,CAAMhB,YAAY,CAAA,CAAE0F,OAAO,CAAC,CAACoC,cAAAA,GAAAA;AACvC,gBAAA,MAAMC,WAAAA,GAAc/G,KAAAA,CAAMhB,YAAY,CAAC8H,cAAAA,CAAe;AAEtDC,gBAAAA,WAAAA,CAAY1H,UAAU,CAACqF,OAAO,CAAC,CAACjE,SAAAA,GAAAA;AAC9B,oBAAA,IAAIA,UAAUd,IAAI,KAAK,cAAcc,SAAAA,CAAU8C,MAAM,KAAKtB,GAAAA,EAAK;wBAC7DZ,qBAAAA,CAAsB0F,WAAAA,EAAatG,UAAUX,IAAI,CAAA;AACnD,oBAAA;AACF,gBAAA,CAAA,CAAA;AACF,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;QAEAwH,WAAAA,CAAAA,CACEtH,KAAK,EACLuH,aAGE,EAAA;AAEF,YAAA,MAAM,EAAEzF,MAAM,EAAE0F,MAAM,EAAE,GAAGD,cAAcxF,OAAO;YAEhD,OAAQD,MAAAA;gBACN,KAAK,KAAA;AACH,oBAAA;wBACE,MAAMG,GAAAA,GAAMuF,OAAOvF,GAAG;wBAEtB,IAAIuF,MAAAA,CAAO9E,SAAS,KAAK,WAAA,EAAa;4BACpC1C,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI,GAAGuF,MAAAA;wBAC1B,CAAA,MAAO;4BACLxH,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI,GAAGuF,MAAAA;AAC5B,wBAAA;AACF,oBAAA;AACA,oBAAA;gBACF,KAAK,QAAA;AACH,oBAAA;wBACE,MAAMvF,GAAAA,GAAMuF,OAAOvF,GAAG;;wBAItB,IAAIuF,MAAAA,CAAO9E,SAAS,KAAK,WAAA,EAAa;AACpC,4BAAA,MAAMuE,SAAAA,GAAYjH,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI;4BACvCjC,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI,GAAG;AACtB,gCAAA,GAAGuF,MAAM;AACTpH,gCAAAA,MAAAA,EAAQ6G,SAAAA,EAAW7G,MAAAA,KAAW,KAAA,GAAQ,KAAA,GAAQoH,OAAOpH;AACvD,6BAAA;wBACF,CAAA,MAAO;AACL,4BAAA,MAAM2G,WAAAA,GAAc/G,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI;4BAC3CjC,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI,GAAG;AACxB,gCAAA,GAAGuF,MAAM;AACTpH,gCAAAA,MAAAA,EAAQ2G,WAAAA,EAAa3G,MAAAA,KAAW,KAAA,GAAQ,KAAA,GAAQoH,OAAOpH;AACzD,6BAAA;AACF,wBAAA;AACF,oBAAA;AACA,oBAAA;gBACF,KAAK,QAAA;AAAU,oBAAA;wBACb,MAAM6B,GAAAA,GAAMuF,OAAOvF,GAAG;wBACtB,MAAMwF,WAAAA,GAAcD,MAAAA,CAAO9E,SAAS,KAAK,WAAA;;AAEzC,wBAAA,IAAI+E,WAAAA,EAAa;AACf,4BAAA,MAAMC,MAAAA,GAAS1H,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI;AACpC,4BAAA,IAAI,CAACyF,MAAAA,EAAQ;AACX,gCAAA;AACF,4BAAA;AAEA,4BAAA,MAAMC,YAAY3H,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI,EAAE7B,MAAAA,KAAW,KAAA;AACpD,4BAAA,IAAIuH,SAAAA,EAAW;gCACb,OAAO3H,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI;4BAC9B,CAAA,MAAO;AACLjC,gCAAAA,KAAAA,CAAMjB,UAAU,CAACkD,GAAAA,CAAI,CAAC7B,MAAM,GAAG,SAAA;AACjC,4BAAA;wBACF,CAAA,MAAO;AACL,4BAAA,MAAMsH,MAAAA,GAAS1H,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI;AACtC,4BAAA,IAAI,CAACyF,MAAAA,EAAQ;AACX,gCAAA;AACF,4BAAA;AAEA,4BAAA,MAAMC,YAAY3H,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI,EAAE7B,MAAAA,KAAW,KAAA;AACtD,4BAAA,IAAIuH,SAAAA,EAAW;gCACb,OAAO3H,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI;4BAChC,CAAA,MAAO;AACLjC,gCAAAA,KAAAA,CAAMhB,YAAY,CAACiD,GAAAA,CAAI,CAAC7B,MAAM,GAAG,SAAA;AACnC,4BAAA;AACF,wBAAA;AAEA,wBAAA;AACF,oBAAA;AACF;AACF,QAAA;AACF;AACF,CAAA,EAEA;IACEwH,KAAAA,EAAO,EAAA;IACPC,yBAAAA,EAA2B;AAAC,QAAA,cAAA;AAAgB,QAAA;AAAO,KAAA;AACnDC,IAAAA,aAAAA,EAAe,CAAC9H,KAAAA,GAAAA;AACd,QAAA,IAAI,CAACA,KAAAA,EAAO;AACV,YAAA,OAAO,EAAC;AACV,QAAA;QAEA,OAAO;AACLjB,YAAAA,UAAAA,EAAYiB,MAAMjB,UAAU;AAC5BC,YAAAA,YAAAA,EAAcgB,MAAMhB;AACtB,SAAA;AACF,IAAA,CAAA;AACA+I,IAAAA,OAAAA,EAAS,CAAC/H,KAAAA,GAAAA;QACRA,KAAAA,CAAMjB,UAAU,GAAGiB,KAAAA,CAAMf,iBAAiB;QAC1Ce,KAAAA,CAAMhB,YAAY,GAAGgB,KAAAA,CAAMd,mBAAmB;AAChD,IAAA;AACF,CAAA,CAAA;MAIW,EAAE8I,OAAO,EAAEC,OAAO,EAAE,GAAGvG;;;;;;"}
|
|
@@ -270,6 +270,7 @@ const slice = createUndoRedoSlice({
|
|
|
270
270
|
targetUid: attributeToSet.target
|
|
271
271
|
});
|
|
272
272
|
const previousTargetAttributeIndex = findAttributeIndex(previousTarget, previousAttribute.targetAttribute ?? '');
|
|
273
|
+
const previousTargetAttribute = previousTargetAttributeIndex !== -1 ? previousTarget.attributes[previousTargetAttributeIndex] : undefined;
|
|
273
274
|
// remove old targetAttribute
|
|
274
275
|
if (previousAttribute.targetAttribute) {
|
|
275
276
|
removeAttributeByName(previousTarget, previousAttribute.targetAttribute);
|
|
@@ -285,6 +286,9 @@ const slice = createUndoRedoSlice({
|
|
|
285
286
|
target: type.uid,
|
|
286
287
|
private: previousAttribute.private ?? attributeToSet.private,
|
|
287
288
|
pluginOptions: previousAttribute.pluginOptions ?? attributeToSet.pluginOptions,
|
|
289
|
+
...previousTarget.uid === newTarget.uid && previousTargetAttribute?.conditions ? {
|
|
290
|
+
conditions: previousTargetAttribute.conditions
|
|
291
|
+
} : {},
|
|
288
292
|
status: 'CHANGED'
|
|
289
293
|
};
|
|
290
294
|
// create or recreate(at old index) targetAttribute
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/DataManager/reducer.ts"],"sourcesContent":["import { PayloadAction } from '@reduxjs/toolkit';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { makeUnique } from '../../utils/makeUnique';\n\nimport { createUndoRedoSlice } from './undoRedo';\n\nimport type {\n Components,\n ContentTypes,\n ContentType,\n Component,\n Status,\n AnyAttribute,\n} from '../../types';\nimport type { Internal, Schema, Struct, UID } from '@strapi/types';\n\nexport interface DataManagerStateType {\n components: Components;\n initialComponents: Components;\n contentTypes: ContentTypes;\n initialContentTypes: ContentTypes;\n reservedNames: {\n models: string[];\n attributes: string[];\n };\n isLoading: boolean;\n [key: string]: unknown;\n}\n\nconst initialState: DataManagerStateType = {\n components: {},\n contentTypes: {},\n initialComponents: {},\n initialContentTypes: {},\n reservedNames: {\n models: [],\n attributes: [],\n },\n isLoading: true,\n};\n\nconst ONE_SIDE_RELATIONS = ['oneWay', 'manyWay'];\n\ntype AttributeMutation = AnyAttribute & {\n createComponent?: unknown;\n};\n\ntype PluginOptions = Record<string, unknown>;\n\nconst getOppositeRelation = (originalRelation?: Schema.Attribute.RelationKind.Any) => {\n if (originalRelation === 'manyToOne') {\n return 'oneToMany';\n }\n\n if (originalRelation === 'oneToMany') {\n return 'manyToOne';\n }\n\n return originalRelation;\n};\n\nconst findAttributeIndex = (type: ContentType | Component, attributeToFind?: string) => {\n return type.attributes.findIndex(({ name }: { name: string }) => name === attributeToFind);\n};\n\ntype InitPayload = {\n components: Record<string, Component>;\n contentTypes: Record<string, ContentType>;\n reservedNames: DataManagerStateType['reservedNames'];\n};\n\ntype AddAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype AddCreateComponentToDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dynamicZoneTarget: string;\n componentsToAdd: Internal.UID.Component[];\n};\n\ntype AddCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype ChangeDynamicZoneComponentsPayload = {\n dynamicZoneTarget: string;\n newComponents: Internal.UID.Component[];\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype CreateComponentSchemaPayload = {\n uid: string;\n data: {\n icon?: string;\n displayName: string;\n };\n componentCategory: string;\n};\n\ntype CreateSchemaPayload = {\n uid: string;\n data: {\n displayName: string;\n singularName: string;\n pluralName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n};\n\ntype EditAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype EditCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype RemoveComponentFromDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dzName: string;\n componentToRemoveIndex: number;\n};\n\ntype RemoveFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n attributeToRemoveName: string;\n};\n\ntype UpdateComponentSchemaPayload = {\n data: {\n icon?: string;\n displayName: string;\n };\n uid: Internal.UID.Component;\n};\n\ntype UpdateComponentUIDPayload = {\n uid: Internal.UID.Component;\n newComponentUID: Internal.UID.Component;\n};\n\ntype UpdateSchemaPayload = {\n data: {\n displayName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n uid: string;\n};\n\ntype MoveAttributePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n from: number;\n to: number;\n};\n\nconst getType = (\n state: DataManagerStateType,\n {\n forTarget,\n targetUid,\n }: {\n forTarget: Struct.ModelType;\n targetUid: string;\n }\n) => {\n return forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n};\n\n// TODO: use initial state when chnaging back to the initial state without knowing\nconst setStatus = (type: ContentType | Component, status: Status) => {\n switch (type.status) {\n case 'NEW':\n case 'REMOVED': {\n break;\n }\n default: {\n type.status = status;\n }\n }\n};\n\nconst getNewStatus = (oldStatus: Status | undefined, newStatus: Status) => {\n if (oldStatus === 'NEW' || oldStatus === 'REMOVED') {\n return oldStatus;\n }\n\n return newStatus;\n};\n\nconst setAttributeStatus = (attribute: { status?: Status }, status: Status) => {\n attribute.status = getNewStatus(attribute.status, status);\n};\n\nconst createAttribute = (properties: Record<string, unknown>): AnyAttribute => {\n return {\n ...properties,\n status: 'NEW',\n } as AnyAttribute;\n};\n\nconst setAttributeAt = (type: ContentType | Component, index: number, attribute: AnyAttribute) => {\n const previousAttribute = type.attributes[index];\n\n const newStatus = getNewStatus(previousAttribute.status, 'CHANGED');\n\n type.attributes[index] = {\n ...attribute,\n status: newStatus,\n };\n\n setStatus(type, 'CHANGED');\n};\n\nconst pushAttribute = (type: ContentType | Component, attribute: AnyAttribute) => {\n type.attributes.push(attribute);\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeAt = (type: ContentType | Component, index: number) => {\n const attr = type.attributes[index];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(index, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst replaceAttributeAt = (\n type: ContentType | Component,\n index: number,\n attribute: AnyAttribute\n) => {\n type.attributes[index] = attribute;\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeByName = (type: ContentType | Component, name: string) => {\n const idx = type.attributes.findIndex((attr) => attr.name === name);\n\n const attr = type.attributes[idx];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(idx, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst updateType = (type: ContentType | Component, data: Record<string, unknown>) => {\n merge(type, data);\n setStatus(type, 'CHANGED');\n};\n\nconst slice = createUndoRedoSlice(\n {\n name: 'data-manager',\n initialState,\n reducers: {\n init: (state, action: PayloadAction<InitPayload>) => {\n const { components, contentTypes, reservedNames } = action.payload;\n\n state.components = components;\n state.initialComponents = components;\n state.initialContentTypes = contentTypes;\n state.contentTypes = contentTypes;\n state.reservedNames = reservedNames;\n state.isLoading = false;\n },\n createComponentSchema: (state, action: PayloadAction<CreateComponentSchemaPayload>) => {\n const { uid, data, componentCategory } = action.payload;\n\n const newSchema: Component = {\n uid: uid as Internal.UID.Component,\n status: 'NEW',\n category: componentCategory,\n modelName: data.displayName,\n globalId: data.displayName,\n info: {\n icon: data.icon,\n displayName: data.displayName,\n },\n attributes: [],\n modelType: 'component',\n };\n\n state.components[uid as string] = newSchema;\n },\n createSchema: (state, action: PayloadAction<CreateSchemaPayload>) => {\n const { uid, data } = action.payload;\n\n const { displayName, singularName, pluralName, kind, draftAndPublish, pluginOptions } =\n data;\n\n const newSchema: ContentType = {\n uid: uid as Internal.UID.ContentType,\n status: 'NEW',\n visible: true,\n modelType: 'contentType',\n restrictRelationsTo: null,\n attributes: [],\n kind,\n modelName: displayName,\n globalId: displayName,\n options: {\n draftAndPublish,\n },\n info: {\n displayName,\n singularName,\n pluralName,\n },\n pluginOptions,\n };\n\n state.contentTypes[uid] = newSchema;\n },\n addAttribute: (state, action: PayloadAction<AddAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = createAttribute(omit(attributeToSet, 'createComponent'));\n\n if (attribute.type === 'relation') {\n const target = attribute.target;\n const targetAttribute = attribute.targetAttribute || null;\n const relation = attribute.relation;\n const relationType = getRelationType(relation, targetAttribute);\n\n const isBidirectionalRelation =\n relationType !== undefined && !['oneWay', 'manyWay'].includes(relationType);\n\n if (isBidirectionalRelation) {\n const oppositeAttribute = createAttribute({\n name: targetAttribute,\n relation: getOppositeRelation(relationType),\n target: type.uid,\n targetAttribute: attribute.name,\n type: 'relation',\n private: attribute.private,\n });\n\n const targetType = getType(state, { forTarget, targetUid: target });\n pushAttribute(targetType, oppositeAttribute);\n }\n }\n\n pushAttribute(type, attribute);\n setStatus(type, 'CHANGED');\n },\n moveAttribute: (state, action: PayloadAction<MoveAttributePayload>) => {\n const { forTarget, targetUid, from, to } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = type.attributes[from];\n type.attributes.splice(from, 1);\n type.attributes.splice(to, 0, attribute);\n setStatus(type, 'CHANGED');\n },\n addCustomFieldAttribute: (state, action: PayloadAction<AddCustomFieldAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n pushAttribute(type, createAttribute(attributeToSet));\n },\n addCreatedComponentToDynamicZone: (\n state,\n action: PayloadAction<AddCreateComponentToDynamicZonePayload>\n ) => {\n const { dynamicZoneTarget, componentsToAdd, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n componentsToAdd.forEach((componentUid: Internal.UID.Component) => {\n attr.components.push(componentUid);\n });\n\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n setStatus(type, 'CHANGED');\n },\n changeDynamicZoneComponents: (\n state,\n action: PayloadAction<ChangeDynamicZoneComponentsPayload>\n ) => {\n const { dynamicZoneTarget, newComponents, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n const currentDZComponents = attr.components;\n\n const updatedComponents = makeUnique([...currentDZComponents, ...newComponents]);\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components = updatedComponents;\n },\n editAttribute: (state, action: PayloadAction<EditAttributePayload>) => {\n const { name, attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, name);\n\n if (initialAttributeIndex === -1) {\n return;\n }\n\n const previousAttribute = type.attributes[initialAttributeIndex];\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n\n if (previousAttribute.type !== attributeToSet.type) {\n return;\n }\n\n if (previousAttribute.type !== 'relation' || attributeToSet.type !== 'relation') {\n return;\n }\n\n const previousTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: previousAttribute.target,\n });\n const newTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: attributeToSet.target,\n });\n\n const previousTargetAttributeIndex = findAttributeIndex(\n previousTarget,\n previousAttribute.targetAttribute ?? ''\n );\n\n // remove old targetAttribute\n if (previousAttribute.targetAttribute) {\n removeAttributeByName(previousTarget, previousAttribute.targetAttribute);\n }\n\n const newRelationType = getRelationType(\n attributeToSet.relation,\n attributeToSet.targetAttribute\n );\n const isBidirectionnal =\n newRelationType !== undefined && !ONE_SIDE_RELATIONS.includes(newRelationType);\n\n if (isBidirectionnal) {\n const newTargetAttribute = {\n name: attributeToSet.targetAttribute,\n type: 'relation',\n relation: getOppositeRelation(attributeToSet.relation),\n targetAttribute: attributeToSet.name,\n target: type.uid,\n private: previousAttribute.private ?? attributeToSet.private,\n pluginOptions: previousAttribute.pluginOptions ?? attributeToSet.pluginOptions,\n status: 'CHANGED',\n } as AnyAttribute;\n\n // create or recreate(at old index) targetAttribute\n if (previousTargetAttributeIndex !== -1 && previousTarget.uid === newTarget.uid) {\n // re-create at previousIdx if possible\n replaceAttributeAt(newTarget, previousTargetAttributeIndex, newTargetAttribute);\n } else {\n pushAttribute(newTarget, {\n ...newTargetAttribute,\n status: 'NEW',\n });\n }\n }\n },\n editCustomFieldAttribute: (state, action: PayloadAction<EditCustomFieldAttributePayload>) => {\n const { forTarget, targetUid, name, attributeToSet } = action.payload;\n\n const initialAttributeName = name;\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, initialAttributeName);\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n },\n reloadPlugin: () => {\n return initialState;\n },\n removeComponentFromDynamicZone: (\n state,\n action: PayloadAction<RemoveComponentFromDynamicZonePayload>\n ) => {\n const { dzName, componentToRemoveIndex, forTarget, targetUid } = action.payload;\n\n const type =\n forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n\n if (!type) {\n return;\n }\n\n const dzAttributeIndex = findAttributeIndex(type, dzName);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components.splice(componentToRemoveIndex, 1);\n },\n removeField: (state, action: PayloadAction<RemoveFieldPayload>) => {\n const { forTarget, targetUid, attributeToRemoveName } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attributeToRemoveIndex = findAttributeIndex(type, attributeToRemoveName);\n const attribute = type.attributes[attributeToRemoveIndex];\n\n if (attribute.type === 'relation') {\n const { target, relation, targetAttribute: targetAttributeName } = attribute;\n const relationType = getRelationType(relation, targetAttributeName);\n\n const isBidirectionnal = !ONE_SIDE_RELATIONS.includes(relationType!);\n\n if (isBidirectionnal && targetAttributeName) {\n const targetContentType = getType(state, { forTarget, targetUid: target });\n const targetAttributeIndex = findAttributeIndex(targetContentType, targetAttributeName);\n\n removeAttributeAt(targetContentType, targetAttributeIndex);\n }\n }\n\n // Find all uid fields that have the targetField set to the field we are removing\n type.attributes.forEach((attribute) => {\n if (attribute.type === 'uid') {\n if (attribute.targetField === attributeToRemoveName) {\n delete attribute.targetField;\n }\n }\n });\n\n removeAttributeAt(type, attributeToRemoveIndex);\n },\n // only edits a component in practice\n updateComponentSchema: (state, action: PayloadAction<UpdateComponentSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName: data.displayName,\n icon: data.icon,\n },\n });\n },\n updateComponentUid: (state, action: PayloadAction<UpdateComponentUIDPayload>) => {\n const { newComponentUID, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type || type.status !== 'NEW') {\n return;\n }\n\n if (newComponentUID !== uid) {\n const newType = { ...type, uid: newComponentUID };\n state.components[newComponentUID] = newType;\n delete state.components[uid];\n\n // update the uid in the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.map((component: UID.Component) => {\n if (component === uid) {\n return newComponentUID;\n }\n\n return component;\n });\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n\n // update the uid in the other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n }\n },\n updateSchema: (state, action: PayloadAction<UpdateSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const { displayName, kind, draftAndPublish, pluginOptions } = data;\n\n const type = state.contentTypes[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName,\n },\n kind,\n options: {\n draftAndPublish,\n },\n pluginOptions,\n });\n },\n deleteComponent: (state, action: PayloadAction<Internal.UID.Component>) => {\n const uid = action.payload;\n\n // remove the compo from the components\n if (state.components[uid].status === 'NEW') {\n delete state.components[uid];\n } else {\n setStatus(state.components[uid], 'REMOVED');\n }\n\n // remove the compo from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n // remove from dynamic zones\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.filter(\n (component: unknown) => component !== uid\n );\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n\n // remove the compo from other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n },\n deleteContentType: (state, action: PayloadAction<Internal.UID.ContentType>) => {\n const uid = action.payload;\n const type = state.contentTypes[uid];\n\n // just drop new content types\n if (type.status === 'NEW') {\n delete state.contentTypes[uid];\n } else {\n setStatus(type, 'REMOVED');\n }\n\n // remove the content type from the components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n\n // remove the content type from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n },\n\n applyChange(\n state,\n reducerAction: PayloadAction<{\n action: 'add' | 'update' | 'delete';\n schema: ContentType | Component;\n }>\n ) {\n const { action, schema } = reducerAction.payload;\n\n switch (action) {\n case 'add':\n {\n const uid = schema.uid;\n\n if (schema.modelType === 'component') {\n state.components[uid] = schema;\n } else {\n state.contentTypes[uid] = schema;\n }\n }\n break;\n case 'update':\n {\n const uid = schema.uid;\n\n // Find the schema, if the state was \"create\", we should keep it as it was before\n\n if (schema.modelType === 'component') {\n const component = state.components[uid];\n state.components[uid] = {\n ...schema,\n status: component?.status === 'NEW' ? 'NEW' : schema.status,\n };\n } else {\n const contentType = state.contentTypes[uid];\n state.contentTypes[uid] = {\n ...schema,\n status: contentType?.status === 'NEW' ? 'NEW' : schema.status,\n };\n }\n }\n break;\n case 'delete': {\n const uid = schema.uid;\n const isComponent = schema.modelType === 'component';\n // It's a component that has yet not been added\n if (isComponent) {\n const exists = state.components[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.components[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.components[uid];\n } else {\n state.components[uid].status = 'REMOVED';\n }\n } else {\n const exists = state.contentTypes[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.contentTypes[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.contentTypes[uid];\n } else {\n state.contentTypes[uid].status = 'REMOVED';\n }\n }\n\n break;\n }\n }\n },\n },\n },\n\n {\n limit: 50,\n excludeActionsFromHistory: ['reloadPlugin', 'init'],\n stateSelector: (state) => {\n if (!state) {\n return {};\n }\n\n return {\n components: state.components,\n contentTypes: state.contentTypes,\n };\n },\n discard: (state) => {\n state.components = state.initialComponents;\n state.contentTypes = state.initialContentTypes;\n },\n }\n);\n\nexport type State = ReturnType<typeof slice.reducer>;\nexport const { reducer, actions } = slice;\nexport { initialState };\n"],"names":["initialState","components","contentTypes","initialComponents","initialContentTypes","reservedNames","models","attributes","isLoading","ONE_SIDE_RELATIONS","getOppositeRelation","originalRelation","findAttributeIndex","type","attributeToFind","findIndex","name","getType","state","forTarget","targetUid","setStatus","status","getNewStatus","oldStatus","newStatus","setAttributeStatus","attribute","createAttribute","properties","setAttributeAt","index","previousAttribute","pushAttribute","push","removeAttributeAt","attr","splice","replaceAttributeAt","removeAttributeByName","idx","updateType","data","merge","slice","createUndoRedoSlice","reducers","init","action","payload","createComponentSchema","uid","componentCategory","newSchema","category","modelName","displayName","globalId","info","icon","modelType","createSchema","singularName","pluralName","kind","draftAndPublish","pluginOptions","visible","restrictRelationsTo","options","addAttribute","attributeToSet","omit","target","targetAttribute","relation","relationType","getRelationType","isBidirectionalRelation","undefined","includes","oppositeAttribute","private","targetType","moveAttribute","from","to","addCustomFieldAttribute","addCreatedComponentToDynamicZone","dynamicZoneTarget","componentsToAdd","dzAttributeIndex","forEach","componentUid","changeDynamicZoneComponents","newComponents","currentDZComponents","updatedComponents","makeUnique","editAttribute","initialAttributeIndex","previousTarget","newTarget","previousTargetAttributeIndex","newRelationType","isBidirectionnal","newTargetAttribute","editCustomFieldAttribute","initialAttributeName","reloadPlugin","removeComponentFromDynamicZone","dzName","componentToRemoveIndex","removeField","attributeToRemoveName","attributeToRemoveIndex","targetAttributeName","targetContentType","targetAttributeIndex","targetField","updateComponentSchema","updateComponentUid","newComponentUID","newType","Object","keys","contentTypeUid","contentType","map","component","updateSchema","deleteComponent","filter","deleteContentType","applyChange","reducerAction","schema","isComponent","exists","isUnsaved","limit","excludeActionsFromHistory","stateSelector","discard","reducer","actions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/DataManager/reducer.ts"],"sourcesContent":["import { PayloadAction } from '@reduxjs/toolkit';\nimport merge from 'lodash/merge';\nimport omit from 'lodash/omit';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { makeUnique } from '../../utils/makeUnique';\n\nimport { createUndoRedoSlice } from './undoRedo';\n\nimport type {\n Components,\n ContentTypes,\n ContentType,\n Component,\n Status,\n AnyAttribute,\n} from '../../types';\nimport type { Internal, Schema, Struct, UID } from '@strapi/types';\n\nexport interface DataManagerStateType {\n components: Components;\n initialComponents: Components;\n contentTypes: ContentTypes;\n initialContentTypes: ContentTypes;\n reservedNames: {\n models: string[];\n attributes: string[];\n };\n isLoading: boolean;\n [key: string]: unknown;\n}\n\nconst initialState: DataManagerStateType = {\n components: {},\n contentTypes: {},\n initialComponents: {},\n initialContentTypes: {},\n reservedNames: {\n models: [],\n attributes: [],\n },\n isLoading: true,\n};\n\nconst ONE_SIDE_RELATIONS = ['oneWay', 'manyWay'];\n\ntype AttributeMutation = AnyAttribute & {\n createComponent?: unknown;\n};\n\ntype PluginOptions = Record<string, unknown>;\n\nconst getOppositeRelation = (originalRelation?: Schema.Attribute.RelationKind.Any) => {\n if (originalRelation === 'manyToOne') {\n return 'oneToMany';\n }\n\n if (originalRelation === 'oneToMany') {\n return 'manyToOne';\n }\n\n return originalRelation;\n};\n\nconst findAttributeIndex = (type: ContentType | Component, attributeToFind?: string) => {\n return type.attributes.findIndex(({ name }: { name: string }) => name === attributeToFind);\n};\n\ntype InitPayload = {\n components: Record<string, Component>;\n contentTypes: Record<string, ContentType>;\n reservedNames: DataManagerStateType['reservedNames'];\n};\n\ntype AddAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype AddCreateComponentToDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dynamicZoneTarget: string;\n componentsToAdd: Internal.UID.Component[];\n};\n\ntype AddCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype ChangeDynamicZoneComponentsPayload = {\n dynamicZoneTarget: string;\n newComponents: Internal.UID.Component[];\n forTarget: Struct.ModelType;\n targetUid: string;\n};\n\ntype CreateComponentSchemaPayload = {\n uid: string;\n data: {\n icon?: string;\n displayName: string;\n };\n componentCategory: string;\n};\n\ntype CreateSchemaPayload = {\n uid: string;\n data: {\n displayName: string;\n singularName: string;\n pluralName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n};\n\ntype EditAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype EditCustomFieldAttributePayload = {\n attributeToSet: AttributeMutation;\n forTarget: Struct.ModelType;\n targetUid: string;\n name: string;\n};\n\ntype RemoveComponentFromDynamicZonePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n dzName: string;\n componentToRemoveIndex: number;\n};\n\ntype RemoveFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n attributeToRemoveName: string;\n};\n\ntype UpdateComponentSchemaPayload = {\n data: {\n icon?: string;\n displayName: string;\n };\n uid: Internal.UID.Component;\n};\n\ntype UpdateComponentUIDPayload = {\n uid: Internal.UID.Component;\n newComponentUID: Internal.UID.Component;\n};\n\ntype UpdateSchemaPayload = {\n data: {\n displayName: string;\n kind: Struct.ContentTypeKind;\n draftAndPublish: boolean;\n pluginOptions: PluginOptions;\n };\n uid: string;\n};\n\ntype MoveAttributePayload = {\n forTarget: Struct.ModelType;\n targetUid: string;\n from: number;\n to: number;\n};\n\nconst getType = (\n state: DataManagerStateType,\n {\n forTarget,\n targetUid,\n }: {\n forTarget: Struct.ModelType;\n targetUid: string;\n }\n) => {\n return forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n};\n\n// TODO: use initial state when chnaging back to the initial state without knowing\nconst setStatus = (type: ContentType | Component, status: Status) => {\n switch (type.status) {\n case 'NEW':\n case 'REMOVED': {\n break;\n }\n default: {\n type.status = status;\n }\n }\n};\n\nconst getNewStatus = (oldStatus: Status | undefined, newStatus: Status) => {\n if (oldStatus === 'NEW' || oldStatus === 'REMOVED') {\n return oldStatus;\n }\n\n return newStatus;\n};\n\nconst setAttributeStatus = (attribute: { status?: Status }, status: Status) => {\n attribute.status = getNewStatus(attribute.status, status);\n};\n\nconst createAttribute = (properties: Record<string, unknown>): AnyAttribute => {\n return {\n ...properties,\n status: 'NEW',\n } as AnyAttribute;\n};\n\nconst setAttributeAt = (type: ContentType | Component, index: number, attribute: AnyAttribute) => {\n const previousAttribute = type.attributes[index];\n\n const newStatus = getNewStatus(previousAttribute.status, 'CHANGED');\n\n type.attributes[index] = {\n ...attribute,\n status: newStatus,\n };\n\n setStatus(type, 'CHANGED');\n};\n\nconst pushAttribute = (type: ContentType | Component, attribute: AnyAttribute) => {\n type.attributes.push(attribute);\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeAt = (type: ContentType | Component, index: number) => {\n const attr = type.attributes[index];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(index, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst replaceAttributeAt = (\n type: ContentType | Component,\n index: number,\n attribute: AnyAttribute\n) => {\n type.attributes[index] = attribute;\n setStatus(type, 'CHANGED');\n};\n\nconst removeAttributeByName = (type: ContentType | Component, name: string) => {\n const idx = type.attributes.findIndex((attr) => attr.name === name);\n\n const attr = type.attributes[idx];\n\n setStatus(type, 'CHANGED');\n\n if (attr.status === 'NEW') {\n type.attributes.splice(idx, 1);\n } else {\n setAttributeStatus(attr, 'REMOVED');\n }\n};\n\nconst updateType = (type: ContentType | Component, data: Record<string, unknown>) => {\n merge(type, data);\n setStatus(type, 'CHANGED');\n};\n\nconst slice = createUndoRedoSlice(\n {\n name: 'data-manager',\n initialState,\n reducers: {\n init: (state, action: PayloadAction<InitPayload>) => {\n const { components, contentTypes, reservedNames } = action.payload;\n\n state.components = components;\n state.initialComponents = components;\n state.initialContentTypes = contentTypes;\n state.contentTypes = contentTypes;\n state.reservedNames = reservedNames;\n state.isLoading = false;\n },\n createComponentSchema: (state, action: PayloadAction<CreateComponentSchemaPayload>) => {\n const { uid, data, componentCategory } = action.payload;\n\n const newSchema: Component = {\n uid: uid as Internal.UID.Component,\n status: 'NEW',\n category: componentCategory,\n modelName: data.displayName,\n globalId: data.displayName,\n info: {\n icon: data.icon,\n displayName: data.displayName,\n },\n attributes: [],\n modelType: 'component',\n };\n\n state.components[uid as string] = newSchema;\n },\n createSchema: (state, action: PayloadAction<CreateSchemaPayload>) => {\n const { uid, data } = action.payload;\n\n const { displayName, singularName, pluralName, kind, draftAndPublish, pluginOptions } =\n data;\n\n const newSchema: ContentType = {\n uid: uid as Internal.UID.ContentType,\n status: 'NEW',\n visible: true,\n modelType: 'contentType',\n restrictRelationsTo: null,\n attributes: [],\n kind,\n modelName: displayName,\n globalId: displayName,\n options: {\n draftAndPublish,\n },\n info: {\n displayName,\n singularName,\n pluralName,\n },\n pluginOptions,\n };\n\n state.contentTypes[uid] = newSchema;\n },\n addAttribute: (state, action: PayloadAction<AddAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = createAttribute(omit(attributeToSet, 'createComponent'));\n\n if (attribute.type === 'relation') {\n const target = attribute.target;\n const targetAttribute = attribute.targetAttribute || null;\n const relation = attribute.relation;\n const relationType = getRelationType(relation, targetAttribute);\n\n const isBidirectionalRelation =\n relationType !== undefined && !['oneWay', 'manyWay'].includes(relationType);\n\n if (isBidirectionalRelation) {\n const oppositeAttribute = createAttribute({\n name: targetAttribute,\n relation: getOppositeRelation(relationType),\n target: type.uid,\n targetAttribute: attribute.name,\n type: 'relation',\n private: attribute.private,\n });\n\n const targetType = getType(state, { forTarget, targetUid: target });\n pushAttribute(targetType, oppositeAttribute);\n }\n }\n\n pushAttribute(type, attribute);\n setStatus(type, 'CHANGED');\n },\n moveAttribute: (state, action: PayloadAction<MoveAttributePayload>) => {\n const { forTarget, targetUid, from, to } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attribute = type.attributes[from];\n type.attributes.splice(from, 1);\n type.attributes.splice(to, 0, attribute);\n setStatus(type, 'CHANGED');\n },\n addCustomFieldAttribute: (state, action: PayloadAction<AddCustomFieldAttributePayload>) => {\n const { attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n pushAttribute(type, createAttribute(attributeToSet));\n },\n addCreatedComponentToDynamicZone: (\n state,\n action: PayloadAction<AddCreateComponentToDynamicZonePayload>\n ) => {\n const { dynamicZoneTarget, componentsToAdd, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n componentsToAdd.forEach((componentUid: Internal.UID.Component) => {\n attr.components.push(componentUid);\n });\n\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n setStatus(type, 'CHANGED');\n },\n changeDynamicZoneComponents: (\n state,\n action: PayloadAction<ChangeDynamicZoneComponentsPayload>\n ) => {\n const { dynamicZoneTarget, newComponents, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const dzAttributeIndex = findAttributeIndex(type, dynamicZoneTarget);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n const currentDZComponents = attr.components;\n\n const updatedComponents = makeUnique([...currentDZComponents, ...newComponents]);\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components = updatedComponents;\n },\n editAttribute: (state, action: PayloadAction<EditAttributePayload>) => {\n const { name, attributeToSet, forTarget, targetUid } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, name);\n\n if (initialAttributeIndex === -1) {\n return;\n }\n\n const previousAttribute = type.attributes[initialAttributeIndex];\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n\n if (previousAttribute.type !== attributeToSet.type) {\n return;\n }\n\n if (previousAttribute.type !== 'relation' || attributeToSet.type !== 'relation') {\n return;\n }\n\n const previousTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: previousAttribute.target,\n });\n const newTarget = getType(state, {\n forTarget: 'contentType',\n targetUid: attributeToSet.target,\n });\n\n const previousTargetAttributeIndex = findAttributeIndex(\n previousTarget,\n previousAttribute.targetAttribute ?? ''\n );\n const previousTargetAttribute =\n previousTargetAttributeIndex !== -1\n ? previousTarget.attributes[previousTargetAttributeIndex]\n : undefined;\n\n // remove old targetAttribute\n if (previousAttribute.targetAttribute) {\n removeAttributeByName(previousTarget, previousAttribute.targetAttribute);\n }\n\n const newRelationType = getRelationType(\n attributeToSet.relation,\n attributeToSet.targetAttribute\n );\n const isBidirectionnal =\n newRelationType !== undefined && !ONE_SIDE_RELATIONS.includes(newRelationType);\n\n if (isBidirectionnal) {\n const newTargetAttribute = {\n name: attributeToSet.targetAttribute,\n type: 'relation',\n relation: getOppositeRelation(attributeToSet.relation),\n targetAttribute: attributeToSet.name,\n target: type.uid,\n private: previousAttribute.private ?? attributeToSet.private,\n pluginOptions: previousAttribute.pluginOptions ?? attributeToSet.pluginOptions,\n ...(previousTarget.uid === newTarget.uid && previousTargetAttribute?.conditions\n ? { conditions: previousTargetAttribute.conditions }\n : {}),\n status: 'CHANGED',\n } as AnyAttribute;\n\n // create or recreate(at old index) targetAttribute\n if (previousTargetAttributeIndex !== -1 && previousTarget.uid === newTarget.uid) {\n // re-create at previousIdx if possible\n replaceAttributeAt(newTarget, previousTargetAttributeIndex, newTargetAttribute);\n } else {\n pushAttribute(newTarget, {\n ...newTargetAttribute,\n status: 'NEW',\n });\n }\n }\n },\n editCustomFieldAttribute: (state, action: PayloadAction<EditCustomFieldAttributePayload>) => {\n const { forTarget, targetUid, name, attributeToSet } = action.payload;\n\n const initialAttributeName = name;\n const type = getType(state, { forTarget, targetUid });\n\n const initialAttributeIndex = findAttributeIndex(type, initialAttributeName);\n\n setAttributeAt(type, initialAttributeIndex, attributeToSet as AnyAttribute);\n },\n reloadPlugin: () => {\n return initialState;\n },\n removeComponentFromDynamicZone: (\n state,\n action: PayloadAction<RemoveComponentFromDynamicZonePayload>\n ) => {\n const { dzName, componentToRemoveIndex, forTarget, targetUid } = action.payload;\n\n const type =\n forTarget === 'contentType' ? state.contentTypes[targetUid] : state.components[targetUid];\n\n if (!type) {\n return;\n }\n\n const dzAttributeIndex = findAttributeIndex(type, dzName);\n const attr = type.attributes[dzAttributeIndex] as Schema.Attribute.DynamicZone;\n\n setStatus(type, 'CHANGED');\n setAttributeStatus(attr as AnyAttribute, 'CHANGED');\n attr.components.splice(componentToRemoveIndex, 1);\n },\n removeField: (state, action: PayloadAction<RemoveFieldPayload>) => {\n const { forTarget, targetUid, attributeToRemoveName } = action.payload;\n\n const type = getType(state, { forTarget, targetUid });\n\n const attributeToRemoveIndex = findAttributeIndex(type, attributeToRemoveName);\n const attribute = type.attributes[attributeToRemoveIndex];\n\n if (attribute.type === 'relation') {\n const { target, relation, targetAttribute: targetAttributeName } = attribute;\n const relationType = getRelationType(relation, targetAttributeName);\n\n const isBidirectionnal = !ONE_SIDE_RELATIONS.includes(relationType!);\n\n if (isBidirectionnal && targetAttributeName) {\n const targetContentType = getType(state, { forTarget, targetUid: target });\n const targetAttributeIndex = findAttributeIndex(targetContentType, targetAttributeName);\n\n removeAttributeAt(targetContentType, targetAttributeIndex);\n }\n }\n\n // Find all uid fields that have the targetField set to the field we are removing\n type.attributes.forEach((attribute) => {\n if (attribute.type === 'uid') {\n if (attribute.targetField === attributeToRemoveName) {\n delete attribute.targetField;\n }\n }\n });\n\n removeAttributeAt(type, attributeToRemoveIndex);\n },\n // only edits a component in practice\n updateComponentSchema: (state, action: PayloadAction<UpdateComponentSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName: data.displayName,\n icon: data.icon,\n },\n });\n },\n updateComponentUid: (state, action: PayloadAction<UpdateComponentUIDPayload>) => {\n const { newComponentUID, uid } = action.payload;\n\n const type = state.components[uid];\n if (!type || type.status !== 'NEW') {\n return;\n }\n\n if (newComponentUID !== uid) {\n const newType = { ...type, uid: newComponentUID };\n state.components[newComponentUID] = newType;\n delete state.components[uid];\n\n // update the uid in the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.map((component: UID.Component) => {\n if (component === uid) {\n return newComponentUID;\n }\n\n return component;\n });\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n\n // update the uid in the other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n attribute.component = newComponentUID;\n }\n });\n });\n }\n },\n updateSchema: (state, action: PayloadAction<UpdateSchemaPayload>) => {\n const { data, uid } = action.payload;\n\n const { displayName, kind, draftAndPublish, pluginOptions } = data;\n\n const type = state.contentTypes[uid];\n if (!type) {\n return;\n }\n\n updateType(type, {\n info: {\n displayName,\n },\n kind,\n options: {\n draftAndPublish,\n },\n pluginOptions,\n });\n },\n deleteComponent: (state, action: PayloadAction<Internal.UID.Component>) => {\n const uid = action.payload;\n\n // remove the compo from the components\n if (state.components[uid].status === 'NEW') {\n delete state.components[uid];\n } else {\n setStatus(state.components[uid], 'REMOVED');\n }\n\n // remove the compo from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n // remove from dynamic zones\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'dynamiczone') {\n const newComponents = attribute.components.filter(\n (component: unknown) => component !== uid\n );\n\n attribute.components = newComponents;\n }\n });\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n\n // remove the compo from other components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'component' && attribute.component === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n },\n deleteContentType: (state, action: PayloadAction<Internal.UID.ContentType>) => {\n const uid = action.payload;\n const type = state.contentTypes[uid];\n\n // just drop new content types\n if (type.status === 'NEW') {\n delete state.contentTypes[uid];\n } else {\n setStatus(type, 'REMOVED');\n }\n\n // remove the content type from the components\n Object.keys(state.components).forEach((componentUid) => {\n const component = state.components[componentUid];\n\n component.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(component, attribute.name);\n }\n });\n });\n\n // remove the content type from the content types\n Object.keys(state.contentTypes).forEach((contentTypeUid) => {\n const contentType = state.contentTypes[contentTypeUid];\n\n contentType.attributes.forEach((attribute) => {\n if (attribute.type === 'relation' && attribute.target === uid) {\n removeAttributeByName(contentType, attribute.name);\n }\n });\n });\n },\n\n applyChange(\n state,\n reducerAction: PayloadAction<{\n action: 'add' | 'update' | 'delete';\n schema: ContentType | Component;\n }>\n ) {\n const { action, schema } = reducerAction.payload;\n\n switch (action) {\n case 'add':\n {\n const uid = schema.uid;\n\n if (schema.modelType === 'component') {\n state.components[uid] = schema;\n } else {\n state.contentTypes[uid] = schema;\n }\n }\n break;\n case 'update':\n {\n const uid = schema.uid;\n\n // Find the schema, if the state was \"create\", we should keep it as it was before\n\n if (schema.modelType === 'component') {\n const component = state.components[uid];\n state.components[uid] = {\n ...schema,\n status: component?.status === 'NEW' ? 'NEW' : schema.status,\n };\n } else {\n const contentType = state.contentTypes[uid];\n state.contentTypes[uid] = {\n ...schema,\n status: contentType?.status === 'NEW' ? 'NEW' : schema.status,\n };\n }\n }\n break;\n case 'delete': {\n const uid = schema.uid;\n const isComponent = schema.modelType === 'component';\n // It's a component that has yet not been added\n if (isComponent) {\n const exists = state.components[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.components[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.components[uid];\n } else {\n state.components[uid].status = 'REMOVED';\n }\n } else {\n const exists = state.contentTypes[uid];\n if (!exists) {\n return;\n }\n\n const isUnsaved = state.contentTypes[uid]?.status === 'NEW';\n if (isUnsaved) {\n delete state.contentTypes[uid];\n } else {\n state.contentTypes[uid].status = 'REMOVED';\n }\n }\n\n break;\n }\n }\n },\n },\n },\n\n {\n limit: 50,\n excludeActionsFromHistory: ['reloadPlugin', 'init'],\n stateSelector: (state) => {\n if (!state) {\n return {};\n }\n\n return {\n components: state.components,\n contentTypes: state.contentTypes,\n };\n },\n discard: (state) => {\n state.components = state.initialComponents;\n state.contentTypes = state.initialContentTypes;\n },\n }\n);\n\nexport type State = ReturnType<typeof slice.reducer>;\nexport const { reducer, actions } = slice;\nexport { initialState };\n"],"names":["initialState","components","contentTypes","initialComponents","initialContentTypes","reservedNames","models","attributes","isLoading","ONE_SIDE_RELATIONS","getOppositeRelation","originalRelation","findAttributeIndex","type","attributeToFind","findIndex","name","getType","state","forTarget","targetUid","setStatus","status","getNewStatus","oldStatus","newStatus","setAttributeStatus","attribute","createAttribute","properties","setAttributeAt","index","previousAttribute","pushAttribute","push","removeAttributeAt","attr","splice","replaceAttributeAt","removeAttributeByName","idx","updateType","data","merge","slice","createUndoRedoSlice","reducers","init","action","payload","createComponentSchema","uid","componentCategory","newSchema","category","modelName","displayName","globalId","info","icon","modelType","createSchema","singularName","pluralName","kind","draftAndPublish","pluginOptions","visible","restrictRelationsTo","options","addAttribute","attributeToSet","omit","target","targetAttribute","relation","relationType","getRelationType","isBidirectionalRelation","undefined","includes","oppositeAttribute","private","targetType","moveAttribute","from","to","addCustomFieldAttribute","addCreatedComponentToDynamicZone","dynamicZoneTarget","componentsToAdd","dzAttributeIndex","forEach","componentUid","changeDynamicZoneComponents","newComponents","currentDZComponents","updatedComponents","makeUnique","editAttribute","initialAttributeIndex","previousTarget","newTarget","previousTargetAttributeIndex","previousTargetAttribute","newRelationType","isBidirectionnal","newTargetAttribute","conditions","editCustomFieldAttribute","initialAttributeName","reloadPlugin","removeComponentFromDynamicZone","dzName","componentToRemoveIndex","removeField","attributeToRemoveName","attributeToRemoveIndex","targetAttributeName","targetContentType","targetAttributeIndex","targetField","updateComponentSchema","updateComponentUid","newComponentUID","newType","Object","keys","contentTypeUid","contentType","map","component","updateSchema","deleteComponent","filter","deleteContentType","applyChange","reducerAction","schema","isComponent","exists","isUnsaved","limit","excludeActionsFromHistory","stateSelector","discard","reducer","actions"],"mappings":"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"}
|
|
@@ -221,9 +221,14 @@ const slice = toolkit.createSlice({
|
|
|
221
221
|
const { data } = action.payload;
|
|
222
222
|
state.modifiedData = data;
|
|
223
223
|
state.initialData = data;
|
|
224
|
+
state.formErrors = {};
|
|
224
225
|
},
|
|
225
226
|
setAttributeDataSchema: (state, action)=>{
|
|
226
227
|
const { isEditing } = action.payload;
|
|
228
|
+
// The errors describe the data being replaced below, so they no longer apply. Leaving
|
|
229
|
+
// them behind surfaces the previous attempt's errors on a freshly picked, blank type.
|
|
230
|
+
// See https://github.com/strapi/strapi/issues/20947
|
|
231
|
+
state.formErrors = {};
|
|
227
232
|
if (isEditing === true) {
|
|
228
233
|
const { modifiedDataToSetForEditing } = action.payload;
|
|
229
234
|
state.modifiedData = modifiedDataToSetForEditing;
|
|
@@ -298,6 +303,7 @@ const slice = toolkit.createSlice({
|
|
|
298
303
|
},
|
|
299
304
|
setCustomFieldDataSchema: (state, action)=>{
|
|
300
305
|
const { payload } = action;
|
|
306
|
+
state.formErrors = {};
|
|
301
307
|
if (payload.isEditing === true) {
|
|
302
308
|
const { modifiedDataToSetForEditing } = action.payload;
|
|
303
309
|
state.modifiedData = modifiedDataToSetForEditing;
|
|
@@ -322,6 +328,7 @@ const slice = toolkit.createSlice({
|
|
|
322
328
|
const { attributeToEdit } = action.payload;
|
|
323
329
|
state.modifiedData = attributeToEdit;
|
|
324
330
|
state.initialData = attributeToEdit;
|
|
331
|
+
state.formErrors = {};
|
|
325
332
|
},
|
|
326
333
|
setErrors: (state, action)=>{
|
|
327
334
|
state.formErrors = action.payload.errors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reducer.js","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n state.formErrors = {};\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n // The errors describe the data being replaced below, so they no longer apply. Leaving\n // them behind surfaces the previous attempt's errors on a freshly picked, blank type.\n // See https://github.com/strapi/strapi/issues/20947\n state.formErrors = {};\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n state.formErrors = {};\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n state.formErrors = {};\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":"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"}
|
|
@@ -213,9 +213,14 @@ const slice = createSlice({
|
|
|
213
213
|
const { data } = action.payload;
|
|
214
214
|
state.modifiedData = data;
|
|
215
215
|
state.initialData = data;
|
|
216
|
+
state.formErrors = {};
|
|
216
217
|
},
|
|
217
218
|
setAttributeDataSchema: (state, action)=>{
|
|
218
219
|
const { isEditing } = action.payload;
|
|
220
|
+
// The errors describe the data being replaced below, so they no longer apply. Leaving
|
|
221
|
+
// them behind surfaces the previous attempt's errors on a freshly picked, blank type.
|
|
222
|
+
// See https://github.com/strapi/strapi/issues/20947
|
|
223
|
+
state.formErrors = {};
|
|
219
224
|
if (isEditing === true) {
|
|
220
225
|
const { modifiedDataToSetForEditing } = action.payload;
|
|
221
226
|
state.modifiedData = modifiedDataToSetForEditing;
|
|
@@ -290,6 +295,7 @@ const slice = createSlice({
|
|
|
290
295
|
},
|
|
291
296
|
setCustomFieldDataSchema: (state, action)=>{
|
|
292
297
|
const { payload } = action;
|
|
298
|
+
state.formErrors = {};
|
|
293
299
|
if (payload.isEditing === true) {
|
|
294
300
|
const { modifiedDataToSetForEditing } = action.payload;
|
|
295
301
|
state.modifiedData = modifiedDataToSetForEditing;
|
|
@@ -314,6 +320,7 @@ const slice = createSlice({
|
|
|
314
320
|
const { attributeToEdit } = action.payload;
|
|
315
321
|
state.modifiedData = attributeToEdit;
|
|
316
322
|
state.initialData = attributeToEdit;
|
|
323
|
+
state.formErrors = {};
|
|
317
324
|
},
|
|
318
325
|
setErrors: (state, action)=>{
|
|
319
326
|
state.formErrors = action.payload.errors;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reducer.mjs","sources":["../../../../admin/src/components/FormModal/reducer.ts"],"sourcesContent":["import { createSlice, type PayloadAction } from '@reduxjs/toolkit';\nimport set from 'lodash/set';\nimport snakeCase from 'lodash/snakeCase';\nimport pluralize from 'pluralize';\n\nimport { getRelationType } from '../../utils/getRelationType';\nimport { nameToSlug } from '../../utils/nameToSlug';\n\nimport { createComponentUid } from './utils/createUid';\nimport { customFieldDefaultOptionsReducer } from './utils/customFieldDefaultOptionsReducer';\nimport { shouldPluralizeName, shouldPluralizeTargetAttribute } from './utils/relations';\n\nimport type { Schema, Struct, UID } from '@strapi/types';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype FormModalError = MessageDescriptor & {\n values?: Record<string, PrimitiveType>;\n};\n\nexport type ComponentToCreateData = Record<string, unknown> & {\n type?: 'component';\n displayName?: string;\n icon?: string;\n category?: string;\n};\n\nexport type FormModalData = Record<string, unknown> & {\n allowedTypes?: string[];\n category?: string;\n component?: UID.Component;\n components?: UID.Component[];\n componentToCreate?: ComponentToCreateData;\n conditions?: unknown;\n createComponent?: boolean;\n default?: unknown;\n displayName?: string;\n draftAndPublish?: boolean;\n enum?: string[];\n icon?: string;\n kind?: Struct.ContentTypeKind;\n multiple?: boolean;\n name?: string;\n options?: object;\n pluralName?: string;\n pluginOptions?: object;\n relation?: Schema.Attribute.RelationKind.Any;\n repeatable?: boolean;\n required?: boolean;\n singularName?: string;\n target?: string | null;\n targetAttribute?: string | null;\n type?: string;\n};\n\ntype CustomFieldOption = {\n items?: CustomFieldOption[];\n name?: string;\n defaultValue?: unknown;\n};\n\ntype CustomField = {\n type: string;\n options?: {\n base?: CustomFieldOption[];\n advanced?: CustomFieldOption[];\n };\n};\n\nexport type State = {\n formErrors: Record<string, FormModalError>;\n modifiedData: FormModalData;\n initialData: FormModalData;\n componentToCreate: ComponentToCreateData;\n isCreatingComponentWhileAddingAField: boolean;\n};\n\nconst initialState: State = {\n formErrors: {},\n modifiedData: {},\n initialData: {},\n componentToCreate: {},\n isCreatingComponentWhileAddingAField: false,\n};\n\ntype OnChangePayload = {\n keys: string[];\n value: unknown;\n};\n\ntype OnChangeRelationTargetPayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n selectedContentTypeFriendlyName: string;\n targetContentTypeAllowedRelations: Schema.Attribute.RelationKind.Any[] | null;\n value: string;\n };\n};\n\ntype OnChangeRelationTypePayload = {\n target: {\n oneThatIsCreatingARelationWithAnother: string;\n value: Schema.Attribute.RelationKind.Any;\n };\n};\n\ntype ResetPropsAndSetFormForAddingAnExistingCompoPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype ResetPropsAndSaveCurrentDataPayload = {\n uid: UID.Schema;\n options?: Record<string, unknown>;\n};\n\ntype SetDataToEditPayload = {\n data: FormModalData;\n};\n\ntype SetAttributeDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n attributeType: string;\n nameToSetForRelation: string;\n targetUid: string;\n step: string | null;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetCustomFieldDataSchemaPayload =\n | {\n isEditing: true;\n modifiedDataToSetForEditing: FormModalData;\n uid: UID.Schema;\n }\n | {\n isEditing: false;\n modifiedDataToSetForEditing: FormModalData;\n customField: CustomField;\n options?: Record<string, unknown>;\n uid: UID.Schema;\n };\n\ntype SetDynamicZoneDataSchemaPayload = {\n attributeToEdit: FormModalData;\n};\n\ntype SetErrorsPayload = {\n errors: Record<string, FormModalError>;\n};\n\nconst slice = createSlice({\n name: 'formModal',\n initialState,\n reducers: {\n onChange: (state, action: PayloadAction<OnChangePayload>) => {\n const { keys, value } = action.payload;\n const obj = state.modifiedData;\n const hasDefaultValue = obj.default !== undefined;\n\n // There is no need to remove the default key if the default value isn't defined\n if (hasDefaultValue && keys.length === 1 && keys.includes('type')) {\n const previousType = obj.type;\n\n if (previousType !== undefined && ['date', 'datetime', 'time'].includes(previousType)) {\n // return obj.updateIn(keys, () => value).remove('default');\n delete state.modifiedData.default;\n }\n }\n\n set(state, ['modifiedData', ...keys], value);\n },\n onChangeRelationTarget: (state, action: PayloadAction<OnChangeRelationTargetPayload>) => {\n const {\n target: {\n oneThatIsCreatingARelationWithAnother,\n selectedContentTypeFriendlyName,\n targetContentTypeAllowedRelations,\n value,\n },\n } = action.payload;\n // Special case for the admin user...\n let didChangeRelationTypeBecauseOfRestrictedRelation = false;\n let changedRelationType: Schema.Attribute.RelationKind.Any | null = null;\n\n set(state, ['modifiedData', 'target'], value);\n\n const modifiedData = state.modifiedData;\n\n // Don't change the relation type if the allowed relations are not restricted\n // TODO: replace with an obj { relation: 'x', bidirctional: true|false } when BE ready\n if (Array.isArray(targetContentTypeAllowedRelations)) {\n const currentRelationType = getRelationType(\n modifiedData.relation,\n modifiedData.targetAttribute\n );\n\n if (\n currentRelationType &&\n !targetContentTypeAllowedRelations.includes(currentRelationType)\n ) {\n const relationToSet = targetContentTypeAllowedRelations[0];\n didChangeRelationTypeBecauseOfRestrictedRelation = true;\n changedRelationType = relationToSet;\n\n if (relationToSet === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n } else if (relationToSet === 'manyWay') {\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n } else {\n set(state, ['modifiedData', 'relation'], relationToSet);\n }\n }\n }\n\n let nameToSet: string;\n\n if (didChangeRelationTypeBecauseOfRestrictedRelation && changedRelationType !== null) {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n shouldPluralizeName(changedRelationType)\n );\n } else {\n nameToSet = pluralize(\n snakeCase(nameToSlug(selectedContentTypeFriendlyName)),\n\n shouldPluralizeName(modifiedData.relation)\n );\n }\n\n set(state, ['modifiedData', 'name'], nameToSet);\n\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n if (currentTargetAttribute === null) {\n return;\n }\n\n // Changing the target and the relation is either oneWay or manyWay\n // Case when we need to change the relation to oneWay (ex: admin user)\n if (\n didChangeRelationTypeBecauseOfRestrictedRelation &&\n changedRelationType !== null &&\n ['oneWay', 'manyWay'].includes(changedRelationType)\n ) {\n set(state, ['modifiedData', 'targetAttribute'], null);\n\n return;\n }\n\n const targetAttributeToSet = pluralize(\n snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(modifiedData.relation)\n );\n\n set(state, ['modifiedData', 'targetAttribute'], targetAttributeToSet);\n },\n onChangeRelationType: (state, action: PayloadAction<OnChangeRelationTypePayload>) => {\n const {\n target: { oneThatIsCreatingARelationWithAnother, value },\n } = action.payload;\n\n const currentName = state.modifiedData.name ?? '';\n\n // Switching from oneWay\n if (!['oneWay', 'manyWay'].includes(value)) {\n set(state, ['modifiedData', 'relation'], value);\n const currentTargetAttribute = state.modifiedData.targetAttribute;\n\n set(\n state,\n ['modifiedData', 'name'],\n pluralize(snakeCase(nameToSlug(currentName)), shouldPluralizeName(value))\n );\n\n set(\n state,\n ['modifiedData', 'targetAttribute'],\n pluralize(\n currentTargetAttribute || snakeCase(nameToSlug(oneThatIsCreatingARelationWithAnother)),\n shouldPluralizeTargetAttribute(value)\n )\n );\n\n return;\n }\n\n if (value === 'oneWay') {\n set(state, ['modifiedData', 'relation'], 'oneToOne');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 1));\n\n return;\n }\n\n // manyWay\n set(state, ['modifiedData', 'relation'], 'oneToMany');\n set(state, ['modifiedData', 'targetAttribute'], null);\n set(state, ['modifiedData', 'name'], pluralize(snakeCase(currentName), 2));\n },\n resetProps: () => {\n return initialState;\n },\n resetPropsAndSetFormForAddingAnExistingCompo: (\n state,\n action: PayloadAction<ResetPropsAndSetFormForAddingAnExistingCompoPayload>\n ) => {\n const { options = {} } = action.payload;\n\n return {\n ...initialState,\n modifiedData: {\n type: 'component',\n repeatable: true,\n ...options,\n },\n };\n },\n resetPropsAndSaveCurrentData: (\n state,\n action: PayloadAction<ResetPropsAndSaveCurrentDataPayload>\n ) => {\n const { options = {} } = action.payload;\n // This is run when the user has created a new component\n const componentToCreate = state.modifiedData.componentToCreate;\n\n if (\n componentToCreate?.displayName === undefined ||\n componentToCreate.category === undefined\n ) {\n return initialState;\n }\n\n const modifiedData = {\n displayName: componentToCreate.displayName,\n type: 'component',\n repeatable: false,\n ...options,\n component: createComponentUid(componentToCreate.displayName, componentToCreate.category),\n };\n\n return {\n ...initialState,\n componentToCreate,\n modifiedData,\n isCreatingComponentWhileAddingAField: state.modifiedData.createComponent === true,\n };\n },\n resetPropsAndSetTheFormForAddingACompoToADz: (state) => {\n const createdDZ = state.modifiedData;\n const dataToSet = {\n ...createdDZ,\n createComponent: true,\n componentToCreate: { type: 'component' as const },\n };\n\n return { ...initialState, modifiedData: dataToSet };\n },\n setDataToEdit: (state, action: PayloadAction<SetDataToEditPayload>) => {\n const { data } = action.payload;\n state.modifiedData = data;\n state.initialData = data;\n state.formErrors = {};\n },\n setAttributeDataSchema: (state, action: PayloadAction<SetAttributeDataSchemaPayload>) => {\n const { isEditing } = action.payload;\n\n // The errors describe the data being replaced below, so they no longer apply. Leaving\n // them behind surfaces the previous attempt's errors on a freshly picked, blank type.\n // See https://github.com/strapi/strapi/issues/20947\n state.formErrors = {};\n\n if (isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { attributeType, nameToSetForRelation, targetUid, step, options = {} } = action.payload;\n\n let dataToSet;\n\n if (attributeType === 'component') {\n if (step === '1') {\n dataToSet = {\n type: 'component',\n createComponent: true,\n componentToCreate: { type: 'component' },\n };\n } else {\n dataToSet = {\n ...options,\n type: 'component',\n repeatable: true,\n };\n }\n } else if (attributeType === 'dynamiczone') {\n dataToSet = {\n ...options,\n type: 'dynamiczone',\n components: [],\n };\n } else if (attributeType === 'text') {\n dataToSet = { ...options, type: 'string' };\n } else if (attributeType === 'number' || attributeType === 'date') {\n dataToSet = options;\n } else if (attributeType === 'media') {\n dataToSet = {\n allowedTypes: ['images', 'files', 'videos', 'audios'],\n type: 'media',\n multiple: true,\n ...options,\n };\n } else if (attributeType === 'enumeration') {\n dataToSet = { ...options, type: 'enumeration', enum: [] };\n } else if (attributeType === 'relation') {\n dataToSet = {\n name: snakeCase(nameToSetForRelation),\n relation: 'oneToOne',\n targetAttribute: null,\n target: targetUid,\n type: 'relation',\n };\n } else {\n dataToSet = { ...options, type: attributeType, default: null };\n }\n\n state.modifiedData = dataToSet;\n },\n setCustomFieldDataSchema: (state, action: PayloadAction<SetCustomFieldDataSchemaPayload>) => {\n const { payload } = action;\n\n state.formErrors = {};\n\n if (payload.isEditing === true) {\n const { modifiedDataToSetForEditing } = action.payload;\n state.modifiedData = modifiedDataToSetForEditing;\n state.initialData = modifiedDataToSetForEditing;\n\n return;\n }\n\n const { customField, options = {} } = payload;\n\n state.modifiedData = { ...options, type: customField.type };\n\n const allOptions = [\n ...(customField?.options?.base || []),\n ...(customField?.options?.advanced || []),\n ];\n\n const optionDefaults = allOptions.reduce(customFieldDefaultOptionsReducer, []);\n\n if (optionDefaults.length) {\n optionDefaults.forEach(({ name, defaultValue }) =>\n set(state.modifiedData, name, defaultValue)\n );\n }\n },\n setDynamicZoneDataSchema: (state, action: PayloadAction<SetDynamicZoneDataSchemaPayload>) => {\n const { attributeToEdit } = action.payload;\n state.modifiedData = attributeToEdit;\n state.initialData = attributeToEdit;\n state.formErrors = {};\n },\n setErrors: (state, action: PayloadAction<SetErrorsPayload>) => {\n state.formErrors = action.payload.errors;\n },\n },\n});\n\nexport { initialState };\nexport const { actions, reducer } = slice;\n"],"names":["initialState","formErrors","modifiedData","initialData","componentToCreate","isCreatingComponentWhileAddingAField","slice","createSlice","name","reducers","onChange","state","action","keys","value","payload","obj","hasDefaultValue","default","undefined","length","includes","previousType","type","set","onChangeRelationTarget","target","oneThatIsCreatingARelationWithAnother","selectedContentTypeFriendlyName","targetContentTypeAllowedRelations","didChangeRelationTypeBecauseOfRestrictedRelation","changedRelationType","Array","isArray","currentRelationType","getRelationType","relation","targetAttribute","relationToSet","nameToSet","pluralize","snakeCase","nameToSlug","shouldPluralizeName","currentTargetAttribute","targetAttributeToSet","shouldPluralizeTargetAttribute","onChangeRelationType","currentName","resetProps","resetPropsAndSetFormForAddingAnExistingCompo","options","repeatable","resetPropsAndSaveCurrentData","displayName","category","component","createComponentUid","createComponent","resetPropsAndSetTheFormForAddingACompoToADz","createdDZ","dataToSet","setDataToEdit","data","setAttributeDataSchema","isEditing","modifiedDataToSetForEditing","attributeType","nameToSetForRelation","targetUid","step","components","allowedTypes","multiple","enum","setCustomFieldDataSchema","customField","allOptions","base","advanced","optionDefaults","reduce","customFieldDefaultOptionsReducer","forEach","defaultValue","setDynamicZoneDataSchema","attributeToEdit","setErrors","errors","actions","reducer"],"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.52.0",
|
|
4
4
|
"description": "Create and manage content types",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -73,10 +73,10 @@
|
|
|
73
73
|
"@dnd-kit/utilities": "3.2.2",
|
|
74
74
|
"@reduxjs/toolkit": "1.9.7",
|
|
75
75
|
"@sindresorhus/slugify": "1.1.0",
|
|
76
|
-
"@strapi/design-system": "2.2.
|
|
77
|
-
"@strapi/generators": "5.
|
|
78
|
-
"@strapi/icons": "2.2.
|
|
79
|
-
"@strapi/utils": "5.
|
|
76
|
+
"@strapi/design-system": "2.2.4",
|
|
77
|
+
"@strapi/generators": "5.52.0",
|
|
78
|
+
"@strapi/icons": "2.2.4",
|
|
79
|
+
"@strapi/utils": "5.52.0",
|
|
80
80
|
"ai": "5.0.210",
|
|
81
81
|
"date-fns": "2.30.0",
|
|
82
82
|
"fs-extra": "11.3.4",
|
|
@@ -94,8 +94,8 @@
|
|
|
94
94
|
"zod": "3.25.76"
|
|
95
95
|
},
|
|
96
96
|
"devDependencies": {
|
|
97
|
-
"@strapi/admin": "5.
|
|
98
|
-
"@strapi/types": "5.
|
|
97
|
+
"@strapi/admin": "5.52.0",
|
|
98
|
+
"@strapi/types": "5.52.0",
|
|
99
99
|
"@testing-library/dom": "10.4.1",
|
|
100
100
|
"@testing-library/jest-dom": "6.9.1",
|
|
101
101
|
"@testing-library/react": "16.3.2",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"react-router-dom": "6.30.4",
|
|
116
116
|
"styled-components": "6.4.1",
|
|
117
117
|
"vitest": "catalog:",
|
|
118
|
-
"vitest-config": "5.
|
|
118
|
+
"vitest-config": "5.52.0"
|
|
119
119
|
},
|
|
120
120
|
"peerDependencies": {
|
|
121
121
|
"@strapi/admin": "^5.0.0",
|