@strapi/content-type-builder 5.30.0 → 5.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
- package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
- package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Base64Image.js.map +1 -1
- package/dist/admin/components/AIChat/components/Base64Image.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Collapsible.js.map +1 -1
- package/dist/admin/components/AIChat/components/Collapsible.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/FullScreenImage.js.map +1 -1
- package/dist/admin/components/AIChat/components/FullScreenImage.mjs.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
- package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useCodeUpload.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useCodeUpload.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFigmaUpload.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFigmaUpload.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/aiClient.js.map +1 -1
- package/dist/admin/components/AIChat/lib/aiClient.mjs.map +1 -1
- package/dist/admin/components/AIChat/lib/constants.js.map +1 -1
- package/dist/admin/components/AIChat/lib/constants.mjs.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.js.map +1 -1
- package/dist/admin/components/AIChat/providers/SchemaProvider.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOption.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOptions.js.map +1 -1
- package/dist/admin/components/AttributeOptions/AttributeOptions.mjs.map +1 -1
- package/dist/admin/components/AttributeOptions/EmptyAttributes.js.map +1 -1
- package/dist/admin/components/AttributeOptions/EmptyAttributes.mjs.map +1 -1
- package/dist/admin/components/AttributeRow.js.map +1 -1
- package/dist/admin/components/AttributeRow.mjs.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.js.map +1 -1
- package/dist/admin/components/ComponentCard/ComponentCard.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
- package/dist/admin/components/DisplayedType.js.map +1 -1
- package/dist/admin/components/DisplayedType.mjs.map +1 -1
- package/dist/admin/components/DynamicZoneList.js.map +1 -1
- package/dist/admin/components/DynamicZoneList.mjs.map +1 -1
- package/dist/admin/components/Footers.js.map +1 -1
- package/dist/admin/components/Footers.mjs.map +1 -1
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/ConditionForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/advancedForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/attributes/baseForm.js.map +1 -1
- package/dist/admin/components/FormModal/attributes/baseForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/component/componentForm.js.map +1 -1
- package/dist/admin/components/FormModal/component/componentForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/createCollectionName.js.map +1 -1
- package/dist/admin/components/FormModal/forms/utils/createCollectionName.mjs.map +1 -1
- package/dist/admin/components/FormModal/utils/createUid.js.map +1 -1
- package/dist/admin/components/FormModal/utils/createUid.mjs.map +1 -1
- package/dist/admin/components/FormModalHeader.js.map +1 -1
- package/dist/admin/components/FormModalHeader.mjs.map +1 -1
- package/dist/admin/components/FormModalSubHeader.js.map +1 -1
- package/dist/admin/components/FormModalSubHeader.mjs.map +1 -1
- package/dist/admin/components/IconPicker/constants.js +3 -0
- package/dist/admin/components/IconPicker/constants.js.map +1 -1
- package/dist/admin/components/IconPicker/constants.mjs +3 -0
- package/dist/admin/components/IconPicker/constants.mjs.map +1 -1
- package/dist/admin/components/List.js.map +1 -1
- package/dist/admin/components/List.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationField/RelationTargetPicker/RelationTargetPicker.mjs.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.js.map +1 -1
- package/dist/admin/components/Relation/RelationNaturePicker/RelationNaturePicker.mjs.map +1 -1
- package/dist/admin/components/SelectComponent.js.map +1 -1
- package/dist/admin/components/SelectComponent.mjs.map +1 -1
- package/dist/admin/components/TabForm.js.map +1 -1
- package/dist/admin/components/TabForm.mjs.map +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListView.js.map +1 -1
- package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
- package/dist/admin/utils/conditions.js.map +1 -1
- package/dist/admin/utils/conditions.mjs.map +1 -1
- package/dist/admin/utils/getTrad.js.map +1 -1
- package/dist/admin/utils/getTrad.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/admin/utils/timeFormat.js.map +1 -1
- package/dist/admin/utils/timeFormat.mjs.map +1 -1
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/content-type.js.map +1 -1
- package/dist/server/controllers/validation/content-type.mjs.map +1 -1
- package/dist/server/controllers/validation/model-schema.js.map +1 -1
- package/dist/server/controllers/validation/model-schema.mjs.map +1 -1
- package/dist/server/controllers/validation/relations.js.map +1 -1
- package/dist/server/controllers/validation/relations.mjs.map +1 -1
- package/dist/server/services/api-handler.js.map +1 -1
- package/dist/server/services/api-handler.mjs.map +1 -1
- package/dist/server/services/component-categories.js.map +1 -1
- package/dist/server/services/component-categories.mjs.map +1 -1
- package/dist/server/services/schema-builder/component-builder.js.map +1 -1
- package/dist/server/services/schema-builder/component-builder.mjs.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.js.map +1 -1
- package/dist/server/services/schema-builder/content-type-builder.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeRow.js","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, IconButton, Typography, Link, Badge, Dialog } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { checkDependentRows } from '../utils/conditions';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleDelete = (e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation();\n const dependentRows = checkDependentRows(contentTypes, item.name);\n if (dependentRows.length > 0) {\n setShowConfirmDialog(true);\n } else {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }\n };\n\n const handleConfirmDelete = () => {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n setShowConfirmDialog(false);\n };\n\n const handleCancelDelete = () => {\n setShowConfirmDialog(false);\n };\n\n const handleClick = (e?: React.MouseEvent | React.KeyboardEvent) => {\n if (e) {\n e.stopPropagation();\n }\n\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n style={{ outlineOffset: '-2px' }}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">* </Typography>\n )}\n </Typography>\n </Flex>\n <Flex>\n <Typography textColor=\"neutral600\">\n <DisplayedType\n type={item.type}\n customField={item.customField}\n repeatable={'repeatable' in item && item.repeatable}\n multiple={'multiple' in item && item.multiple}\n />\n {'conditions' in item &&\n item.conditions &&\n Object.keys(item.conditions).length > 0 && <Badge margin={4}>conditional</Badge>}\n {item.type === 'relation' && (\n <>\n ({getRelationType(item.relation, item.targetAttribute)}) \n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n \n {targetContentType && (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/content-types/${targetContentType.uid}`}\n >\n {upperFirst(targetContentType.info.displayName)}\n </Link>\n )}\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </>\n )}\n {item.type === 'component' && <ComponentLink uid={item.component} />}\n </Typography>\n </Flex>\n </Flex>\n </Flex>\n\n <Box>\n <Flex justifyContent=\"flex-end\" gap={1} onClick={(e) => e.stopPropagation()}>\n <>\n <Box>{item.status && <StatusBadge status={item.status} />}</Box>\n {['component', 'dynamiczone'].includes(item.type) && (\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n }\n }}\n aria-expanded={isOpen}\n label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n variant=\"ghost\"\n withTooltip={false}\n >\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n </IconButton>\n )}\n {isInDevelopmentMode && item.configurable !== false ? (\n <>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canEdit}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={handleDelete}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canDelete}\n >\n <Trash />\n </IconButton>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <ConfirmDialog onConfirm={handleConfirmDelete} onCancel={handleCancelDelete}>\n <Box>\n <Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions'\n ),\n defaultMessage:\n 'The following fields have conditions that depend on this field: ',\n })}\n <Typography fontWeight=\"bold\">\n {checkDependentRows(contentTypes, item.name)\n .map(({ attribute }) => attribute)\n .join(', ')}\n </Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions-end'\n ),\n defaultMessage: '. Are you sure you want to delete it?',\n })}\n </Typography>\n </Box>\n </ConfirmDialog>\n </Dialog.Root>\n </>\n ) : (\n <Flex padding={2}>\n <Lock fill=\"neutral500\" />\n </Flex>\n )}\n </>\n </Flex>\n </Box>\n </GridWrapper>\n\n <SubRow $shouldHideNestedInfos={shouldHideNestedInfos} $isOpen={isOpen}>\n {item.type === 'component' && (\n <ComponentList\n {...item}\n isFromDynamicZone={isFromDynamicZone}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {item.type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n disabled={isTypeDeleted || item.status === 'REMOVED'}\n addComponent={addComponentToDZ!}\n forTarget={type.modelType}\n targetUid={type.uid}\n />\n )}\n </SubRow>\n </>\n );\n});\n\nconst SubRow = styled(Box)<{ $isOpen: boolean; $shouldHideNestedInfos?: boolean }>`\n display: ${({ $shouldHideNestedInfos }) => ($shouldHideNestedInfos ? 'none' : 'block')};\n max-height: ${({ $isOpen }) => ($isOpen ? '9999px' : '0px')};\n overflow: hidden;\n\n transition: ${({ $isOpen }) =>\n $isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};\n`;\n\nconst ComponentLink = ({ uid }: { uid: UID.Component }) => {\n const { components } = useDataManager();\n const type = get(components, uid);\n\n return (\n <>\n (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`}\n >\n {upperFirst(type.info.displayName)}\n </Link>\n )\n </>\n );\n};\n"],"names":["GridWrapper","styled","Flex","theme","$isOverlay","colors","neutral150","spaces","$isDragging","StyledAttributeRow","Box","AttributeRow","forwardRef","props","ref","style","rest","_jsx","tag","attributes","background","shadow","isOverlay","aria-label","item","name","MemoizedRow","memo","firstLoopComponentUid","isFromDynamicZone","addComponentToDZ","secondLoopComponentUid","type","isDragging","handleRef","listeners","shouldHideNestedInfos","isOpen","setIsOpen","useState","isTypeDeleted","status","contentTypes","removeAttribute","isInDevelopmentMode","useDataManager","onOpenModalEditField","onOpenModalEditCustomField","useFormModalNavigation","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleDelete","e","stopPropagation","dependentRows","checkDependentRows","length","forTarget","modelType","targetUid","uid","attributeToRemoveName","handleConfirmDelete","handleCancelDelete","handleClick","configurable","editTargetUid","attributeType","getAttributeDisplayedType","step","customField","attributeName","customFieldUid","loopNumber","canEdit","canDelete","cursor","canClick","_jsxs","_Fragment","onClick","undefined","paddingLeft","paddingRight","alignItems","overflow","gap","Curve","color","IconButton","role","variant","withTooltip","label","id","defaultMessage","disabled","outlineOffset","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","conditions","Object","keys","Badge","margin","getRelationType","targetAttribute","getTrad","Link","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","Trash","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","onCancel","map","attribute","join","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AttributeRow.js","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, IconButton, Typography, Link, Badge, Dialog } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { checkDependentRows } from '../utils/conditions';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleDelete = (e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation();\n const dependentRows = checkDependentRows(contentTypes, item.name);\n if (dependentRows.length > 0) {\n setShowConfirmDialog(true);\n } else {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }\n };\n\n const handleConfirmDelete = () => {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n setShowConfirmDialog(false);\n };\n\n const handleCancelDelete = () => {\n setShowConfirmDialog(false);\n };\n\n const handleClick = (e?: React.MouseEvent | React.KeyboardEvent) => {\n if (e) {\n e.stopPropagation();\n }\n\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n style={{ outlineOffset: '-2px' }}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">* </Typography>\n )}\n </Typography>\n </Flex>\n <Flex>\n <Typography textColor=\"neutral600\">\n <DisplayedType\n type={item.type}\n customField={item.customField}\n repeatable={'repeatable' in item && item.repeatable}\n multiple={'multiple' in item && item.multiple}\n />\n {'conditions' in item &&\n item.conditions &&\n Object.keys(item.conditions).length > 0 && <Badge margin={4}>conditional</Badge>}\n {item.type === 'relation' && (\n <>\n ({getRelationType(item.relation, item.targetAttribute)}) \n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n \n {targetContentType && (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/content-types/${targetContentType.uid}`}\n >\n {upperFirst(targetContentType.info.displayName)}\n </Link>\n )}\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </>\n )}\n {item.type === 'component' && <ComponentLink uid={item.component} />}\n </Typography>\n </Flex>\n </Flex>\n </Flex>\n\n <Box>\n <Flex justifyContent=\"flex-end\" gap={1} onClick={(e) => e.stopPropagation()}>\n <>\n <Box>{item.status && <StatusBadge status={item.status} />}</Box>\n {['component', 'dynamiczone'].includes(item.type) && (\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n }\n }}\n aria-expanded={isOpen}\n label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n variant=\"ghost\"\n withTooltip={false}\n >\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n </IconButton>\n )}\n {isInDevelopmentMode && item.configurable !== false ? (\n <>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canEdit}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={handleDelete}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canDelete}\n >\n <Trash />\n </IconButton>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <ConfirmDialog onConfirm={handleConfirmDelete} onCancel={handleCancelDelete}>\n <Box>\n <Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions'\n ),\n defaultMessage:\n 'The following fields have conditions that depend on this field: ',\n })}\n <Typography fontWeight=\"bold\">\n {checkDependentRows(contentTypes, item.name)\n .map(({ attribute }) => attribute)\n .join(', ')}\n </Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions-end'\n ),\n defaultMessage: '. Are you sure you want to delete it?',\n })}\n </Typography>\n </Box>\n </ConfirmDialog>\n </Dialog.Root>\n </>\n ) : (\n <Flex padding={2}>\n <Lock fill=\"neutral500\" />\n </Flex>\n )}\n </>\n </Flex>\n </Box>\n </GridWrapper>\n\n <SubRow $shouldHideNestedInfos={shouldHideNestedInfos} $isOpen={isOpen}>\n {item.type === 'component' && (\n <ComponentList\n {...item}\n isFromDynamicZone={isFromDynamicZone}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {item.type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n disabled={isTypeDeleted || item.status === 'REMOVED'}\n addComponent={addComponentToDZ!}\n forTarget={type.modelType}\n targetUid={type.uid}\n />\n )}\n </SubRow>\n </>\n );\n});\n\nconst SubRow = styled(Box)<{ $isOpen: boolean; $shouldHideNestedInfos?: boolean }>`\n display: ${({ $shouldHideNestedInfos }) => ($shouldHideNestedInfos ? 'none' : 'block')};\n max-height: ${({ $isOpen }) => ($isOpen ? '9999px' : '0px')};\n overflow: hidden;\n\n transition: ${({ $isOpen }) =>\n $isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};\n`;\n\nconst ComponentLink = ({ uid }: { uid: UID.Component }) => {\n const { components } = useDataManager();\n const type = get(components, uid);\n\n return (\n <>\n (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`}\n >\n {upperFirst(type.info.displayName)}\n </Link>\n )\n </>\n );\n};\n"],"names":["GridWrapper","styled","Flex","theme","$isOverlay","colors","neutral150","spaces","$isDragging","StyledAttributeRow","Box","AttributeRow","forwardRef","props","ref","style","rest","_jsx","tag","attributes","background","shadow","isOverlay","aria-label","item","name","MemoizedRow","memo","firstLoopComponentUid","isFromDynamicZone","addComponentToDZ","secondLoopComponentUid","type","isDragging","handleRef","listeners","shouldHideNestedInfos","isOpen","setIsOpen","useState","isTypeDeleted","status","contentTypes","removeAttribute","isInDevelopmentMode","useDataManager","onOpenModalEditField","onOpenModalEditCustomField","useFormModalNavigation","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleDelete","e","stopPropagation","dependentRows","checkDependentRows","length","forTarget","modelType","targetUid","uid","attributeToRemoveName","handleConfirmDelete","handleCancelDelete","handleClick","configurable","editTargetUid","attributeType","getAttributeDisplayedType","step","customField","attributeName","customFieldUid","loopNumber","canEdit","canDelete","cursor","canClick","_jsxs","_Fragment","onClick","undefined","paddingLeft","paddingRight","alignItems","overflow","gap","Curve","color","IconButton","role","variant","withTooltip","label","id","defaultMessage","disabled","outlineOffset","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","conditions","Object","keys","Badge","margin","getRelationType","targetAttribute","getTrad","Link","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","Trash","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","onCancel","map","attribute","join","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeRow.mjs","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, IconButton, Typography, Link, Badge, Dialog } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { checkDependentRows } from '../utils/conditions';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleDelete = (e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation();\n const dependentRows = checkDependentRows(contentTypes, item.name);\n if (dependentRows.length > 0) {\n setShowConfirmDialog(true);\n } else {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }\n };\n\n const handleConfirmDelete = () => {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n setShowConfirmDialog(false);\n };\n\n const handleCancelDelete = () => {\n setShowConfirmDialog(false);\n };\n\n const handleClick = (e?: React.MouseEvent | React.KeyboardEvent) => {\n if (e) {\n e.stopPropagation();\n }\n\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n style={{ outlineOffset: '-2px' }}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">* </Typography>\n )}\n </Typography>\n </Flex>\n <Flex>\n <Typography textColor=\"neutral600\">\n <DisplayedType\n type={item.type}\n customField={item.customField}\n repeatable={'repeatable' in item && item.repeatable}\n multiple={'multiple' in item && item.multiple}\n />\n {'conditions' in item &&\n item.conditions &&\n Object.keys(item.conditions).length > 0 && <Badge margin={4}>conditional</Badge>}\n {item.type === 'relation' && (\n <>\n ({getRelationType(item.relation, item.targetAttribute)}) \n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n \n {targetContentType && (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/content-types/${targetContentType.uid}`}\n >\n {upperFirst(targetContentType.info.displayName)}\n </Link>\n )}\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </>\n )}\n {item.type === 'component' && <ComponentLink uid={item.component} />}\n </Typography>\n </Flex>\n </Flex>\n </Flex>\n\n <Box>\n <Flex justifyContent=\"flex-end\" gap={1} onClick={(e) => e.stopPropagation()}>\n <>\n <Box>{item.status && <StatusBadge status={item.status} />}</Box>\n {['component', 'dynamiczone'].includes(item.type) && (\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n }\n }}\n aria-expanded={isOpen}\n label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n variant=\"ghost\"\n withTooltip={false}\n >\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n </IconButton>\n )}\n {isInDevelopmentMode && item.configurable !== false ? (\n <>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canEdit}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={handleDelete}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canDelete}\n >\n <Trash />\n </IconButton>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <ConfirmDialog onConfirm={handleConfirmDelete} onCancel={handleCancelDelete}>\n <Box>\n <Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions'\n ),\n defaultMessage:\n 'The following fields have conditions that depend on this field: ',\n })}\n <Typography fontWeight=\"bold\">\n {checkDependentRows(contentTypes, item.name)\n .map(({ attribute }) => attribute)\n .join(', ')}\n </Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions-end'\n ),\n defaultMessage: '. Are you sure you want to delete it?',\n })}\n </Typography>\n </Box>\n </ConfirmDialog>\n </Dialog.Root>\n </>\n ) : (\n <Flex padding={2}>\n <Lock fill=\"neutral500\" />\n </Flex>\n )}\n </>\n </Flex>\n </Box>\n </GridWrapper>\n\n <SubRow $shouldHideNestedInfos={shouldHideNestedInfos} $isOpen={isOpen}>\n {item.type === 'component' && (\n <ComponentList\n {...item}\n isFromDynamicZone={isFromDynamicZone}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {item.type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n disabled={isTypeDeleted || item.status === 'REMOVED'}\n addComponent={addComponentToDZ!}\n forTarget={type.modelType}\n targetUid={type.uid}\n />\n )}\n </SubRow>\n </>\n );\n});\n\nconst SubRow = styled(Box)<{ $isOpen: boolean; $shouldHideNestedInfos?: boolean }>`\n display: ${({ $shouldHideNestedInfos }) => ($shouldHideNestedInfos ? 'none' : 'block')};\n max-height: ${({ $isOpen }) => ($isOpen ? '9999px' : '0px')};\n overflow: hidden;\n\n transition: ${({ $isOpen }) =>\n $isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};\n`;\n\nconst ComponentLink = ({ uid }: { uid: UID.Component }) => {\n const { components } = useDataManager();\n const type = get(components, uid);\n\n return (\n <>\n (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`}\n >\n {upperFirst(type.info.displayName)}\n </Link>\n )\n </>\n );\n};\n"],"names":["GridWrapper","styled","Flex","theme","$isOverlay","colors","neutral150","spaces","$isDragging","StyledAttributeRow","Box","AttributeRow","forwardRef","props","ref","style","rest","_jsx","tag","attributes","background","shadow","isOverlay","aria-label","item","name","MemoizedRow","memo","firstLoopComponentUid","isFromDynamicZone","addComponentToDZ","secondLoopComponentUid","type","isDragging","handleRef","listeners","shouldHideNestedInfos","isOpen","setIsOpen","useState","isTypeDeleted","status","contentTypes","removeAttribute","isInDevelopmentMode","useDataManager","onOpenModalEditField","onOpenModalEditCustomField","useFormModalNavigation","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleDelete","e","stopPropagation","dependentRows","checkDependentRows","length","forTarget","modelType","targetUid","uid","attributeToRemoveName","handleConfirmDelete","handleCancelDelete","handleClick","configurable","editTargetUid","attributeType","getAttributeDisplayedType","step","customField","attributeName","customFieldUid","loopNumber","canEdit","canDelete","cursor","canClick","_jsxs","_Fragment","onClick","undefined","paddingLeft","paddingRight","alignItems","overflow","gap","Curve","color","IconButton","role","variant","withTooltip","label","id","defaultMessage","disabled","outlineOffset","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","conditions","Object","keys","Badge","margin","getRelationType","targetAttribute","getTrad","Link","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","Trash","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","onCancel","map","attribute","join","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AttributeRow.mjs","sources":["../../../admin/src/components/AttributeRow.tsx"],"sourcesContent":["import { forwardRef, memo, useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Box, Flex, IconButton, Typography, Link, Badge, Dialog } from '@strapi/design-system';\nimport { ChevronDown, Drag, Lock, Pencil, Trash } from '@strapi/icons';\nimport get from 'lodash/get';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\nimport { Link as NavLink } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { Curve } from '../icons/Curve';\nimport { checkDependentRows } from '../utils/conditions';\nimport { getAttributeDisplayedType } from '../utils/getAttributeDisplayedType';\nimport { getRelationType } from '../utils/getRelationType';\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeIcon } from './AttributeIcon';\nimport { ComponentList } from './ComponentList';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { DisplayedType } from './DisplayedType';\nimport { DynamicZoneList } from './DynamicZoneList';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\nimport { StatusBadge } from './Status';\n\nimport type { AnyAttribute, Component, ContentType } from '../types';\nimport type { DraggableAttributes, DraggableSyntheticListeners } from '@dnd-kit/core';\nimport type { UID } from '@strapi/types';\n\nexport const GridWrapper = styled(Flex)<{ $isOverlay?: boolean; $isDragging?: boolean }>`\n justify-content: space-between;\n\n border-top: ${({ theme, $isOverlay }) =>\n $isOverlay ? 'none' : `1px solid ${theme.colors.neutral150}`};\n\n padding-top: ${({ theme }) => theme.spaces[4]};\n padding-bottom: ${({ theme }) => theme.spaces[4]};\n\n opacity: ${({ $isDragging }) => ($isDragging ? 0 : 1)};\n align-items: center;\n`;\n\nexport type AttributeRowProps = {\n item: {\n id: string;\n index: number;\n } & AnyAttribute;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n addComponentToDZ?: () => void;\n secondLoopComponentUid?: UID.Component | null;\n type: ContentType | Component;\n isDragging?: boolean;\n style?: Record<string, unknown>;\n listeners?: DraggableSyntheticListeners;\n attributes?: DraggableAttributes;\n isOverlay?: boolean;\n handleRef?: (element: HTMLElement | null) => void;\n};\n\nconst StyledAttributeRow = styled(Box)`\n list-style: none;\n list-style-type: none;\n`;\n\nexport const AttributeRow = forwardRef<HTMLLIElement, AttributeRowProps>((props, ref) => {\n const { style, ...rest } = props;\n\n return (\n <StyledAttributeRow\n tag=\"li\"\n ref={ref}\n {...props.attributes}\n style={style}\n background=\"neutral0\"\n shadow={props.isOverlay ? 'filterShadow' : 'none'}\n aria-label={props.item.name}\n >\n <MemoizedRow {...rest} />\n </StyledAttributeRow>\n );\n});\n\nconst MemoizedRow = memo((props: Omit<AttributeRowProps, 'style'>) => {\n const {\n item,\n firstLoopComponentUid,\n isFromDynamicZone,\n addComponentToDZ,\n secondLoopComponentUid,\n type,\n isDragging,\n isOverlay,\n handleRef,\n listeners,\n } = props;\n const shouldHideNestedInfos = isOverlay || isDragging;\n\n const [isOpen, setIsOpen] = useState<boolean>(true);\n\n const isTypeDeleted = type.status === 'REMOVED';\n\n const { contentTypes, removeAttribute, isInDevelopmentMode } = useDataManager();\n const { onOpenModalEditField, onOpenModalEditCustomField } = useFormModalNavigation();\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const isDeleted = item.status === 'REMOVED';\n\n const isMorph = item.type === 'relation' && item.relation.includes('morph');\n const ico = ['integer', 'biginteger', 'float', 'decimal'].includes(item.type)\n ? 'number'\n : item.type;\n\n const targetContentType = item.type === 'relation' ? get(contentTypes, item.target) : null;\n const isPluginContentType = get(targetContentType, 'plugin');\n\n const src = 'target' in item && item.target ? 'relation' : ico;\n\n const handleDelete = (e: React.MouseEvent | React.KeyboardEvent) => {\n e.stopPropagation();\n const dependentRows = checkDependentRows(contentTypes, item.name);\n if (dependentRows.length > 0) {\n setShowConfirmDialog(true);\n } else {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n }\n };\n\n const handleConfirmDelete = () => {\n removeAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n attributeToRemoveName: item.name,\n });\n setShowConfirmDialog(false);\n };\n\n const handleCancelDelete = () => {\n setShowConfirmDialog(false);\n };\n\n const handleClick = (e?: React.MouseEvent | React.KeyboardEvent) => {\n if (e) {\n e.stopPropagation();\n }\n\n if (isMorph) {\n return;\n }\n\n if (item.configurable !== false) {\n const editTargetUid = (secondLoopComponentUid || firstLoopComponentUid || type.uid)!;\n\n const attributeType = getAttributeDisplayedType(item.type);\n const step = item.type === 'component' ? '2' : null;\n\n if (item.customField) {\n onOpenModalEditCustomField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n customFieldUid: item.customField,\n });\n } else {\n onOpenModalEditField({\n forTarget: type.modelType,\n targetUid: editTargetUid,\n attributeName: item.name,\n attributeType,\n step,\n });\n }\n }\n };\n\n let loopNumber;\n\n if (secondLoopComponentUid && firstLoopComponentUid) {\n loopNumber = 2;\n } else if (firstLoopComponentUid) {\n loopNumber = 1;\n } else {\n loopNumber = 0;\n }\n\n const canEdit = !isTypeDeleted && !isDeleted;\n const canDelete = !isTypeDeleted && !isDeleted;\n\n const cursor = isTypeDeleted || isDeleted ? 'not-allowed' : 'move';\n\n const canClick = isInDevelopmentMode && item.configurable !== false && !isMorph && canEdit;\n\n return (\n <>\n <GridWrapper\n $isOverlay={isOverlay}\n $isDragging={isDragging}\n onClick={canClick ? handleClick : undefined}\n paddingLeft={4}\n paddingRight={4}\n >\n <Flex alignItems=\"center\" overflow=\"hidden\" gap={2}>\n {loopNumber !== 0 && !isOverlay && (\n <Curve color={isFromDynamicZone ? 'primary200' : 'neutral150'} />\n )}\n {isInDevelopmentMode && (\n <IconButton\n cursor={cursor}\n role=\"Handle\"\n ref={handleRef}\n {...listeners}\n variant=\"ghost\"\n withTooltip={false}\n label={`${formatMessage({\n id: 'app.utils.drag',\n defaultMessage: 'Drag',\n })} ${item.name}`}\n disabled={isTypeDeleted || isDeleted}\n style={{ outlineOffset: '-2px' }}\n >\n <Drag />\n </IconButton>\n )}\n <Flex gap={4}>\n <Flex gap={4} alignItems=\"center\">\n <AttributeIcon type={src} customField={item.customField} />\n <Typography\n textColor=\"neutral800\"\n fontWeight=\"bold\"\n textDecoration={isDeleted ? 'line-through' : 'none'}\n ellipsis\n overflow=\"hidden\"\n >\n {item.name}\n {'required' in item && item.required && (\n <Typography textColor=\"danger600\">* </Typography>\n )}\n </Typography>\n </Flex>\n <Flex>\n <Typography textColor=\"neutral600\">\n <DisplayedType\n type={item.type}\n customField={item.customField}\n repeatable={'repeatable' in item && item.repeatable}\n multiple={'multiple' in item && item.multiple}\n />\n {'conditions' in item &&\n item.conditions &&\n Object.keys(item.conditions).length > 0 && <Badge margin={4}>conditional</Badge>}\n {item.type === 'relation' && (\n <>\n ({getRelationType(item.relation, item.targetAttribute)}) \n {targetContentType &&\n formatMessage({\n id: getTrad('modelPage.attribute.with'),\n defaultMessage: 'with',\n })}\n \n {targetContentType && (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/content-types/${targetContentType.uid}`}\n >\n {upperFirst(targetContentType.info.displayName)}\n </Link>\n )}\n {isPluginContentType &&\n `(${formatMessage({\n id: getTrad(`from`),\n defaultMessage: 'from',\n })}: ${isPluginContentType})`}\n </>\n )}\n {item.type === 'component' && <ComponentLink uid={item.component} />}\n </Typography>\n </Flex>\n </Flex>\n </Flex>\n\n <Box>\n <Flex justifyContent=\"flex-end\" gap={1} onClick={(e) => e.stopPropagation()}>\n <>\n <Box>{item.status && <StatusBadge status={item.status} />}</Box>\n {['component', 'dynamiczone'].includes(item.type) && (\n <IconButton\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (isOpen) {\n setIsOpen(false);\n } else {\n setIsOpen(true);\n }\n }}\n aria-expanded={isOpen}\n label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n variant=\"ghost\"\n withTooltip={false}\n >\n <ChevronDown\n aria-hidden\n fill=\"neutral500\"\n style={{\n transform: `rotate(${isOpen ? '0deg' : '-90deg'})`,\n transition: 'transform 0.5s',\n }}\n />\n </IconButton>\n )}\n {isInDevelopmentMode && item.configurable !== false ? (\n <>\n {!isMorph && (\n <IconButton\n onClick={handleClick}\n label={`${formatMessage({\n id: 'app.utils.edit',\n defaultMessage: 'Edit',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canEdit}\n >\n <Pencil />\n </IconButton>\n )}\n <IconButton\n onClick={handleDelete}\n label={`${formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })} ${item.name}`}\n variant=\"ghost\"\n disabled={!canDelete}\n >\n <Trash />\n </IconButton>\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <ConfirmDialog onConfirm={handleConfirmDelete} onCancel={handleCancelDelete}>\n <Box>\n <Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions'\n ),\n defaultMessage:\n 'The following fields have conditions that depend on this field: ',\n })}\n <Typography fontWeight=\"bold\">\n {checkDependentRows(contentTypes, item.name)\n .map(({ attribute }) => attribute)\n .join(', ')}\n </Typography>\n {formatMessage({\n id: getTrad(\n 'popUpWarning.bodyMessage.delete-attribute-with-conditions-end'\n ),\n defaultMessage: '. Are you sure you want to delete it?',\n })}\n </Typography>\n </Box>\n </ConfirmDialog>\n </Dialog.Root>\n </>\n ) : (\n <Flex padding={2}>\n <Lock fill=\"neutral500\" />\n </Flex>\n )}\n </>\n </Flex>\n </Box>\n </GridWrapper>\n\n <SubRow $shouldHideNestedInfos={shouldHideNestedInfos} $isOpen={isOpen}>\n {item.type === 'component' && (\n <ComponentList\n {...item}\n isFromDynamicZone={isFromDynamicZone}\n firstLoopComponentUid={firstLoopComponentUid}\n />\n )}\n\n {item.type === 'dynamiczone' && (\n <DynamicZoneList\n {...item}\n disabled={isTypeDeleted || item.status === 'REMOVED'}\n addComponent={addComponentToDZ!}\n forTarget={type.modelType}\n targetUid={type.uid}\n />\n )}\n </SubRow>\n </>\n );\n});\n\nconst SubRow = styled(Box)<{ $isOpen: boolean; $shouldHideNestedInfos?: boolean }>`\n display: ${({ $shouldHideNestedInfos }) => ($shouldHideNestedInfos ? 'none' : 'block')};\n max-height: ${({ $isOpen }) => ($isOpen ? '9999px' : '0px')};\n overflow: hidden;\n\n transition: ${({ $isOpen }) =>\n $isOpen ? 'max-height 1s ease-in-out' : 'max-height 0.5s cubic-bezier(0, 1, 0, 1)'};\n`;\n\nconst ComponentLink = ({ uid }: { uid: UID.Component }) => {\n const { components } = useDataManager();\n const type = get(components, uid);\n\n return (\n <>\n (\n <Link\n onClick={(e) => e.stopPropagation()}\n tag={NavLink}\n to={`/plugins/content-type-builder/component-categories/${type.category}/${type.uid}`}\n >\n {upperFirst(type.info.displayName)}\n </Link>\n )\n </>\n );\n};\n"],"names":["GridWrapper","styled","Flex","theme","$isOverlay","colors","neutral150","spaces","$isDragging","StyledAttributeRow","Box","AttributeRow","forwardRef","props","ref","style","rest","_jsx","tag","attributes","background","shadow","isOverlay","aria-label","item","name","MemoizedRow","memo","firstLoopComponentUid","isFromDynamicZone","addComponentToDZ","secondLoopComponentUid","type","isDragging","handleRef","listeners","shouldHideNestedInfos","isOpen","setIsOpen","useState","isTypeDeleted","status","contentTypes","removeAttribute","isInDevelopmentMode","useDataManager","onOpenModalEditField","onOpenModalEditCustomField","useFormModalNavigation","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","isDeleted","isMorph","relation","includes","ico","targetContentType","get","target","isPluginContentType","src","handleDelete","e","stopPropagation","dependentRows","checkDependentRows","length","forTarget","modelType","targetUid","uid","attributeToRemoveName","handleConfirmDelete","handleCancelDelete","handleClick","configurable","editTargetUid","attributeType","getAttributeDisplayedType","step","customField","attributeName","customFieldUid","loopNumber","canEdit","canDelete","cursor","canClick","_jsxs","_Fragment","onClick","undefined","paddingLeft","paddingRight","alignItems","overflow","gap","Curve","color","IconButton","role","variant","withTooltip","label","id","defaultMessage","disabled","outlineOffset","Drag","AttributeIcon","Typography","textColor","fontWeight","textDecoration","ellipsis","required","DisplayedType","repeatable","multiple","conditions","Object","keys","Badge","margin","getRelationType","targetAttribute","getTrad","Link","NavLink","to","upperFirst","info","displayName","ComponentLink","component","justifyContent","StatusBadge","preventDefault","aria-expanded","ChevronDown","aria-hidden","fill","transform","transition","Pencil","Trash","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","onCancel","map","attribute","join","padding","Lock","SubRow","$shouldHideNestedInfos","$isOpen","ComponentList","DynamicZoneList","addComponent","components","category"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentCard.js","sources":["../../../../admin/src/components/ComponentCard/ComponentCard.tsx"],"sourcesContent":["import { Box, Flex, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../DataManager/useDataManager';\n\nimport { ComponentIcon } from './ComponentIcon';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ninterface ComponentCardProps {\n component: string;\n dzName: string;\n index: number;\n isActive?: boolean;\n isInDevelopmentMode?: boolean;\n onClick?: () => void;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n disabled?: boolean;\n}\n\nconst CloseButton = styled(Box)`\n position: absolute;\n display: none;\n top: 5px;\n right: 0.8rem;\n\n svg {\n width: 1rem;\n height: 1rem;\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n`;\n\nconst ComponentBox = styled(Flex)`\n width: 14rem;\n height: 8rem;\n position: relative;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral100};\n border-radius: ${({ theme }) => theme.borderRadius};\n max-width: 100%;\n\n &.active,\n &:focus,\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n\n ${CloseButton} {\n display: block;\n }\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport const ComponentCard = ({\n component,\n dzName,\n index,\n isActive = false,\n isInDevelopmentMode = false,\n onClick,\n forTarget,\n targetUid,\n disabled,\n}: ComponentCardProps) => {\n const { components, removeComponentFromDynamicZone } = useDataManager();\n const type = get(components, component);\n const { icon, displayName } = type?.info || {};\n\n const onClose = (e: any) => {\n e.stopPropagation();\n removeComponentFromDynamicZone({\n forTarget,\n targetUid,\n dzName,\n componentToRemoveIndex: index,\n });\n };\n\n return (\n <ComponentBox\n alignItems=\"center\"\n direction=\"column\"\n className={isActive ? 'active' : ''}\n borderRadius=\"borderRadius\"\n justifyContent=\"center\"\n paddingLeft={4}\n paddingRight={4}\n shrink={0}\n onClick={onClick}\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n cursor=\"pointer\"\n aria-selected={isActive}\n aria-controls={`dz-${dzName}-panel-${index}`}\n id={`dz-${dzName}-tab-${index}`}\n >\n <ComponentIcon icon={icon} isActive={isActive} />\n\n <Box marginTop={1} maxWidth=\"100%\">\n <Typography variant=\"pi\" fontWeight=\"bold\" ellipsis>\n {displayName}\n </Typography>\n </Box>\n\n {isInDevelopmentMode && !disabled && (\n <CloseButton cursor=\"pointer\" tag=\"button\" onClick={onClose}>\n <Cross />\n </CloseButton>\n )}\n </ComponentBox>\n );\n};\n"],"names":["CloseButton","styled","Box","theme","colors","primary600","ComponentBox","Flex","neutral200","neutral100","borderRadius","primary200","primary100","ComponentCard","component","dzName","index","isActive","isInDevelopmentMode","onClick","forTarget","targetUid","disabled","components","removeComponentFromDynamicZone","useDataManager","type","get","icon","displayName","info","onClose","e","stopPropagation","componentToRemoveIndex","_jsxs","alignItems","direction","className","justifyContent","paddingLeft","paddingRight","shrink","role","tabIndex","cursor","aria-selected","aria-controls","id","_jsx","ComponentIcon","marginTop","maxWidth","Typography","variant","fontWeight","ellipsis","tag","Cross"],"mappings":";;;;;;;;;;AAuBA,MAAMA,WAAAA,GAAcC,uBAAOC,CAAAA,gBAAAA,CAAI;;;;;;;;;;;YAWnB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;AAGrD,CAAC;AAED,MAAMC,YAAAA,GAAeL,uBAAOM,CAAAA,iBAAAA,CAAK;;;;oBAIb,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACI,UAAU,CAAC;cAC/C,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACK,UAAU,CAAC;AACtC,iBAAA,EAAE,CAAC,EAAEN,KAAK,EAAE,GAAKA,KAAAA,CAAMO,YAAY,CAAC;;;;;;sBAM/B,EAAE,CAAC,EAAEP,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACO,UAAU,CAAC;gBAC/C,EAAE,CAAC,EAAER,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACQ,UAAU,CAAC;WAC9C,EAAE,CAAC,EAAET,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAEhD,IAAA,EAAEL,WAAY,CAAA;;;;;;kBAMA,EAAE,CAAC,EAAEG,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACO,UAAU,CAAC;aAC9C,EAAE,CAAC,EAAER,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;;gBAItC,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;;;AAKzD,CAAC;AAEM,MAAMQ,gBAAgB,CAAC,EAC5BC,SAAS,EACTC,MAAM,EACNC,KAAK,EACLC,QAAAA,GAAW,KAAK,EAChBC,mBAAAA,GAAsB,KAAK,EAC3BC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACW,GAAA;AACnB,IAAA,MAAM,EAAEC,UAAU,EAAEC,8BAA8B,EAAE,GAAGC,6BAAAA,EAAAA;IACvD,MAAMC,IAAAA,GAAOC,IAAIJ,UAAYT,EAAAA,SAAAA,CAAAA;IAC7B,MAAM,EAAEc,IAAI,EAAEC,WAAW,EAAE,GAAGH,IAAAA,EAAMI,QAAQ,EAAC;AAE7C,IAAA,MAAMC,UAAU,CAACC,CAAAA,GAAAA;AACfA,QAAAA,CAAAA,CAAEC,eAAe,EAAA;QACjBT,8BAA+B,CAAA;AAC7BJ,YAAAA,SAAAA;AACAC,YAAAA,SAAAA;AACAN,YAAAA,MAAAA;YACAmB,sBAAwBlB,EAAAA;AAC1B,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,qBACEmB,eAAC7B,CAAAA,YAAAA,EAAAA;QACC8B,UAAW,EAAA,QAAA;QACXC,SAAU,EAAA,QAAA;AACVC,QAAAA,SAAAA,EAAWrB,WAAW,QAAW,GAAA,EAAA;QACjCP,YAAa,EAAA,cAAA;QACb6B,cAAe,EAAA,QAAA;QACfC,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;QACdC,MAAQ,EAAA,CAAA;QACRvB,OAASA,EAAAA,OAAAA;QACTwB,IAAK,EAAA,KAAA;QACLC,QAAU3B,EAAAA,QAAAA,GAAW,IAAI,CAAC,CAAA;QAC1B4B,MAAO,EAAA,SAAA;QACPC,eAAe7B,EAAAA,QAAAA;AACf8B,QAAAA,eAAAA,EAAe,CAAC,GAAG,EAAEhC,
|
|
1
|
+
{"version":3,"file":"ComponentCard.js","sources":["../../../../admin/src/components/ComponentCard/ComponentCard.tsx"],"sourcesContent":["import { Box, Flex, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../DataManager/useDataManager';\n\nimport { ComponentIcon } from './ComponentIcon';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ninterface ComponentCardProps {\n component: string;\n dzName: string;\n index: number;\n isActive?: boolean;\n isInDevelopmentMode?: boolean;\n onClick?: () => void;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n disabled?: boolean;\n}\n\nconst CloseButton = styled(Box)`\n position: absolute;\n display: none;\n top: 5px;\n right: 0.8rem;\n\n svg {\n width: 1rem;\n height: 1rem;\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n`;\n\nconst ComponentBox = styled(Flex)`\n width: 14rem;\n height: 8rem;\n position: relative;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral100};\n border-radius: ${({ theme }) => theme.borderRadius};\n max-width: 100%;\n\n &.active,\n &:focus,\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n\n ${CloseButton} {\n display: block;\n }\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport const ComponentCard = ({\n component,\n dzName,\n index,\n isActive = false,\n isInDevelopmentMode = false,\n onClick,\n forTarget,\n targetUid,\n disabled,\n}: ComponentCardProps) => {\n const { components, removeComponentFromDynamicZone } = useDataManager();\n const type = get(components, component);\n const { icon, displayName } = type?.info || {};\n\n const onClose = (e: any) => {\n e.stopPropagation();\n removeComponentFromDynamicZone({\n forTarget,\n targetUid,\n dzName,\n componentToRemoveIndex: index,\n });\n };\n\n return (\n <ComponentBox\n alignItems=\"center\"\n direction=\"column\"\n className={isActive ? 'active' : ''}\n borderRadius=\"borderRadius\"\n justifyContent=\"center\"\n paddingLeft={4}\n paddingRight={4}\n shrink={0}\n onClick={onClick}\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n cursor=\"pointer\"\n aria-selected={isActive}\n aria-controls={`dz-${dzName}-panel-${index}`}\n id={`dz-${dzName}-tab-${index}`}\n >\n <ComponentIcon icon={icon} isActive={isActive} />\n\n <Box marginTop={1} maxWidth=\"100%\">\n <Typography variant=\"pi\" fontWeight=\"bold\" ellipsis>\n {displayName}\n </Typography>\n </Box>\n\n {isInDevelopmentMode && !disabled && (\n <CloseButton cursor=\"pointer\" tag=\"button\" onClick={onClose}>\n <Cross />\n </CloseButton>\n )}\n </ComponentBox>\n );\n};\n"],"names":["CloseButton","styled","Box","theme","colors","primary600","ComponentBox","Flex","neutral200","neutral100","borderRadius","primary200","primary100","ComponentCard","component","dzName","index","isActive","isInDevelopmentMode","onClick","forTarget","targetUid","disabled","components","removeComponentFromDynamicZone","useDataManager","type","get","icon","displayName","info","onClose","e","stopPropagation","componentToRemoveIndex","_jsxs","alignItems","direction","className","justifyContent","paddingLeft","paddingRight","shrink","role","tabIndex","cursor","aria-selected","aria-controls","id","_jsx","ComponentIcon","marginTop","maxWidth","Typography","variant","fontWeight","ellipsis","tag","Cross"],"mappings":";;;;;;;;;;AAuBA,MAAMA,WAAAA,GAAcC,uBAAOC,CAAAA,gBAAAA,CAAI;;;;;;;;;;;YAWnB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;AAGrD,CAAC;AAED,MAAMC,YAAAA,GAAeL,uBAAOM,CAAAA,iBAAAA,CAAK;;;;oBAIb,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACI,UAAU,CAAC;cAC/C,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACK,UAAU,CAAC;AACtC,iBAAA,EAAE,CAAC,EAAEN,KAAK,EAAE,GAAKA,KAAAA,CAAMO,YAAY,CAAC;;;;;;sBAM/B,EAAE,CAAC,EAAEP,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACO,UAAU,CAAC;gBAC/C,EAAE,CAAC,EAAER,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACQ,UAAU,CAAC;WAC9C,EAAE,CAAC,EAAET,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAEhD,IAAA,EAAEL,WAAY,CAAA;;;;;;kBAMA,EAAE,CAAC,EAAEG,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACO,UAAU,CAAC;aAC9C,EAAE,CAAC,EAAER,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;;gBAItC,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;;;AAKzD,CAAC;AAEM,MAAMQ,gBAAgB,CAAC,EAC5BC,SAAS,EACTC,MAAM,EACNC,KAAK,EACLC,QAAAA,GAAW,KAAK,EAChBC,mBAAAA,GAAsB,KAAK,EAC3BC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACW,GAAA;AACnB,IAAA,MAAM,EAAEC,UAAU,EAAEC,8BAA8B,EAAE,GAAGC,6BAAAA,EAAAA;IACvD,MAAMC,IAAAA,GAAOC,IAAIJ,UAAYT,EAAAA,SAAAA,CAAAA;IAC7B,MAAM,EAAEc,IAAI,EAAEC,WAAW,EAAE,GAAGH,IAAAA,EAAMI,QAAQ,EAAC;AAE7C,IAAA,MAAMC,UAAU,CAACC,CAAAA,GAAAA;AACfA,QAAAA,CAAAA,CAAEC,eAAe,EAAA;QACjBT,8BAA+B,CAAA;AAC7BJ,YAAAA,SAAAA;AACAC,YAAAA,SAAAA;AACAN,YAAAA,MAAAA;YACAmB,sBAAwBlB,EAAAA;AAC1B,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,qBACEmB,eAAC7B,CAAAA,YAAAA,EAAAA;QACC8B,UAAW,EAAA,QAAA;QACXC,SAAU,EAAA,QAAA;AACVC,QAAAA,SAAAA,EAAWrB,WAAW,QAAW,GAAA,EAAA;QACjCP,YAAa,EAAA,cAAA;QACb6B,cAAe,EAAA,QAAA;QACfC,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;QACdC,MAAQ,EAAA,CAAA;QACRvB,OAASA,EAAAA,OAAAA;QACTwB,IAAK,EAAA,KAAA;QACLC,QAAU3B,EAAAA,QAAAA,GAAW,IAAI,CAAC,CAAA;QAC1B4B,MAAO,EAAA,SAAA;QACPC,eAAe7B,EAAAA,QAAAA;AACf8B,QAAAA,eAAAA,EAAe,CAAC,GAAG,EAAEhC,MAAO,CAAA,OAAO,EAAEC,KAAO,CAAA,CAAA;AAC5CgC,QAAAA,EAAAA,EAAI,CAAC,GAAG,EAAEjC,MAAO,CAAA,KAAK,EAAEC,KAAO,CAAA,CAAA;;0BAE/BiC,cAACC,CAAAA,2BAAAA,EAAAA;gBAActB,IAAMA,EAAAA,IAAAA;gBAAMX,QAAUA,EAAAA;;0BAErCgC,cAAC/C,CAAAA,gBAAAA,EAAAA;gBAAIiD,SAAW,EAAA,CAAA;gBAAGC,QAAS,EAAA,MAAA;AAC1B,gBAAA,QAAA,gBAAAH,cAACI,CAAAA,uBAAAA,EAAAA;oBAAWC,OAAQ,EAAA,IAAA;oBAAKC,UAAW,EAAA,MAAA;oBAAOC,QAAQ,EAAA,IAAA;AAChD3B,oBAAAA,QAAAA,EAAAA;;;YAIJX,mBAAuB,IAAA,CAACI,0BACvB2B,cAACjD,CAAAA,WAAAA,EAAAA;gBAAY6C,MAAO,EAAA,SAAA;gBAAUY,GAAI,EAAA,QAAA;gBAAStC,OAASY,EAAAA,OAAAA;AAClD,gBAAA,QAAA,gBAAAkB,cAACS,CAAAA,WAAAA,EAAAA,EAAAA;;;;AAKX;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentCard.mjs","sources":["../../../../admin/src/components/ComponentCard/ComponentCard.tsx"],"sourcesContent":["import { Box, Flex, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../DataManager/useDataManager';\n\nimport { ComponentIcon } from './ComponentIcon';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ninterface ComponentCardProps {\n component: string;\n dzName: string;\n index: number;\n isActive?: boolean;\n isInDevelopmentMode?: boolean;\n onClick?: () => void;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n disabled?: boolean;\n}\n\nconst CloseButton = styled(Box)`\n position: absolute;\n display: none;\n top: 5px;\n right: 0.8rem;\n\n svg {\n width: 1rem;\n height: 1rem;\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n`;\n\nconst ComponentBox = styled(Flex)`\n width: 14rem;\n height: 8rem;\n position: relative;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral100};\n border-radius: ${({ theme }) => theme.borderRadius};\n max-width: 100%;\n\n &.active,\n &:focus,\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n\n ${CloseButton} {\n display: block;\n }\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport const ComponentCard = ({\n component,\n dzName,\n index,\n isActive = false,\n isInDevelopmentMode = false,\n onClick,\n forTarget,\n targetUid,\n disabled,\n}: ComponentCardProps) => {\n const { components, removeComponentFromDynamicZone } = useDataManager();\n const type = get(components, component);\n const { icon, displayName } = type?.info || {};\n\n const onClose = (e: any) => {\n e.stopPropagation();\n removeComponentFromDynamicZone({\n forTarget,\n targetUid,\n dzName,\n componentToRemoveIndex: index,\n });\n };\n\n return (\n <ComponentBox\n alignItems=\"center\"\n direction=\"column\"\n className={isActive ? 'active' : ''}\n borderRadius=\"borderRadius\"\n justifyContent=\"center\"\n paddingLeft={4}\n paddingRight={4}\n shrink={0}\n onClick={onClick}\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n cursor=\"pointer\"\n aria-selected={isActive}\n aria-controls={`dz-${dzName}-panel-${index}`}\n id={`dz-${dzName}-tab-${index}`}\n >\n <ComponentIcon icon={icon} isActive={isActive} />\n\n <Box marginTop={1} maxWidth=\"100%\">\n <Typography variant=\"pi\" fontWeight=\"bold\" ellipsis>\n {displayName}\n </Typography>\n </Box>\n\n {isInDevelopmentMode && !disabled && (\n <CloseButton cursor=\"pointer\" tag=\"button\" onClick={onClose}>\n <Cross />\n </CloseButton>\n )}\n </ComponentBox>\n );\n};\n"],"names":["CloseButton","styled","Box","theme","colors","primary600","ComponentBox","Flex","neutral200","neutral100","borderRadius","primary200","primary100","ComponentCard","component","dzName","index","isActive","isInDevelopmentMode","onClick","forTarget","targetUid","disabled","components","removeComponentFromDynamicZone","useDataManager","type","get","icon","displayName","info","onClose","e","stopPropagation","componentToRemoveIndex","_jsxs","alignItems","direction","className","justifyContent","paddingLeft","paddingRight","shrink","role","tabIndex","cursor","aria-selected","aria-controls","id","_jsx","ComponentIcon","marginTop","maxWidth","Typography","variant","fontWeight","ellipsis","tag","Cross"],"mappings":";;;;;;;;AAuBA,MAAMA,WAAAA,GAAcC,MAAOC,CAAAA,GAAAA,CAAI;;;;;;;;;;;YAWnB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;AAGrD,CAAC;AAED,MAAMC,YAAAA,GAAeL,MAAOM,CAAAA,IAAAA,CAAK;;;;oBAIb,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACI,UAAU,CAAC;cAC/C,EAAE,CAAC,EAAEL,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACK,UAAU,CAAC;AACtC,iBAAA,EAAE,CAAC,EAAEN,KAAK,EAAE,GAAKA,KAAAA,CAAMO,YAAY,CAAC;;;;;;sBAM/B,EAAE,CAAC,EAAEP,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACO,UAAU,CAAC;gBAC/C,EAAE,CAAC,EAAER,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACQ,UAAU,CAAC;WAC9C,EAAE,CAAC,EAAET,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAEhD,IAAA,EAAEL,WAAY,CAAA;;;;;;kBAMA,EAAE,CAAC,EAAEG,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACO,UAAU,CAAC;aAC9C,EAAE,CAAC,EAAER,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;;gBAItC,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;;;;AAKzD,CAAC;AAEM,MAAMQ,gBAAgB,CAAC,EAC5BC,SAAS,EACTC,MAAM,EACNC,KAAK,EACLC,QAAAA,GAAW,KAAK,EAChBC,mBAAAA,GAAsB,KAAK,EAC3BC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,QAAQ,EACW,GAAA;AACnB,IAAA,MAAM,EAAEC,UAAU,EAAEC,8BAA8B,EAAE,GAAGC,cAAAA,EAAAA;IACvD,MAAMC,IAAAA,GAAOC,IAAIJ,UAAYT,EAAAA,SAAAA,CAAAA;IAC7B,MAAM,EAAEc,IAAI,EAAEC,WAAW,EAAE,GAAGH,IAAAA,EAAMI,QAAQ,EAAC;AAE7C,IAAA,MAAMC,UAAU,CAACC,CAAAA,GAAAA;AACfA,QAAAA,CAAAA,CAAEC,eAAe,EAAA;QACjBT,8BAA+B,CAAA;AAC7BJ,YAAAA,SAAAA;AACAC,YAAAA,SAAAA;AACAN,YAAAA,MAAAA;YACAmB,sBAAwBlB,EAAAA;AAC1B,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,qBACEmB,IAAC7B,CAAAA,YAAAA,EAAAA;QACC8B,UAAW,EAAA,QAAA;QACXC,SAAU,EAAA,QAAA;AACVC,QAAAA,SAAAA,EAAWrB,WAAW,QAAW,GAAA,EAAA;QACjCP,YAAa,EAAA,cAAA;QACb6B,cAAe,EAAA,QAAA;QACfC,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;QACdC,MAAQ,EAAA,CAAA;QACRvB,OAASA,EAAAA,OAAAA;QACTwB,IAAK,EAAA,KAAA;QACLC,QAAU3B,EAAAA,QAAAA,GAAW,IAAI,CAAC,CAAA;QAC1B4B,MAAO,EAAA,SAAA;QACPC,eAAe7B,EAAAA,QAAAA;AACf8B,QAAAA,eAAAA,EAAe,CAAC,GAAG,EAAEhC,
|
|
1
|
+
{"version":3,"file":"ComponentCard.mjs","sources":["../../../../admin/src/components/ComponentCard/ComponentCard.tsx"],"sourcesContent":["import { Box, Flex, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport get from 'lodash/get';\nimport { styled } from 'styled-components';\n\nimport { useDataManager } from '../DataManager/useDataManager';\n\nimport { ComponentIcon } from './ComponentIcon';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ninterface ComponentCardProps {\n component: string;\n dzName: string;\n index: number;\n isActive?: boolean;\n isInDevelopmentMode?: boolean;\n onClick?: () => void;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n disabled?: boolean;\n}\n\nconst CloseButton = styled(Box)`\n position: absolute;\n display: none;\n top: 5px;\n right: 0.8rem;\n\n svg {\n width: 1rem;\n height: 1rem;\n\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n`;\n\nconst ComponentBox = styled(Flex)`\n width: 14rem;\n height: 8rem;\n position: relative;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n background: ${({ theme }) => theme.colors.neutral100};\n border-radius: ${({ theme }) => theme.borderRadius};\n max-width: 100%;\n\n &.active,\n &:focus,\n &:hover {\n border: 1px solid ${({ theme }) => theme.colors.primary200};\n background: ${({ theme }) => theme.colors.primary100};\n color: ${({ theme }) => theme.colors.primary600};\n\n ${CloseButton} {\n display: block;\n }\n\n /* > ComponentIcon */\n > div:first-child {\n background: ${({ theme }) => theme.colors.primary200};\n color: ${({ theme }) => theme.colors.primary600};\n\n svg {\n path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n }\n }\n }\n`;\n\nexport const ComponentCard = ({\n component,\n dzName,\n index,\n isActive = false,\n isInDevelopmentMode = false,\n onClick,\n forTarget,\n targetUid,\n disabled,\n}: ComponentCardProps) => {\n const { components, removeComponentFromDynamicZone } = useDataManager();\n const type = get(components, component);\n const { icon, displayName } = type?.info || {};\n\n const onClose = (e: any) => {\n e.stopPropagation();\n removeComponentFromDynamicZone({\n forTarget,\n targetUid,\n dzName,\n componentToRemoveIndex: index,\n });\n };\n\n return (\n <ComponentBox\n alignItems=\"center\"\n direction=\"column\"\n className={isActive ? 'active' : ''}\n borderRadius=\"borderRadius\"\n justifyContent=\"center\"\n paddingLeft={4}\n paddingRight={4}\n shrink={0}\n onClick={onClick}\n role=\"tab\"\n tabIndex={isActive ? 0 : -1}\n cursor=\"pointer\"\n aria-selected={isActive}\n aria-controls={`dz-${dzName}-panel-${index}`}\n id={`dz-${dzName}-tab-${index}`}\n >\n <ComponentIcon icon={icon} isActive={isActive} />\n\n <Box marginTop={1} maxWidth=\"100%\">\n <Typography variant=\"pi\" fontWeight=\"bold\" ellipsis>\n {displayName}\n </Typography>\n </Box>\n\n {isInDevelopmentMode && !disabled && (\n <CloseButton cursor=\"pointer\" tag=\"button\" onClick={onClose}>\n <Cross />\n </CloseButton>\n )}\n </ComponentBox>\n );\n};\n"],"names":["CloseButton","styled","Box","theme","colors","primary600","ComponentBox","Flex","neutral200","neutral100","borderRadius","primary200","primary100","ComponentCard","component","dzName","index","isActive","isInDevelopmentMode","onClick","forTarget","targetUid","disabled","components","removeComponentFromDynamicZone","useDataManager","type","get","icon","displayName","info","onClose","e","stopPropagation","componentToRemoveIndex","_jsxs","alignItems","direction","className","justifyContent","paddingLeft","paddingRight","shrink","role","tabIndex","cursor","aria-selected","aria-controls","id","_jsx","ComponentIcon","marginTop","maxWidth","Typography","variant","fontWeight","ellipsis","tag","Cross"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContentTypeBuilderMenu.js","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => contains(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => contains(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","contains","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useContentTypeBuilderMenu.js","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => contains(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => contains(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","contains","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useContentTypeBuilderMenu.mjs","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => contains(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => contains(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","contains","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":";;;;;;;;;;MA4CaA,yBAA4B,GAAA,IAAA;AACvC,IAAA,MAAM,EAAEC,2BAA2B,EAAEC,mBAAmB,EAAEC,sBAAsB,EAAE,GAChFC,cAAAA,EAAAA;IACF,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAe,CAAA,GAAGC,QAAS,CAAA,EAAA,CAAA;IAC/C,MAAM,EAAEC,uBAAuB,EAAE,GAAGC,sBAAAA,EAAAA;IACpC,MAAM,EAAEC,MAAM,EAAE,GAAGC,OAAAA,EAAAA;AAEnB,IAAA,MAAM,EAAEC,QAAQ,EAAE,GAAGC,UAAUH,MAAQ,EAAA;QACrCI,WAAa,EAAA;AACf,KAAA,CAAA;IAEA,MAAMC,SAAAA,GAAYC,YAAYN,MAAQ,EAAA;QACpCI,WAAa,EAAA;AACf,KAAA,CAAA;AAEA,IAAA,MAAMG,wCAA2C,GAAA,IAAA;QAC/Cd,UAAW,CAAA,CAAC,qBAAqB,CAAC,CAAA;AAElC,QAAA,MAAMe,SAAY,GAAA;YAChBC,SAAW,EAAA,aAAA;YACXC,IAAM,EAAA,gBAAA;YACNC,UAAY,EAAA,QAAA;YACZC,SAAW,EAAA;AACb,SAAA;QAEAd,uBAAwBU,CAAAA,SAAAA,CAAAA;AAC1B,KAAA;AAEA,IAAA,MAAMK,oCAAuC,GAAA,IAAA;QAC3CpB,UAAW,CAAA,CAAC,oBAAoB,CAAC,CAAA;AAEjC,QAAA,MAAMe,SAAY,GAAA;YAChBC,SAAW,EAAA,aAAA;YACXC,IAAM,EAAA,YAAA;YACNC,UAAY,EAAA,QAAA;YACZC,SAAW,EAAA;AACb,SAAA;QAEAd,uBAAwBU,CAAAA,SAAAA,CAAAA;AAC1B,KAAA;AAEA,IAAA,MAAMM,mCAAsC,GAAA,IAAA;QAC1CrB,UAAW,CAAA,qBAAA,CAAA;AAEX,QAAA,MAAMe,SAAY,GAAA;YAChBC,SAAW,EAAA,WAAA;YACXC,IAAM,EAAA,IAAA;YACNC,UAAY,EAAA,QAAA;YACZC,SAAW,EAAA;AACb,SAAA;QAEAd,uBAAwBU,CAAAA,SAAAA,CAAAA;AAC1B,KAAA;AAEA,IAAA,MAAMO,cAAiBC,GAAAA,MAAAA,CAAOC,OAAO,CAAC5B,2BACnC6B,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACC,QAAAA,EAAUC,UAAW,CAAA,IAAM;YAChCC,IAAMF,EAAAA,QAAAA;AACNG,YAAAA,KAAAA,EAAOC,UAAWJ,CAAAA,QAAAA,CAAAA;AAClBK,YAAAA,KAAAA,EAAOJ,UACJF,CAAAA,GAAG,CAAC,CAACO,aAAe;AACnBJ,oBAAAA,IAAAA,EAAMI,UAAUC,GAAG;AACnBC,oBAAAA,EAAAA,EAAI,CAAC,SAAS,EAAEC,QAAAA,CAAS,sBAAsB,EAAET,QAAS,CAAA,CAAC,EAAEM,SAAAA,CAAUC,GAAG,CAAC,CAAC;oBAC5EJ,KAAOG,EAAAA,SAAAA,CAAUI,IAAI,CAACC,WAAW;AACjCC,oBAAAA,MAAAA,EAAQN,UAAUM;AACpB,iBAAA,CACCC,CAAAA,CAAAA,IAAI,CAAC,CAACC,CAAGC,EAAAA,CAAAA,GAAM7B,SAAU8B,CAAAA,OAAO,CAACF,CAAAA,CAAEX,KAAK,EAAEY,EAAEZ,KAAK,CAAA;AACtD,SAAA,CACCU,CAAAA,CAAAA,IAAI,CAAC,CAACC,CAAGC,EAAAA,CAAAA,GAAM7B,SAAU8B,CAAAA,OAAO,CAACF,CAAAA,CAAEX,KAAK,EAAEY,EAAEZ,KAAK,CAAA,CAAA;AAEpD,IAAA,MAAMc,qBAAwB7C,GAAAA,sBAAAA,CAC3B8C,MAAM,CAAC,CAACC,GAAAA,GAAQA,GAAIC,CAAAA,OAAO,CAC3BrB,CAAAA,GAAG,CAAC,CAACW,QAAU;AACdnB,YAAAA,IAAAA,EAAMmB,KAAKnB,IAAI;AACfW,YAAAA,IAAAA,EAAMQ,KAAKR,IAAI;AACfM,YAAAA,EAAAA,EAAIE,KAAKF,EAAE;AACXL,YAAAA,KAAAA,EAAOO,KAAKP,KAAK;AACjBS,YAAAA,MAAAA,EAAQF,KAAKE;SACf,CAAA,CAAA;AAEF,IAAA,MAAMS,IAAa,GAAA;AACjB,QAAA;YACEnB,IAAM,EAAA,QAAA;YACNC,KAAO,EAAA;AACLmB,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,0BAAA,CAAA,CAA4B,CAAC;gBAC5CC,cAAgB,EAAA;AAClB,aAAA;AACAC,YAAAA,UAAAA,EAAYtD,mBACR,GAAA;AACEmD,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,qBAAA,CAAA,CAAuB,CAAC;gBACvCC,cAAgB,EAAA,4BAAA;gBAChBE,OAAStC,EAAAA;aAEXuC,GAAAA,SAAAA;AACJtB,YAAAA,KAAAA,EAAOY,sBAAsBC,MAAM,CAAC,CAACU,WAAgBA,GAAAA,WAAAA,CAAYrC,IAAI,KAAK,gBAAA;AAC5E,SAAA;AACA,QAAA;YACEW,IAAM,EAAA,aAAA;YACNC,KAAO,EAAA;AACLmB,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,gCAAA,CAAA,CAAkC,CAAC;gBAClDC,cAAgB,EAAA;AAClB,aAAA;AACAC,YAAAA,UAAAA,EAAYtD,mBACR,GAAA;AACEmD,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,4BAAA,CAAA,CAA8B,CAAC;gBAC9CC,cAAgB,EAAA,wBAAA;gBAChBE,OAAShC,EAAAA;aAEXiC,GAAAA,SAAAA;AACJtB,YAAAA,KAAAA,EAAOY,sBAAsBC,MAAM,CAAC,CAACW,UAAeA,GAAAA,UAAAA,CAAWtC,IAAI,KAAK,YAAA;AAC1E,SAAA;AACA,QAAA;YACEW,IAAM,EAAA,YAAA;YACNC,KAAO,EAAA;AACLmB,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,8BAAA,CAAA,CAAgC,CAAC;gBAChDC,cAAgB,EAAA;AAClB,aAAA;AACAC,YAAAA,UAAAA,EAAYtD,mBACR,GAAA;AACEmD,gBAAAA,EAAAA,EAAI,CAAC,EAAEC,OAAQ,CAAA,yBAAA,CAAA,CAA2B,CAAC;gBAC3CC,cAAgB,EAAA,wBAAA;gBAChBE,OAAS/B,EAAAA;aAEXgC,GAAAA,SAAAA;YACJtB,KAAOT,EAAAA;AACT;KACD,CAACG,GAAG,CAAC,CAAC+B,OAAAA,GAAAA;AACL,QAAA,MAAMC,QAAWD,GAAAA,OAAAA,CAAQzB,KAAK,CAAC2B,IAAI,CAAC,CAACC,CAAM,GAAA,OAAA,IAAWA,CAAKC,IAAAA,KAAAA,CAAMC,OAAO,CAACF,EAAE5B,KAAK,CAAA,CAAA;AAEhF,QAAA,IAAI0B,QAAU,EAAA;AACZ,YAAA,IAAIK,kBAAqB,GAAA,CAAA;YAEzB,OAAO;AACL,gBAAA,GAAGN,OAAO;AACVzB,gBAAAA,KAAAA,EAAOyB,QAAQzB,KAAK,CAACgC,MAAM,CAAC,CAACC,GAAKC,EAAAA,IAAAA,GAAAA;AAChC,oBAAA,MAAMC,aACJ,GAAA,OAAA,IAAWD,IAAOA,GAAAA,IAAAA,CAAKlC,KAAK,CAACa,MAAM,CAAC,CAACqB,OAASxD,QAASwD,CAAAA,IAAAA,CAAKpC,KAAK,EAAE3B,gBAAgB,EAAE;oBAEvF,IAAIgE,aAAAA,CAAcC,MAAM,KAAK,CAAG,EAAA;wBAC9B,OAAOH,GAAAA;AACT;AAEAF,oBAAAA,kBAAAA,IAAsBI,cAAcC,MAAM;AAE1CH,oBAAAA,GAAAA,CAAII,IAAI,CAAC;AACP,wBAAA,GAAGH,IAAI;AACPlC,wBAAAA,KAAAA,EAAOmC,aAAc3B,CAAAA,IAAI,CAAC,CAACC,CAAGC,EAAAA,CAAAA,GAAM7B,SAAU8B,CAAAA,OAAO,CAACF,CAAAA,CAAEX,KAAK,EAAEY,EAAEZ,KAAK,CAAA;AACxE,qBAAA,CAAA;oBAEA,OAAOmC,GAAAA;AACT,iBAAA,EAAG,EAAE,CAAA;gBACLK,UAAYP,EAAAA;AACd,aAAA;AACF;QAEA,MAAMI,aAAAA,GAAgBV,OAAQzB,CAAAA,KAAK,CAChCa,MAAM,CAAC,CAACqB,IAAAA,GAASxD,QAASwD,CAAAA,IAAAA,CAAKpC,KAAK,EAAE3B,cACtCqC,IAAI,CAAC,CAACC,CAAAA,EAAGC,CAAM7B,GAAAA,SAAAA,CAAU8B,OAAO,CAACF,CAAEX,CAAAA,KAAK,EAAEY,CAAAA,CAAEZ,KAAK,CAAA,CAAA;QAEpD,OAAO;AACL,YAAA,GAAG2B,OAAO;YACVzB,KAAOmC,EAAAA,aAAAA;AACPG,YAAAA,UAAAA,EAAYH,cAAcC;AAC5B,SAAA;AACF,KAAA,CAAA;IAEA,OAAO;QACLG,IAAMvB,EAAAA,IAAAA;QACNwB,MAAQ,EAAA;YACNC,KAAOtE,EAAAA,WAAAA;YACPuE,QAAUtE,EAAAA,cAAAA;AACVuE,YAAAA,KAAAA,EAAO,IAAMvE,cAAe,CAAA,EAAA;AAC9B;AACF,KAAA;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"useContentTypeBuilderMenu.mjs","sources":["../../../../admin/src/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { useCollator, useFilter } from '@strapi/design-system';\nimport upperFirst from 'lodash/upperFirst';\nimport { useIntl } from 'react-intl';\n\nimport { pluginId } from '../../pluginId';\nimport { getTrad } from '../../utils/getTrad';\nimport { useDataManager } from '../DataManager/useDataManager';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport type { Status } from '../../types';\n\ntype Link = {\n name: string;\n to: string;\n status: Status;\n title: string;\n};\n\ntype SubSection = {\n name: string;\n title: string;\n links: Link[];\n};\n\ntype MenuSection = {\n name: string;\n title: {\n id: string;\n defaultMessage: string;\n };\n customLink?: {\n id: string;\n defaultMessage: string;\n onClick: () => void;\n };\n links: Array<SubSection | Link>;\n linksCount?: number;\n};\n\ntype Menu = MenuSection[];\n\nexport const useContentTypeBuilderMenu = () => {\n const { componentsGroupedByCategory, isInDevelopmentMode, sortedContentTypesList } =\n useDataManager();\n const { trackUsage } = useTracking();\n const [searchValue, setSearchValue] = useState('');\n const { onOpenModalCreateSchema } = useFormModalNavigation();\n const { locale } = useIntl();\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const handleClickOpenModalCreateCollectionType = () => {\n trackUsage(`willCreateContentType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'collectionType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateSingleType = () => {\n trackUsage(`willCreateSingleType`);\n\n const nextState = {\n modalType: 'contentType',\n kind: 'singleType',\n actionType: 'create',\n forTarget: 'contentType',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const handleClickOpenModalCreateComponent = () => {\n trackUsage('willCreateComponent');\n\n const nextState = {\n modalType: 'component',\n kind: null,\n actionType: 'create',\n forTarget: 'component',\n };\n\n onOpenModalCreateSchema(nextState);\n };\n\n const componentsData = Object.entries(componentsGroupedByCategory)\n .map(([category, components]) => ({\n name: category,\n title: upperFirst(category),\n links: components\n .map((component) => ({\n name: component.uid,\n to: `/plugins/${pluginId}/component-categories/${category}/${component.uid}`,\n title: component.info.displayName,\n status: component.status,\n }))\n .sort((a, b) => formatter.compare(a.title, b.title)),\n }))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n const displayedContentTypes = sortedContentTypesList\n .filter((obj) => obj.visible)\n .map((info) => ({\n kind: info.kind,\n name: info.name,\n to: info.to,\n title: info.title,\n status: info.status,\n }));\n\n const data: Menu = [\n {\n name: 'models',\n title: {\n id: `${getTrad('menu.section.models.name')}`,\n defaultMessage: 'Collection Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.model.create')}`,\n defaultMessage: 'Create new collection type',\n onClick: handleClickOpenModalCreateCollectionType,\n }\n : undefined,\n links: displayedContentTypes.filter((contentType) => contentType.kind === 'collectionType'),\n },\n {\n name: 'singleTypes',\n title: {\n id: `${getTrad('menu.section.single-types.name')}`,\n defaultMessage: 'Single Types',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.single-types.create')}`,\n defaultMessage: 'Create new single type',\n onClick: handleClickOpenModalCreateSingleType,\n }\n : undefined,\n links: displayedContentTypes.filter((singleType) => singleType.kind === 'singleType'),\n },\n {\n name: 'components',\n title: {\n id: `${getTrad('menu.section.components.name')}`,\n defaultMessage: 'Components',\n },\n customLink: isInDevelopmentMode\n ? {\n id: `${getTrad('button.component.create')}`,\n defaultMessage: 'Create a new component',\n onClick: handleClickOpenModalCreateComponent,\n }\n : undefined,\n links: componentsData,\n },\n ].map((section) => {\n const hasChild = section.links.some((l) => 'links' in l && Array.isArray(l.links));\n\n if (hasChild) {\n let filteredLinksCount = 0;\n\n return {\n ...section,\n links: section.links.reduce((acc, link) => {\n const filteredLinks =\n 'links' in link ? link.links.filter((link) => contains(link.title, searchValue)) : [];\n\n if (filteredLinks.length === 0) {\n return acc;\n }\n\n filteredLinksCount += filteredLinks.length;\n\n acc.push({\n ...link,\n links: filteredLinks.sort((a, b) => formatter.compare(a.title, b.title)),\n });\n\n return acc;\n }, [] as SubSection[]),\n linksCount: filteredLinksCount,\n };\n }\n\n const filteredLinks = section.links\n .filter((link) => contains(link.title, searchValue))\n .sort((a, b) => formatter.compare(a.title, b.title));\n\n return {\n ...section,\n links: filteredLinks,\n linksCount: filteredLinks.length,\n };\n });\n\n return {\n menu: data,\n search: {\n value: searchValue,\n onChange: setSearchValue,\n clear: () => setSearchValue(''),\n },\n };\n};\n"],"names":["useContentTypeBuilderMenu","componentsGroupedByCategory","isInDevelopmentMode","sortedContentTypesList","useDataManager","trackUsage","useTracking","searchValue","setSearchValue","useState","onOpenModalCreateSchema","useFormModalNavigation","locale","useIntl","contains","useFilter","sensitivity","formatter","useCollator","handleClickOpenModalCreateCollectionType","nextState","modalType","kind","actionType","forTarget","handleClickOpenModalCreateSingleType","handleClickOpenModalCreateComponent","componentsData","Object","entries","map","category","components","name","title","upperFirst","links","component","uid","to","pluginId","info","displayName","status","sort","a","b","compare","displayedContentTypes","filter","obj","visible","data","id","getTrad","defaultMessage","customLink","onClick","undefined","contentType","singleType","section","hasChild","some","l","Array","isArray","filteredLinksCount","reduce","acc","link","filteredLinks","length","push","linksCount","menu","search","value","onChange","clear"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanData.js","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\ntype TrackingEventProperties = {\n newContentTypes: number;\n editedContentTypes: number;\n deletedContentTypes: number;\n newComponents: number;\n editedComponents: number;\n deletedComponents: number;\n newFields: number;\n editedFields: number;\n deletedFields: number;\n};\n\nconst stateToRequestData = ({\n components,\n contentTypes,\n}: {\n components: Components;\n contentTypes: ContentTypes;\n}) => {\n const trackingEventProperties: TrackingEventProperties = {\n newContentTypes: 0,\n editedContentTypes: 0,\n deletedContentTypes: 0,\n newComponents: 0,\n editedComponents: 0,\n deletedComponents: 0,\n newFields: 0,\n editedFields: 0,\n deletedFields: 0,\n };\n\n const formattedComponents = Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map((component) => {\n const requestFormattedComponent = formatTypeForRequest(component);\n\n const eventAction = requestFormattedComponent.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...component, action: eventAction },\n trackingEventProperties,\n 'component'\n );\n\n return requestFormattedComponent;\n });\n\n const formattedContentTypes = Object.values(contentTypes)\n .filter((contentType) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(contentType.status);\n })\n .map((contentType) => {\n const requestFormattedContentType = formatTypeForRequest(contentType);\n\n const eventAction = requestFormattedContentType.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...contentType, action: eventAction },\n trackingEventProperties,\n 'contentType'\n );\n\n return requestFormattedContentType;\n });\n\n return {\n requestData: {\n components: formattedComponents,\n contentTypes: formattedContentTypes,\n },\n trackingEventProperties,\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return {\n ...attr,\n targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute,\n // Explicitly preserve conditions for relations\n ...(attr.conditions && { conditions: attr.conditions }),\n };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nconst updateEventCounts = (\n type: (ContentType | Component) & { action?: 'create' | 'update' | 'delete' },\n counts: TrackingEventProperties,\n entityType: 'component' | 'contentType'\n) => {\n if (!type || typeof type.action !== 'string') {\n return;\n }\n\n const isContentType = entityType === 'contentType';\n\n switch (type.action) {\n case 'create':\n if (isContentType) {\n counts.newContentTypes++;\n } else {\n counts.newComponents++;\n }\n break;\n case 'update':\n if (isContentType) {\n counts.editedContentTypes++;\n } else {\n counts.editedComponents++;\n }\n break;\n case 'delete':\n if (isContentType) {\n counts.deletedContentTypes++;\n } else {\n counts.deletedComponents++;\n }\n break;\n default:\n break;\n }\n\n if (Array.isArray(type.attributes)) {\n if (type.action === 'delete') {\n counts.deletedFields += type.attributes.length;\n } else {\n type.attributes.forEach((attribute) => {\n if (!attribute || typeof attribute.status !== 'string') {\n return;\n }\n\n switch (attribute.status) {\n case 'NEW':\n counts.newFields++;\n break;\n case 'CHANGED':\n counts.editedFields++;\n break;\n case 'REMOVED':\n counts.deletedFields++;\n break;\n case 'UNCHANGED':\n default:\n break;\n }\n });\n }\n }\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","components","contentTypes","trackingEventProperties","newContentTypes","editedContentTypes","deletedContentTypes","newComponents","editedComponents","deletedComponents","newFields","editedFields","deletedFields","formattedComponents","values","compo","includes","component","requestFormattedComponent","formatTypeForRequest","eventAction","action","updateEventCounts","formattedContentTypes","contentType","requestFormattedContentType","requestData","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","conditions","Error","category","omit","options","attributes","properties","counts","entityType","isContentType","forEach","attribute"],"mappings":";;;;;;;AAeA,MAAMA,kBAAkB,CAACC,KAAAA,GAAAA;IACvB,OAAOC,MAAAA,CACLC,OAAOC,IAAI,CAACH,OACTI,GAAG,CAAC,CAACC,GAAAA,IAAS;AACbC,YAAAA,OAAAA,EAASN,KAAK,CAACK,GAAI,CAAA,CAACC,OAAO;YAC3BC,IAAMF,EAAAA,GAAAA;AACNG,YAAAA,KAAAA,EAAOR,KAAK,CAACK,GAAAA,CAAI,CAACI,IAAI,CAACC,WAAW;AAClCC,YAAAA,MAAAA,EAAQX,KAAK,CAACK,GAAI,CAAA,CAACM,MAAM;YACzBN,GAAKA,EAAAA,GAAAA;AACLO,YAAAA,EAAAA,EAAI,CAAC,SAAS,EAAEC,kBAAS,eAAe,EAAER,IAAI,CAAC;AAC/CS,YAAAA,IAAAA,EAAMd,KAAK,CAACK,GAAI,CAAA,CAACS,IAAI;AACrBC,YAAAA,mBAAAA,EAAqBf,KAAK,CAACK,GAAI,CAAA,CAACU,mBAAmB;AACnDC,YAAAA,MAAAA,EAAQhB,KAAK,CAACK,GAAI,CAAA,CAACW;SACrB,CAAA,CAAA,CACCC,MAAM,CAAC,CAACC,GAAAA,GAAQA,GAAQ,KAAA,IAAA,CAAA,EAC3B,CAACA,GAAAA,GAAQC,SAAUD,CAAAA,GAAAA,CAAIV,KAAK,CAAA,CAAA;AAEhC;AAcA,MAAMY,qBAAqB,CAAC,EAC1BC,UAAU,EACVC,YAAY,EAIb,GAAA;AACC,IAAA,MAAMC,uBAAmD,GAAA;QACvDC,eAAiB,EAAA,CAAA;QACjBC,kBAAoB,EAAA,CAAA;QACpBC,mBAAqB,EAAA,CAAA;QACrBC,aAAe,EAAA,CAAA;QACfC,gBAAkB,EAAA,CAAA;QAClBC,iBAAmB,EAAA,CAAA;QACnBC,SAAW,EAAA,CAAA;QACXC,YAAc,EAAA,CAAA;QACdC,aAAe,EAAA;AACjB,KAAA;AAEA,IAAA,MAAMC,sBAAsB/B,MAAOgC,CAAAA,MAAM,CAACb,UACvCJ,CAAAA,CAAAA,MAAM,CAAC,CAACkB,KAAAA,GAAAA;QACP,OAAO;AAAC,YAAA,KAAA;AAAO,YAAA,SAAA;AAAW,YAAA;SAAU,CAACC,QAAQ,CAACD,KAAAA,CAAMnB,MAAM,CAAA;KAE3DZ,CAAAA,CAAAA,GAAG,CAAC,CAACiC,SAAAA,GAAAA;AACJ,QAAA,MAAMC,4BAA4BC,oBAAqBF,CAAAA,SAAAA,CAAAA;QAEvD,MAAMG,WAAAA,GAAcF,0BAA0BG,MAAM;QACpDC,iBACE,CAAA;AAAE,YAAA,GAAGL,SAAS;YAAEI,MAAQD,EAAAA;AAAY,SAAA,EACpCjB,uBACA,EAAA,WAAA,CAAA;QAGF,OAAOe,yBAAAA;AACT,KAAA,CAAA;AAEF,IAAA,MAAMK,wBAAwBzC,MAAOgC,CAAAA,MAAM,CAACZ,YACzCL,CAAAA,CAAAA,MAAM,CAAC,CAAC2B,WAAAA,GAAAA;QACP,OAAO;AAAC,YAAA,KAAA;AAAO,YAAA,SAAA;AAAW,YAAA;SAAU,CAACR,QAAQ,CAACQ,WAAAA,CAAY5B,MAAM,CAAA;KAEjEZ,CAAAA,CAAAA,GAAG,CAAC,CAACwC,WAAAA,GAAAA;AACJ,QAAA,MAAMC,8BAA8BN,oBAAqBK,CAAAA,WAAAA,CAAAA;QAEzD,MAAMJ,WAAAA,GAAcK,4BAA4BJ,MAAM;QACtDC,iBACE,CAAA;AAAE,YAAA,GAAGE,WAAW;YAAEH,MAAQD,EAAAA;AAAY,SAAA,EACtCjB,uBACA,EAAA,aAAA,CAAA;QAGF,OAAOsB,2BAAAA;AACT,KAAA,CAAA;IAEF,OAAO;QACLC,WAAa,EAAA;YACXzB,UAAYY,EAAAA,mBAAAA;YACZX,YAAcqB,EAAAA;AAChB,SAAA;AACApB,QAAAA;AACF,KAAA;AACF;AAEA,MAAMwB,iBAAiB,CAAC7B,GAAAA,GAAAA;AACtB,IAAA,OAAOhB,MAAO8C,CAAAA,WAAW,CACvB9C,MAAAA,CAAO+C,OAAO,CAAC/B,GAAKD,CAAAA,CAAAA,MAAM,CAAC,CAAC,CAACiC,CAAAA,EAAGC,KAAM,CAAA,GAAA;QACpC,IAAIC,KAAAA,CAAMC,OAAO,CAACF,KAAQ,CAAA,EAAA;YACxB,OAAOA,KAAAA,CAAMG,MAAM,GAAG,CAAA;AACxB;AACA,QAAA,IAAI,OAAOH,KAAAA,KAAU,QAAYA,IAAAA,KAAAA,KAAU,IAAM,EAAA;AAC/C,YAAA,OAAOjD,MAAOC,CAAAA,IAAI,CAACgD,KAAAA,CAAAA,CAAOG,MAAM,GAAG,CAAA;AACrC;QACA,OAAOH,KAAAA,KAAU,QAAQA,KAAUI,KAAAA,SAAAA;AACrC,KAAA,CAAA,CAAA;AAEJ,CAAA;AAEA,MAAMC,kBAAkB,CAACC,IAAAA,GAAAA;AACvB,IAAA,IAAI,iBAAiBA,IAAM,EAAA;QACzB,OAAO;AAAE,YAAA,GAAGA,IAAI;YAAEC,IAAM,EAAA;AAAc,SAAA;AACxC;AAEA,IAAA,IAAI,qBAAqBD,IAAM,EAAA;QAC7B,OAAO;AACL,YAAA,GAAGA,IAAI;AACPE,YAAAA,eAAAA,EAAiBF,KAAKE,eAAe,KAAK,GAAM,GAAA,IAAA,GAAOF,KAAKE,eAAe;;YAE3E,GAAIF,IAAAA,CAAKG,UAAU,IAAI;AAAEA,gBAAAA,UAAAA,EAAYH,KAAKG;;AAC5C,SAAA;AACF;IAEA,OAAOH,IAAAA;AACT,CAAA;AAEA,MAAMlB,uBAAuB,CAACmB,IAAAA,GAAAA;IAC5B,IAAIjB,MAAAA;;AAEJ,IAAA,OAAQiB,KAAK1C,MAAM;QACjB,KAAK,KAAA;YACHyB,MAAS,GAAA,QAAA;AACT,YAAA;QACF,KAAK,SAAA;YACHA,MAAS,GAAA,QAAA;AACT,YAAA;QACF,KAAK,SAAA;YACH,OAAO;gBAAEA,MAAQ,EAAA,QAAA;AAAUpC,gBAAAA,GAAAA,EAAKqD,KAAKrD;AAAI,aAAA;AAC3C,QAAA;AACE,YAAA,MAAM,IAAIwD,KAAM,CAAA,gBAAA,CAAA;AACpB;IAEA,OAAO;AACLpB,QAAAA,MAAAA;AACApC,QAAAA,GAAAA,EAAKqD,KAAKrD,GAAG;AACbyD,QAAAA,QAAAA,EAAU,UAAcJ,IAAAA,IAAAA,GAAOA,IAAKI,CAAAA,QAAQ,GAAGP,SAAAA;AAC/C,QAAA,GAAGQ,KAAKL,IAAM,EAAA;AAAC,YAAA,MAAA;AAAQ,YAAA,SAAA;AAAW,YAAA,SAAA;AAAW,YAAA,KAAA;AAAO,YAAA;SAAsB,CAAC;AAC3E,QAAA,GAAGA,KAAKM,OAAO;AACf,QAAA,GAAGN,KAAKjD,IAAI;AACZwD,QAAAA,UAAAA,EAAYP,IAAKO,CAAAA,UAAU,CAAC7D,GAAG,CAAC,CAACqD,IAAAA,GAAAA;YAC/B,IAAIhB,MAAAA;AAEJ,YAAA,OAAQgB,KAAKzC,MAAM;;gBAGjB,KAAK,KAAA;oBACHyB,MAAS,GAAA,QAAA;AACT,oBAAA;gBACF,KAAK,SAAA;oBACH,OAAO;wBAAEA,MAAQ,EAAA,QAAA;AAAUlC,wBAAAA,IAAAA,EAAMkD,KAAKlD;AAAK,qBAAA;gBAC7C,KAAK,WAAA;gBACL,KAAK,SAAA;AACL,gBAAA;oBACEkC,MAAS,GAAA,QAAA;AACb;YAEA,OAAO;AACLA,gBAAAA,MAAAA;AACAlC,gBAAAA,IAAAA,EAAMkD,KAAKlD,IAAI;gBACf2D,UAAYnB,EAAAA,cAAAA,CAAegB,IAAKP,CAAAA,eAAAA,CAAgBC,IAAO,CAAA,EAAA;AAAC,oBAAA,QAAA;AAAU,oBAAA;AAAO,iBAAA,CAAA;AAC3E,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA;AAEA,MAAMf,iBAAAA,GAAoB,CACxBgB,IAAAA,EACAS,MACAC,EAAAA,UAAAA,GAAAA;AAEA,IAAA,IAAI,CAACV,IAAQ,IAAA,OAAOA,IAAKjB,CAAAA,MAAM,KAAK,QAAU,EAAA;AAC5C,QAAA;AACF;AAEA,IAAA,MAAM4B,gBAAgBD,UAAe,KAAA,aAAA;AAErC,IAAA,OAAQV,KAAKjB,MAAM;QACjB,KAAK,QAAA;AACH,YAAA,IAAI4B,aAAe,EAAA;AACjBF,gBAAAA,MAAAA,CAAO3C,eAAe,EAAA;aACjB,MAAA;AACL2C,gBAAAA,MAAAA,CAAOxC,aAAa,EAAA;AACtB;AACA,YAAA;QACF,KAAK,QAAA;AACH,YAAA,IAAI0C,aAAe,EAAA;AACjBF,gBAAAA,MAAAA,CAAO1C,kBAAkB,EAAA;aACpB,MAAA;AACL0C,gBAAAA,MAAAA,CAAOvC,gBAAgB,EAAA;AACzB;AACA,YAAA;QACF,KAAK,QAAA;AACH,YAAA,IAAIyC,aAAe,EAAA;AACjBF,gBAAAA,MAAAA,CAAOzC,mBAAmB,EAAA;aACrB,MAAA;AACLyC,gBAAAA,MAAAA,CAAOtC,iBAAiB,EAAA;AAC1B;AACA,YAAA;AAGJ;AAEA,IAAA,IAAIuB,KAAMC,CAAAA,OAAO,CAACK,IAAAA,CAAKO,UAAU,CAAG,EAAA;QAClC,IAAIP,IAAAA,CAAKjB,MAAM,KAAK,QAAU,EAAA;AAC5B0B,YAAAA,MAAAA,CAAOnC,aAAa,IAAI0B,IAAKO,CAAAA,UAAU,CAACX,MAAM;SACzC,MAAA;AACLI,YAAAA,IAAAA,CAAKO,UAAU,CAACK,OAAO,CAAC,CAACC,SAAAA,GAAAA;AACvB,gBAAA,IAAI,CAACA,SAAa,IAAA,OAAOA,SAAUvD,CAAAA,MAAM,KAAK,QAAU,EAAA;AACtD,oBAAA;AACF;AAEA,gBAAA,OAAQuD,UAAUvD,MAAM;oBACtB,KAAK,KAAA;AACHmD,wBAAAA,MAAAA,CAAOrC,SAAS,EAAA;AAChB,wBAAA;oBACF,KAAK,SAAA;AACHqC,wBAAAA,MAAAA,CAAOpC,YAAY,EAAA;AACnB,wBAAA;oBACF,KAAK,SAAA;AACHoC,wBAAAA,MAAAA,CAAOnC,aAAa,EAAA;AACpB,wBAAA;AAIJ;AACF,aAAA,CAAA;AACF;AACF;AACF,CAAA;;;;;"}
|
|
1
|
+
{"version":3,"file":"cleanData.js","sources":["../../../../../admin/src/components/DataManager/utils/cleanData.ts"],"sourcesContent":["import camelCase from 'lodash/camelCase';\nimport omit from 'lodash/omit';\nimport sortBy from 'lodash/sortBy';\n\nimport { pluginId } from '../../../pluginId';\n\nimport type {\n Component,\n Components,\n ContentTypes,\n ContentType,\n AnyAttribute,\n} from '../../../types';\nimport type { UID } from '@strapi/types';\n\nconst sortContentType = (types: ContentTypes) => {\n return sortBy(\n Object.keys(types)\n .map((uid) => ({\n visible: types[uid].visible,\n name: uid as UID.ContentType,\n title: types[uid].info.displayName,\n plugin: types[uid].plugin,\n uid: uid as UID.ContentType,\n to: `/plugins/${pluginId}/content-types/${uid}`,\n kind: types[uid].kind,\n restrictRelationsTo: types[uid].restrictRelationsTo,\n status: types[uid].status,\n }))\n .filter((obj) => obj !== null),\n (obj) => camelCase(obj.title)\n );\n};\n\ntype TrackingEventProperties = {\n newContentTypes: number;\n editedContentTypes: number;\n deletedContentTypes: number;\n newComponents: number;\n editedComponents: number;\n deletedComponents: number;\n newFields: number;\n editedFields: number;\n deletedFields: number;\n};\n\nconst stateToRequestData = ({\n components,\n contentTypes,\n}: {\n components: Components;\n contentTypes: ContentTypes;\n}) => {\n const trackingEventProperties: TrackingEventProperties = {\n newContentTypes: 0,\n editedContentTypes: 0,\n deletedContentTypes: 0,\n newComponents: 0,\n editedComponents: 0,\n deletedComponents: 0,\n newFields: 0,\n editedFields: 0,\n deletedFields: 0,\n };\n\n const formattedComponents = Object.values(components)\n .filter((compo) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(compo.status);\n })\n .map((component) => {\n const requestFormattedComponent = formatTypeForRequest(component);\n\n const eventAction = requestFormattedComponent.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...component, action: eventAction },\n trackingEventProperties,\n 'component'\n );\n\n return requestFormattedComponent;\n });\n\n const formattedContentTypes = Object.values(contentTypes)\n .filter((contentType) => {\n return ['NEW', 'CHANGED', 'REMOVED'].includes(contentType.status);\n })\n .map((contentType) => {\n const requestFormattedContentType = formatTypeForRequest(contentType);\n\n const eventAction = requestFormattedContentType.action as 'create' | 'update' | 'delete';\n updateEventCounts(\n { ...contentType, action: eventAction },\n trackingEventProperties,\n 'contentType'\n );\n\n return requestFormattedContentType;\n });\n\n return {\n requestData: {\n components: formattedComponents,\n contentTypes: formattedContentTypes,\n },\n trackingEventProperties,\n };\n};\n\nconst removeNullKeys = (obj: Record<string, unknown>) => {\n return Object.fromEntries(\n Object.entries(obj).filter(([_, value]) => {\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n if (typeof value === 'object' && value !== null) {\n return Object.keys(value).length > 0;\n }\n return value !== null && value !== undefined;\n })\n );\n};\n\nconst formatAttribute = (attr: AnyAttribute) => {\n if ('customField' in attr) {\n return { ...attr, type: 'customField' };\n }\n\n if ('targetAttribute' in attr) {\n return {\n ...attr,\n targetAttribute: attr.targetAttribute === '-' ? null : attr.targetAttribute,\n // Explicitly preserve conditions for relations\n ...(attr.conditions && { conditions: attr.conditions }),\n };\n }\n\n return attr;\n};\n\nconst formatTypeForRequest = (type: ContentType | Component) => {\n let action;\n // should we do a diff with the initial data instead of trusting the state status ??\n switch (type.status) {\n case 'NEW':\n action = 'create';\n break;\n case 'CHANGED':\n action = 'update';\n break;\n case 'REMOVED':\n return { action: 'delete', uid: type.uid };\n default:\n throw new Error('Invalid status');\n }\n\n return {\n action,\n uid: type.uid,\n category: 'category' in type ? type.category : undefined,\n ...omit(type, ['info', 'options', 'visible', 'uid', 'restrictRelationsTo']),\n ...type.options,\n ...type.info,\n attributes: type.attributes.map((attr) => {\n let action;\n\n switch (attr.status) {\n // NOTE: we want to always send the full data to preserve the order\n\n case 'NEW':\n action = 'create';\n break;\n case 'REMOVED':\n return { action: 'delete', name: attr.name };\n case 'UNCHANGED':\n case 'CHANGED':\n default:\n action = 'update';\n }\n\n return {\n action,\n name: attr.name,\n properties: removeNullKeys(omit(formatAttribute(attr), ['status', 'name'])),\n };\n }),\n };\n};\n\nconst updateEventCounts = (\n type: (ContentType | Component) & { action?: 'create' | 'update' | 'delete' },\n counts: TrackingEventProperties,\n entityType: 'component' | 'contentType'\n) => {\n if (!type || typeof type.action !== 'string') {\n return;\n }\n\n const isContentType = entityType === 'contentType';\n\n switch (type.action) {\n case 'create':\n if (isContentType) {\n counts.newContentTypes++;\n } else {\n counts.newComponents++;\n }\n break;\n case 'update':\n if (isContentType) {\n counts.editedContentTypes++;\n } else {\n counts.editedComponents++;\n }\n break;\n case 'delete':\n if (isContentType) {\n counts.deletedContentTypes++;\n } else {\n counts.deletedComponents++;\n }\n break;\n default:\n break;\n }\n\n if (Array.isArray(type.attributes)) {\n if (type.action === 'delete') {\n counts.deletedFields += type.attributes.length;\n } else {\n type.attributes.forEach((attribute) => {\n if (!attribute || typeof attribute.status !== 'string') {\n return;\n }\n\n switch (attribute.status) {\n case 'NEW':\n counts.newFields++;\n break;\n case 'CHANGED':\n counts.editedFields++;\n break;\n case 'REMOVED':\n counts.deletedFields++;\n break;\n case 'UNCHANGED':\n default:\n break;\n }\n });\n }\n }\n};\n\nexport { stateToRequestData, sortContentType };\n"],"names":["sortContentType","types","sortBy","Object","keys","map","uid","visible","name","title","info","displayName","plugin","to","pluginId","kind","restrictRelationsTo","status","filter","obj","camelCase","stateToRequestData","components","contentTypes","trackingEventProperties","newContentTypes","editedContentTypes","deletedContentTypes","newComponents","editedComponents","deletedComponents","newFields","editedFields","deletedFields","formattedComponents","values","compo","includes","component","requestFormattedComponent","formatTypeForRequest","eventAction","action","updateEventCounts","formattedContentTypes","contentType","requestFormattedContentType","requestData","removeNullKeys","fromEntries","entries","_","value","Array","isArray","length","undefined","formatAttribute","attr","type","targetAttribute","conditions","Error","category","omit","options","attributes","properties","counts","entityType","isContentType","forEach","attribute"],"mappings":";;;;;;;AAeA,MAAMA,kBAAkB,CAACC,KAAAA,GAAAA;IACvB,OAAOC,MAAAA,CACLC,OAAOC,IAAI,CAACH,OACTI,GAAG,CAAC,CAACC,GAAAA,IAAS;AACbC,YAAAA,OAAAA,EAASN,KAAK,CAACK,GAAI,CAAA,CAACC,OAAO;YAC3BC,IAAMF,EAAAA,GAAAA;AACNG,YAAAA,KAAAA,EAAOR,KAAK,CAACK,GAAAA,CAAI,CAACI,IAAI,CAACC,WAAW;AAClCC,YAAAA,MAAAA,EAAQX,KAAK,CAACK,GAAI,CAAA,CAACM,MAAM;YACzBN,GAAKA,EAAAA,GAAAA;AACLO,YAAAA,EAAAA,EAAI,CAAC,SAAS,EAAEC,iBAAS,CAAA,eAAe,EAAER,GAAK,CAAA,CAAA;AAC/CS,YAAAA,IAAAA,EAAMd,KAAK,CAACK,GAAI,CAAA,CAACS,IAAI;AACrBC,YAAAA,mBAAAA,EAAqBf,KAAK,CAACK,GAAI,CAAA,CAACU,mBAAmB;AACnDC,YAAAA,MAAAA,EAAQhB,KAAK,CAACK,GAAI,CAAA,CAACW;SACrB,CAAA,CAAA,CACCC,MAAM,CAAC,CAACC,GAAAA,GAAQA,GAAQ,KAAA,IAAA,CAAA,EAC3B,CAACA,GAAAA,GAAQC,SAAUD,CAAAA,GAAAA,CAAIV,KAAK,CAAA,CAAA;AAEhC;AAcA,MAAMY,qBAAqB,CAAC,EAC1BC,UAAU,EACVC,YAAY,EAIb,GAAA;AACC,IAAA,MAAMC,uBAAmD,GAAA;QACvDC,eAAiB,EAAA,CAAA;QACjBC,kBAAoB,EAAA,CAAA;QACpBC,mBAAqB,EAAA,CAAA;QACrBC,aAAe,EAAA,CAAA;QACfC,gBAAkB,EAAA,CAAA;QAClBC,iBAAmB,EAAA,CAAA;QACnBC,SAAW,EAAA,CAAA;QACXC,YAAc,EAAA,CAAA;QACdC,aAAe,EAAA;AACjB,KAAA;AAEA,IAAA,MAAMC,sBAAsB/B,MAAOgC,CAAAA,MAAM,CAACb,UACvCJ,CAAAA,CAAAA,MAAM,CAAC,CAACkB,KAAAA,GAAAA;QACP,OAAO;AAAC,YAAA,KAAA;AAAO,YAAA,SAAA;AAAW,YAAA;SAAU,CAACC,QAAQ,CAACD,KAAAA,CAAMnB,MAAM,CAAA;KAE3DZ,CAAAA,CAAAA,GAAG,CAAC,CAACiC,SAAAA,GAAAA;AACJ,QAAA,MAAMC,4BAA4BC,oBAAqBF,CAAAA,SAAAA,CAAAA;QAEvD,MAAMG,WAAAA,GAAcF,0BAA0BG,MAAM;QACpDC,iBACE,CAAA;AAAE,YAAA,GAAGL,SAAS;YAAEI,MAAQD,EAAAA;AAAY,SAAA,EACpCjB,uBACA,EAAA,WAAA,CAAA;QAGF,OAAOe,yBAAAA;AACT,KAAA,CAAA;AAEF,IAAA,MAAMK,wBAAwBzC,MAAOgC,CAAAA,MAAM,CAACZ,YACzCL,CAAAA,CAAAA,MAAM,CAAC,CAAC2B,WAAAA,GAAAA;QACP,OAAO;AAAC,YAAA,KAAA;AAAO,YAAA,SAAA;AAAW,YAAA;SAAU,CAACR,QAAQ,CAACQ,WAAAA,CAAY5B,MAAM,CAAA;KAEjEZ,CAAAA,CAAAA,GAAG,CAAC,CAACwC,WAAAA,GAAAA;AACJ,QAAA,MAAMC,8BAA8BN,oBAAqBK,CAAAA,WAAAA,CAAAA;QAEzD,MAAMJ,WAAAA,GAAcK,4BAA4BJ,MAAM;QACtDC,iBACE,CAAA;AAAE,YAAA,GAAGE,WAAW;YAAEH,MAAQD,EAAAA;AAAY,SAAA,EACtCjB,uBACA,EAAA,aAAA,CAAA;QAGF,OAAOsB,2BAAAA;AACT,KAAA,CAAA;IAEF,OAAO;QACLC,WAAa,EAAA;YACXzB,UAAYY,EAAAA,mBAAAA;YACZX,YAAcqB,EAAAA;AAChB,SAAA;AACApB,QAAAA;AACF,KAAA;AACF;AAEA,MAAMwB,iBAAiB,CAAC7B,GAAAA,GAAAA;AACtB,IAAA,OAAOhB,MAAO8C,CAAAA,WAAW,CACvB9C,MAAAA,CAAO+C,OAAO,CAAC/B,GAAKD,CAAAA,CAAAA,MAAM,CAAC,CAAC,CAACiC,CAAAA,EAAGC,KAAM,CAAA,GAAA;QACpC,IAAIC,KAAAA,CAAMC,OAAO,CAACF,KAAQ,CAAA,EAAA;YACxB,OAAOA,KAAAA,CAAMG,MAAM,GAAG,CAAA;AACxB;AACA,QAAA,IAAI,OAAOH,KAAAA,KAAU,QAAYA,IAAAA,KAAAA,KAAU,IAAM,EAAA;AAC/C,YAAA,OAAOjD,MAAOC,CAAAA,IAAI,CAACgD,KAAAA,CAAAA,CAAOG,MAAM,GAAG,CAAA;AACrC;QACA,OAAOH,KAAAA,KAAU,QAAQA,KAAUI,KAAAA,SAAAA;AACrC,KAAA,CAAA,CAAA;AAEJ,CAAA;AAEA,MAAMC,kBAAkB,CAACC,IAAAA,GAAAA;AACvB,IAAA,IAAI,iBAAiBA,IAAM,EAAA;QACzB,OAAO;AAAE,YAAA,GAAGA,IAAI;YAAEC,IAAM,EAAA;AAAc,SAAA;AACxC;AAEA,IAAA,IAAI,qBAAqBD,IAAM,EAAA;QAC7B,OAAO;AACL,YAAA,GAAGA,IAAI;AACPE,YAAAA,eAAAA,EAAiBF,KAAKE,eAAe,KAAK,GAAM,GAAA,IAAA,GAAOF,KAAKE,eAAe;;YAE3E,GAAIF,IAAAA,CAAKG,UAAU,IAAI;AAAEA,gBAAAA,UAAAA,EAAYH,KAAKG;;AAC5C,SAAA;AACF;IAEA,OAAOH,IAAAA;AACT,CAAA;AAEA,MAAMlB,uBAAuB,CAACmB,IAAAA,GAAAA;IAC5B,IAAIjB,MAAAA;;AAEJ,IAAA,OAAQiB,KAAK1C,MAAM;QACjB,KAAK,KAAA;YACHyB,MAAS,GAAA,QAAA;AACT,YAAA;QACF,KAAK,SAAA;YACHA,MAAS,GAAA,QAAA;AACT,YAAA;QACF,KAAK,SAAA;YACH,OAAO;gBAAEA,MAAQ,EAAA,QAAA;AAAUpC,gBAAAA,GAAAA,EAAKqD,KAAKrD;AAAI,aAAA;AAC3C,QAAA;AACE,YAAA,MAAM,IAAIwD,KAAM,CAAA,gBAAA,CAAA;AACpB;IAEA,OAAO;AACLpB,QAAAA,MAAAA;AACApC,QAAAA,GAAAA,EAAKqD,KAAKrD,GAAG;AACbyD,QAAAA,QAAAA,EAAU,UAAcJ,IAAAA,IAAAA,GAAOA,IAAKI,CAAAA,QAAQ,GAAGP,SAAAA;AAC/C,QAAA,GAAGQ,KAAKL,IAAM,EAAA;AAAC,YAAA,MAAA;AAAQ,YAAA,SAAA;AAAW,YAAA,SAAA;AAAW,YAAA,KAAA;AAAO,YAAA;SAAsB,CAAC;AAC3E,QAAA,GAAGA,KAAKM,OAAO;AACf,QAAA,GAAGN,KAAKjD,IAAI;AACZwD,QAAAA,UAAAA,EAAYP,IAAKO,CAAAA,UAAU,CAAC7D,GAAG,CAAC,CAACqD,IAAAA,GAAAA;YAC/B,IAAIhB,MAAAA;AAEJ,YAAA,OAAQgB,KAAKzC,MAAM;;gBAGjB,KAAK,KAAA;oBACHyB,MAAS,GAAA,QAAA;AACT,oBAAA;gBACF,KAAK,SAAA;oBACH,OAAO;wBAAEA,MAAQ,EAAA,QAAA;AAAUlC,wBAAAA,IAAAA,EAAMkD,KAAKlD;AAAK,qBAAA;gBAC7C,KAAK,WAAA;gBACL,KAAK,SAAA;AACL,gBAAA;oBACEkC,MAAS,GAAA,QAAA;AACb;YAEA,OAAO;AACLA,gBAAAA,MAAAA;AACAlC,gBAAAA,IAAAA,EAAMkD,KAAKlD,IAAI;gBACf2D,UAAYnB,EAAAA,cAAAA,CAAegB,IAAKP,CAAAA,eAAAA,CAAgBC,IAAO,CAAA,EAAA;AAAC,oBAAA,QAAA;AAAU,oBAAA;AAAO,iBAAA,CAAA;AAC3E,aAAA;AACF,SAAA;AACF,KAAA;AACF,CAAA;AAEA,MAAMf,iBAAAA,GAAoB,CACxBgB,IAAAA,EACAS,MACAC,EAAAA,UAAAA,GAAAA;AAEA,IAAA,IAAI,CAACV,IAAQ,IAAA,OAAOA,IAAKjB,CAAAA,MAAM,KAAK,QAAU,EAAA;AAC5C,QAAA;AACF;AAEA,IAAA,MAAM4B,gBAAgBD,UAAe,KAAA,aAAA;AAErC,IAAA,OAAQV,KAAKjB,MAAM;QACjB,KAAK,QAAA;AACH,YAAA,IAAI4B,aAAe,EAAA;AACjBF,gBAAAA,MAAAA,CAAO3C,eAAe,EAAA;aACjB,MAAA;AACL2C,gBAAAA,MAAAA,CAAOxC,aAAa,EAAA;AACtB;AACA,YAAA;QACF,KAAK,QAAA;AACH,YAAA,IAAI0C,aAAe,EAAA;AACjBF,gBAAAA,MAAAA,CAAO1C,kBAAkB,EAAA;aACpB,MAAA;AACL0C,gBAAAA,MAAAA,CAAOvC,gBAAgB,EAAA;AACzB;AACA,YAAA;QACF,KAAK,QAAA;AACH,YAAA,IAAIyC,aAAe,EAAA;AACjBF,gBAAAA,MAAAA,CAAOzC,mBAAmB,EAAA;aACrB,MAAA;AACLyC,gBAAAA,MAAAA,CAAOtC,iBAAiB,EAAA;AAC1B;AACA,YAAA;AAGJ;AAEA,IAAA,IAAIuB,KAAMC,CAAAA,OAAO,CAACK,IAAAA,CAAKO,UAAU,CAAG,EAAA;QAClC,IAAIP,IAAAA,CAAKjB,MAAM,KAAK,QAAU,EAAA;AAC5B0B,YAAAA,MAAAA,CAAOnC,aAAa,IAAI0B,IAAKO,CAAAA,UAAU,CAACX,MAAM;SACzC,MAAA;AACLI,YAAAA,IAAAA,CAAKO,UAAU,CAACK,OAAO,CAAC,CAACC,SAAAA,GAAAA;AACvB,gBAAA,IAAI,CAACA,SAAa,IAAA,OAAOA,SAAUvD,CAAAA,MAAM,KAAK,QAAU,EAAA;AACtD,oBAAA;AACF;AAEA,gBAAA,OAAQuD,UAAUvD,MAAM;oBACtB,KAAK,KAAA;AACHmD,wBAAAA,MAAAA,CAAOrC,SAAS,EAAA;AAChB,wBAAA;oBACF,KAAK,SAAA;AACHqC,wBAAAA,MAAAA,CAAOpC,YAAY,EAAA;AACnB,wBAAA;oBACF,KAAK,SAAA;AACHoC,wBAAAA,MAAAA,CAAOnC,aAAa,EAAA;AACpB,wBAAA;AAIJ;AACF,aAAA,CAAA;AACF;AACF;AACF,CAAA;;;;;"}
|