@strapi/content-type-builder 5.31.2 → 5.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/dist/admin/components/AIChat/Chat.js +4 -1
  2. package/dist/admin/components/AIChat/Chat.js.map +1 -1
  3. package/dist/admin/components/AIChat/Chat.mjs +5 -2
  4. package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
  5. package/dist/admin/components/AIChat/FeedbackModal.js +1 -0
  6. package/dist/admin/components/AIChat/FeedbackModal.js.map +1 -1
  7. package/dist/admin/components/AIChat/FeedbackModal.mjs +1 -0
  8. package/dist/admin/components/AIChat/FeedbackModal.mjs.map +1 -1
  9. package/dist/admin/components/AIChat/UploadFigmaModal.js +1 -0
  10. package/dist/admin/components/AIChat/UploadFigmaModal.js.map +1 -1
  11. package/dist/admin/components/AIChat/UploadFigmaModal.mjs +1 -0
  12. package/dist/admin/components/AIChat/UploadFigmaModal.mjs.map +1 -1
  13. package/dist/admin/components/AIChat/components/Messages/Message.js +7 -1
  14. package/dist/admin/components/AIChat/components/Messages/Message.js.map +1 -1
  15. package/dist/admin/components/AIChat/components/Messages/Message.mjs +7 -1
  16. package/dist/admin/components/AIChat/components/Messages/Message.mjs.map +1 -1
  17. package/dist/admin/components/AIChat/hooks/useFeedback.js +4 -1
  18. package/dist/admin/components/AIChat/hooks/useFeedback.js.map +1 -1
  19. package/dist/admin/components/AIChat/hooks/useFeedback.mjs +5 -2
  20. package/dist/admin/components/AIChat/hooks/useFeedback.mjs.map +1 -1
  21. package/dist/admin/components/AIChat/providers/ChatProvider.js +3 -2
  22. package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -1
  23. package/dist/admin/components/AIChat/providers/ChatProvider.mjs +3 -2
  24. package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -1
  25. package/dist/admin/components/AttributeOptions/AttributeList.js +1 -0
  26. package/dist/admin/components/AttributeOptions/AttributeList.js.map +1 -1
  27. package/dist/admin/components/AttributeOptions/AttributeList.mjs +1 -0
  28. package/dist/admin/components/AttributeOptions/AttributeList.mjs.map +1 -1
  29. package/dist/admin/components/AttributeOptions/CustomFieldsList.js +1 -0
  30. package/dist/admin/components/AttributeOptions/CustomFieldsList.js.map +1 -1
  31. package/dist/admin/components/AttributeOptions/CustomFieldsList.mjs +1 -0
  32. package/dist/admin/components/AttributeOptions/CustomFieldsList.mjs.map +1 -1
  33. package/dist/admin/components/CTBSession/CTBSessionProvider.js +49 -0
  34. package/dist/admin/components/CTBSession/CTBSessionProvider.js.map +1 -0
  35. package/dist/admin/components/CTBSession/CTBSessionProvider.mjs +46 -0
  36. package/dist/admin/components/CTBSession/CTBSessionProvider.mjs.map +1 -0
  37. package/dist/admin/components/CTBSession/sessionContext.js +8 -0
  38. package/dist/admin/components/CTBSession/sessionContext.js.map +1 -0
  39. package/dist/admin/components/CTBSession/sessionContext.mjs +6 -0
  40. package/dist/admin/components/CTBSession/sessionContext.mjs.map +1 -0
  41. package/dist/admin/components/CTBSession/useCTBSession.js +25 -0
  42. package/dist/admin/components/CTBSession/useCTBSession.js.map +1 -0
  43. package/dist/admin/components/CTBSession/useCTBSession.mjs +23 -0
  44. package/dist/admin/components/CTBSession/useCTBSession.mjs.map +1 -0
  45. package/dist/admin/components/CTBSession/useCTBTracking.js +37 -0
  46. package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -0
  47. package/dist/admin/components/CTBSession/useCTBTracking.mjs +35 -0
  48. package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -0
  49. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +4 -2
  50. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
  51. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +4 -2
  52. package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
  53. package/dist/admin/components/DataManager/DataManagerProvider.js +40 -3
  54. package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
  55. package/dist/admin/components/DataManager/DataManagerProvider.mjs +41 -4
  56. package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
  57. package/dist/admin/components/FormModal/FormModal.js +3 -1
  58. package/dist/admin/components/FormModal/FormModal.js.map +1 -1
  59. package/dist/admin/components/FormModal/FormModal.mjs +4 -2
  60. package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
  61. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +14 -1
  62. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
  63. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +14 -1
  64. package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
  65. package/dist/admin/components/List.js +3 -1
  66. package/dist/admin/components/List.js.map +1 -1
  67. package/dist/admin/components/List.mjs +4 -2
  68. package/dist/admin/components/List.mjs.map +1 -1
  69. package/dist/admin/components/TabForm.js +3 -0
  70. package/dist/admin/components/TabForm.js.map +1 -1
  71. package/dist/admin/components/TabForm.mjs +3 -0
  72. package/dist/admin/components/TabForm.mjs.map +1 -1
  73. package/dist/admin/pages/App/index.js +42 -38
  74. package/dist/admin/pages/App/index.js.map +1 -1
  75. package/dist/admin/pages/App/index.mjs +42 -38
  76. package/dist/admin/pages/App/index.mjs.map +1 -1
  77. package/dist/admin/pages/ListView/ListView.js +10 -1
  78. package/dist/admin/pages/ListView/ListView.js.map +1 -1
  79. package/dist/admin/pages/ListView/ListView.mjs +11 -2
  80. package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
  81. package/dist/admin/src/components/CTBSession/CTBSessionProvider.d.ts +26 -0
  82. package/dist/admin/src/components/CTBSession/ctbSession.d.ts +5 -0
  83. package/dist/admin/src/components/CTBSession/sessionContext.d.ts +25 -0
  84. package/dist/admin/src/components/CTBSession/useCTBSession.d.ts +12 -0
  85. package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +13 -0
  86. package/dist/server/controllers/content-types.js +6 -0
  87. package/dist/server/controllers/content-types.js.map +1 -1
  88. package/dist/server/controllers/content-types.mjs +6 -0
  89. package/dist/server/controllers/content-types.mjs.map +1 -1
  90. package/dist/server/controllers/validation/types.js +1 -1
  91. package/dist/server/controllers/validation/types.js.map +1 -1
  92. package/dist/server/controllers/validation/types.mjs +1 -1
  93. package/dist/server/controllers/validation/types.mjs.map +1 -1
  94. package/dist/server/src/controllers/content-types.d.ts.map +1 -1
  95. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"FormModalNavigationProvider.mjs","sources":["../../../../admin/src/components/FormModalNavigation/FormModalNavigationProvider.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\n\nimport { FormModalNavigationContext } from './FormModalNavigationContext';\n\nimport type { Internal, Struct } from '@strapi/types';\n\ntype FormModalNavigationProviderProps = {\n children: React.ReactNode;\n};\n\nexport type Tab = 'basic' | 'advanced';\n\nexport type ModalType =\n | 'chooseAttribute'\n | 'edit'\n | 'attribute'\n | 'customField'\n | 'addComponentToDynamicZone'\n | 'contentType'\n | 'component';\n\nexport type State = Record<string, any>;\n\nexport const INITIAL_STATE_DATA: State = {\n actionType: null,\n attributeName: null,\n attributeType: null,\n dynamicZoneTarget: null,\n forTarget: null,\n modalType: null,\n isOpen: true,\n showBackLink: false,\n kind: null,\n step: null,\n targetUid: null,\n customFieldUid: null,\n activeTab: 'basic',\n};\n\nexport type SelectCustomFieldPayload = {\n attributeType: string;\n customFieldUid: string;\n};\n\nexport type SelectFieldPayload = {\n attributeType: string;\n step: string | null;\n};\n\nexport type OpenModalAddComponentsToDZPayload = {\n dynamicZoneTarget?: string;\n targetUid: Internal.UID.Schema;\n};\n\nexport type OpenModalAddFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid?: Internal.UID.Schema;\n};\n\nexport type OpenModalEditCustomFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n attributeName: string;\n attributeType: string;\n customFieldUid: string;\n};\n\nexport type OpenModalEditFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n attributeName: string;\n attributeType: string;\n step: string | null;\n};\n\nexport type OpenModalEditSchemaPayload = {\n modalType: ModalType;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n kind?: string;\n};\n\nexport type NavigateToChooseAttributeModalPayload = {\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n};\n\nexport type NavigateToAddCompoToDZModalPayload = {\n dynamicZoneTarget: string;\n};\n\nexport const FormModalNavigationProvider = ({ children }: FormModalNavigationProviderProps) => {\n const [state, setFormModalNavigationState] = useState(INITIAL_STATE_DATA);\n const { trackUsage } = useTracking();\n\n const onClickSelectCustomField = useCallback(\n ({ attributeType, customFieldUid }: SelectCustomFieldPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n actionType: 'create',\n modalType: 'customField',\n attributeType,\n customFieldUid,\n activeTab: 'basic',\n }));\n },\n []\n );\n\n const onClickSelectField = useCallback(\n ({ attributeType, step }: SelectFieldPayload) => {\n if (state.forTarget === 'contentType') {\n trackUsage('didSelectContentTypeFieldType', { type: attributeType });\n }\n\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n actionType: 'create',\n modalType: 'attribute',\n step,\n attributeType,\n showBackLink: true,\n activeTab: 'basic',\n }));\n },\n [state.forTarget, trackUsage]\n );\n\n const onOpenModalAddComponentsToDZ = useCallback(\n ({ dynamicZoneTarget, targetUid }: OpenModalAddComponentsToDZPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n dynamicZoneTarget,\n targetUid,\n modalType: 'addComponentToDynamicZone',\n forTarget: 'contentType',\n step: '1',\n actionType: 'edit',\n isOpen: true,\n }));\n },\n []\n );\n\n const onOpenModalAddField = useCallback(({ forTarget, targetUid }: OpenModalAddFieldPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n actionType: 'create',\n forTarget,\n targetUid,\n modalType: 'chooseAttribute',\n isOpen: true,\n showBackLink: false,\n activeTab: 'basic',\n }));\n }, []);\n\n const onOpenModalCreateSchema = useCallback((nextState: State) => {\n setFormModalNavigationState((prevState) => ({\n ...prevState,\n ...nextState,\n isOpen: true,\n activeTab: 'basic',\n }));\n }, []);\n\n const onOpenModalEditCustomField = useCallback(\n ({\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n customFieldUid,\n }: OpenModalEditCustomFieldPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n modalType: 'customField',\n customFieldUid,\n actionType: 'edit',\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n isOpen: true,\n activeTab: 'basic',\n }));\n },\n []\n );\n\n const onOpenModalEditField = useCallback(\n ({ forTarget, targetUid, attributeName, attributeType, step }: OpenModalEditFieldPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n modalType: 'attribute',\n actionType: 'edit',\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n step,\n isOpen: true,\n }));\n },\n []\n );\n\n const onOpenModalEditSchema = useCallback(\n ({ modalType, forTarget, targetUid, kind }: OpenModalEditSchemaPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n modalType,\n actionType: 'edit',\n forTarget,\n targetUid,\n kind,\n isOpen: true,\n activeTab: 'basic',\n }));\n },\n []\n );\n\n const onCloseModal = useCallback(() => {\n setFormModalNavigationState(INITIAL_STATE_DATA);\n }, []);\n\n const onNavigateToChooseAttributeModal = useCallback(\n ({ forTarget, targetUid }: NavigateToChooseAttributeModalPayload) => {\n setFormModalNavigationState((prev: State) => ({\n ...prev,\n forTarget,\n targetUid,\n modalType: 'chooseAttribute',\n activeTab: 'basic',\n }));\n },\n []\n );\n\n const onNavigateToCreateComponentStep2 = useCallback(() => {\n setFormModalNavigationState((prev: State) => ({\n ...prev,\n attributeType: 'component',\n modalType: 'attribute',\n step: '2',\n activeTab: 'basic',\n }));\n }, []);\n\n const onNavigateToAddCompoToDZModal = useCallback(\n ({ dynamicZoneTarget }: NavigateToAddCompoToDZModalPayload) => {\n setFormModalNavigationState((prev: State) => ({\n ...prev,\n dynamicZoneTarget,\n modalType: 'addComponentToDynamicZone',\n actionType: 'create',\n step: '1',\n attributeType: null,\n attributeName: null,\n activeTab: 'basic',\n }));\n },\n []\n );\n\n const setActiveTab = useCallback((value: Tab) => {\n setFormModalNavigationState((prev: State) => ({\n ...prev,\n activeTab: value,\n }));\n }, []);\n\n const contextValue = useMemo(\n () => ({\n ...state,\n onClickSelectField,\n onClickSelectCustomField,\n onCloseModal,\n onNavigateToChooseAttributeModal,\n onNavigateToAddCompoToDZModal,\n onOpenModalAddComponentsToDZ,\n onNavigateToCreateComponentStep2,\n onOpenModalAddField,\n onOpenModalCreateSchema,\n onOpenModalEditField,\n onOpenModalEditCustomField,\n onOpenModalEditSchema,\n setFormModalNavigationState,\n setActiveTab,\n }),\n [\n state,\n onClickSelectField,\n onClickSelectCustomField,\n onCloseModal,\n onNavigateToChooseAttributeModal,\n onNavigateToAddCompoToDZModal,\n onOpenModalAddComponentsToDZ,\n onNavigateToCreateComponentStep2,\n onOpenModalAddField,\n onOpenModalCreateSchema,\n onOpenModalEditField,\n onOpenModalEditCustomField,\n onOpenModalEditSchema,\n setActiveTab,\n ]\n );\n\n return (\n <FormModalNavigationContext.Provider value={contextValue}>\n {children}\n </FormModalNavigationContext.Provider>\n );\n};\n"],"names":["INITIAL_STATE_DATA","actionType","attributeName","attributeType","dynamicZoneTarget","forTarget","modalType","isOpen","showBackLink","kind","step","targetUid","customFieldUid","activeTab","FormModalNavigationProvider","children","state","setFormModalNavigationState","useState","trackUsage","useTracking","onClickSelectCustomField","useCallback","prevState","onClickSelectField","type","onOpenModalAddComponentsToDZ","onOpenModalAddField","onOpenModalCreateSchema","nextState","onOpenModalEditCustomField","onOpenModalEditField","onOpenModalEditSchema","onCloseModal","onNavigateToChooseAttributeModal","prev","onNavigateToCreateComponentStep2","onNavigateToAddCompoToDZModal","setActiveTab","value","contextValue","useMemo","_jsx","FormModalNavigationContext","Provider"],"mappings":"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"}
1
+ {"version":3,"file":"FormModalNavigationProvider.mjs","sources":["../../../../admin/src/components/FormModalNavigation/FormModalNavigationProvider.tsx"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\n\nimport { useCTBSession } from '../CTBSession/useCTBSession';\n\nimport { FormModalNavigationContext } from './FormModalNavigationContext';\n\nimport type { TrackingEvent } from '@strapi/admin/strapi-admin';\nimport type { Internal, Struct } from '@strapi/types';\n\ntype FormModalNavigationProviderProps = {\n children: React.ReactNode;\n};\n\nexport type Tab = 'basic' | 'advanced';\n\nexport type ModalType =\n | 'chooseAttribute'\n | 'edit'\n | 'attribute'\n | 'customField'\n | 'addComponentToDynamicZone'\n | 'contentType'\n | 'component';\n\nexport type State = Record<string, any>;\n\nexport const INITIAL_STATE_DATA: State = {\n actionType: null,\n attributeName: null,\n attributeType: null,\n dynamicZoneTarget: null,\n forTarget: null,\n modalType: null,\n isOpen: true,\n showBackLink: false,\n kind: null,\n step: null,\n targetUid: null,\n customFieldUid: null,\n activeTab: 'basic',\n};\n\nexport type SelectCustomFieldPayload = {\n attributeType: string;\n customFieldUid: string;\n};\n\nexport type SelectFieldPayload = {\n attributeType: string;\n step: string | null;\n};\n\nexport type OpenModalAddComponentsToDZPayload = {\n dynamicZoneTarget?: string;\n targetUid: Internal.UID.Schema;\n};\n\nexport type OpenModalAddFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid?: Internal.UID.Schema;\n};\n\nexport type OpenModalEditCustomFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n attributeName: string;\n attributeType: string;\n customFieldUid: string;\n};\n\nexport type OpenModalEditFieldPayload = {\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n attributeName: string;\n attributeType: string;\n step: string | null;\n};\n\nexport type OpenModalEditSchemaPayload = {\n modalType: ModalType;\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n kind?: string;\n};\n\nexport type NavigateToChooseAttributeModalPayload = {\n forTarget: Struct.ModelType;\n targetUid: Internal.UID.Schema;\n};\n\nexport type NavigateToAddCompoToDZModalPayload = {\n dynamicZoneTarget: string;\n};\n\nexport const FormModalNavigationProvider = ({ children }: FormModalNavigationProviderProps) => {\n const [state, setFormModalNavigationState] = useState(INITIAL_STATE_DATA);\n const { trackUsage: originalTrackUsage } = useTracking();\n const { sessionId } = useCTBSession();\n\n // Create a trackUsage that includes session ID from CTBSessionContext\n const trackUsage = useCallback(\n <TEvent extends TrackingEvent>(event: TEvent['name'], properties?: TEvent['properties']) => {\n const propertiesWithSessionId = {\n ...(properties as Record<string, unknown>),\n ctbSessionId: sessionId,\n };\n return originalTrackUsage(event, propertiesWithSessionId as TEvent['properties']);\n },\n [originalTrackUsage, sessionId]\n );\n\n const onClickSelectCustomField = useCallback(\n ({ attributeType, customFieldUid }: SelectCustomFieldPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n actionType: 'create',\n modalType: 'customField',\n attributeType,\n customFieldUid,\n activeTab: 'basic',\n }));\n },\n []\n );\n\n const onClickSelectField = useCallback(\n ({ attributeType, step }: SelectFieldPayload) => {\n if (state.forTarget === 'contentType') {\n trackUsage('didSelectContentTypeFieldType', { type: attributeType });\n }\n\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n actionType: 'create',\n modalType: 'attribute',\n step,\n attributeType,\n showBackLink: true,\n activeTab: 'basic',\n }));\n },\n [state.forTarget, trackUsage]\n );\n\n const onOpenModalAddComponentsToDZ = useCallback(\n ({ dynamicZoneTarget, targetUid }: OpenModalAddComponentsToDZPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n dynamicZoneTarget,\n targetUid,\n modalType: 'addComponentToDynamicZone',\n forTarget: 'contentType',\n step: '1',\n actionType: 'edit',\n isOpen: true,\n }));\n },\n []\n );\n\n const onOpenModalAddField = useCallback(({ forTarget, targetUid }: OpenModalAddFieldPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n actionType: 'create',\n forTarget,\n targetUid,\n modalType: 'chooseAttribute',\n isOpen: true,\n showBackLink: false,\n activeTab: 'basic',\n }));\n }, []);\n\n const onOpenModalCreateSchema = useCallback((nextState: State) => {\n setFormModalNavigationState((prevState) => ({\n ...prevState,\n ...nextState,\n isOpen: true,\n activeTab: 'basic',\n }));\n }, []);\n\n const onOpenModalEditCustomField = useCallback(\n ({\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n customFieldUid,\n }: OpenModalEditCustomFieldPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n modalType: 'customField',\n customFieldUid,\n actionType: 'edit',\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n isOpen: true,\n activeTab: 'basic',\n }));\n },\n []\n );\n\n const onOpenModalEditField = useCallback(\n ({ forTarget, targetUid, attributeName, attributeType, step }: OpenModalEditFieldPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n modalType: 'attribute',\n actionType: 'edit',\n forTarget,\n targetUid,\n attributeName,\n attributeType,\n step,\n isOpen: true,\n }));\n },\n []\n );\n\n const onOpenModalEditSchema = useCallback(\n ({ modalType, forTarget, targetUid, kind }: OpenModalEditSchemaPayload) => {\n setFormModalNavigationState((prevState: State) => ({\n ...prevState,\n modalType,\n actionType: 'edit',\n forTarget,\n targetUid,\n kind,\n isOpen: true,\n activeTab: 'basic',\n }));\n },\n []\n );\n\n const onCloseModal = useCallback(() => {\n setFormModalNavigationState(INITIAL_STATE_DATA);\n }, []);\n\n const onNavigateToChooseAttributeModal = useCallback(\n ({ forTarget, targetUid }: NavigateToChooseAttributeModalPayload) => {\n setFormModalNavigationState((prev: State) => ({\n ...prev,\n forTarget,\n targetUid,\n modalType: 'chooseAttribute',\n activeTab: 'basic',\n }));\n },\n []\n );\n\n const onNavigateToCreateComponentStep2 = useCallback(() => {\n setFormModalNavigationState((prev: State) => ({\n ...prev,\n attributeType: 'component',\n modalType: 'attribute',\n step: '2',\n activeTab: 'basic',\n }));\n }, []);\n\n const onNavigateToAddCompoToDZModal = useCallback(\n ({ dynamicZoneTarget }: NavigateToAddCompoToDZModalPayload) => {\n setFormModalNavigationState((prev: State) => ({\n ...prev,\n dynamicZoneTarget,\n modalType: 'addComponentToDynamicZone',\n actionType: 'create',\n step: '1',\n attributeType: null,\n attributeName: null,\n activeTab: 'basic',\n }));\n },\n []\n );\n\n const setActiveTab = useCallback((value: Tab) => {\n setFormModalNavigationState((prev: State) => ({\n ...prev,\n activeTab: value,\n }));\n }, []);\n\n const contextValue = useMemo(\n () => ({\n ...state,\n onClickSelectField,\n onClickSelectCustomField,\n onCloseModal,\n onNavigateToChooseAttributeModal,\n onNavigateToAddCompoToDZModal,\n onOpenModalAddComponentsToDZ,\n onNavigateToCreateComponentStep2,\n onOpenModalAddField,\n onOpenModalCreateSchema,\n onOpenModalEditField,\n onOpenModalEditCustomField,\n onOpenModalEditSchema,\n setFormModalNavigationState,\n setActiveTab,\n }),\n [\n state,\n onClickSelectField,\n onClickSelectCustomField,\n onCloseModal,\n onNavigateToChooseAttributeModal,\n onNavigateToAddCompoToDZModal,\n onOpenModalAddComponentsToDZ,\n onNavigateToCreateComponentStep2,\n onOpenModalAddField,\n onOpenModalCreateSchema,\n onOpenModalEditField,\n onOpenModalEditCustomField,\n onOpenModalEditSchema,\n setActiveTab,\n ]\n );\n\n return (\n <FormModalNavigationContext.Provider value={contextValue}>\n {children}\n </FormModalNavigationContext.Provider>\n );\n};\n"],"names":["INITIAL_STATE_DATA","actionType","attributeName","attributeType","dynamicZoneTarget","forTarget","modalType","isOpen","showBackLink","kind","step","targetUid","customFieldUid","activeTab","FormModalNavigationProvider","children","state","setFormModalNavigationState","useState","trackUsage","originalTrackUsage","useTracking","sessionId","useCTBSession","useCallback","event","properties","propertiesWithSessionId","ctbSessionId","onClickSelectCustomField","prevState","onClickSelectField","type","onOpenModalAddComponentsToDZ","onOpenModalAddField","onOpenModalCreateSchema","nextState","onOpenModalEditCustomField","onOpenModalEditField","onOpenModalEditSchema","onCloseModal","onNavigateToChooseAttributeModal","prev","onNavigateToCreateComponentStep2","onNavigateToAddCompoToDZModal","setActiveTab","value","contextValue","useMemo","_jsx","FormModalNavigationContext","Provider"],"mappings":"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"}
@@ -15,6 +15,8 @@ var reactIntl = require('react-intl');
15
15
  var styledComponents = require('styled-components');
16
16
  var getTrad = require('../utils/getTrad.js');
17
17
  var AttributeRow = require('./AttributeRow.js');
18
+ require('./CTBSession/sessionContext.js');
19
+ var useCTBTracking = require('./CTBSession/useCTBTracking.js');
18
20
  var useDataManager = require('./DataManager/useDataManager.js');
19
21
  var Footers = require('./Footers.js');
20
22
  var useFormModalNavigation = require('./FormModalNavigation/useFormModalNavigation.js');
@@ -54,7 +56,7 @@ const SortableRow = (props)=>{
54
56
  };
55
57
  const List = ({ addComponentToDZ, firstLoopComponentUid, isFromDynamicZone = false, isMain = false, isSub = false, secondLoopComponentUid, type })=>{
56
58
  const { formatMessage } = reactIntl.useIntl();
57
- const { trackUsage } = strapiAdmin.useTracking();
59
+ const { trackUsage } = useCTBTracking.useCTBTracking();
58
60
  const { isInDevelopmentMode, moveAttribute } = useDataManager.useDataManager();
59
61
  const { onOpenModalAddField } = useFormModalNavigation.useFormModalNavigation();
60
62
  const items = type?.attributes.map((item, index)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"List.js","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport {\n SortableContext,\n verticalListSortingStrategy,\n useSortable,\n sortableKeyboardCoordinates,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { tours, useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <tours.contentTypeBuilder.AddFields>\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n </tours.contentTypeBuilder.AddFields>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","tours","contentTypeBuilder","AddFields","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
1
+ {"version":3,"file":"List.js","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport {\n SortableContext,\n verticalListSortingStrategy,\n useSortable,\n sortableKeyboardCoordinates,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { tours } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useCTBTracking } from './CTBSession/ctbSession';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useCTBTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <tours.contentTypeBuilder.AddFields>\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n </tours.contentTypeBuilder.AddFields>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useCTBTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","tours","contentTypeBuilder","AddFields","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, close
4
4
  import { restrictToVerticalAxis } from '@dnd-kit/modifiers';
5
5
  import { sortableKeyboardCoordinates, SortableContext, verticalListSortingStrategy, useSortable } from '@dnd-kit/sortable';
6
6
  import { CSS } from '@dnd-kit/utilities';
7
- import { useTracking, tours } from '@strapi/admin/strapi-admin';
7
+ import { tours } from '@strapi/admin/strapi-admin';
8
8
  import { Box, EmptyStateLayout, Button } from '@strapi/design-system';
9
9
  import { Plus } from '@strapi/icons';
10
10
  import { EmptyDocuments } from '@strapi/icons/symbols';
@@ -13,6 +13,8 @@ import { useIntl } from 'react-intl';
13
13
  import { styled } from 'styled-components';
14
14
  import { getTrad } from '../utils/getTrad.mjs';
15
15
  import { AttributeRow } from './AttributeRow.mjs';
16
+ import './CTBSession/sessionContext.mjs';
17
+ import { useCTBTracking } from './CTBSession/useCTBTracking.mjs';
16
18
  import { useDataManager } from './DataManager/useDataManager.mjs';
17
19
  import { TFooter, NestedTFooter } from './Footers.mjs';
18
20
  import { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation.mjs';
@@ -52,7 +54,7 @@ const SortableRow = (props)=>{
52
54
  };
53
55
  const List = ({ addComponentToDZ, firstLoopComponentUid, isFromDynamicZone = false, isMain = false, isSub = false, secondLoopComponentUid, type })=>{
54
56
  const { formatMessage } = useIntl();
55
- const { trackUsage } = useTracking();
57
+ const { trackUsage } = useCTBTracking();
56
58
  const { isInDevelopmentMode, moveAttribute } = useDataManager();
57
59
  const { onOpenModalAddField } = useFormModalNavigation();
58
60
  const items = type?.attributes.map((item, index)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"List.mjs","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport {\n SortableContext,\n verticalListSortingStrategy,\n useSortable,\n sortableKeyboardCoordinates,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { tours, useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <tours.contentTypeBuilder.AddFields>\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n </tours.contentTypeBuilder.AddFields>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","tours","contentTypeBuilder","AddFields","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
1
+ {"version":3,"file":"List.mjs","sources":["../../../admin/src/components/List.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n DragStartEvent,\n DragOverlay,\n UniqueIdentifier,\n} from '@dnd-kit/core';\nimport { restrictToVerticalAxis } from '@dnd-kit/modifiers';\nimport {\n SortableContext,\n verticalListSortingStrategy,\n useSortable,\n sortableKeyboardCoordinates,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { tours } from '@strapi/admin/strapi-admin';\nimport { Box, Button, EmptyStateLayout } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { createPortal } from 'react-dom';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../utils/getTrad';\n\nimport { AttributeRow, type AttributeRowProps } from './AttributeRow';\nimport { useCTBTracking } from './CTBSession/ctbSession';\nimport { useDataManager } from './DataManager/useDataManager';\nimport { NestedTFooter, TFooter } from './Footers';\nimport { useFormModalNavigation } from './FormModalNavigation/useFormModalNavigation';\n\nimport type { Component, ContentType } from '../types';\nimport type { UID } from '@strapi/types';\n\nexport const ListGrid = styled(Box)`\n white-space: nowrap;\n list-style: none;\n list-style-type: none;\n`;\n\ntype ListProps = {\n addComponentToDZ?: () => void;\n firstLoopComponentUid?: UID.Component | null;\n isFromDynamicZone?: boolean;\n isMain?: boolean;\n secondLoopComponentUid?: UID.Component | null;\n isSub?: boolean;\n type: ContentType | Component;\n};\n\nconst SortableRow = (props: AttributeRowProps) => {\n const { isInDevelopmentMode } = useDataManager();\n\n const {\n isDragging,\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n setActivatorNodeRef,\n } = useSortable({\n disabled:\n !isInDevelopmentMode || props.item.status === 'REMOVED' || props.type.status === 'REMOVED',\n id: props.item.id,\n data: { index: props.item.index },\n });\n\n const style = {\n transform: CSS.Transform.toString({\n x: transform?.x ?? 0,\n y: transform?.y ?? 0,\n scaleX: 1,\n scaleY: 1,\n }),\n transition,\n };\n\n return (\n <AttributeRow\n ref={setNodeRef}\n handleRef={setActivatorNodeRef}\n isDragging={isDragging}\n attributes={attributes}\n listeners={listeners}\n style={style}\n {...props}\n />\n );\n};\n\nexport const List = ({\n addComponentToDZ,\n firstLoopComponentUid,\n isFromDynamicZone = false,\n isMain = false,\n isSub = false,\n secondLoopComponentUid,\n type,\n}: ListProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useCTBTracking();\n const { isInDevelopmentMode, moveAttribute } = useDataManager();\n const { onOpenModalAddField } = useFormModalNavigation();\n\n const items = type?.attributes.map((item, index) => {\n return {\n id: `${type.uid}_${item.name}`,\n index,\n ...item,\n };\n });\n\n const [activeId, setActiveId] = useState<UniqueIdentifier | null>(null);\n\n const isDeleted = type?.status === 'REMOVED';\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n function handlerDragStart({ active }: DragStartEvent) {\n if (!active) {\n return;\n }\n\n setActiveId(active.id);\n }\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n setActiveId(null);\n\n if (over) {\n if (active.id !== over.id) {\n moveAttribute({\n forTarget: type.modelType,\n targetUid: type.uid,\n from: active.data.current!.index,\n to: over.data.current!.index,\n });\n }\n }\n }\n\n const activeItem = items.find((item) => item.id === activeId);\n\n const onClickAddField = () => {\n if (isDeleted) {\n return;\n }\n\n trackUsage('hasClickedCTBAddFieldBanner');\n\n onOpenModalAddField({ forTarget: type?.modelType, targetUid: type.uid });\n };\n\n if (type?.attributes.length === 0 && isMain) {\n return (\n <EmptyStateLayout\n action={\n <tours.contentTypeBuilder.AddFields>\n <Button onClick={onClickAddField} size=\"L\" startIcon={<Plus />} variant=\"secondary\">\n {formatMessage({\n id: getTrad('table.button.no-fields'),\n defaultMessage: 'Add new field',\n })}\n </Button>\n </tours.contentTypeBuilder.AddFields>\n }\n content={formatMessage(\n type.modelType === 'contentType'\n ? {\n id: getTrad('table.content.no-fields.collection-type'),\n defaultMessage: 'Add your first field to this Collection-Type',\n }\n : {\n id: getTrad('table.content.no-fields.component'),\n defaultMessage: 'Add your first field to this component',\n }\n )}\n hasRadius\n icon={<EmptyDocuments width=\"16rem\" />}\n />\n );\n }\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n onDragStart={handlerDragStart}\n onDragCancel={() => setActiveId(null)}\n modifiers={[restrictToVerticalAxis]}\n >\n <ListGrid tag=\"ul\">\n {createPortal(\n <DragOverlay zIndex={10}>\n {activeItem && (\n <AttributeRow\n isOverlay\n item={activeItem}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n )}\n </DragOverlay>,\n document.body\n )}\n <SortableContext items={items} strategy={verticalListSortingStrategy}>\n {items.map((item) => {\n return (\n <SortableRow\n key={item.id}\n item={item}\n firstLoopComponentUid={firstLoopComponentUid}\n isFromDynamicZone={isFromDynamicZone}\n secondLoopComponentUid={secondLoopComponentUid}\n type={type}\n addComponentToDZ={addComponentToDZ}\n />\n );\n })}\n </SortableContext>\n </ListGrid>\n\n {isMain && isInDevelopmentMode && (\n <TFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isDeleted ? 'neutral' : 'primary'}\n >\n {formatMessage({\n id: getTrad(\n `form.button.add.field.to.${type.modelType === 'component' ? 'component' : type.kind}`\n ),\n defaultMessage: 'Add another field',\n })}\n </TFooter>\n )}\n {isSub && isInDevelopmentMode && (\n <NestedTFooter\n cursor={isDeleted ? 'normal' : 'pointer'}\n icon={<Plus />}\n onClick={onClickAddField}\n color={isFromDynamicZone && !isDeleted ? 'primary' : 'neutral'}\n >\n {formatMessage({\n id: getTrad(`form.button.add.field.to.component`),\n defaultMessage: 'Add another field',\n })}\n </NestedTFooter>\n )}\n </DndContext>\n );\n};\n"],"names":["ListGrid","styled","Box","SortableRow","props","isInDevelopmentMode","useDataManager","isDragging","attributes","listeners","setNodeRef","transform","transition","setActivatorNodeRef","useSortable","disabled","item","status","type","id","data","index","style","CSS","Transform","toString","x","y","scaleX","scaleY","_jsx","AttributeRow","ref","handleRef","List","addComponentToDZ","firstLoopComponentUid","isFromDynamicZone","isMain","isSub","secondLoopComponentUid","formatMessage","useIntl","trackUsage","useCTBTracking","moveAttribute","onOpenModalAddField","useFormModalNavigation","items","map","uid","name","activeId","setActiveId","useState","isDeleted","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","coordinateGetter","sortableKeyboardCoordinates","handlerDragStart","active","handleDragEnd","event","over","forTarget","modelType","targetUid","from","current","to","activeItem","find","onClickAddField","length","EmptyStateLayout","action","tours","contentTypeBuilder","AddFields","Button","onClick","size","startIcon","Plus","variant","getTrad","defaultMessage","content","hasRadius","icon","EmptyDocuments","width","_jsxs","DndContext","collisionDetection","closestCenter","onDragEnd","onDragStart","onDragCancel","modifiers","restrictToVerticalAxis","tag","createPortal","DragOverlay","zIndex","isOverlay","document","body","SortableContext","strategy","verticalListSortingStrategy","TFooter","cursor","color","kind","NestedTFooter"],"mappings":"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"}
@@ -58,6 +58,7 @@ var GenericInputs = require('./GenericInputs.js');
58
58
  if (input.type === 'pushRight') {
59
59
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
60
60
  col: input.size || 6,
61
+ xs: 12,
61
62
  direction: "column",
62
63
  alignItems: "stretch",
63
64
  children: /*#__PURE__*/ jsxRuntime.jsx("div", {})
@@ -80,6 +81,7 @@ var GenericInputs = require('./GenericInputs.js');
80
81
  });
81
82
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
82
83
  col: input.size || 12,
84
+ xs: 12,
83
85
  direction: "column",
84
86
  alignItems: "stretch",
85
87
  children: !currentCondition || Object.keys(currentCondition).length === 0 ? /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Box, {
@@ -147,6 +149,7 @@ var GenericInputs = require('./GenericInputs.js');
147
149
  // Default rendering for all other input types
148
150
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
149
151
  col: input.size || 6,
152
+ xs: 12,
150
153
  direction: "column",
151
154
  alignItems: "stretch",
152
155
  children: /*#__PURE__*/ jsxRuntime.jsx(GenericInputs.GenericInput, {
@@ -1 +1 @@
1
- {"version":3,"file":"TabForm.js","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { formatCondition, getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\ninterface TabFormProps {\n form: Array<Record<string, any>>;\n formErrors: Record<string, any>;\n genericInputProps: Record<string, any>;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n}\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input: any, i: number) => {\n const key = `${sectionIndex}.${i}`;\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError].id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name);\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n genericInputProps.contentTypeSchema?.attributes || [];\n\n if (!genericInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size || 12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {!currentCondition || Object.keys(currentCondition).length === 0 ? (\n <Box>\n {currentCondition && Object.keys(currentCondition).length > 0 && (\n <Typography variant=\"sigma\" textColor=\"neutral800\" marginBottom={2}>\n {formatCondition(\n currentCondition,\n availableFields,\n genericInputProps.attributeName || modifiedData.name\n )}\n </Typography>\n )}\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={\n currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4\n }\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","value","get","name","undefined","pluginOptionError","Object","keys","find","errorId","id","split","filter","type","Item","col","size","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","defaultMessage","marginBottom","formatCondition","attributeName","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","conditionFields","onDelete"],"mappings":"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"}
1
+ {"version":3,"file":"TabForm.js","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { formatCondition, getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\ninterface TabFormProps {\n form: Array<Record<string, any>>;\n formErrors: Record<string, any>;\n genericInputProps: Record<string, any>;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n}\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input: any, i: number) => {\n const key = `${sectionIndex}.${i}`;\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError].id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size || 6}\n xs={12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name);\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n genericInputProps.contentTypeSchema?.attributes || [];\n\n if (!genericInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size || 12}\n xs={12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {!currentCondition || Object.keys(currentCondition).length === 0 ? (\n <Box>\n {currentCondition && Object.keys(currentCondition).length > 0 && (\n <Typography variant=\"sigma\" textColor=\"neutral800\" marginBottom={2}>\n {formatCondition(\n currentCondition,\n availableFields,\n genericInputProps.attributeName || modifiedData.name\n )}\n </Typography>\n )}\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={\n currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4\n }\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size || 6}\n xs={12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","value","get","name","undefined","pluginOptionError","Object","keys","find","errorId","id","split","filter","type","Item","col","size","xs","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","defaultMessage","marginBottom","formatCondition","attributeName","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","conditionFields","onDelete"],"mappings":"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"}
@@ -56,6 +56,7 @@ import { GenericInput as MemoizedGenericInput } from './GenericInputs.mjs';
56
56
  if (input.type === 'pushRight') {
57
57
  return /*#__PURE__*/ jsx(Grid.Item, {
58
58
  col: input.size || 6,
59
+ xs: 12,
59
60
  direction: "column",
60
61
  alignItems: "stretch",
61
62
  children: /*#__PURE__*/ jsx("div", {})
@@ -78,6 +79,7 @@ import { GenericInput as MemoizedGenericInput } from './GenericInputs.mjs';
78
79
  });
79
80
  return /*#__PURE__*/ jsx(Grid.Item, {
80
81
  col: input.size || 12,
82
+ xs: 12,
81
83
  direction: "column",
82
84
  alignItems: "stretch",
83
85
  children: !currentCondition || Object.keys(currentCondition).length === 0 ? /*#__PURE__*/ jsxs(Box, {
@@ -145,6 +147,7 @@ import { GenericInput as MemoizedGenericInput } from './GenericInputs.mjs';
145
147
  // Default rendering for all other input types
146
148
  return /*#__PURE__*/ jsx(Grid.Item, {
147
149
  col: input.size || 6,
150
+ xs: 12,
148
151
  direction: "column",
149
152
  alignItems: "stretch",
150
153
  children: /*#__PURE__*/ jsx(MemoizedGenericInput, {
@@ -1 +1 @@
1
- {"version":3,"file":"TabForm.mjs","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { formatCondition, getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\ninterface TabFormProps {\n form: Array<Record<string, any>>;\n formErrors: Record<string, any>;\n genericInputProps: Record<string, any>;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n}\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input: any, i: number) => {\n const key = `${sectionIndex}.${i}`;\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError].id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name);\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n genericInputProps.contentTypeSchema?.attributes || [];\n\n if (!genericInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size || 12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {!currentCondition || Object.keys(currentCondition).length === 0 ? (\n <Box>\n {currentCondition && Object.keys(currentCondition).length > 0 && (\n <Typography variant=\"sigma\" textColor=\"neutral800\" marginBottom={2}>\n {formatCondition(\n currentCondition,\n availableFields,\n genericInputProps.attributeName || modifiedData.name\n )}\n </Typography>\n )}\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={\n currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4\n }\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size || 6}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","value","get","name","undefined","pluginOptionError","Object","keys","find","errorId","id","split","filter","type","Item","col","size","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","defaultMessage","marginBottom","formatCondition","attributeName","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","conditionFields","onDelete"],"mappings":"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"}
1
+ {"version":3,"file":"TabForm.mjs","sources":["../../../admin/src/components/TabForm.tsx"],"sourcesContent":["import { Box, Grid, Typography, Button, Tooltip } from '@strapi/design-system';\nimport get from 'lodash/get';\nimport { useIntl } from 'react-intl';\n\nimport { formatCondition, getAvailableConditionFields } from '../utils/conditions';\n\nimport { GenericInput } from './GenericInputs';\n\ninterface TabFormProps {\n form: Array<Record<string, any>>;\n formErrors: Record<string, any>;\n genericInputProps: Record<string, any>;\n modifiedData: Record<string, any>;\n onChange: (value: any) => void;\n}\n\n/* eslint-disable react/no-array-index-key */\nexport const TabForm = ({\n form,\n formErrors,\n genericInputProps,\n modifiedData,\n onChange,\n}: TabFormProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n {form.map((section, sectionIndex) => {\n // Don't display an empty section\n if (section.items.length === 0) {\n return null;\n }\n return (\n <Box key={sectionIndex}>\n {section.sectionTitle && (\n <Box paddingBottom={4}>\n <Typography variant=\"delta\" tag=\"h3\">\n {formatMessage(section.sectionTitle)}\n </Typography>\n </Box>\n )}\n {section.intlLabel && (\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage(section.intlLabel)}\n </Typography>\n )}\n\n <Grid.Root gap={4}>\n {section.items.map((input: any, i: number) => {\n const key = `${sectionIndex}.${i}`;\n\n /**\n * Use undefined as the default value because not every input wants a string e.g. Date pickers\n */\n const value = get(modifiedData, input.name, undefined);\n\n // When extending the yup schema of an existing field (like in https://github.com/strapi/strapi/blob/293ff3b8f9559236609d123a2774e3be05ce8274/packages/strapi-plugin-i18n/admin/src/index.js#L52)\n // and triggering a yup validation error in the UI (missing a required field for example)\n // We got an object that looks like: formErrors = { \"pluginOptions.i18n.localized\": {...} }\n // In order to deal with this error, we can't rely on lodash.get to resolve this key\n // - lodash will try to access {pluginOptions: {i18n: {localized: true}}})\n // - and we just want to access { \"pluginOptions.i18n.localized\": {...} }\n // NOTE: this is a hack\n const pluginOptionError = Object.keys(formErrors).find((key) => key === input.name);\n\n // Retrieve the error for a specific input\n const errorId = pluginOptionError\n ? formErrors[pluginOptionError].id\n : get(\n formErrors,\n [\n ...input.name\n .split('.')\n // The filter here is used when creating a component\n // in the component step 1 modal\n // Since the component info is stored in the\n // componentToCreate object we can access the error\n // By removing the key\n .filter((key: string) => key !== 'componentToCreate'),\n 'id',\n ],\n null\n );\n\n if (input.type === 'pushRight') {\n return (\n <Grid.Item\n col={input.size || 6}\n xs={12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <div />\n </Grid.Item>\n );\n }\n\n // Special handling for 'condition-form'\n if (input.type === 'condition-form') {\n const currentCondition = get(modifiedData, input.name);\n\n // Get all attributes from the content type schema\n const contentTypeAttributes =\n genericInputProps.contentTypeSchema?.attributes || [];\n\n if (!genericInputProps.contentTypeSchema) {\n console.warn('contentTypeSchema is undefined, skipping condition form');\n return null;\n }\n\n // Filter for boolean and enumeration fields only, excluding the current field\n const availableFields = getAvailableConditionFields(\n contentTypeAttributes,\n modifiedData.name\n );\n\n const noFieldsMessage = formatMessage({\n id: 'form.attribute.condition.no-fields',\n defaultMessage:\n 'No boolean or enumeration fields available to set conditions on.',\n });\n\n return (\n <Grid.Item\n col={input.size || 12}\n xs={12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n {!currentCondition || Object.keys(currentCondition).length === 0 ? (\n <Box>\n {currentCondition && Object.keys(currentCondition).length > 0 && (\n <Typography variant=\"sigma\" textColor=\"neutral800\" marginBottom={2}>\n {formatCondition(\n currentCondition,\n availableFields,\n genericInputProps.attributeName || modifiedData.name\n )}\n </Typography>\n )}\n <Tooltip label={noFieldsMessage}>\n <Button\n marginTop={\n currentCondition && Object.keys(currentCondition).length > 0 ? 0 : 4\n }\n fullWidth={true}\n variant=\"secondary\"\n onClick={() => {\n onChange({\n target: {\n name: input.name,\n value: { visible: { '==': [{ var: '' }, ''] } },\n },\n });\n }}\n startIcon={<span aria-hidden>+</span>}\n disabled={availableFields.length === 0}\n >\n {formatMessage({\n id: 'form.attribute.condition.apply',\n defaultMessage: 'Apply condition',\n })}\n </Button>\n </Tooltip>\n </Box>\n ) : (\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n attributeName={modifiedData.name}\n conditionFields={availableFields}\n onDelete={() => {\n onChange({\n target: {\n name: input.name,\n },\n });\n }}\n />\n )}\n </Grid.Item>\n );\n }\n\n // Default rendering for all other input types\n return (\n <Grid.Item\n col={input.size || 6}\n xs={12}\n key={input.name || key}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <GenericInput\n {...input}\n {...genericInputProps}\n error={errorId}\n onChange={onChange}\n value={value}\n autoFocus={i === 0}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </Box>\n );\n })}\n </>\n );\n};\n"],"names":["TabForm","form","formErrors","genericInputProps","modifiedData","onChange","formatMessage","useIntl","_jsx","_Fragment","map","section","sectionIndex","items","length","_jsxs","Box","sectionTitle","paddingBottom","Typography","variant","tag","intlLabel","textColor","Grid","Root","gap","input","i","key","value","get","name","undefined","pluginOptionError","Object","keys","find","errorId","id","split","filter","type","Item","col","size","xs","direction","alignItems","div","currentCondition","contentTypeAttributes","contentTypeSchema","attributes","console","warn","availableFields","getAvailableConditionFields","noFieldsMessage","defaultMessage","marginBottom","formatCondition","attributeName","Tooltip","label","Button","marginTop","fullWidth","onClick","target","visible","var","startIcon","span","aria-hidden","disabled","GenericInput","error","autoFocus","conditionFields","onDelete"],"mappings":";;;;;;;AAgBA,8CACaA,MAAAA,OAAAA,GAAU,CAAC,EACtBC,IAAI,EACJC,UAAU,EACVC,iBAAiB,EACjBC,YAAY,EACZC,QAAQ,EACK,GAAA;IACb,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,GAAA,CAAAC,QAAA,EAAA;kBACGR,IAAKS,CAAAA,GAAG,CAAC,CAACC,OAASC,EAAAA,YAAAA,GAAAA;;AAElB,YAAA,IAAID,OAAQE,CAAAA,KAAK,CAACC,MAAM,KAAK,CAAG,EAAA;gBAC9B,OAAO,IAAA;AACT;AACA,YAAA,qBACEC,IAACC,CAAAA,GAAAA,EAAAA;;oBACEL,OAAQM,CAAAA,YAAY,kBACnBT,GAACQ,CAAAA,GAAAA,EAAAA;wBAAIE,aAAe,EAAA,CAAA;AAClB,wBAAA,QAAA,gBAAAV,GAACW,CAAAA,UAAAA,EAAAA;4BAAWC,OAAQ,EAAA,OAAA;4BAAQC,GAAI,EAAA,IAAA;AAC7Bf,4BAAAA,QAAAA,EAAAA,aAAAA,CAAcK,QAAQM,YAAY;;;oBAIxCN,OAAQW,CAAAA,SAAS,kBAChBd,GAACW,CAAAA,UAAAA,EAAAA;wBAAWC,OAAQ,EAAA,IAAA;wBAAKG,SAAU,EAAA,YAAA;AAChCjB,wBAAAA,QAAAA,EAAAA,aAAAA,CAAcK,QAAQW,SAAS;;AAIpC,kCAAAd,GAAA,CAACgB,KAAKC,IAAI,EAAA;wBAACC,GAAK,EAAA,CAAA;AACbf,wBAAAA,QAAAA,EAAAA,OAAAA,CAAQE,KAAK,CAACH,GAAG,CAAC,CAACiB,KAAYC,EAAAA,CAAAA,GAAAA;AAC9B,4BAAA,MAAMC,GAAM,GAAA,CAAA,EAAGjB,YAAa,CAAA,CAAC,EAAEgB,CAAG,CAAA,CAAA;AAElC;;AAEC,oBACD,MAAME,KAAQC,GAAAA,GAAAA,CAAI3B,YAAcuB,EAAAA,KAAAA,CAAMK,IAAI,EAAEC,SAAAA,CAAAA;;;;;;;;4BAS5C,MAAMC,iBAAAA,GAAoBC,MAAOC,CAAAA,IAAI,CAAClC,UAAAA,CAAAA,CAAYmC,IAAI,CAAC,CAACR,GAAAA,GAAQA,GAAQF,KAAAA,KAAAA,CAAMK,IAAI,CAAA;;4BAGlF,MAAMM,OAAAA,GAAUJ,oBACZhC,UAAU,CAACgC,kBAAkB,CAACK,EAAE,GAChCR,GAAAA,CACE7B,UACA,EAAA;AACKyB,gCAAAA,GAAAA,KAAAA,CAAMK,IAAI,CACVQ,KAAK,CAAC,IACP;;;;;iCAKCC,MAAM,CAAC,CAACZ,GAAAA,GAAgBA,GAAQ,KAAA,mBAAA,CAAA;AACnC,gCAAA;6BACD,EACD,IAAA,CAAA;4BAGN,IAAIF,KAAAA,CAAMe,IAAI,KAAK,WAAa,EAAA;gCAC9B,qBACElC,GAAA,CAACgB,KAAKmB,IAAI,EAAA;oCACRC,GAAKjB,EAAAA,KAAAA,CAAMkB,IAAI,IAAI,CAAA;oCACnBC,EAAI,EAAA,EAAA;oCAEJC,SAAU,EAAA,QAAA;oCACVC,UAAW,EAAA,SAAA;AAEX,oCAAA,QAAA,gBAAAxC,GAACyC,CAAAA,KAAAA,EAAAA,EAAAA;AAJItB,iCAAAA,EAAAA,KAAAA,CAAMK,IAAI,IAAIH,GAAAA,CAAAA;AAOzB;;4BAGA,IAAIF,KAAAA,CAAMe,IAAI,KAAK,gBAAkB,EAAA;AACnC,gCAAA,MAAMQ,gBAAmBnB,GAAAA,GAAAA,CAAI3B,YAAcuB,EAAAA,KAAAA,CAAMK,IAAI,CAAA;;AAGrD,gCAAA,MAAMmB,qBACJhD,GAAAA,iBAAAA,CAAkBiD,iBAAiB,EAAEC,cAAc,EAAE;gCAEvD,IAAI,CAAClD,iBAAkBiD,CAAAA,iBAAiB,EAAE;AACxCE,oCAAAA,OAAAA,CAAQC,IAAI,CAAC,yDAAA,CAAA;oCACb,OAAO,IAAA;AACT;;AAGA,gCAAA,MAAMC,eAAkBC,GAAAA,2BAAAA,CACtBN,qBACA/C,EAAAA,YAAAA,CAAa4B,IAAI,CAAA;AAGnB,gCAAA,MAAM0B,kBAAkBpD,aAAc,CAAA;oCACpCiC,EAAI,EAAA,oCAAA;oCACJoB,cACE,EAAA;AACJ,iCAAA,CAAA;gCAEA,qBACEnD,GAAA,CAACgB,KAAKmB,IAAI,EAAA;oCACRC,GAAKjB,EAAAA,KAAAA,CAAMkB,IAAI,IAAI,EAAA;oCACnBC,EAAI,EAAA,EAAA;oCAEJC,SAAU,EAAA,QAAA;oCACVC,UAAW,EAAA,SAAA;8CAEV,CAACE,gBAAAA,IAAoBf,OAAOC,IAAI,CAACc,kBAAkBpC,MAAM,KAAK,kBAC7DC,IAACC,CAAAA,GAAAA,EAAAA;;AACEkC,4CAAAA,gBAAAA,IAAoBf,OAAOC,IAAI,CAACc,kBAAkBpC,MAAM,GAAG,mBAC1DN,GAACW,CAAAA,UAAAA,EAAAA;gDAAWC,OAAQ,EAAA,OAAA;gDAAQG,SAAU,EAAA,YAAA;gDAAaqC,YAAc,EAAA,CAAA;AAC9DC,gDAAAA,QAAAA,EAAAA,eAAAA,CACCX,kBACAM,eACArD,EAAAA,iBAAAA,CAAkB2D,aAAa,IAAI1D,aAAa4B,IAAI;;0DAI1DxB,GAACuD,CAAAA,OAAAA,EAAAA;gDAAQC,KAAON,EAAAA,eAAAA;AACd,gDAAA,QAAA,gBAAAlD,GAACyD,CAAAA,MAAAA,EAAAA;oDACCC,SACEhB,EAAAA,gBAAAA,IAAoBf,OAAOC,IAAI,CAACc,kBAAkBpC,MAAM,GAAG,IAAI,CAAI,GAAA,CAAA;oDAErEqD,SAAW,EAAA,IAAA;oDACX/C,OAAQ,EAAA,WAAA;oDACRgD,OAAS,EAAA,IAAA;wDACP/D,QAAS,CAAA;4DACPgE,MAAQ,EAAA;AACNrC,gEAAAA,IAAAA,EAAML,MAAMK,IAAI;gEAChBF,KAAO,EAAA;oEAAEwC,OAAS,EAAA;wEAAE,IAAM,EAAA;AAAC,4EAAA;gFAAEC,GAAK,EAAA;AAAG,6EAAA;AAAG,4EAAA;AAAG;AAAC;AAAE;AAChD;AACF,yDAAA,CAAA;AACF,qDAAA;AACAC,oDAAAA,SAAAA,gBAAWhE,GAACiE,CAAAA,MAAAA,EAAAA;wDAAKC,aAAW,EAAA,IAAA;AAAC,wDAAA,QAAA,EAAA;;oDAC7BC,QAAUnB,EAAAA,eAAAA,CAAgB1C,MAAM,KAAK,CAAA;8DAEpCR,aAAc,CAAA;wDACbiC,EAAI,EAAA,gCAAA;wDACJoB,cAAgB,EAAA;AAClB,qDAAA;;;;uDAKNnD,GAACoE,CAAAA,oBAAAA,EAAAA;AACE,wCAAA,GAAGjD,KAAK;AACR,wCAAA,GAAGxB,iBAAiB;wCACrB0E,KAAOvC,EAAAA,OAAAA;wCACPjC,QAAUA,EAAAA,QAAAA;wCACVyB,KAAOA,EAAAA,KAAAA;AACPgD,wCAAAA,SAAAA,EAAWlD,CAAM,KAAA,CAAA;AACjBkC,wCAAAA,aAAAA,EAAe1D,aAAa4B,IAAI;wCAChC+C,eAAiBvB,EAAAA,eAAAA;wCACjBwB,QAAU,EAAA,IAAA;4CACR3E,QAAS,CAAA;gDACPgE,MAAQ,EAAA;AACNrC,oDAAAA,IAAAA,EAAML,MAAMK;AACd;AACF,6CAAA,CAAA;AACF;;AAxDCL,iCAAAA,EAAAA,KAAAA,CAAMK,IAAI,IAAIH,GAAAA,CAAAA;AA6DzB;;4BAGA,qBACErB,GAAA,CAACgB,KAAKmB,IAAI,EAAA;gCACRC,GAAKjB,EAAAA,KAAAA,CAAMkB,IAAI,IAAI,CAAA;gCACnBC,EAAI,EAAA,EAAA;gCAEJC,SAAU,EAAA,QAAA;gCACVC,UAAW,EAAA,SAAA;AAEX,gCAAA,QAAA,gBAAAxC,GAACoE,CAAAA,oBAAAA,EAAAA;AACE,oCAAA,GAAGjD,KAAK;AACR,oCAAA,GAAGxB,iBAAiB;oCACrB0E,KAAOvC,EAAAA,OAAAA;oCACPjC,QAAUA,EAAAA,QAAAA;oCACVyB,KAAOA,EAAAA,KAAAA;AACPgD,oCAAAA,SAAAA,EAAWlD,CAAM,KAAA;;AAVdD,6BAAAA,EAAAA,KAAAA,CAAMK,IAAI,IAAIH,GAAAA,CAAAA;AAczB,yBAAA;;;AAhLMjB,aAAAA,EAAAA,YAAAA,CAAAA;AAoLd,SAAA;;AAGN;;;;"}