@strapi/content-type-builder 5.31.3 → 5.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AIChat/Chat.js +3 -1
- package/dist/admin/components/AIChat/Chat.js.map +1 -1
- package/dist/admin/components/AIChat/Chat.mjs +4 -2
- package/dist/admin/components/AIChat/Chat.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFeedback.js +4 -1
- package/dist/admin/components/AIChat/hooks/useFeedback.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useFeedback.mjs +5 -2
- package/dist/admin/components/AIChat/hooks/useFeedback.mjs.map +1 -1
- package/dist/admin/components/AIChat/providers/ChatProvider.js +3 -2
- package/dist/admin/components/AIChat/providers/ChatProvider.js.map +1 -1
- package/dist/admin/components/AIChat/providers/ChatProvider.mjs +3 -2
- package/dist/admin/components/AIChat/providers/ChatProvider.mjs.map +1 -1
- package/dist/admin/components/CTBSession/CTBSessionProvider.js +49 -0
- package/dist/admin/components/CTBSession/CTBSessionProvider.js.map +1 -0
- package/dist/admin/components/CTBSession/CTBSessionProvider.mjs +46 -0
- package/dist/admin/components/CTBSession/CTBSessionProvider.mjs.map +1 -0
- package/dist/admin/components/CTBSession/sessionContext.js +8 -0
- package/dist/admin/components/CTBSession/sessionContext.js.map +1 -0
- package/dist/admin/components/CTBSession/sessionContext.mjs +6 -0
- package/dist/admin/components/CTBSession/sessionContext.mjs.map +1 -0
- package/dist/admin/components/CTBSession/useCTBSession.js +25 -0
- package/dist/admin/components/CTBSession/useCTBSession.js.map +1 -0
- package/dist/admin/components/CTBSession/useCTBSession.mjs +23 -0
- package/dist/admin/components/CTBSession/useCTBSession.mjs.map +1 -0
- package/dist/admin/components/CTBSession/useCTBTracking.js +37 -0
- package/dist/admin/components/CTBSession/useCTBTracking.js.map +1 -0
- package/dist/admin/components/CTBSession/useCTBTracking.mjs +35 -0
- package/dist/admin/components/CTBSession/useCTBTracking.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +4 -2
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +4 -2
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +40 -3
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +41 -4
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/FormModal/FormModal.js +3 -1
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +4 -2
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js +14 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.js.map +1 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs +14 -1
- package/dist/admin/components/FormModalNavigation/FormModalNavigationProvider.mjs.map +1 -1
- package/dist/admin/components/List.js +3 -1
- package/dist/admin/components/List.js.map +1 -1
- package/dist/admin/components/List.mjs +4 -2
- package/dist/admin/components/List.mjs.map +1 -1
- package/dist/admin/pages/App/index.js +40 -37
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs +40 -37
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/pages/ListView/ListView.js +10 -1
- package/dist/admin/pages/ListView/ListView.js.map +1 -1
- package/dist/admin/pages/ListView/ListView.mjs +11 -2
- package/dist/admin/pages/ListView/ListView.mjs.map +1 -1
- package/dist/admin/src/components/CTBSession/CTBSessionProvider.d.ts +26 -0
- package/dist/admin/src/components/CTBSession/ctbSession.d.ts +5 -0
- package/dist/admin/src/components/CTBSession/sessionContext.d.ts +25 -0
- package/dist/admin/src/components/CTBSession/useCTBSession.d.ts +12 -0
- package/dist/admin/src/components/CTBSession/useCTBTracking.d.ts +13 -0
- package/dist/admin/translations/ru.json.js +74 -30
- package/dist/admin/translations/ru.json.js.map +1 -1
- package/dist/admin/translations/ru.json.mjs +74 -30
- package/dist/admin/translations/ru.json.mjs.map +1 -1
- package/dist/server/controllers/content-types.js +6 -0
- package/dist/server/controllers/content-types.js.map +1 -1
- package/dist/server/controllers/content-types.mjs +6 -0
- package/dist/server/controllers/content-types.mjs.map +1 -1
- package/dist/server/controllers/validation/types.js +1 -1
- package/dist/server/controllers/validation/types.js.map +1 -1
- package/dist/server/controllers/validation/types.mjs +1 -1
- package/dist/server/controllers/validation/types.mjs.map +1 -1
- package/dist/server/src/controllers/content-types.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -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 } =
|
|
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 {
|
|
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 } =
|
|
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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"}
|
|
@@ -11,6 +11,7 @@ var aiClient = require('../../components/AIChat/lib/aiClient.js');
|
|
|
11
11
|
var ChatProvider = require('../../components/AIChat/providers/ChatProvider.js');
|
|
12
12
|
var AutoReloadOverlayBlocker = require('../../components/AutoReloadOverlayBlocker.js');
|
|
13
13
|
var ContentTypeBuilderNav = require('../../components/ContentTypeBuilderNav/ContentTypeBuilderNav.js');
|
|
14
|
+
var CTBSessionProvider = require('../../components/CTBSession/CTBSessionProvider.js');
|
|
14
15
|
var DataManagerProvider = require('../../components/DataManager/DataManagerProvider.js');
|
|
15
16
|
var ExitPrompt = require('../../components/ExitPrompt.js');
|
|
16
17
|
var FormModal = require('../../components/FormModal/FormModal.js');
|
|
@@ -61,45 +62,47 @@ const App = ()=>{
|
|
|
61
62
|
children: title
|
|
62
63
|
}),
|
|
63
64
|
/*#__PURE__*/ jsxRuntime.jsx(AutoReloadOverlayBlocker.AutoReloadOverlayBlockerProvider, {
|
|
64
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(
|
|
65
|
-
children: /*#__PURE__*/ jsxRuntime.
|
|
66
|
-
children:
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
children:
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
children:
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
65
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(CTBSessionProvider.CTBSessionProvider, {
|
|
66
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(FormModalNavigationProvider.FormModalNavigationProvider, {
|
|
67
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(DataManagerProvider, {
|
|
68
|
+
children: [
|
|
69
|
+
/*#__PURE__*/ jsxRuntime.jsx(ExitPrompt.ExitPrompt, {}),
|
|
70
|
+
/*#__PURE__*/ jsxRuntime.jsx(ChatProvider.ChatProvider, {
|
|
71
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
72
|
+
children: [
|
|
73
|
+
autoReload && /*#__PURE__*/ jsxRuntime.jsx(FormModal.FormModal, {}),
|
|
74
|
+
/*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Root, {
|
|
75
|
+
sideNav: /*#__PURE__*/ jsxRuntime.jsx(ContentTypeBuilderNav.ContentTypeBuilderNav, {}),
|
|
76
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(React.Suspense, {
|
|
77
|
+
fallback: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Page.Loading, {}),
|
|
78
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(reactRouterDom.Routes, {
|
|
79
|
+
children: [
|
|
80
|
+
/*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
|
|
81
|
+
path: "content-types/create-content-type",
|
|
82
|
+
element: /*#__PURE__*/ jsxRuntime.jsx(EmptyState.EmptyState, {})
|
|
83
|
+
}),
|
|
84
|
+
/*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
|
|
85
|
+
path: "content-types/:contentTypeUid",
|
|
86
|
+
element: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
|
|
87
|
+
}),
|
|
88
|
+
/*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
|
|
89
|
+
path: `component-categories/:categoryUid/:componentUid`,
|
|
90
|
+
element: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
|
|
91
|
+
}),
|
|
92
|
+
/*#__PURE__*/ jsxRuntime.jsx(reactRouterDom.Route, {
|
|
93
|
+
path: "*",
|
|
94
|
+
element: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
|
|
95
|
+
})
|
|
96
|
+
]
|
|
97
|
+
})
|
|
95
98
|
})
|
|
96
|
-
})
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
99
|
+
}),
|
|
100
|
+
/*#__PURE__*/ jsxRuntime.jsx(Chat.Chat, {})
|
|
101
|
+
]
|
|
102
|
+
})
|
|
100
103
|
})
|
|
101
|
-
|
|
102
|
-
|
|
104
|
+
]
|
|
105
|
+
})
|
|
103
106
|
})
|
|
104
107
|
})
|
|
105
108
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, Layouts, useAppInfo, useGuidedTour } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport { prefetchAIToken } from '../../components/AIChat/lib/aiClient';\nimport { ChatProvider } from '../../components/AIChat/providers/ChatProvider';\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const isAIEnabled = useAIAvailability();\n const state = useGuidedTour('ContentTypeBuilderApp', (s) => s.state);\n const dispatch = useGuidedTour('ContentTypeBuilderApp', (s) => s.dispatch);\n\n // Prefetch AI token on initial load\n useEffect(() => {\n prefetchAIToken();\n }, []);\n\n // Set tour type based on AI availability when the app loads\n useEffect(() => {\n const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';\n const currentTourType = state.tours.contentTypeBuilder.tourType;\n\n if (currentTourType !== tourType) {\n dispatch({\n type: 'set_tour_type',\n payload: { tourName: 'contentTypeBuilder', tourType },\n });\n }\n }, [isAIEnabled, state.tours.contentTypeBuilder.tourType, dispatch]);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, Layouts, useAppInfo, useGuidedTour } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport { prefetchAIToken } from '../../components/AIChat/lib/aiClient';\nimport { ChatProvider } from '../../components/AIChat/providers/ChatProvider';\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport { CTBSessionProvider } from '../../components/CTBSession/CTBSessionProvider';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const isAIEnabled = useAIAvailability();\n const state = useGuidedTour('ContentTypeBuilderApp', (s) => s.state);\n const dispatch = useGuidedTour('ContentTypeBuilderApp', (s) => s.dispatch);\n\n // Prefetch AI token on initial load\n useEffect(() => {\n prefetchAIToken();\n }, []);\n\n // Set tour type based on AI availability when the app loads\n useEffect(() => {\n const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';\n const currentTourType = state.tours.contentTypeBuilder.tourType;\n\n if (currentTourType !== tourType) {\n dispatch({\n type: 'set_tour_type',\n payload: { tourName: 'contentTypeBuilder', tourType },\n });\n }\n }, [isAIEnabled, state.tours.contentTypeBuilder.tourType, dispatch]);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <CTBSessionProvider>\n <FormModalNavigationProvider>\n <DataManagerProvider>\n <ExitPrompt />\n <ChatProvider>\n <>\n {autoReload && <FormModal />}\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/create-content-type\" element={<EmptyState />} />\n <Route path=\"content-types/:contentTypeUid\" element={<ListView />} />\n <Route\n path={`component-categories/:categoryUid/:componentUid`}\n element={<ListView />}\n />\n <Route path=\"*\" element={<ListView />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n <Chat />\n </>\n </ChatProvider>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </CTBSessionProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["ListView","lazy","App","formatMessage","useIntl","title","id","pluginId","defaultMessage","autoReload","useAppInfo","state","isAIEnabled","useAIAvailability","useGuidedTour","s","dispatch","useEffect","prefetchAIToken","tourType","currentTourType","tours","contentTypeBuilder","type","payload","tourName","_jsxs","Page","Protect","permissions","PERMISSIONS","main","_jsx","Title","AutoReloadOverlayBlockerProvider","CTBSessionProvider","FormModalNavigationProvider","DataManagerProvider","ExitPrompt","ChatProvider","_Fragment","FormModal","Layouts","Root","sideNav","ContentTypeBuilderNav","Suspense","fallback","Loading","Routes","Route","path","element","EmptyState","Chat"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ import { prefetchAIToken } from '../../components/AIChat/lib/aiClient.mjs';
|
|
|
9
9
|
import { ChatProvider } from '../../components/AIChat/providers/ChatProvider.mjs';
|
|
10
10
|
import { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker.mjs';
|
|
11
11
|
import { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs';
|
|
12
|
+
import { CTBSessionProvider } from '../../components/CTBSession/CTBSessionProvider.mjs';
|
|
12
13
|
import DataManagerProvider from '../../components/DataManager/DataManagerProvider.mjs';
|
|
13
14
|
import { ExitPrompt } from '../../components/ExitPrompt.mjs';
|
|
14
15
|
import { FormModal } from '../../components/FormModal/FormModal.mjs';
|
|
@@ -57,45 +58,47 @@ const App = ()=>{
|
|
|
57
58
|
children: title
|
|
58
59
|
}),
|
|
59
60
|
/*#__PURE__*/ jsx(AutoReloadOverlayBlockerProvider, {
|
|
60
|
-
children: /*#__PURE__*/ jsx(
|
|
61
|
-
children: /*#__PURE__*/
|
|
62
|
-
children:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
children:
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
children:
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
61
|
+
children: /*#__PURE__*/ jsx(CTBSessionProvider, {
|
|
62
|
+
children: /*#__PURE__*/ jsx(FormModalNavigationProvider, {
|
|
63
|
+
children: /*#__PURE__*/ jsxs(DataManagerProvider, {
|
|
64
|
+
children: [
|
|
65
|
+
/*#__PURE__*/ jsx(ExitPrompt, {}),
|
|
66
|
+
/*#__PURE__*/ jsx(ChatProvider, {
|
|
67
|
+
children: /*#__PURE__*/ jsxs(Fragment, {
|
|
68
|
+
children: [
|
|
69
|
+
autoReload && /*#__PURE__*/ jsx(FormModal, {}),
|
|
70
|
+
/*#__PURE__*/ jsx(Layouts.Root, {
|
|
71
|
+
sideNav: /*#__PURE__*/ jsx(ContentTypeBuilderNav, {}),
|
|
72
|
+
children: /*#__PURE__*/ jsx(Suspense, {
|
|
73
|
+
fallback: /*#__PURE__*/ jsx(Page.Loading, {}),
|
|
74
|
+
children: /*#__PURE__*/ jsxs(Routes, {
|
|
75
|
+
children: [
|
|
76
|
+
/*#__PURE__*/ jsx(Route, {
|
|
77
|
+
path: "content-types/create-content-type",
|
|
78
|
+
element: /*#__PURE__*/ jsx(EmptyState, {})
|
|
79
|
+
}),
|
|
80
|
+
/*#__PURE__*/ jsx(Route, {
|
|
81
|
+
path: "content-types/:contentTypeUid",
|
|
82
|
+
element: /*#__PURE__*/ jsx(ListView, {})
|
|
83
|
+
}),
|
|
84
|
+
/*#__PURE__*/ jsx(Route, {
|
|
85
|
+
path: `component-categories/:categoryUid/:componentUid`,
|
|
86
|
+
element: /*#__PURE__*/ jsx(ListView, {})
|
|
87
|
+
}),
|
|
88
|
+
/*#__PURE__*/ jsx(Route, {
|
|
89
|
+
path: "*",
|
|
90
|
+
element: /*#__PURE__*/ jsx(ListView, {})
|
|
91
|
+
})
|
|
92
|
+
]
|
|
93
|
+
})
|
|
91
94
|
})
|
|
92
|
-
})
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
}),
|
|
96
|
+
/*#__PURE__*/ jsx(Chat, {})
|
|
97
|
+
]
|
|
98
|
+
})
|
|
96
99
|
})
|
|
97
|
-
|
|
98
|
-
|
|
100
|
+
]
|
|
101
|
+
})
|
|
99
102
|
})
|
|
100
103
|
})
|
|
101
104
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, Layouts, useAppInfo, useGuidedTour } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport { prefetchAIToken } from '../../components/AIChat/lib/aiClient';\nimport { ChatProvider } from '../../components/AIChat/providers/ChatProvider';\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const isAIEnabled = useAIAvailability();\n const state = useGuidedTour('ContentTypeBuilderApp', (s) => s.state);\n const dispatch = useGuidedTour('ContentTypeBuilderApp', (s) => s.dispatch);\n\n // Prefetch AI token on initial load\n useEffect(() => {\n prefetchAIToken();\n }, []);\n\n // Set tour type based on AI availability when the app loads\n useEffect(() => {\n const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';\n const currentTourType = state.tours.contentTypeBuilder.tourType;\n\n if (currentTourType !== tourType) {\n dispatch({\n type: 'set_tour_type',\n payload: { tourName: 'contentTypeBuilder', tourType },\n });\n }\n }, [isAIEnabled, state.tours.contentTypeBuilder.tourType, dispatch]);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../admin/src/pages/App/index.tsx"],"sourcesContent":["/* eslint-disable import/no-default-export */\n/* eslint-disable check-file/filename-naming-convention */\n/* eslint-disable check-file/no-index */\nimport { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, Layouts, useAppInfo, useGuidedTour } from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { Chat } from '../../components/AIChat/Chat';\nimport { prefetchAIToken } from '../../components/AIChat/lib/aiClient';\nimport { ChatProvider } from '../../components/AIChat/providers/ChatProvider';\nimport { AutoReloadOverlayBlockerProvider } from '../../components/AutoReloadOverlayBlocker';\nimport { ContentTypeBuilderNav } from '../../components/ContentTypeBuilderNav/ContentTypeBuilderNav';\nimport { CTBSessionProvider } from '../../components/CTBSession/CTBSessionProvider';\nimport DataManagerProvider from '../../components/DataManager/DataManagerProvider';\nimport { ExitPrompt } from '../../components/ExitPrompt';\nimport { FormModal } from '../../components/FormModal/FormModal';\nimport { FormModalNavigationProvider } from '../../components/FormModalNavigation/FormModalNavigationProvider';\nimport { PERMISSIONS } from '../../constants';\nimport { pluginId } from '../../pluginId';\nimport { EmptyState } from '../ListView/EmptyState';\n\nconst ListView = lazy(() => import('../ListView/ListView'));\n\nconst App = () => {\n const { formatMessage } = useIntl();\n const title = formatMessage({\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Content Types Builder',\n });\n\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const isAIEnabled = useAIAvailability();\n const state = useGuidedTour('ContentTypeBuilderApp', (s) => s.state);\n const dispatch = useGuidedTour('ContentTypeBuilderApp', (s) => s.dispatch);\n\n // Prefetch AI token on initial load\n useEffect(() => {\n prefetchAIToken();\n }, []);\n\n // Set tour type based on AI availability when the app loads\n useEffect(() => {\n const tourType = isAIEnabled ? 'ContentTypeBuilderAI' : 'ContentTypeBuilderNoAI';\n const currentTourType = state.tours.contentTypeBuilder.tourType;\n\n if (currentTourType !== tourType) {\n dispatch({\n type: 'set_tour_type',\n payload: { tourName: 'contentTypeBuilder', tourType },\n });\n }\n }, [isAIEnabled, state.tours.contentTypeBuilder.tourType, dispatch]);\n\n return (\n <Page.Protect permissions={PERMISSIONS.main}>\n <Page.Title>{title}</Page.Title>\n <AutoReloadOverlayBlockerProvider>\n <CTBSessionProvider>\n <FormModalNavigationProvider>\n <DataManagerProvider>\n <ExitPrompt />\n <ChatProvider>\n <>\n {autoReload && <FormModal />}\n <Layouts.Root sideNav={<ContentTypeBuilderNav />}>\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route path=\"content-types/create-content-type\" element={<EmptyState />} />\n <Route path=\"content-types/:contentTypeUid\" element={<ListView />} />\n <Route\n path={`component-categories/:categoryUid/:componentUid`}\n element={<ListView />}\n />\n <Route path=\"*\" element={<ListView />} />\n </Routes>\n </Suspense>\n </Layouts.Root>\n <Chat />\n </>\n </ChatProvider>\n </DataManagerProvider>\n </FormModalNavigationProvider>\n </CTBSessionProvider>\n </AutoReloadOverlayBlockerProvider>\n </Page.Protect>\n );\n};\n\nexport default App;\n"],"names":["ListView","lazy","App","formatMessage","useIntl","title","id","pluginId","defaultMessage","autoReload","useAppInfo","state","isAIEnabled","useAIAvailability","useGuidedTour","s","dispatch","useEffect","prefetchAIToken","tourType","currentTourType","tours","contentTypeBuilder","type","payload","tourName","_jsxs","Page","Protect","permissions","PERMISSIONS","main","_jsx","Title","AutoReloadOverlayBlockerProvider","CTBSessionProvider","FormModalNavigationProvider","DataManagerProvider","ExitPrompt","ChatProvider","_Fragment","FormModal","Layouts","Root","sideNav","ContentTypeBuilderNav","Suspense","fallback","Loading","Routes","Route","path","element","EmptyState","Chat"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwBA,MAAMA,QAAWC,iBAAAA,IAAAA,CAAK,IAAM,OAAO,0BAAA,CAAA,CAAA;AAEnC,MAAMC,GAAM,GAAA,IAAA;IACV,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQF,aAAc,CAAA;QAC1BG,EAAI,EAAA,CAAA,EAAGC,QAAS,CAAA,YAAY,CAAC;QAC7BC,cAAgB,EAAA;AAClB,KAAA,CAAA;AAEA,IAAA,MAAMC,aAAaC,UAAW,CAAA,qBAAA,EAAuB,CAACC,KAAAA,GAAUA,MAAMF,UAAU,CAAA;AAChF,IAAA,MAAMG,WAAcC,GAAAA,iBAAAA,EAAAA;AACpB,IAAA,MAAMF,QAAQG,aAAc,CAAA,uBAAA,EAAyB,CAACC,CAAAA,GAAMA,EAAEJ,KAAK,CAAA;AACnE,IAAA,MAAMK,WAAWF,aAAc,CAAA,uBAAA,EAAyB,CAACC,CAAAA,GAAMA,EAAEC,QAAQ,CAAA;;IAGzEC,SAAU,CAAA,IAAA;AACRC,QAAAA,eAAAA,EAAAA;AACF,KAAA,EAAG,EAAE,CAAA;;IAGLD,SAAU,CAAA,IAAA;QACR,MAAME,QAAAA,GAAWP,cAAc,sBAAyB,GAAA,wBAAA;AACxD,QAAA,MAAMQ,kBAAkBT,KAAMU,CAAAA,KAAK,CAACC,kBAAkB,CAACH,QAAQ;AAE/D,QAAA,IAAIC,oBAAoBD,QAAU,EAAA;YAChCH,QAAS,CAAA;gBACPO,IAAM,EAAA,eAAA;gBACNC,OAAS,EAAA;oBAAEC,QAAU,EAAA,oBAAA;AAAsBN,oBAAAA;AAAS;AACtD,aAAA,CAAA;AACF;KACC,EAAA;AAACP,QAAAA,WAAAA;AAAaD,QAAAA,KAAAA,CAAMU,KAAK,CAACC,kBAAkB,CAACH,QAAQ;AAAEH,QAAAA;AAAS,KAAA,CAAA;IAEnE,qBACEU,IAAA,CAACC,KAAKC,OAAO,EAAA;AAACC,QAAAA,WAAAA,EAAaC,YAAYC,IAAI;;AACzC,0BAAAC,GAAA,CAACL,KAAKM,KAAK,EAAA;AAAE5B,gBAAAA,QAAAA,EAAAA;;0BACb2B,GAACE,CAAAA,gCAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAF,GAACG,CAAAA,kBAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAH,GAACI,CAAAA,2BAAAA,EAAAA;AACC,wBAAA,QAAA,gBAAAV,IAACW,CAAAA,mBAAAA,EAAAA;;8CACCL,GAACM,CAAAA,UAAAA,EAAAA,EAAAA,CAAAA;8CACDN,GAACO,CAAAA,YAAAA,EAAAA;4DACCb,IAAA,CAAAc,QAAA,EAAA;;AACG/B,4CAAAA,UAAAA,kBAAcuB,GAACS,CAAAA,SAAAA,EAAAA,EAAAA,CAAAA;AAChB,0DAAAT,GAAA,CAACU,QAAQC,IAAI,EAAA;AAACC,gDAAAA,OAAAA,gBAASZ,GAACa,CAAAA,qBAAAA,EAAAA,EAAAA,CAAAA;AACtB,gDAAA,QAAA,gBAAAb,GAACc,CAAAA,QAAAA,EAAAA;oDAASC,QAAU,gBAAAf,GAAA,CAACL,KAAKqB,OAAO,EAAA,EAAA,CAAA;AAC/B,oDAAA,QAAA,gBAAAtB,IAACuB,CAAAA,MAAAA,EAAAA;;0EACCjB,GAACkB,CAAAA,KAAAA,EAAAA;gEAAMC,IAAK,EAAA,mCAAA;AAAoCC,gEAAAA,OAAAA,gBAASpB,GAACqB,CAAAA,UAAAA,EAAAA,EAAAA;;0EAC1DrB,GAACkB,CAAAA,KAAAA,EAAAA;gEAAMC,IAAK,EAAA,+BAAA;AAAgCC,gEAAAA,OAAAA,gBAASpB,GAAChC,CAAAA,QAAAA,EAAAA,EAAAA;;0EACtDgC,GAACkB,CAAAA,KAAAA,EAAAA;gEACCC,IAAM,EAAA,CAAC,+CAA+C,CAAC;AACvDC,gEAAAA,OAAAA,gBAASpB,GAAChC,CAAAA,QAAAA,EAAAA,EAAAA;;0EAEZgC,GAACkB,CAAAA,KAAAA,EAAAA;gEAAMC,IAAK,EAAA,GAAA;AAAIC,gEAAAA,OAAAA,gBAASpB,GAAChC,CAAAA,QAAAA,EAAAA,EAAAA;;;;;;0DAIhCgC,GAACsB,CAAAA,IAAAA,EAAAA,EAAAA;;;;;;;;;;;AASnB;;;;"}
|