@strapi/content-type-builder 5.45.0 → 5.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -43,6 +43,20 @@ function _interopNamespaceDefault(e) {
43
43
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
44
44
 
45
45
  const selectState = (state)=>state['content-type-builder_dataManagerProvider'] || reducer.initialState;
46
+ /**
47
+ * Tag types registered on the shared `adminApi` instance at runtime by
48
+ * `@strapi/content-manager` via `enhanceEndpoints({ addTagTypes: [...] })`
49
+ * (see packages/core/content-manager/admin/src/services/api.ts).
50
+ *
51
+ * The cast is only required because adminApi's compile-time tag union doesn't see
52
+ * tags added downstream from this side of the dependency graph.
53
+ */ const CONTENT_MANAGER_SCHEMA_CACHE_TAGS = [
54
+ 'InitialData',
55
+ 'ContentTypesConfiguration',
56
+ 'ContentTypeSettings',
57
+ 'ComponentConfiguration'
58
+ ];
59
+ const invalidateContentManagerSchemaCaches = ()=>strapiAdmin.adminApi.util.invalidateTags(CONTENT_MANAGER_SCHEMA_CACHE_TAGS);
46
60
  const DataManagerProvider = ({ children })=>{
47
61
  const dispatch = reactRedux.useDispatch();
48
62
  const state = reactRedux.useSelector(selectState);
@@ -72,7 +86,7 @@ const DataManagerProvider = ({ children })=>{
72
86
  ]);
73
87
  const fetchClient = strapiAdmin.useFetchClient();
74
88
  const isInDevelopmentMode = autoReload;
75
- const getDataRef = React__namespace.useRef();
89
+ const getDataRef = React__namespace.useRef(async ()=>undefined);
76
90
  getDataRef.current = async ()=>{
77
91
  try {
78
92
  const [schemaResponse, reservedNamesResponse] = await Promise.all([
@@ -191,6 +205,8 @@ const DataManagerProvider = ({ children })=>{
191
205
  await getDataRef.current();
192
206
  // Update the app's permissions
193
207
  await updatePermissions();
208
+ // Refresh content-manager caches that depend on the CT/component schema.
209
+ dispatch(invalidateContentManagerSchemaCaches());
194
210
  } catch (err) {
195
211
  console.error({
196
212
  err
@@ -1 +1 @@
1
- {"version":3,"file":"DataManagerProvider.js","sources":["../../../../admin/src/components/DataManager/DataManagerProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useNotification,\n useAppInfo,\n useFetchClient,\n useAuth,\n adminApi,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n} from '@strapi/admin/strapi-admin';\nimport groupBy from 'lodash/groupBy';\nimport isEqual from 'lodash/isEqual';\nimport mapValues from 'lodash/mapValues';\nimport { useIntl } from 'react-intl';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\n\nimport { getTrad } from '../../utils/getTrad';\nimport { useAutoReloadOverlayBlocker } from '../AutoReloadOverlayBlocker';\nimport { useCTBTracking } from '../CTBSession/ctbSession';\nimport { useCTBSession } from '../CTBSession/useCTBSession';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport { DataManagerContext, type DataManagerContextValue } from './DataManagerContext';\nimport { actions, initialState, type State } from './reducer';\nimport { useServerRestartWatcher } from './useServerRestartWatcher';\nimport { sortContentType, stateToRequestData } from './utils/cleanData';\nimport { retrieveComponentsThatHaveComponents } from './utils/retrieveComponentsThatHaveComponents';\nimport { retrieveNestedComponents } from './utils/retrieveNestedComponents';\nimport { retrieveSpecificInfoFromComponents } from './utils/retrieveSpecificInfoFromComponents';\n\nimport type { ContentTypes, ContentType, Components } from '../../types';\nimport type { FormAPI } from '../../utils/formAPI';\nimport type { Internal } from '@strapi/types';\n\ninterface DataManagerProviderProps {\n children: React.ReactNode;\n}\n\nconst selectState = (state: Record<string, unknown>) =>\n (state['content-type-builder_dataManagerProvider'] || initialState) as State;\n\nconst DataManagerProvider = ({ children }: DataManagerProviderProps) => {\n const dispatch = useDispatch();\n const state = useSelector(selectState);\n const dispatchGuidedTour = useGuidedTour('DataManagerProvider', (s) => s.dispatch);\n const location = useLocation();\n const { sessionId: ctbSessionId, regenerateSessionId } = useCTBSession();\n\n const {\n components,\n contentTypes,\n reservedNames,\n initialComponents,\n initialContentTypes,\n isLoading,\n } = state.current;\n\n const { toggleNotification } = useNotification();\n const { lockAppWithAutoreload, unlockAppWithAutoreload } = useAutoReloadOverlayBlocker();\n const serverRestartWatcher = useServerRestartWatcher();\n\n const getPlugin = useStrapiApp('DataManagerProvider', (state) => state.getPlugin);\n const plugin = getPlugin('content-type-builder');\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const { formatMessage } = useIntl();\n const { trackUsage } = useCTBTracking();\n const refetchPermissions = useAuth('DataManagerProvider', (state) => state.refetchPermissions);\n const { onCloseModal } = useFormModalNavigation();\n\n const [isSaving, setIsSaving] = React.useState(false);\n const previousLocationRef = React.useRef<string | null>(null);\n\n const isModified = React.useMemo(() => {\n return !(isEqual(components, initialComponents) && isEqual(contentTypes, initialContentTypes));\n }, [components, contentTypes, initialComponents, initialContentTypes]);\n\n const fetchClient = useFetchClient();\n\n const isInDevelopmentMode = autoReload;\n\n const getDataRef = React.useRef<any>();\n\n getDataRef.current = async () => {\n try {\n const [schemaResponse, reservedNamesResponse] = await Promise.all([\n fetchClient.get(`/content-type-builder/schema`),\n fetchClient.get(`/content-type-builder/reserved-names`),\n ]);\n\n const { components, contentTypes } = schemaResponse.data.data;\n\n dispatch(\n actions.init({\n components: mapValues(components, (component) => ({\n ...component,\n status: 'UNCHANGED',\n })) as Components,\n contentTypes: mapValues(contentTypes, (contentType) => ({\n ...contentType,\n status: 'UNCHANGED',\n })) as ContentTypes,\n reservedNames: reservedNamesResponse.data,\n })\n );\n\n dispatch(actions.clearHistory());\n } catch (err) {\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n React.useEffect(() => {\n getDataRef.current();\n previousLocationRef.current = location.pathname;\n\n return () => {\n // Reload the plugin so the cycle is new again\n dispatch(actions.reloadPlugin());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Detect navigation away and back to CTB to regenerate session\n React.useEffect(() => {\n const currentPath = location.pathname;\n const previousPath = previousLocationRef.current;\n const CTB_PATH = '/plugins/content-type-builder';\n\n if (previousPath) {\n const isCTBPath = currentPath.includes(CTB_PATH);\n const wasCTBPath = previousPath.includes(CTB_PATH);\n\n // Regenerate session when returning to CTB after navigating away\n if (!wasCTBPath && isCTBPath) {\n regenerateSessionId();\n }\n }\n\n previousLocationRef.current = currentPath;\n }, [location.pathname, regenerateSessionId]);\n\n React.useEffect(() => {\n if (!autoReload) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: getTrad('notification.info.autoreaload-disable') }),\n });\n }\n }, [autoReload, toggleNotification, formatMessage]);\n\n const getAllComponentsThatHaveAComponentInTheirAttributes = (components: Components) => {\n const composWithCompos = retrieveComponentsThatHaveComponents(components);\n\n return composWithCompos;\n };\n\n const getAllNestedComponents = (components: Components) => {\n const appNestedCompo = retrieveNestedComponents(components);\n\n return appNestedCompo;\n };\n\n const updatePermissions = async () => {\n await refetchPermissions();\n };\n\n const saveSchema = async () => {\n setIsSaving(true);\n\n const PluginForms = plugin?.apis?.forms as FormAPI;\n\n const mutatedCTs = Object.entries(state.current.contentTypes).reduce(\n (acc, [uid, contentType]) => {\n acc[uid] = PluginForms.mutateContentTypeSchema(\n contentType,\n initialContentTypes[uid]\n ) as ContentType;\n\n return acc;\n },\n {} as ContentTypes\n );\n\n const { requestData, trackingEventProperties } = stateToRequestData({\n components: state.current.components,\n contentTypes: mutatedCTs,\n });\n\n // Track that the save button was clicked (includes session ID via useCTBTracking)\n trackUsage('willUpdateCTBSchema', {\n ...trackingEventProperties,\n ctbSessionId,\n });\n\n const isSendingContentTypes = Object.keys(state.current.contentTypes).length > 0;\n\n lockAppWithAutoreload();\n\n try {\n await fetchClient.post(`/content-type-builder/update-schema`, { data: requestData });\n\n if (isSendingContentTypes) {\n // Note: didCreateGuidedTourCollectionType doesn't accept properties\n trackUsage('didCreateGuidedTourCollectionType');\n }\n\n // Make sure the server has restarted\n await serverRestartWatcher();\n // Generate new session ID after server restart\n regenerateSessionId();\n // refetch and update initial state after the data has been saved\n await getDataRef.current();\n // Update the app's permissions\n await updatePermissions();\n } catch (err) {\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n trackUsage('didUpdateCTBSchema', {\n ...trackingEventProperties,\n success: false,\n ctbSessionId,\n });\n } finally {\n setIsSaving(false);\n unlockAppWithAutoreload();\n\n dispatch(adminApi.util.invalidateTags(['GuidedTourMeta', 'HomepageKeyStatistics']));\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n\n trackUsage('didUpdateCTBSchema', {\n ...trackingEventProperties,\n success: true,\n ctbSessionId,\n });\n }\n };\n\n const componentsThatHaveOtherComponentInTheirAttributes = React.useMemo(() => {\n return getAllComponentsThatHaveAComponentInTheirAttributes(components);\n }, [components]);\n\n const nestedComponents = React.useMemo(() => {\n return getAllNestedComponents(components);\n }, [components]);\n\n const allComponentsCategories = React.useMemo(() => {\n return retrieveSpecificInfoFromComponents(components, ['category']);\n }, [components]);\n\n const componentsGroupedByCategory = React.useMemo(() => {\n return groupBy(components, 'category');\n }, [components]);\n\n const sortedContentTypesList = React.useMemo(() => {\n return sortContentType(contentTypes);\n }, [contentTypes]);\n\n const context: DataManagerContextValue = {\n componentsThatHaveOtherComponentInTheirAttributes,\n nestedComponents,\n saveSchema,\n reservedNames,\n components,\n contentTypes,\n initialComponents,\n initialContentTypes,\n isSaving,\n isModified,\n isInDevelopmentMode,\n allComponentsCategories,\n componentsGroupedByCategory,\n sortedContentTypesList,\n isLoading,\n addAttribute(payload) {\n dispatch(actions.addAttribute(payload));\n },\n editAttribute(payload) {\n dispatch(actions.editAttribute(payload));\n },\n addCustomFieldAttribute(payload) {\n dispatch(actions.addCustomFieldAttribute(payload));\n },\n editCustomFieldAttribute(payload) {\n dispatch(actions.editCustomFieldAttribute(payload));\n },\n addCreatedComponentToDynamicZone(payload) {\n dispatch(actions.addCreatedComponentToDynamicZone(payload));\n },\n createSchema(payload) {\n dispatch(actions.createSchema(payload));\n },\n createComponentSchema({ data, uid, componentCategory }) {\n dispatch(actions.createComponentSchema({ data, uid, componentCategory }));\n },\n changeDynamicZoneComponents({ forTarget, targetUid, dynamicZoneTarget, newComponents }) {\n dispatch(\n actions.changeDynamicZoneComponents({\n forTarget,\n targetUid,\n dynamicZoneTarget,\n newComponents,\n })\n );\n },\n removeAttribute(payload) {\n if (payload.forTarget === 'contentType') {\n // Note: willDeleteFieldOfContentType doesn't accept properties\n trackUsage('willDeleteFieldOfContentType');\n }\n\n dispatch(actions.removeField(payload));\n },\n removeComponentFromDynamicZone(payload) {\n dispatch(actions.removeComponentFromDynamicZone(payload));\n },\n deleteComponent(uid: Internal.UID.Component) {\n const userConfirm = window.confirm(\n formatMessage({\n id: getTrad(`popUpWarning.bodyMessage.component.delete`),\n })\n );\n\n if (userConfirm) {\n onCloseModal();\n\n dispatch(actions.deleteComponent(uid));\n }\n },\n deleteContentType(uid: Internal.UID.ContentType) {\n const userConfirm = window.confirm(\n formatMessage({\n id: getTrad(`popUpWarning.bodyMessage.contentType.delete`),\n })\n );\n\n if (userConfirm) {\n onCloseModal();\n\n dispatch(actions.deleteContentType(uid));\n }\n },\n\n updateComponentSchema({ data, componentUID }) {\n dispatch(\n actions.updateComponentSchema({\n data,\n uid: componentUID,\n })\n );\n },\n\n updateComponentUid({ componentUID, newComponentUID }) {\n dispatch(\n actions.updateComponentUid({\n uid: componentUID,\n newComponentUID,\n })\n );\n },\n\n updateSchema(args) {\n dispatch(actions.updateSchema(args));\n },\n\n moveAttribute(args) {\n dispatch(actions.moveAttribute(args));\n },\n\n applyChange(args) {\n dispatch(actions.applyChange(args));\n },\n\n history: {\n undo() {\n dispatch(actions.undo());\n },\n\n redo() {\n dispatch(actions.redo());\n },\n\n discardAllChanges() {\n dispatch(actions.discardAll());\n },\n\n canUndo: state.past.length > 0,\n canRedo: state.future.length > 0,\n canDiscardAll: isModified,\n },\n };\n\n return <DataManagerContext.Provider value={context}>{children}</DataManagerContext.Provider>;\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default DataManagerProvider;\n"],"names":["selectState","state","initialState","DataManagerProvider","children","dispatch","useDispatch","useSelector","dispatchGuidedTour","useGuidedTour","s","location","useLocation","sessionId","ctbSessionId","regenerateSessionId","useCTBSession","components","contentTypes","reservedNames","initialComponents","initialContentTypes","isLoading","current","toggleNotification","useNotification","lockAppWithAutoreload","unlockAppWithAutoreload","useAutoReloadOverlayBlocker","serverRestartWatcher","useServerRestartWatcher","getPlugin","useStrapiApp","plugin","autoReload","useAppInfo","formatMessage","useIntl","trackUsage","useCTBTracking","refetchPermissions","useAuth","onCloseModal","useFormModalNavigation","isSaving","setIsSaving","React","useState","previousLocationRef","useRef","isModified","useMemo","isEqual","fetchClient","useFetchClient","isInDevelopmentMode","getDataRef","schemaResponse","reservedNamesResponse","Promise","all","get","data","actions","init","mapValues","component","status","contentType","clearHistory","err","console","error","type","message","id","defaultMessage","useEffect","pathname","reloadPlugin","currentPath","previousPath","CTB_PATH","isCTBPath","includes","wasCTBPath","getTrad","getAllComponentsThatHaveAComponentInTheirAttributes","composWithCompos","retrieveComponentsThatHaveComponents","getAllNestedComponents","appNestedCompo","retrieveNestedComponents","updatePermissions","saveSchema","PluginForms","apis","forms","mutatedCTs","Object","entries","reduce","acc","uid","mutateContentTypeSchema","requestData","trackingEventProperties","stateToRequestData","isSendingContentTypes","keys","length","post","success","adminApi","util","invalidateTags","payload","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","componentsThatHaveOtherComponentInTheirAttributes","nestedComponents","allComponentsCategories","retrieveSpecificInfoFromComponents","componentsGroupedByCategory","groupBy","sortedContentTypesList","sortContentType","context","addAttribute","editAttribute","addCustomFieldAttribute","editCustomFieldAttribute","addCreatedComponentToDynamicZone","createComponentSchema","componentCategory","changeDynamicZoneComponents","forTarget","targetUid","dynamicZoneTarget","newComponents","removeAttribute","removeField","removeComponentFromDynamicZone","deleteComponent","userConfirm","window","confirm","deleteContentType","updateComponentSchema","componentUID","updateComponentUid","newComponentUID","updateSchema","args","moveAttribute","applyChange","history","undo","redo","discardAllChanges","discardAll","canUndo","past","canRedo","future","canDiscardAll","_jsx","DataManagerContext","Provider","value"],"mappings":"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"}
1
+ {"version":3,"file":"DataManagerProvider.js","sources":["../../../../admin/src/components/DataManager/DataManagerProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useNotification,\n useAppInfo,\n useFetchClient,\n useAuth,\n adminApi,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n} from '@strapi/admin/strapi-admin';\nimport groupBy from 'lodash/groupBy';\nimport isEqual from 'lodash/isEqual';\nimport mapValues from 'lodash/mapValues';\nimport { useIntl } from 'react-intl';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\n\nimport { getTrad } from '../../utils/getTrad';\nimport { useAutoReloadOverlayBlocker } from '../AutoReloadOverlayBlocker';\nimport { useCTBTracking } from '../CTBSession/ctbSession';\nimport { useCTBSession } from '../CTBSession/useCTBSession';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport { DataManagerContext, type DataManagerContextValue } from './DataManagerContext';\nimport { actions, initialState, type State } from './reducer';\nimport { useServerRestartWatcher } from './useServerRestartWatcher';\nimport { sortContentType, stateToRequestData } from './utils/cleanData';\nimport { retrieveComponentsThatHaveComponents } from './utils/retrieveComponentsThatHaveComponents';\nimport { retrieveNestedComponents } from './utils/retrieveNestedComponents';\nimport { retrieveSpecificInfoFromComponents } from './utils/retrieveSpecificInfoFromComponents';\n\nimport type { ContentTypes, ContentType, Components } from '../../types';\nimport type { FormAPI } from '../../utils/formAPI';\nimport type { Internal } from '@strapi/types';\n\ninterface DataManagerProviderProps {\n children: React.ReactNode;\n}\n\nconst selectState = (state: Record<string, unknown>) =>\n (state['content-type-builder_dataManagerProvider'] || initialState) as State;\n\n/**\n * Tag types registered on the shared `adminApi` instance at runtime by\n * `@strapi/content-manager` via `enhanceEndpoints({ addTagTypes: [...] })`\n * (see packages/core/content-manager/admin/src/services/api.ts).\n *\n * The cast is only required because adminApi's compile-time tag union doesn't see\n * tags added downstream from this side of the dependency graph.\n */\nconst CONTENT_MANAGER_SCHEMA_CACHE_TAGS = [\n 'InitialData',\n 'ContentTypesConfiguration',\n 'ContentTypeSettings',\n 'ComponentConfiguration',\n] as const;\n\nconst invalidateContentManagerSchemaCaches = () =>\n adminApi.util.invalidateTags(CONTENT_MANAGER_SCHEMA_CACHE_TAGS as never);\n\nconst DataManagerProvider = ({ children }: DataManagerProviderProps) => {\n const dispatch = useDispatch();\n const state = useSelector(selectState);\n const dispatchGuidedTour = useGuidedTour('DataManagerProvider', (s) => s.dispatch);\n const location = useLocation();\n const { sessionId: ctbSessionId, regenerateSessionId } = useCTBSession();\n\n const {\n components,\n contentTypes,\n reservedNames,\n initialComponents,\n initialContentTypes,\n isLoading,\n } = state.current;\n\n const { toggleNotification } = useNotification();\n const { lockAppWithAutoreload, unlockAppWithAutoreload } = useAutoReloadOverlayBlocker();\n const serverRestartWatcher = useServerRestartWatcher();\n\n const getPlugin = useStrapiApp('DataManagerProvider', (state) => state.getPlugin);\n const plugin = getPlugin('content-type-builder');\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const { formatMessage } = useIntl();\n const { trackUsage } = useCTBTracking();\n const refetchPermissions = useAuth('DataManagerProvider', (state) => state.refetchPermissions);\n const { onCloseModal } = useFormModalNavigation();\n\n const [isSaving, setIsSaving] = React.useState(false);\n const previousLocationRef = React.useRef<string | null>(null);\n\n const isModified = React.useMemo(() => {\n return !(isEqual(components, initialComponents) && isEqual(contentTypes, initialContentTypes));\n }, [components, contentTypes, initialComponents, initialContentTypes]);\n\n const fetchClient = useFetchClient();\n\n const isInDevelopmentMode = autoReload;\n\n const getDataRef = React.useRef<() => Promise<void>>(async () => undefined);\n\n getDataRef.current = async () => {\n try {\n const [schemaResponse, reservedNamesResponse] = await Promise.all([\n fetchClient.get(`/content-type-builder/schema`),\n fetchClient.get(`/content-type-builder/reserved-names`),\n ]);\n\n const { components, contentTypes } = schemaResponse.data.data;\n\n dispatch(\n actions.init({\n components: mapValues(components, (component) => ({\n ...component,\n status: 'UNCHANGED',\n })) as Components,\n contentTypes: mapValues(contentTypes, (contentType) => ({\n ...contentType,\n status: 'UNCHANGED',\n })) as ContentTypes,\n reservedNames: reservedNamesResponse.data,\n })\n );\n\n dispatch(actions.clearHistory());\n } catch (err) {\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n React.useEffect(() => {\n getDataRef.current();\n previousLocationRef.current = location.pathname;\n\n return () => {\n // Reload the plugin so the cycle is new again\n dispatch(actions.reloadPlugin());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Detect navigation away and back to CTB to regenerate session\n React.useEffect(() => {\n const currentPath = location.pathname;\n const previousPath = previousLocationRef.current;\n const CTB_PATH = '/plugins/content-type-builder';\n\n if (previousPath) {\n const isCTBPath = currentPath.includes(CTB_PATH);\n const wasCTBPath = previousPath.includes(CTB_PATH);\n\n // Regenerate session when returning to CTB after navigating away\n if (!wasCTBPath && isCTBPath) {\n regenerateSessionId();\n }\n }\n\n previousLocationRef.current = currentPath;\n }, [location.pathname, regenerateSessionId]);\n\n React.useEffect(() => {\n if (!autoReload) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: getTrad('notification.info.autoreaload-disable') }),\n });\n }\n }, [autoReload, toggleNotification, formatMessage]);\n\n const getAllComponentsThatHaveAComponentInTheirAttributes = (components: Components) => {\n const composWithCompos = retrieveComponentsThatHaveComponents(components);\n\n return composWithCompos;\n };\n\n const getAllNestedComponents = (components: Components) => {\n const appNestedCompo = retrieveNestedComponents(components);\n\n return appNestedCompo;\n };\n\n const updatePermissions = async () => {\n await refetchPermissions();\n };\n\n const saveSchema = async () => {\n setIsSaving(true);\n\n const PluginForms = plugin?.apis?.forms as FormAPI;\n\n const mutatedCTs = Object.entries(state.current.contentTypes).reduce(\n (acc, [uid, contentType]) => {\n acc[uid] = PluginForms.mutateContentTypeSchema(\n contentType,\n initialContentTypes[uid]\n ) as ContentType;\n\n return acc;\n },\n {} as ContentTypes\n );\n\n const { requestData, trackingEventProperties } = stateToRequestData({\n components: state.current.components,\n contentTypes: mutatedCTs,\n });\n\n // Track that the save button was clicked (includes session ID via useCTBTracking)\n trackUsage('willUpdateCTBSchema', {\n ...trackingEventProperties,\n ctbSessionId,\n });\n\n const isSendingContentTypes = Object.keys(state.current.contentTypes).length > 0;\n\n lockAppWithAutoreload();\n\n try {\n await fetchClient.post(`/content-type-builder/update-schema`, { data: requestData });\n\n if (isSendingContentTypes) {\n // Note: didCreateGuidedTourCollectionType doesn't accept properties\n trackUsage('didCreateGuidedTourCollectionType');\n }\n\n // Make sure the server has restarted\n await serverRestartWatcher();\n // Generate new session ID after server restart\n regenerateSessionId();\n // refetch and update initial state after the data has been saved\n await getDataRef.current();\n // Update the app's permissions\n await updatePermissions();\n // Refresh content-manager caches that depend on the CT/component schema.\n dispatch(invalidateContentManagerSchemaCaches());\n } catch (err) {\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n trackUsage('didUpdateCTBSchema', {\n ...trackingEventProperties,\n success: false,\n ctbSessionId,\n });\n } finally {\n setIsSaving(false);\n unlockAppWithAutoreload();\n\n dispatch(adminApi.util.invalidateTags(['GuidedTourMeta', 'HomepageKeyStatistics']));\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n\n trackUsage('didUpdateCTBSchema', {\n ...trackingEventProperties,\n success: true,\n ctbSessionId,\n });\n }\n };\n\n const componentsThatHaveOtherComponentInTheirAttributes = React.useMemo(() => {\n return getAllComponentsThatHaveAComponentInTheirAttributes(components);\n }, [components]);\n\n const nestedComponents = React.useMemo(() => {\n return getAllNestedComponents(components);\n }, [components]);\n\n const allComponentsCategories = React.useMemo(() => {\n return retrieveSpecificInfoFromComponents(components, ['category']);\n }, [components]);\n\n const componentsGroupedByCategory = React.useMemo(() => {\n return groupBy(components, 'category');\n }, [components]);\n\n const sortedContentTypesList = React.useMemo(() => {\n return sortContentType(contentTypes);\n }, [contentTypes]);\n\n const context: DataManagerContextValue = {\n componentsThatHaveOtherComponentInTheirAttributes,\n nestedComponents,\n saveSchema,\n reservedNames,\n components,\n contentTypes,\n initialComponents,\n initialContentTypes,\n isSaving,\n isModified,\n isInDevelopmentMode,\n allComponentsCategories,\n componentsGroupedByCategory,\n sortedContentTypesList,\n isLoading,\n addAttribute(payload) {\n dispatch(actions.addAttribute(payload));\n },\n editAttribute(payload) {\n dispatch(actions.editAttribute(payload));\n },\n addCustomFieldAttribute(payload) {\n dispatch(actions.addCustomFieldAttribute(payload));\n },\n editCustomFieldAttribute(payload) {\n dispatch(actions.editCustomFieldAttribute(payload));\n },\n addCreatedComponentToDynamicZone(payload) {\n dispatch(actions.addCreatedComponentToDynamicZone(payload));\n },\n createSchema(payload) {\n dispatch(actions.createSchema(payload));\n },\n createComponentSchema({ data, uid, componentCategory }) {\n dispatch(actions.createComponentSchema({ data, uid, componentCategory }));\n },\n changeDynamicZoneComponents({ forTarget, targetUid, dynamicZoneTarget, newComponents }) {\n dispatch(\n actions.changeDynamicZoneComponents({\n forTarget,\n targetUid,\n dynamicZoneTarget,\n newComponents,\n })\n );\n },\n removeAttribute(payload) {\n if (payload.forTarget === 'contentType') {\n // Note: willDeleteFieldOfContentType doesn't accept properties\n trackUsage('willDeleteFieldOfContentType');\n }\n\n dispatch(actions.removeField(payload));\n },\n removeComponentFromDynamicZone(payload) {\n dispatch(actions.removeComponentFromDynamicZone(payload));\n },\n deleteComponent(uid: Internal.UID.Component) {\n const userConfirm = window.confirm(\n formatMessage({\n id: getTrad(`popUpWarning.bodyMessage.component.delete`),\n })\n );\n\n if (userConfirm) {\n onCloseModal();\n\n dispatch(actions.deleteComponent(uid));\n }\n },\n deleteContentType(uid: Internal.UID.ContentType) {\n const userConfirm = window.confirm(\n formatMessage({\n id: getTrad(`popUpWarning.bodyMessage.contentType.delete`),\n })\n );\n\n if (userConfirm) {\n onCloseModal();\n\n dispatch(actions.deleteContentType(uid));\n }\n },\n\n updateComponentSchema({ data, componentUID }) {\n dispatch(\n actions.updateComponentSchema({\n data,\n uid: componentUID,\n })\n );\n },\n\n updateComponentUid({ componentUID, newComponentUID }) {\n dispatch(\n actions.updateComponentUid({\n uid: componentUID,\n newComponentUID,\n })\n );\n },\n\n updateSchema(args) {\n dispatch(actions.updateSchema(args));\n },\n\n moveAttribute(args) {\n dispatch(actions.moveAttribute(args));\n },\n\n applyChange(args) {\n dispatch(actions.applyChange(args));\n },\n\n history: {\n undo() {\n dispatch(actions.undo());\n },\n\n redo() {\n dispatch(actions.redo());\n },\n\n discardAllChanges() {\n dispatch(actions.discardAll());\n },\n\n canUndo: state.past.length > 0,\n canRedo: state.future.length > 0,\n canDiscardAll: isModified,\n },\n };\n\n return <DataManagerContext.Provider value={context}>{children}</DataManagerContext.Provider>;\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default DataManagerProvider;\n"],"names":["selectState","state","initialState","CONTENT_MANAGER_SCHEMA_CACHE_TAGS","invalidateContentManagerSchemaCaches","adminApi","util","invalidateTags","DataManagerProvider","children","dispatch","useDispatch","useSelector","dispatchGuidedTour","useGuidedTour","s","location","useLocation","sessionId","ctbSessionId","regenerateSessionId","useCTBSession","components","contentTypes","reservedNames","initialComponents","initialContentTypes","isLoading","current","toggleNotification","useNotification","lockAppWithAutoreload","unlockAppWithAutoreload","useAutoReloadOverlayBlocker","serverRestartWatcher","useServerRestartWatcher","getPlugin","useStrapiApp","plugin","autoReload","useAppInfo","formatMessage","useIntl","trackUsage","useCTBTracking","refetchPermissions","useAuth","onCloseModal","useFormModalNavigation","isSaving","setIsSaving","React","useState","previousLocationRef","useRef","isModified","useMemo","isEqual","fetchClient","useFetchClient","isInDevelopmentMode","getDataRef","undefined","schemaResponse","reservedNamesResponse","Promise","all","get","data","actions","init","mapValues","component","status","contentType","clearHistory","err","console","error","type","message","id","defaultMessage","useEffect","pathname","reloadPlugin","currentPath","previousPath","CTB_PATH","isCTBPath","includes","wasCTBPath","getTrad","getAllComponentsThatHaveAComponentInTheirAttributes","composWithCompos","retrieveComponentsThatHaveComponents","getAllNestedComponents","appNestedCompo","retrieveNestedComponents","updatePermissions","saveSchema","PluginForms","apis","forms","mutatedCTs","Object","entries","reduce","acc","uid","mutateContentTypeSchema","requestData","trackingEventProperties","stateToRequestData","isSendingContentTypes","keys","length","post","success","payload","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","componentsThatHaveOtherComponentInTheirAttributes","nestedComponents","allComponentsCategories","retrieveSpecificInfoFromComponents","componentsGroupedByCategory","groupBy","sortedContentTypesList","sortContentType","context","addAttribute","editAttribute","addCustomFieldAttribute","editCustomFieldAttribute","addCreatedComponentToDynamicZone","createComponentSchema","componentCategory","changeDynamicZoneComponents","forTarget","targetUid","dynamicZoneTarget","newComponents","removeAttribute","removeField","removeComponentFromDynamicZone","deleteComponent","userConfirm","window","confirm","deleteContentType","updateComponentSchema","componentUID","updateComponentUid","newComponentUID","updateSchema","args","moveAttribute","applyChange","history","undo","redo","discardAllChanges","discardAll","canUndo","past","canRedo","future","canDiscardAll","_jsx","DataManagerContext","Provider","value"],"mappings":"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"}
@@ -22,6 +22,20 @@ import { retrieveNestedComponents } from './utils/retrieveNestedComponents.mjs';
22
22
  import { retrieveSpecificInfoFromComponents } from './utils/retrieveSpecificInfoFromComponents.mjs';
23
23
 
24
24
  const selectState = (state)=>state['content-type-builder_dataManagerProvider'] || initialState;
25
+ /**
26
+ * Tag types registered on the shared `adminApi` instance at runtime by
27
+ * `@strapi/content-manager` via `enhanceEndpoints({ addTagTypes: [...] })`
28
+ * (see packages/core/content-manager/admin/src/services/api.ts).
29
+ *
30
+ * The cast is only required because adminApi's compile-time tag union doesn't see
31
+ * tags added downstream from this side of the dependency graph.
32
+ */ const CONTENT_MANAGER_SCHEMA_CACHE_TAGS = [
33
+ 'InitialData',
34
+ 'ContentTypesConfiguration',
35
+ 'ContentTypeSettings',
36
+ 'ComponentConfiguration'
37
+ ];
38
+ const invalidateContentManagerSchemaCaches = ()=>adminApi.util.invalidateTags(CONTENT_MANAGER_SCHEMA_CACHE_TAGS);
25
39
  const DataManagerProvider = ({ children })=>{
26
40
  const dispatch = useDispatch();
27
41
  const state = useSelector(selectState);
@@ -51,7 +65,7 @@ const DataManagerProvider = ({ children })=>{
51
65
  ]);
52
66
  const fetchClient = useFetchClient();
53
67
  const isInDevelopmentMode = autoReload;
54
- const getDataRef = React.useRef();
68
+ const getDataRef = React.useRef(async ()=>undefined);
55
69
  getDataRef.current = async ()=>{
56
70
  try {
57
71
  const [schemaResponse, reservedNamesResponse] = await Promise.all([
@@ -170,6 +184,8 @@ const DataManagerProvider = ({ children })=>{
170
184
  await getDataRef.current();
171
185
  // Update the app's permissions
172
186
  await updatePermissions();
187
+ // Refresh content-manager caches that depend on the CT/component schema.
188
+ dispatch(invalidateContentManagerSchemaCaches());
173
189
  } catch (err) {
174
190
  console.error({
175
191
  err
@@ -1 +1 @@
1
- {"version":3,"file":"DataManagerProvider.mjs","sources":["../../../../admin/src/components/DataManager/DataManagerProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useNotification,\n useAppInfo,\n useFetchClient,\n useAuth,\n adminApi,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n} from '@strapi/admin/strapi-admin';\nimport groupBy from 'lodash/groupBy';\nimport isEqual from 'lodash/isEqual';\nimport mapValues from 'lodash/mapValues';\nimport { useIntl } from 'react-intl';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\n\nimport { getTrad } from '../../utils/getTrad';\nimport { useAutoReloadOverlayBlocker } from '../AutoReloadOverlayBlocker';\nimport { useCTBTracking } from '../CTBSession/ctbSession';\nimport { useCTBSession } from '../CTBSession/useCTBSession';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport { DataManagerContext, type DataManagerContextValue } from './DataManagerContext';\nimport { actions, initialState, type State } from './reducer';\nimport { useServerRestartWatcher } from './useServerRestartWatcher';\nimport { sortContentType, stateToRequestData } from './utils/cleanData';\nimport { retrieveComponentsThatHaveComponents } from './utils/retrieveComponentsThatHaveComponents';\nimport { retrieveNestedComponents } from './utils/retrieveNestedComponents';\nimport { retrieveSpecificInfoFromComponents } from './utils/retrieveSpecificInfoFromComponents';\n\nimport type { ContentTypes, ContentType, Components } from '../../types';\nimport type { FormAPI } from '../../utils/formAPI';\nimport type { Internal } from '@strapi/types';\n\ninterface DataManagerProviderProps {\n children: React.ReactNode;\n}\n\nconst selectState = (state: Record<string, unknown>) =>\n (state['content-type-builder_dataManagerProvider'] || initialState) as State;\n\nconst DataManagerProvider = ({ children }: DataManagerProviderProps) => {\n const dispatch = useDispatch();\n const state = useSelector(selectState);\n const dispatchGuidedTour = useGuidedTour('DataManagerProvider', (s) => s.dispatch);\n const location = useLocation();\n const { sessionId: ctbSessionId, regenerateSessionId } = useCTBSession();\n\n const {\n components,\n contentTypes,\n reservedNames,\n initialComponents,\n initialContentTypes,\n isLoading,\n } = state.current;\n\n const { toggleNotification } = useNotification();\n const { lockAppWithAutoreload, unlockAppWithAutoreload } = useAutoReloadOverlayBlocker();\n const serverRestartWatcher = useServerRestartWatcher();\n\n const getPlugin = useStrapiApp('DataManagerProvider', (state) => state.getPlugin);\n const plugin = getPlugin('content-type-builder');\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const { formatMessage } = useIntl();\n const { trackUsage } = useCTBTracking();\n const refetchPermissions = useAuth('DataManagerProvider', (state) => state.refetchPermissions);\n const { onCloseModal } = useFormModalNavigation();\n\n const [isSaving, setIsSaving] = React.useState(false);\n const previousLocationRef = React.useRef<string | null>(null);\n\n const isModified = React.useMemo(() => {\n return !(isEqual(components, initialComponents) && isEqual(contentTypes, initialContentTypes));\n }, [components, contentTypes, initialComponents, initialContentTypes]);\n\n const fetchClient = useFetchClient();\n\n const isInDevelopmentMode = autoReload;\n\n const getDataRef = React.useRef<any>();\n\n getDataRef.current = async () => {\n try {\n const [schemaResponse, reservedNamesResponse] = await Promise.all([\n fetchClient.get(`/content-type-builder/schema`),\n fetchClient.get(`/content-type-builder/reserved-names`),\n ]);\n\n const { components, contentTypes } = schemaResponse.data.data;\n\n dispatch(\n actions.init({\n components: mapValues(components, (component) => ({\n ...component,\n status: 'UNCHANGED',\n })) as Components,\n contentTypes: mapValues(contentTypes, (contentType) => ({\n ...contentType,\n status: 'UNCHANGED',\n })) as ContentTypes,\n reservedNames: reservedNamesResponse.data,\n })\n );\n\n dispatch(actions.clearHistory());\n } catch (err) {\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n React.useEffect(() => {\n getDataRef.current();\n previousLocationRef.current = location.pathname;\n\n return () => {\n // Reload the plugin so the cycle is new again\n dispatch(actions.reloadPlugin());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Detect navigation away and back to CTB to regenerate session\n React.useEffect(() => {\n const currentPath = location.pathname;\n const previousPath = previousLocationRef.current;\n const CTB_PATH = '/plugins/content-type-builder';\n\n if (previousPath) {\n const isCTBPath = currentPath.includes(CTB_PATH);\n const wasCTBPath = previousPath.includes(CTB_PATH);\n\n // Regenerate session when returning to CTB after navigating away\n if (!wasCTBPath && isCTBPath) {\n regenerateSessionId();\n }\n }\n\n previousLocationRef.current = currentPath;\n }, [location.pathname, regenerateSessionId]);\n\n React.useEffect(() => {\n if (!autoReload) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: getTrad('notification.info.autoreaload-disable') }),\n });\n }\n }, [autoReload, toggleNotification, formatMessage]);\n\n const getAllComponentsThatHaveAComponentInTheirAttributes = (components: Components) => {\n const composWithCompos = retrieveComponentsThatHaveComponents(components);\n\n return composWithCompos;\n };\n\n const getAllNestedComponents = (components: Components) => {\n const appNestedCompo = retrieveNestedComponents(components);\n\n return appNestedCompo;\n };\n\n const updatePermissions = async () => {\n await refetchPermissions();\n };\n\n const saveSchema = async () => {\n setIsSaving(true);\n\n const PluginForms = plugin?.apis?.forms as FormAPI;\n\n const mutatedCTs = Object.entries(state.current.contentTypes).reduce(\n (acc, [uid, contentType]) => {\n acc[uid] = PluginForms.mutateContentTypeSchema(\n contentType,\n initialContentTypes[uid]\n ) as ContentType;\n\n return acc;\n },\n {} as ContentTypes\n );\n\n const { requestData, trackingEventProperties } = stateToRequestData({\n components: state.current.components,\n contentTypes: mutatedCTs,\n });\n\n // Track that the save button was clicked (includes session ID via useCTBTracking)\n trackUsage('willUpdateCTBSchema', {\n ...trackingEventProperties,\n ctbSessionId,\n });\n\n const isSendingContentTypes = Object.keys(state.current.contentTypes).length > 0;\n\n lockAppWithAutoreload();\n\n try {\n await fetchClient.post(`/content-type-builder/update-schema`, { data: requestData });\n\n if (isSendingContentTypes) {\n // Note: didCreateGuidedTourCollectionType doesn't accept properties\n trackUsage('didCreateGuidedTourCollectionType');\n }\n\n // Make sure the server has restarted\n await serverRestartWatcher();\n // Generate new session ID after server restart\n regenerateSessionId();\n // refetch and update initial state after the data has been saved\n await getDataRef.current();\n // Update the app's permissions\n await updatePermissions();\n } catch (err) {\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n trackUsage('didUpdateCTBSchema', {\n ...trackingEventProperties,\n success: false,\n ctbSessionId,\n });\n } finally {\n setIsSaving(false);\n unlockAppWithAutoreload();\n\n dispatch(adminApi.util.invalidateTags(['GuidedTourMeta', 'HomepageKeyStatistics']));\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n\n trackUsage('didUpdateCTBSchema', {\n ...trackingEventProperties,\n success: true,\n ctbSessionId,\n });\n }\n };\n\n const componentsThatHaveOtherComponentInTheirAttributes = React.useMemo(() => {\n return getAllComponentsThatHaveAComponentInTheirAttributes(components);\n }, [components]);\n\n const nestedComponents = React.useMemo(() => {\n return getAllNestedComponents(components);\n }, [components]);\n\n const allComponentsCategories = React.useMemo(() => {\n return retrieveSpecificInfoFromComponents(components, ['category']);\n }, [components]);\n\n const componentsGroupedByCategory = React.useMemo(() => {\n return groupBy(components, 'category');\n }, [components]);\n\n const sortedContentTypesList = React.useMemo(() => {\n return sortContentType(contentTypes);\n }, [contentTypes]);\n\n const context: DataManagerContextValue = {\n componentsThatHaveOtherComponentInTheirAttributes,\n nestedComponents,\n saveSchema,\n reservedNames,\n components,\n contentTypes,\n initialComponents,\n initialContentTypes,\n isSaving,\n isModified,\n isInDevelopmentMode,\n allComponentsCategories,\n componentsGroupedByCategory,\n sortedContentTypesList,\n isLoading,\n addAttribute(payload) {\n dispatch(actions.addAttribute(payload));\n },\n editAttribute(payload) {\n dispatch(actions.editAttribute(payload));\n },\n addCustomFieldAttribute(payload) {\n dispatch(actions.addCustomFieldAttribute(payload));\n },\n editCustomFieldAttribute(payload) {\n dispatch(actions.editCustomFieldAttribute(payload));\n },\n addCreatedComponentToDynamicZone(payload) {\n dispatch(actions.addCreatedComponentToDynamicZone(payload));\n },\n createSchema(payload) {\n dispatch(actions.createSchema(payload));\n },\n createComponentSchema({ data, uid, componentCategory }) {\n dispatch(actions.createComponentSchema({ data, uid, componentCategory }));\n },\n changeDynamicZoneComponents({ forTarget, targetUid, dynamicZoneTarget, newComponents }) {\n dispatch(\n actions.changeDynamicZoneComponents({\n forTarget,\n targetUid,\n dynamicZoneTarget,\n newComponents,\n })\n );\n },\n removeAttribute(payload) {\n if (payload.forTarget === 'contentType') {\n // Note: willDeleteFieldOfContentType doesn't accept properties\n trackUsage('willDeleteFieldOfContentType');\n }\n\n dispatch(actions.removeField(payload));\n },\n removeComponentFromDynamicZone(payload) {\n dispatch(actions.removeComponentFromDynamicZone(payload));\n },\n deleteComponent(uid: Internal.UID.Component) {\n const userConfirm = window.confirm(\n formatMessage({\n id: getTrad(`popUpWarning.bodyMessage.component.delete`),\n })\n );\n\n if (userConfirm) {\n onCloseModal();\n\n dispatch(actions.deleteComponent(uid));\n }\n },\n deleteContentType(uid: Internal.UID.ContentType) {\n const userConfirm = window.confirm(\n formatMessage({\n id: getTrad(`popUpWarning.bodyMessage.contentType.delete`),\n })\n );\n\n if (userConfirm) {\n onCloseModal();\n\n dispatch(actions.deleteContentType(uid));\n }\n },\n\n updateComponentSchema({ data, componentUID }) {\n dispatch(\n actions.updateComponentSchema({\n data,\n uid: componentUID,\n })\n );\n },\n\n updateComponentUid({ componentUID, newComponentUID }) {\n dispatch(\n actions.updateComponentUid({\n uid: componentUID,\n newComponentUID,\n })\n );\n },\n\n updateSchema(args) {\n dispatch(actions.updateSchema(args));\n },\n\n moveAttribute(args) {\n dispatch(actions.moveAttribute(args));\n },\n\n applyChange(args) {\n dispatch(actions.applyChange(args));\n },\n\n history: {\n undo() {\n dispatch(actions.undo());\n },\n\n redo() {\n dispatch(actions.redo());\n },\n\n discardAllChanges() {\n dispatch(actions.discardAll());\n },\n\n canUndo: state.past.length > 0,\n canRedo: state.future.length > 0,\n canDiscardAll: isModified,\n },\n };\n\n return <DataManagerContext.Provider value={context}>{children}</DataManagerContext.Provider>;\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default DataManagerProvider;\n"],"names":["selectState","state","initialState","DataManagerProvider","children","dispatch","useDispatch","useSelector","dispatchGuidedTour","useGuidedTour","s","location","useLocation","sessionId","ctbSessionId","regenerateSessionId","useCTBSession","components","contentTypes","reservedNames","initialComponents","initialContentTypes","isLoading","current","toggleNotification","useNotification","lockAppWithAutoreload","unlockAppWithAutoreload","useAutoReloadOverlayBlocker","serverRestartWatcher","useServerRestartWatcher","getPlugin","useStrapiApp","plugin","autoReload","useAppInfo","formatMessage","useIntl","trackUsage","useCTBTracking","refetchPermissions","useAuth","onCloseModal","useFormModalNavigation","isSaving","setIsSaving","React","useState","previousLocationRef","useRef","isModified","useMemo","isEqual","fetchClient","useFetchClient","isInDevelopmentMode","getDataRef","schemaResponse","reservedNamesResponse","Promise","all","get","data","actions","init","mapValues","component","status","contentType","clearHistory","err","console","error","type","message","id","defaultMessage","useEffect","pathname","reloadPlugin","currentPath","previousPath","CTB_PATH","isCTBPath","includes","wasCTBPath","getTrad","getAllComponentsThatHaveAComponentInTheirAttributes","composWithCompos","retrieveComponentsThatHaveComponents","getAllNestedComponents","appNestedCompo","retrieveNestedComponents","updatePermissions","saveSchema","PluginForms","apis","forms","mutatedCTs","Object","entries","reduce","acc","uid","mutateContentTypeSchema","requestData","trackingEventProperties","stateToRequestData","isSendingContentTypes","keys","length","post","success","adminApi","util","invalidateTags","payload","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","componentsThatHaveOtherComponentInTheirAttributes","nestedComponents","allComponentsCategories","retrieveSpecificInfoFromComponents","componentsGroupedByCategory","groupBy","sortedContentTypesList","sortContentType","context","addAttribute","editAttribute","addCustomFieldAttribute","editCustomFieldAttribute","addCreatedComponentToDynamicZone","createComponentSchema","componentCategory","changeDynamicZoneComponents","forTarget","targetUid","dynamicZoneTarget","newComponents","removeAttribute","removeField","removeComponentFromDynamicZone","deleteComponent","userConfirm","window","confirm","deleteContentType","updateComponentSchema","componentUID","updateComponentUid","newComponentUID","updateSchema","args","moveAttribute","applyChange","history","undo","redo","discardAllChanges","discardAll","canUndo","past","canRedo","future","canDiscardAll","_jsx","DataManagerContext","Provider","value"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAyCA,MAAMA,cAAc,CAACC,KAAAA,GAClBA,KAAK,CAAC,2CAA2C,IAAIC,YAAAA;AAExD,MAAMC,mBAAAA,GAAsB,CAAC,EAAEC,QAAQ,EAA4B,GAAA;AACjE,IAAA,MAAMC,QAAAA,GAAWC,WAAAA,EAAAA;AACjB,IAAA,MAAML,QAAQM,WAAAA,CAAYP,WAAAA,CAAAA;AAC1B,IAAA,MAAMQ,qBAAqBC,aAAAA,CAAc,qBAAA,EAAuB,CAACC,CAAAA,GAAMA,EAAEL,QAAQ,CAAA;AACjF,IAAA,MAAMM,QAAAA,GAAWC,WAAAA,EAAAA;AACjB,IAAA,MAAM,EAAEC,SAAAA,EAAWC,YAAY,EAAEC,mBAAmB,EAAE,GAAGC,aAAAA,EAAAA;AAEzD,IAAA,MAAM,EACJC,UAAU,EACVC,YAAY,EACZC,aAAa,EACbC,iBAAiB,EACjBC,mBAAmB,EACnBC,SAAS,EACV,GAAGrB,MAAMsB,OAAO;IAEjB,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,qBAAqB,EAAEC,uBAAuB,EAAE,GAAGC,2BAAAA,EAAAA;AAC3D,IAAA,MAAMC,oBAAAA,GAAuBC,uBAAAA,EAAAA;AAE7B,IAAA,MAAMC,YAAYC,YAAAA,CAAa,qBAAA,EAAuB,CAAC/B,KAAAA,GAAUA,MAAM8B,SAAS,CAAA;AAChF,IAAA,MAAME,SAASF,SAAAA,CAAU,sBAAA,CAAA;AACzB,IAAA,MAAMG,aAAaC,UAAAA,CAAW,qBAAA,EAAuB,CAAClC,KAAAA,GAAUA,MAAMiC,UAAU,CAAA;IAChF,MAAM,EAAEE,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,cAAAA,EAAAA;AACvB,IAAA,MAAMC,qBAAqBC,OAAAA,CAAQ,qBAAA,EAAuB,CAACxC,KAAAA,GAAUA,MAAMuC,kBAAkB,CAAA;IAC7F,MAAM,EAAEE,YAAY,EAAE,GAAGC,sBAAAA,EAAAA;AAEzB,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAC/C,MAAMC,mBAAAA,GAAsBF,KAAAA,CAAMG,MAAM,CAAgB,IAAA,CAAA;IAExD,MAAMC,UAAAA,GAAaJ,KAAAA,CAAMK,OAAO,CAAC,IAAA;AAC/B,QAAA,OAAO,EAAEC,OAAAA,CAAQnC,YAAYG,iBAAAA,CAAAA,IAAsBgC,OAAAA,CAAQlC,cAAcG,mBAAAA,CAAmB,CAAA;IAC9F,CAAA,EAAG;AAACJ,QAAAA,UAAAA;AAAYC,QAAAA,YAAAA;AAAcE,QAAAA,iBAAAA;AAAmBC,QAAAA;AAAoB,KAAA,CAAA;AAErE,IAAA,MAAMgC,WAAAA,GAAcC,cAAAA,EAAAA;AAEpB,IAAA,MAAMC,mBAAAA,GAAsBrB,UAAAA;IAE5B,MAAMsB,UAAAA,GAAaV,MAAMG,MAAM,EAAA;AAE/BO,IAAAA,UAAAA,CAAWjC,OAAO,GAAG,UAAA;QACnB,IAAI;AACF,YAAA,MAAM,CAACkC,cAAAA,EAAgBC,qBAAAA,CAAsB,GAAG,MAAMC,OAAAA,CAAQC,GAAG,CAAC;AAChEP,gBAAAA,WAAAA,CAAYQ,GAAG,CAAC,CAAC,4BAA4B,CAAC,CAAA;AAC9CR,gBAAAA,WAAAA,CAAYQ,GAAG,CAAC,CAAC,oCAAoC,CAAC;AACvD,aAAA,CAAA;YAED,MAAM,EAAE5C,UAAU,EAAEC,YAAY,EAAE,GAAGuC,cAAAA,CAAeK,IAAI,CAACA,IAAI;YAE7DzD,QAAAA,CACE0D,OAAAA,CAAQC,IAAI,CAAC;AACX/C,gBAAAA,UAAAA,EAAYgD,SAAAA,CAAUhD,UAAAA,EAAY,CAACiD,SAAAA,IAAe;AAChD,wBAAA,GAAGA,SAAS;wBACZC,MAAAA,EAAQ;qBACV,CAAA,CAAA;AACAjD,gBAAAA,YAAAA,EAAc+C,SAAAA,CAAU/C,YAAAA,EAAc,CAACkD,WAAAA,IAAiB;AACtD,wBAAA,GAAGA,WAAW;wBACdD,MAAAA,EAAQ;qBACV,CAAA,CAAA;AACAhD,gBAAAA,aAAAA,EAAeuC,sBAAsBI;AACvC,aAAA,CAAA,CAAA;AAGFzD,YAAAA,QAAAA,CAAS0D,QAAQM,YAAY,EAAA,CAAA;AAC/B,QAAA,CAAA,CAAE,OAAOC,GAAAA,EAAK;AACZC,YAAAA,OAAAA,CAAQC,KAAK,CAAC;AAAEF,gBAAAA;AAAI,aAAA,CAAA;YACpB9C,kBAAAA,CAAmB;gBACjBiD,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAStC,aAAAA,CAAc;oBAAEuC,EAAAA,EAAI,oBAAA;oBAAsBC,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA9B,IAAAA,KAAAA,CAAM+B,SAAS,CAAC,IAAA;AACdrB,QAAAA,UAAAA,CAAWjC,OAAO,EAAA;QAClByB,mBAAAA,CAAoBzB,OAAO,GAAGZ,QAAAA,CAASmE,QAAQ;QAE/C,OAAO,IAAA;;AAELzE,YAAAA,QAAAA,CAAS0D,QAAQgB,YAAY,EAAA,CAAA;AAC/B,QAAA,CAAA;;AAEF,IAAA,CAAA,EAAG,EAAE,CAAA;;AAGLjC,IAAAA,KAAAA,CAAM+B,SAAS,CAAC,IAAA;QACd,MAAMG,WAAAA,GAAcrE,SAASmE,QAAQ;QACrC,MAAMG,YAAAA,GAAejC,oBAAoBzB,OAAO;AAChD,QAAA,MAAM2D,QAAAA,GAAW,+BAAA;AAEjB,QAAA,IAAID,YAAAA,EAAc;YAChB,MAAME,SAAAA,GAAYH,WAAAA,CAAYI,QAAQ,CAACF,QAAAA,CAAAA;YACvC,MAAMG,UAAAA,GAAaJ,YAAAA,CAAaG,QAAQ,CAACF,QAAAA,CAAAA;;YAGzC,IAAI,CAACG,cAAcF,SAAAA,EAAW;AAC5BpE,gBAAAA,mBAAAA,EAAAA;AACF,YAAA;AACF,QAAA;AAEAiC,QAAAA,mBAAAA,CAAoBzB,OAAO,GAAGyD,WAAAA;IAChC,CAAA,EAAG;AAACrE,QAAAA,QAAAA,CAASmE,QAAQ;AAAE/D,QAAAA;AAAoB,KAAA,CAAA;AAE3C+B,IAAAA,KAAAA,CAAM+B,SAAS,CAAC,IAAA;AACd,QAAA,IAAI,CAAC3C,UAAAA,EAAY;YACfV,kBAAAA,CAAmB;gBACjBiD,IAAAA,EAAM,MAAA;AACNC,gBAAAA,OAAAA,EAAStC,aAAAA,CAAc;AAAEuC,oBAAAA,EAAAA,EAAIW,OAAAA,CAAQ,uCAAA;AAAyC,iBAAA;AAChF,aAAA,CAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACpD,QAAAA,UAAAA;AAAYV,QAAAA,kBAAAA;AAAoBY,QAAAA;AAAc,KAAA,CAAA;AAElD,IAAA,MAAMmD,sDAAsD,CAACtE,UAAAA,GAAAA;AAC3D,QAAA,MAAMuE,mBAAmBC,oCAAAA,CAAqCxE,UAAAA,CAAAA;QAE9D,OAAOuE,gBAAAA;AACT,IAAA,CAAA;AAEA,IAAA,MAAME,yBAAyB,CAACzE,UAAAA,GAAAA;AAC9B,QAAA,MAAM0E,iBAAiBC,wBAAAA,CAAyB3E,UAAAA,CAAAA;QAEhD,OAAO0E,cAAAA;AACT,IAAA,CAAA;AAEA,IAAA,MAAME,iBAAAA,GAAoB,UAAA;QACxB,MAAMrD,kBAAAA,EAAAA;AACR,IAAA,CAAA;AAEA,IAAA,MAAMsD,UAAAA,GAAa,UAAA;QACjBjD,WAAAA,CAAY,IAAA,CAAA;QAEZ,MAAMkD,WAAAA,GAAc9D,QAAQ+D,IAAAA,EAAMC,KAAAA;AAElC,QAAA,MAAMC,UAAAA,GAAaC,MAAAA,CAAOC,OAAO,CAACnG,MAAMsB,OAAO,CAACL,YAAY,CAAA,CAAEmF,MAAM,CAClE,CAACC,GAAAA,EAAK,CAACC,KAAKnC,WAAAA,CAAY,GAAA;YACtBkC,GAAG,CAACC,IAAI,GAAGR,WAAAA,CAAYS,uBAAuB,CAC5CpC,WAAAA,EACA/C,mBAAmB,CAACkF,GAAAA,CAAI,CAAA;YAG1B,OAAOD,GAAAA;AACT,QAAA,CAAA,EACA,EAAC,CAAA;AAGH,QAAA,MAAM,EAAEG,WAAW,EAAEC,uBAAuB,EAAE,GAAGC,kBAAAA,CAAmB;YAClE1F,UAAAA,EAAYhB,KAAAA,CAAMsB,OAAO,CAACN,UAAU;YACpCC,YAAAA,EAAcgF;AAChB,SAAA,CAAA;;AAGA5D,QAAAA,UAAAA,CAAW,qBAAA,EAAuB;AAChC,YAAA,GAAGoE,uBAAuB;AAC1B5F,YAAAA;AACF,SAAA,CAAA;QAEA,MAAM8F,qBAAAA,GAAwBT,MAAAA,CAAOU,IAAI,CAAC5G,KAAAA,CAAMsB,OAAO,CAACL,YAAY,CAAA,CAAE4F,MAAM,GAAG,CAAA;AAE/EpF,QAAAA,qBAAAA,EAAAA;QAEA,IAAI;AACF,YAAA,MAAM2B,YAAY0D,IAAI,CAAC,CAAC,mCAAmC,CAAC,EAAE;gBAAEjD,IAAAA,EAAM2C;AAAY,aAAA,CAAA;AAElF,YAAA,IAAIG,qBAAAA,EAAuB;;gBAEzBtE,UAAAA,CAAW,mCAAA,CAAA;AACb,YAAA;;YAGA,MAAMT,oBAAAA,EAAAA;;AAENd,YAAAA,mBAAAA,EAAAA;;AAEA,YAAA,MAAMyC,WAAWjC,OAAO,EAAA;;YAExB,MAAMsE,iBAAAA,EAAAA;AACR,QAAA,CAAA,CAAE,OAAOvB,GAAAA,EAAK;AACZC,YAAAA,OAAAA,CAAQC,KAAK,CAAC;AAAEF,gBAAAA;AAAI,aAAA,CAAA;YACpB9C,kBAAAA,CAAmB;gBACjBiD,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAAStC,aAAAA,CAAc;oBAAEuC,EAAAA,EAAI,oBAAA;oBAAsBC,cAAAA,EAAgB;AAAoB,iBAAA;AACzF,aAAA,CAAA;AAEAtC,YAAAA,UAAAA,CAAW,oBAAA,EAAsB;AAC/B,gBAAA,GAAGoE,uBAAuB;gBAC1BM,OAAAA,EAAS,KAAA;AACTlG,gBAAAA;AACF,aAAA,CAAA;QACF,CAAA,QAAU;YACR+B,WAAAA,CAAY,KAAA,CAAA;AACZlB,YAAAA,uBAAAA,EAAAA;AAEAtB,YAAAA,QAAAA,CAAS4G,QAAAA,CAASC,IAAI,CAACC,cAAc,CAAC;AAAC,gBAAA,gBAAA;AAAkB,gBAAA;AAAwB,aAAA,CAAA,CAAA;YACjF3G,kBAAAA,CAAmB;gBACjBiE,IAAAA,EAAM,uBAAA;gBACN2C,OAAAA,EAAS;oBAACC,4BAAAA,CAA6BC,kBAAkB,CAACC;AAAa;AACzE,aAAA,CAAA;AAEAjF,YAAAA,UAAAA,CAAW,oBAAA,EAAsB;AAC/B,gBAAA,GAAGoE,uBAAuB;gBAC1BM,OAAAA,EAAS,IAAA;AACTlG,gBAAAA;AACF,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,MAAM0G,iDAAAA,GAAoD1E,KAAAA,CAAMK,OAAO,CAAC,IAAA;AACtE,QAAA,OAAOoC,mDAAAA,CAAoDtE,UAAAA,CAAAA;IAC7D,CAAA,EAAG;AAACA,QAAAA;AAAW,KAAA,CAAA;IAEf,MAAMwG,gBAAAA,GAAmB3E,KAAAA,CAAMK,OAAO,CAAC,IAAA;AACrC,QAAA,OAAOuC,sBAAAA,CAAuBzE,UAAAA,CAAAA;IAChC,CAAA,EAAG;AAACA,QAAAA;AAAW,KAAA,CAAA;IAEf,MAAMyG,uBAAAA,GAA0B5E,KAAAA,CAAMK,OAAO,CAAC,IAAA;AAC5C,QAAA,OAAOwE,mCAAmC1G,UAAAA,EAAY;AAAC,YAAA;AAAW,SAAA,CAAA;IACpE,CAAA,EAAG;AAACA,QAAAA;AAAW,KAAA,CAAA;IAEf,MAAM2G,2BAAAA,GAA8B9E,KAAAA,CAAMK,OAAO,CAAC,IAAA;AAChD,QAAA,OAAO0E,QAAQ5G,UAAAA,EAAY,UAAA,CAAA;IAC7B,CAAA,EAAG;AAACA,QAAAA;AAAW,KAAA,CAAA;IAEf,MAAM6G,sBAAAA,GAAyBhF,KAAAA,CAAMK,OAAO,CAAC,IAAA;AAC3C,QAAA,OAAO4E,eAAAA,CAAgB7G,YAAAA,CAAAA;IACzB,CAAA,EAAG;AAACA,QAAAA;AAAa,KAAA,CAAA;AAEjB,IAAA,MAAM8G,OAAAA,GAAmC;AACvCR,QAAAA,iDAAAA;AACAC,QAAAA,gBAAAA;AACA3B,QAAAA,UAAAA;AACA3E,QAAAA,aAAAA;AACAF,QAAAA,UAAAA;AACAC,QAAAA,YAAAA;AACAE,QAAAA,iBAAAA;AACAC,QAAAA,mBAAAA;AACAuB,QAAAA,QAAAA;AACAM,QAAAA,UAAAA;AACAK,QAAAA,mBAAAA;AACAmE,QAAAA,uBAAAA;AACAE,QAAAA,2BAAAA;AACAE,QAAAA,sBAAAA;AACAxG,QAAAA,SAAAA;AACA2G,QAAAA,YAAAA,CAAAA,CAAab,OAAO,EAAA;YAClB/G,QAAAA,CAAS0D,OAAAA,CAAQkE,YAAY,CAACb,OAAAA,CAAAA,CAAAA;AAChC,QAAA,CAAA;AACAc,QAAAA,aAAAA,CAAAA,CAAcd,OAAO,EAAA;YACnB/G,QAAAA,CAAS0D,OAAAA,CAAQmE,aAAa,CAACd,OAAAA,CAAAA,CAAAA;AACjC,QAAA,CAAA;AACAe,QAAAA,uBAAAA,CAAAA,CAAwBf,OAAO,EAAA;YAC7B/G,QAAAA,CAAS0D,OAAAA,CAAQoE,uBAAuB,CAACf,OAAAA,CAAAA,CAAAA;AAC3C,QAAA,CAAA;AACAgB,QAAAA,wBAAAA,CAAAA,CAAyBhB,OAAO,EAAA;YAC9B/G,QAAAA,CAAS0D,OAAAA,CAAQqE,wBAAwB,CAAChB,OAAAA,CAAAA,CAAAA;AAC5C,QAAA,CAAA;AACAiB,QAAAA,gCAAAA,CAAAA,CAAiCjB,OAAO,EAAA;YACtC/G,QAAAA,CAAS0D,OAAAA,CAAQsE,gCAAgC,CAACjB,OAAAA,CAAAA,CAAAA;AACpD,QAAA,CAAA;AACAG,QAAAA,YAAAA,CAAAA,CAAaH,OAAO,EAAA;YAClB/G,QAAAA,CAAS0D,OAAAA,CAAQwD,YAAY,CAACH,OAAAA,CAAAA,CAAAA;AAChC,QAAA,CAAA;AACAkB,QAAAA,qBAAAA,CAAAA,CAAsB,EAAExE,IAAI,EAAEyC,GAAG,EAAEgC,iBAAiB,EAAE,EAAA;YACpDlI,QAAAA,CAAS0D,OAAAA,CAAQuE,qBAAqB,CAAC;AAAExE,gBAAAA,IAAAA;AAAMyC,gBAAAA,GAAAA;AAAKgC,gBAAAA;AAAkB,aAAA,CAAA,CAAA;AACxE,QAAA,CAAA;QACAC,2BAAAA,CAAAA,CAA4B,EAAEC,SAAS,EAAEC,SAAS,EAAEC,iBAAiB,EAAEC,aAAa,EAAE,EAAA;YACpFvI,QAAAA,CACE0D,OAAAA,CAAQyE,2BAA2B,CAAC;AAClCC,gBAAAA,SAAAA;AACAC,gBAAAA,SAAAA;AACAC,gBAAAA,iBAAAA;AACAC,gBAAAA;AACF,aAAA,CAAA,CAAA;AAEJ,QAAA,CAAA;AACAC,QAAAA,eAAAA,CAAAA,CAAgBzB,OAAO,EAAA;YACrB,IAAIA,OAAAA,CAAQqB,SAAS,KAAK,aAAA,EAAe;;gBAEvCnG,UAAAA,CAAW,8BAAA,CAAA;AACb,YAAA;YAEAjC,QAAAA,CAAS0D,OAAAA,CAAQ+E,WAAW,CAAC1B,OAAAA,CAAAA,CAAAA;AAC/B,QAAA,CAAA;AACA2B,QAAAA,8BAAAA,CAAAA,CAA+B3B,OAAO,EAAA;YACpC/G,QAAAA,CAAS0D,OAAAA,CAAQgF,8BAA8B,CAAC3B,OAAAA,CAAAA,CAAAA;AAClD,QAAA,CAAA;AACA4B,QAAAA,eAAAA,CAAAA,CAAgBzC,GAA2B,EAAA;AACzC,YAAA,MAAM0C,WAAAA,GAAcC,MAAAA,CAAOC,OAAO,CAChC/G,aAAAA,CAAc;gBACZuC,EAAAA,EAAIW,OAAAA,CAAQ,CAAC,yCAAyC,CAAC;AACzD,aAAA,CAAA,CAAA;AAGF,YAAA,IAAI2D,WAAAA,EAAa;AACfvG,gBAAAA,YAAAA,EAAAA;gBAEArC,QAAAA,CAAS0D,OAAAA,CAAQiF,eAAe,CAACzC,GAAAA,CAAAA,CAAAA;AACnC,YAAA;AACF,QAAA,CAAA;AACA6C,QAAAA,iBAAAA,CAAAA,CAAkB7C,GAA6B,EAAA;AAC7C,YAAA,MAAM0C,WAAAA,GAAcC,MAAAA,CAAOC,OAAO,CAChC/G,aAAAA,CAAc;gBACZuC,EAAAA,EAAIW,OAAAA,CAAQ,CAAC,2CAA2C,CAAC;AAC3D,aAAA,CAAA,CAAA;AAGF,YAAA,IAAI2D,WAAAA,EAAa;AACfvG,gBAAAA,YAAAA,EAAAA;gBAEArC,QAAAA,CAAS0D,OAAAA,CAAQqF,iBAAiB,CAAC7C,GAAAA,CAAAA,CAAAA;AACrC,YAAA;AACF,QAAA,CAAA;AAEA8C,QAAAA,qBAAAA,CAAAA,CAAsB,EAAEvF,IAAI,EAAEwF,YAAY,EAAE,EAAA;YAC1CjJ,QAAAA,CACE0D,OAAAA,CAAQsF,qBAAqB,CAAC;AAC5BvF,gBAAAA,IAAAA;gBACAyC,GAAAA,EAAK+C;AACP,aAAA,CAAA,CAAA;AAEJ,QAAA,CAAA;AAEAC,QAAAA,kBAAAA,CAAAA,CAAmB,EAAED,YAAY,EAAEE,eAAe,EAAE,EAAA;YAClDnJ,QAAAA,CACE0D,OAAAA,CAAQwF,kBAAkB,CAAC;gBACzBhD,GAAAA,EAAK+C,YAAAA;AACLE,gBAAAA;AACF,aAAA,CAAA,CAAA;AAEJ,QAAA,CAAA;AAEAC,QAAAA,YAAAA,CAAAA,CAAaC,IAAI,EAAA;YACfrJ,QAAAA,CAAS0D,OAAAA,CAAQ0F,YAAY,CAACC,IAAAA,CAAAA,CAAAA;AAChC,QAAA,CAAA;AAEAC,QAAAA,aAAAA,CAAAA,CAAcD,IAAI,EAAA;YAChBrJ,QAAAA,CAAS0D,OAAAA,CAAQ4F,aAAa,CAACD,IAAAA,CAAAA,CAAAA;AACjC,QAAA,CAAA;AAEAE,QAAAA,WAAAA,CAAAA,CAAYF,IAAI,EAAA;YACdrJ,QAAAA,CAAS0D,OAAAA,CAAQ6F,WAAW,CAACF,IAAAA,CAAAA,CAAAA;AAC/B,QAAA,CAAA;QAEAG,OAAAA,EAAS;AACPC,YAAAA,IAAAA,CAAAA,GAAAA;AACEzJ,gBAAAA,QAAAA,CAAS0D,QAAQ+F,IAAI,EAAA,CAAA;AACvB,YAAA,CAAA;AAEAC,YAAAA,IAAAA,CAAAA,GAAAA;AACE1J,gBAAAA,QAAAA,CAAS0D,QAAQgG,IAAI,EAAA,CAAA;AACvB,YAAA,CAAA;AAEAC,YAAAA,iBAAAA,CAAAA,GAAAA;AACE3J,gBAAAA,QAAAA,CAAS0D,QAAQkG,UAAU,EAAA,CAAA;AAC7B,YAAA,CAAA;AAEAC,YAAAA,OAAAA,EAASjK,KAAAA,CAAMkK,IAAI,CAACrD,MAAM,GAAG,CAAA;AAC7BsD,YAAAA,OAAAA,EAASnK,KAAAA,CAAMoK,MAAM,CAACvD,MAAM,GAAG,CAAA;YAC/BwD,aAAAA,EAAepH;AACjB;AACF,KAAA;IAEA,qBAAOqH,GAAA,CAACC,mBAAmBC,QAAQ,EAAA;QAACC,KAAAA,EAAO1C,OAAAA;AAAU5H,QAAAA,QAAAA,EAAAA;;AACvD;;;;"}
1
+ {"version":3,"file":"DataManagerProvider.mjs","sources":["../../../../admin/src/components/DataManager/DataManagerProvider.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n useStrapiApp,\n useNotification,\n useAppInfo,\n useFetchClient,\n useAuth,\n adminApi,\n useGuidedTour,\n GUIDED_TOUR_REQUIRED_ACTIONS,\n} from '@strapi/admin/strapi-admin';\nimport groupBy from 'lodash/groupBy';\nimport isEqual from 'lodash/isEqual';\nimport mapValues from 'lodash/mapValues';\nimport { useIntl } from 'react-intl';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { useLocation } from 'react-router-dom';\n\nimport { getTrad } from '../../utils/getTrad';\nimport { useAutoReloadOverlayBlocker } from '../AutoReloadOverlayBlocker';\nimport { useCTBTracking } from '../CTBSession/ctbSession';\nimport { useCTBSession } from '../CTBSession/useCTBSession';\nimport { useFormModalNavigation } from '../FormModalNavigation/useFormModalNavigation';\n\nimport { DataManagerContext, type DataManagerContextValue } from './DataManagerContext';\nimport { actions, initialState, type State } from './reducer';\nimport { useServerRestartWatcher } from './useServerRestartWatcher';\nimport { sortContentType, stateToRequestData } from './utils/cleanData';\nimport { retrieveComponentsThatHaveComponents } from './utils/retrieveComponentsThatHaveComponents';\nimport { retrieveNestedComponents } from './utils/retrieveNestedComponents';\nimport { retrieveSpecificInfoFromComponents } from './utils/retrieveSpecificInfoFromComponents';\n\nimport type { ContentTypes, ContentType, Components } from '../../types';\nimport type { FormAPI } from '../../utils/formAPI';\nimport type { Internal } from '@strapi/types';\n\ninterface DataManagerProviderProps {\n children: React.ReactNode;\n}\n\nconst selectState = (state: Record<string, unknown>) =>\n (state['content-type-builder_dataManagerProvider'] || initialState) as State;\n\n/**\n * Tag types registered on the shared `adminApi` instance at runtime by\n * `@strapi/content-manager` via `enhanceEndpoints({ addTagTypes: [...] })`\n * (see packages/core/content-manager/admin/src/services/api.ts).\n *\n * The cast is only required because adminApi's compile-time tag union doesn't see\n * tags added downstream from this side of the dependency graph.\n */\nconst CONTENT_MANAGER_SCHEMA_CACHE_TAGS = [\n 'InitialData',\n 'ContentTypesConfiguration',\n 'ContentTypeSettings',\n 'ComponentConfiguration',\n] as const;\n\nconst invalidateContentManagerSchemaCaches = () =>\n adminApi.util.invalidateTags(CONTENT_MANAGER_SCHEMA_CACHE_TAGS as never);\n\nconst DataManagerProvider = ({ children }: DataManagerProviderProps) => {\n const dispatch = useDispatch();\n const state = useSelector(selectState);\n const dispatchGuidedTour = useGuidedTour('DataManagerProvider', (s) => s.dispatch);\n const location = useLocation();\n const { sessionId: ctbSessionId, regenerateSessionId } = useCTBSession();\n\n const {\n components,\n contentTypes,\n reservedNames,\n initialComponents,\n initialContentTypes,\n isLoading,\n } = state.current;\n\n const { toggleNotification } = useNotification();\n const { lockAppWithAutoreload, unlockAppWithAutoreload } = useAutoReloadOverlayBlocker();\n const serverRestartWatcher = useServerRestartWatcher();\n\n const getPlugin = useStrapiApp('DataManagerProvider', (state) => state.getPlugin);\n const plugin = getPlugin('content-type-builder');\n const autoReload = useAppInfo('DataManagerProvider', (state) => state.autoReload);\n const { formatMessage } = useIntl();\n const { trackUsage } = useCTBTracking();\n const refetchPermissions = useAuth('DataManagerProvider', (state) => state.refetchPermissions);\n const { onCloseModal } = useFormModalNavigation();\n\n const [isSaving, setIsSaving] = React.useState(false);\n const previousLocationRef = React.useRef<string | null>(null);\n\n const isModified = React.useMemo(() => {\n return !(isEqual(components, initialComponents) && isEqual(contentTypes, initialContentTypes));\n }, [components, contentTypes, initialComponents, initialContentTypes]);\n\n const fetchClient = useFetchClient();\n\n const isInDevelopmentMode = autoReload;\n\n const getDataRef = React.useRef<() => Promise<void>>(async () => undefined);\n\n getDataRef.current = async () => {\n try {\n const [schemaResponse, reservedNamesResponse] = await Promise.all([\n fetchClient.get(`/content-type-builder/schema`),\n fetchClient.get(`/content-type-builder/reserved-names`),\n ]);\n\n const { components, contentTypes } = schemaResponse.data.data;\n\n dispatch(\n actions.init({\n components: mapValues(components, (component) => ({\n ...component,\n status: 'UNCHANGED',\n })) as Components,\n contentTypes: mapValues(contentTypes, (contentType) => ({\n ...contentType,\n status: 'UNCHANGED',\n })) as ContentTypes,\n reservedNames: reservedNamesResponse.data,\n })\n );\n\n dispatch(actions.clearHistory());\n } catch (err) {\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n }\n };\n\n React.useEffect(() => {\n getDataRef.current();\n previousLocationRef.current = location.pathname;\n\n return () => {\n // Reload the plugin so the cycle is new again\n dispatch(actions.reloadPlugin());\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Detect navigation away and back to CTB to regenerate session\n React.useEffect(() => {\n const currentPath = location.pathname;\n const previousPath = previousLocationRef.current;\n const CTB_PATH = '/plugins/content-type-builder';\n\n if (previousPath) {\n const isCTBPath = currentPath.includes(CTB_PATH);\n const wasCTBPath = previousPath.includes(CTB_PATH);\n\n // Regenerate session when returning to CTB after navigating away\n if (!wasCTBPath && isCTBPath) {\n regenerateSessionId();\n }\n }\n\n previousLocationRef.current = currentPath;\n }, [location.pathname, regenerateSessionId]);\n\n React.useEffect(() => {\n if (!autoReload) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: getTrad('notification.info.autoreaload-disable') }),\n });\n }\n }, [autoReload, toggleNotification, formatMessage]);\n\n const getAllComponentsThatHaveAComponentInTheirAttributes = (components: Components) => {\n const composWithCompos = retrieveComponentsThatHaveComponents(components);\n\n return composWithCompos;\n };\n\n const getAllNestedComponents = (components: Components) => {\n const appNestedCompo = retrieveNestedComponents(components);\n\n return appNestedCompo;\n };\n\n const updatePermissions = async () => {\n await refetchPermissions();\n };\n\n const saveSchema = async () => {\n setIsSaving(true);\n\n const PluginForms = plugin?.apis?.forms as FormAPI;\n\n const mutatedCTs = Object.entries(state.current.contentTypes).reduce(\n (acc, [uid, contentType]) => {\n acc[uid] = PluginForms.mutateContentTypeSchema(\n contentType,\n initialContentTypes[uid]\n ) as ContentType;\n\n return acc;\n },\n {} as ContentTypes\n );\n\n const { requestData, trackingEventProperties } = stateToRequestData({\n components: state.current.components,\n contentTypes: mutatedCTs,\n });\n\n // Track that the save button was clicked (includes session ID via useCTBTracking)\n trackUsage('willUpdateCTBSchema', {\n ...trackingEventProperties,\n ctbSessionId,\n });\n\n const isSendingContentTypes = Object.keys(state.current.contentTypes).length > 0;\n\n lockAppWithAutoreload();\n\n try {\n await fetchClient.post(`/content-type-builder/update-schema`, { data: requestData });\n\n if (isSendingContentTypes) {\n // Note: didCreateGuidedTourCollectionType doesn't accept properties\n trackUsage('didCreateGuidedTourCollectionType');\n }\n\n // Make sure the server has restarted\n await serverRestartWatcher();\n // Generate new session ID after server restart\n regenerateSessionId();\n // refetch and update initial state after the data has been saved\n await getDataRef.current();\n // Update the app's permissions\n await updatePermissions();\n // Refresh content-manager caches that depend on the CT/component schema.\n dispatch(invalidateContentManagerSchemaCaches());\n } catch (err) {\n console.error({ err });\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n trackUsage('didUpdateCTBSchema', {\n ...trackingEventProperties,\n success: false,\n ctbSessionId,\n });\n } finally {\n setIsSaving(false);\n unlockAppWithAutoreload();\n\n dispatch(adminApi.util.invalidateTags(['GuidedTourMeta', 'HomepageKeyStatistics']));\n dispatchGuidedTour({\n type: 'set_completed_actions',\n payload: [GUIDED_TOUR_REQUIRED_ACTIONS.contentTypeBuilder.createSchema],\n });\n\n trackUsage('didUpdateCTBSchema', {\n ...trackingEventProperties,\n success: true,\n ctbSessionId,\n });\n }\n };\n\n const componentsThatHaveOtherComponentInTheirAttributes = React.useMemo(() => {\n return getAllComponentsThatHaveAComponentInTheirAttributes(components);\n }, [components]);\n\n const nestedComponents = React.useMemo(() => {\n return getAllNestedComponents(components);\n }, [components]);\n\n const allComponentsCategories = React.useMemo(() => {\n return retrieveSpecificInfoFromComponents(components, ['category']);\n }, [components]);\n\n const componentsGroupedByCategory = React.useMemo(() => {\n return groupBy(components, 'category');\n }, [components]);\n\n const sortedContentTypesList = React.useMemo(() => {\n return sortContentType(contentTypes);\n }, [contentTypes]);\n\n const context: DataManagerContextValue = {\n componentsThatHaveOtherComponentInTheirAttributes,\n nestedComponents,\n saveSchema,\n reservedNames,\n components,\n contentTypes,\n initialComponents,\n initialContentTypes,\n isSaving,\n isModified,\n isInDevelopmentMode,\n allComponentsCategories,\n componentsGroupedByCategory,\n sortedContentTypesList,\n isLoading,\n addAttribute(payload) {\n dispatch(actions.addAttribute(payload));\n },\n editAttribute(payload) {\n dispatch(actions.editAttribute(payload));\n },\n addCustomFieldAttribute(payload) {\n dispatch(actions.addCustomFieldAttribute(payload));\n },\n editCustomFieldAttribute(payload) {\n dispatch(actions.editCustomFieldAttribute(payload));\n },\n addCreatedComponentToDynamicZone(payload) {\n dispatch(actions.addCreatedComponentToDynamicZone(payload));\n },\n createSchema(payload) {\n dispatch(actions.createSchema(payload));\n },\n createComponentSchema({ data, uid, componentCategory }) {\n dispatch(actions.createComponentSchema({ data, uid, componentCategory }));\n },\n changeDynamicZoneComponents({ forTarget, targetUid, dynamicZoneTarget, newComponents }) {\n dispatch(\n actions.changeDynamicZoneComponents({\n forTarget,\n targetUid,\n dynamicZoneTarget,\n newComponents,\n })\n );\n },\n removeAttribute(payload) {\n if (payload.forTarget === 'contentType') {\n // Note: willDeleteFieldOfContentType doesn't accept properties\n trackUsage('willDeleteFieldOfContentType');\n }\n\n dispatch(actions.removeField(payload));\n },\n removeComponentFromDynamicZone(payload) {\n dispatch(actions.removeComponentFromDynamicZone(payload));\n },\n deleteComponent(uid: Internal.UID.Component) {\n const userConfirm = window.confirm(\n formatMessage({\n id: getTrad(`popUpWarning.bodyMessage.component.delete`),\n })\n );\n\n if (userConfirm) {\n onCloseModal();\n\n dispatch(actions.deleteComponent(uid));\n }\n },\n deleteContentType(uid: Internal.UID.ContentType) {\n const userConfirm = window.confirm(\n formatMessage({\n id: getTrad(`popUpWarning.bodyMessage.contentType.delete`),\n })\n );\n\n if (userConfirm) {\n onCloseModal();\n\n dispatch(actions.deleteContentType(uid));\n }\n },\n\n updateComponentSchema({ data, componentUID }) {\n dispatch(\n actions.updateComponentSchema({\n data,\n uid: componentUID,\n })\n );\n },\n\n updateComponentUid({ componentUID, newComponentUID }) {\n dispatch(\n actions.updateComponentUid({\n uid: componentUID,\n newComponentUID,\n })\n );\n },\n\n updateSchema(args) {\n dispatch(actions.updateSchema(args));\n },\n\n moveAttribute(args) {\n dispatch(actions.moveAttribute(args));\n },\n\n applyChange(args) {\n dispatch(actions.applyChange(args));\n },\n\n history: {\n undo() {\n dispatch(actions.undo());\n },\n\n redo() {\n dispatch(actions.redo());\n },\n\n discardAllChanges() {\n dispatch(actions.discardAll());\n },\n\n canUndo: state.past.length > 0,\n canRedo: state.future.length > 0,\n canDiscardAll: isModified,\n },\n };\n\n return <DataManagerContext.Provider value={context}>{children}</DataManagerContext.Provider>;\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default DataManagerProvider;\n"],"names":["selectState","state","initialState","CONTENT_MANAGER_SCHEMA_CACHE_TAGS","invalidateContentManagerSchemaCaches","adminApi","util","invalidateTags","DataManagerProvider","children","dispatch","useDispatch","useSelector","dispatchGuidedTour","useGuidedTour","s","location","useLocation","sessionId","ctbSessionId","regenerateSessionId","useCTBSession","components","contentTypes","reservedNames","initialComponents","initialContentTypes","isLoading","current","toggleNotification","useNotification","lockAppWithAutoreload","unlockAppWithAutoreload","useAutoReloadOverlayBlocker","serverRestartWatcher","useServerRestartWatcher","getPlugin","useStrapiApp","plugin","autoReload","useAppInfo","formatMessage","useIntl","trackUsage","useCTBTracking","refetchPermissions","useAuth","onCloseModal","useFormModalNavigation","isSaving","setIsSaving","React","useState","previousLocationRef","useRef","isModified","useMemo","isEqual","fetchClient","useFetchClient","isInDevelopmentMode","getDataRef","undefined","schemaResponse","reservedNamesResponse","Promise","all","get","data","actions","init","mapValues","component","status","contentType","clearHistory","err","console","error","type","message","id","defaultMessage","useEffect","pathname","reloadPlugin","currentPath","previousPath","CTB_PATH","isCTBPath","includes","wasCTBPath","getTrad","getAllComponentsThatHaveAComponentInTheirAttributes","composWithCompos","retrieveComponentsThatHaveComponents","getAllNestedComponents","appNestedCompo","retrieveNestedComponents","updatePermissions","saveSchema","PluginForms","apis","forms","mutatedCTs","Object","entries","reduce","acc","uid","mutateContentTypeSchema","requestData","trackingEventProperties","stateToRequestData","isSendingContentTypes","keys","length","post","success","payload","GUIDED_TOUR_REQUIRED_ACTIONS","contentTypeBuilder","createSchema","componentsThatHaveOtherComponentInTheirAttributes","nestedComponents","allComponentsCategories","retrieveSpecificInfoFromComponents","componentsGroupedByCategory","groupBy","sortedContentTypesList","sortContentType","context","addAttribute","editAttribute","addCustomFieldAttribute","editCustomFieldAttribute","addCreatedComponentToDynamicZone","createComponentSchema","componentCategory","changeDynamicZoneComponents","forTarget","targetUid","dynamicZoneTarget","newComponents","removeAttribute","removeField","removeComponentFromDynamicZone","deleteComponent","userConfirm","window","confirm","deleteContentType","updateComponentSchema","componentUID","updateComponentUid","newComponentUID","updateSchema","args","moveAttribute","applyChange","history","undo","redo","discardAllChanges","discardAll","canUndo","past","canRedo","future","canDiscardAll","_jsx","DataManagerContext","Provider","value"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/content-type-builder",
3
- "version": "5.45.0",
3
+ "version": "5.45.1",
4
4
  "description": "Create and manage content types",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -73,9 +73,9 @@
73
73
  "@reduxjs/toolkit": "1.9.7",
74
74
  "@sindresorhus/slugify": "1.1.0",
75
75
  "@strapi/design-system": "2.2.0",
76
- "@strapi/generators": "5.45.0",
76
+ "@strapi/generators": "5.45.1",
77
77
  "@strapi/icons": "2.2.0",
78
- "@strapi/utils": "5.45.0",
78
+ "@strapi/utils": "5.45.1",
79
79
  "ai": "5.0.52",
80
80
  "date-fns": "2.30.0",
81
81
  "fs-extra": "11.3.4",
@@ -93,8 +93,8 @@
93
93
  "zod": "3.25.67"
94
94
  },
95
95
  "devDependencies": {
96
- "@strapi/admin": "5.45.0",
97
- "@strapi/types": "5.45.0",
96
+ "@strapi/admin": "5.45.1",
97
+ "@strapi/types": "5.45.1",
98
98
  "@testing-library/dom": "10.4.1",
99
99
  "@testing-library/react": "16.3.0",
100
100
  "@testing-library/user-event": "14.6.1",